6.22. Shadow-4.1.5.1

Shadow 软件包包含以一种安全方式处理密码的程序。

预计构建时间: 0.2 SBU
磁盘空间需求: 42 MB

6.22.1. 安装 Shadow

[注意]

注意

如果你想强制使用强口令,在构建 Shadow 之前引用 http://www.linuxfromscratch.org/blfs/view/svn/postlfs/cracklib.html 来安装 CrackLib。然后添加 --with-libcrackconfigure 命令下。

禁用 groups 程序的安装,因为 Coreutils 提供了一个更好的版本:

sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;

不要使用默认的 crypt 方法,使用更安全的 SHA-512 方法来加密密码,它同时允许密码长于 8 位。你同样需要弃用用户邮箱的 /var/spool/mail 地址,因为 Shadow 默认使用最近被使用的 /var/mail 地址:

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
       -e 's@/var/spool/mail@/var/mail@' etc/login.defs
[注意]

注意

如果你选择使用 CrackLib 构建 Shadow,运行以下命令:

sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs

准备编译 Shadow:

./configure --sysconfdir=/etc

编译软件包:

make

此软件包没有测试套件。

安装软件包:

make install

移动一个放置错误的程序到正确的位置:

mv -v /usr/bin/passwd /bin

6.22.2. 配置 Shadow

此软件包包含添加,修改和删除用户与组的工具;设置和改变它们的密码;以及执行其他管理员工作。要查阅 password shadowing 含义的详细解释,浏览未压缩的源代码树中的 doc/HOWTO 文件。要使用 Shadow 支持,注意要验证密码的程序 (显示管理器,FTP 程序,pop3 daemons 等) 必须与 Shadow 兼容。也就是说,它们应能够处理由 shadow 处理过的密码。

要启用由 Shadow 处理过的密码,运行以下命令:

pwconv

要启用由 Shadow 处理过的组密码,运行:

grpconv

Shadow 中存储的有关 useradd 工具的配置有一些附加说明需要解释。首先, useradd 工具的默认操作是创建用户和一个与用户同名的组。默认情况下用户 ID (UID) 和组 ID (GID) 号码将从 1000 开始。这意味着如果你不传递参数给 useradd ,每个用户将会成为系统上独立组的一个用户。如果不需要这种行为,你需要传递 -g 参数给 useradd 。默认参数被储存在 /etc/default/useradd 文件。你可能需要修改此文件中的两个参数来满足你的特殊需求。

/etc/default/useradd Parameter Explanations

GROUP=1000

这个参数设置 /etc/group 文件所使用的组号码的起始点。你可以将它修改为任何值。注意 useradd 永远不会重复使用某一 UID 或 GID 。如果此参数中定义的数字已被使用,它将会使用下一个可用的数字。同样注意,如果你在首次不使用 -g 参数的情况下使用 useradd 而没有一个 1000 号组,一段信息将会显示在终端上:useradd: unknown GID 1000 。忽略这条信息,组号码 1000 将被使用。

CREATE_MAIL_SPOOL=yes

这个参数使 useradd 为新创建的用户创建一个邮箱文件。 useradd 将通过 0660 权限使这个文件的组所有者为 mail 组。如果你希望这些邮箱文件不被 useradd 创建,执行以下命令:

sed -i 's/yes/no/' /etc/default/useradd

6.22.3. 设置 root 密码

为用户 root 选择一个密码并运行以下代码来设置它:

passwd root

6.22.4. Shadow 的内容

安装的程序: chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, lastlog, login, logoutd, newgrp, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg (链接到 newgrp), su, useradd, userdel, usermod, vigr (链接到 vipw) 和 vipw
安装的目录: /etc/default

简述

chage

用来改变强制修改密码的最大天数

chfn

用来改变一个用户的全名和其他信息

chgpasswd

用来以批处理模式更新用户密码

chpasswd

用来以批处理模式更新用户密码

chsh

用来更改某一用户的默认登陆 shell

expiry

检查和强制实行最新的密码过期政策

faillog

被用来检验登陆失败的日志,设置一个失败最大循序次数并在之后禁用用户,或重置失败计数

gpasswd

被用来添加和删除组的成员和管理员

groupadd

用给定的名字创建一个组

groupdel

删除给定名字的组

groupmems

允许一个用户无需超级用户权限即可管理他/她的组成员列表。

groupmod

被用来修改给定组的名字或 GID

grpck

核实组文件 /etc/group/etc/gshadow 的完整性

grpconv

从普通组文件创建或更新 shadow 组文件

grpunconv

/etc/gshadow 更新 /etc/group 且在这之后删除前者

lastlog

报告所有用户或指定用户的最新登

login

被系统用来使用户登陆

logoutd

是一个被用来强行限制登陆时间和端口的 daemon

newgrp

用来在在登陆会话中改变最新 GID

newusers

用来创建或更新用户帐号的全部序列

nologin

显示一个账号不可用的信息。被用作被禁用帐号的默认 shell

passwd

用来改变某一用户或组帐号的密码

pwck

核实密码文件 /etc/passwd/etc/shadow 的完整性

pwconv

从一般密码文件创建或更新 shadow 密码文件

pwunconv

/etc/shadow 更新 /etc/passwd 并在之后删除前者

sg

在用户的 GID 被设置到给定组的 GID 的情况下运行一个给定的命令

su

用替代用户或组的 ID 运行一个 shell

useradd

用给定名称创建一个新用户,或者更新默认的新用户信息

userdel

删除给定的用户账户

usermod

用来修改给定用户的登录名,用户身份 (UID) , shell ,初始组,主目录等

vigr

编辑 /etc/group/etc/gshadow 文件

vipw

编辑 /etc/passwd/etc/shadow 文件