Shadow 软件包包含以安全方式处理密码的程序。
6.25.1. 安装 Shadow
![[Note]](https://ucc.alicdn.com/c6vgwmhjwgv5q/developer-article236061/20241016/5c272e4ff9b244edb7602ad9cd802846.png?x-oss-process=image/resize,w_1400/format,webp)
注意
如果你喜欢强制使用更强的密码,在编译 Shadow 之前可以根据 http://www.linuxfromscratch.org/blfs/view/systemd/postlfs/cracklib.html 安装 CrackLib。然后在下面的 configure 命令中增加 --with-libcrack
。
取消安装 groups 程序以及它的 man 文档,因为 Coreutils 提供了一个更好的版本:
sed -i 's/groups$(EXEEXT) //' src/Makefile.in find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
比起默认的 crypt 方法,用更安全的 SHA-512 方法加密密码,它允许密码长度超过 8 个字符。也需要把 Shadow 默认使用的用户邮箱由陈旧的 /var/spool/mail
位置改为正在使用的 /var/mail
位置:
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \ -e 's@/var/spool/mail@/var/mail@' etc/login.defs
![[Note]](https://ucc.alicdn.com/c6vgwmhjwgv5q/developer-article236061/20241016/5c272e4ff9b244edb7602ad9cd802846.png?x-oss-process=image/resize,w_1400/format,webp)
注意
如果你选择编译支持 Cracklib 的 Shadow,运行下面的命令:
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
做个小的改动使 useradd 的默认设置和 LFS 的组文件一致:
sed -i 's/1000/999/' etc/useradd
准备编译 Shadow:
./configure --sysconfdir=/etc --with-group-name-max-length=32
配置选项的含义:
-
--with-group-name-max-length=32
-
最长用户名为 32 个字符,使组名称也是如此。
编译软件包:
make
该软件包没有测试套件。
安装软件包:
make install
移动位置错误的程序到正确的位置:
mv -v /usr/bin/passwd /bin
6.25.2. 配置 Shadow
该软件包包含增加、更改、以及删除用户和组的工具;设置和修改密码;执行其它特权级任务。软件包解压后的 doc/HOWTO
文件有关于 password shadowing 的完整解释。如果使用 Shadow 支持,记住需要验证密码(显示管理器、FTP 程序、pop3 守护进程等)的程序必须和 Shadow 兼容。 也就是说,它们要能使用 Shadow 加密的密码。
运行下面的命令启用 shadow 密码;
pwconv
运行下面的命令启用 shadow 组密码:
grpconv
用于 useradd 工具的 Shadow 配置有一些需要解释的注意事项。首先,useradd 工具的默认操作是创建用户以及和用户名相同的组。默认情况下,用户 ID(UID) 和组 ID(GID) 的数字从 1000 开始。这意味着如果你不传递参数给 useradd,系统中的每个用户都会属于一个不同的组。如果不需要这样的结果,你需要传递参数 -g
到 useradd。默认参数保存在 /etc/default/useradd
文件中。你需要修改该文件中的两个参数来实现你的特定需求。
/etc/default/useradd
参数解释
-
GROUP=1000
-
该参数设定 /etc/group 文件中使用的起始组序号。你可以把它更改为任何你需要的数字。注意 useradd 永远不会重用 UID 或 GID。如果该参数指定的数字已经被使用了,将会使用它之后的下一个可用数字。另外注意如果你系统中没有序号为 1000 的组,第一次使用useradd 而没有参数
-g
的话,你会在终端中看到一个提示信息:useradd: unknown GID 1000
。你可以忽视这个信息,它会使用组号 1000。 -
CREATE_MAIL_SPOOL=yes
-
这个参数会为 useradd 新添加的用户创建邮箱文件。useradd 会使组
mail
拥有该文件的所有权,并赋予组 0660 的权限。如果你希望 useradd 不创建这些邮箱文件,你可以运行下面的命令:sed -i 's/yes/no/' /etc/default/useradd
6.25.3. 设置 root 密码
运行下面的命令为用户 root 设置密码:
passwd root
6.25.4. Shadow 软件包内容
简要介绍
用来更改强制性密码更新的最大天数 |
|
用来更改用户的全名以及其它信息 |
|
用来以批处理模式更新组密码 |
|
用来以批处理模式更新用户密码 |
|
用来更改用户登录时默认使用的 shell |
|
检查并强制执行当前密码过期策略 |
|
用来检查登录失败的日志文件,设置锁定用户的最大失败次数,或者重置失败次数 |
|
用来给组增加、删除成员以及管理员 |
|
用指定的名称创建组 |
|
用指定的名称删除组 |
|
允许用户管理他/她自己的组成员列表而不需要超级用户权限。 |
|
用于更改指定组的名称或 GID |
|
验证组文件 |
|
从普通组文件创建或升级为 shadow 组文件 |
|
从 |
|
报告所有用户或指定用户的最近一次登录 |
|
用于系统让用户登录进来 |
|
用于强制限制登录时间和端口的守护进程 |
|
用于在一次登录会话中更改当前 GID |
|
用于批量创建或更新用户账户 |
|
显示一个账户不可用的信息;它用于来作为不可登录的账户的默认 shell |
|
用来更改用户或组账户的密码 |
|
验证密码文件 |
|
从普通密码文件创建或升级 shadow 密码文件 |
|
从 |
|
当用户的 GID 被设置为指定组的 GID 时执行一个特定命令 |
|
用替换的用户和组 ID 运行 Shell |
|
用指定的名称新建用户或更新新用户的默认信息 |
|
删除指定的用户账户 |
|
用于更改指定用户的登录名称、UID、shell、初始组、home 目录,等 |
|
编辑 |
|
编辑 |