ITEEDU

6.53. Shadow-4.1.4.2

Shadow 软件包包含用于安全方式下处理密码的程序。

预计编译时间: 0.3 SBU
所需磁盘空间: 30 MB

6.53.1. 安装 Shadow

[Note]

注意

如果你打算强制使用高强度密码,请参考 http://www.linuxfromscratch.org/blfs/view/svn/postlfs/cracklib.php以获得如何在安装 Shadow 之前先安装 Cracklib 的指导。然后在下面的configure命令中加入--with-libcrack 项。

禁止安装 groups 程序和它的手册页,因为 Coreutils 提供了一个更好的版本:

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

禁止安装中文和韩文手册页,因为Man-DB 不能很好的格式化它们:

sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile.in

不使用默认的crypt加密方法, 而使用更为安全的 MD5 对密码进行加密, 并且它同样允许密码长于 8 个字符。 同时将用户邮箱位置从过时的/var/spool/mail修改到/var/mail是也有必要的(Shadow 普遍默认使用这个位置):

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

注意

如果你在编译 Shadow 时启用了 Cracklib 支持,请运行下面的命令

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.53.2. Configuring Shadow

这个软件包包含添加,修改,删除用户和组;设置和修改它们的密码以及执行其他管理任务的工具; 为了获得对 password shadowing (影子密码) 的完全解释,请参见doc/HOWTO文件, 它在解包后的源码目录树中。 假如要使用 Shadow 支持, 请注意那些需要对密码进行校验的程序 (如显示管理器、FTP 程序、pop3进程等)必须兼容 Shadow 。也就是说, 他们需要能够与影子密码一起工作。

为了使用影子密码,运行以下指令:

pwconv

为使用组影子密码,运行:

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。 如果在参数值找到的值被使用了, 它会使用该值后面的下一个可用值。 也要注意,如果你第一次使用不带 -g 参数的useradd 时,系统里没有id为1000的组,你将会收到一个信息显示在终端上: useradd: unknown GID 1000。你可以不理会这个信息,而组号1000会被用上。

CREATE_MAIL_SPOOL=yes

这个参数会是 useradd 为新添加的用户建立 mailbox 文件。 useradd 会使这个文件的组所有权为0660权限的 mail 组。 如果你不想useradd 建立这些mailbox 文件,请执行下面的命令:

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

6.53.3. 设置 root 的密码

为用户 root 选择一个密码,并运行以下命令设置:

passwd root

6.53.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 (link to newgrp), su, useradd, userdel, usermod, vigr (link to vipw), and vipw

简要描述

chage

用于设置必须对密码进行更改的最大间隔天数

chfn

用于对用户的全名及其他信息进行修改

chgpasswd

用于批量更新组密码

chpasswd

用于批量更新用户密码

chsh

用于更改一个用户的默认的登录 shell

expiry

检查并加强当前的密码过期策略

faillog

用于检查记录登录失败的日志, 或是设置账户在被锁定前最大的登录失败次数, 亦可用于重置登录失败的次数。

gpasswd

用来增加和删除组中的成员和管理员

groupadd

用指定的名称建一个组

groupdel

删除指定名称的组

groupmems

允许一个没有超级用户权限的用户管理她/他自己的组成员列表

groupmod

用来修改所指定组的名称或 GID

grpck

校验组文件 /etc/group和 /etc/gshadow的完整性

grpconv

从正常组文件中创建或更新一影子组文件

grpunconv

从 /etc/gshadow更新 /etc/group并将前者删除

lastlog

报告最近的所有用户的登录或是所指定用户的登录

login

被系统用来允许用户进行登录

logoutd

一个后台程序,用来加强对登录时间和端口进行限制

newgrp

用来在登录会话期间对当前的 GID 进行修改

newusers

用来对一整个系列的用户账户进行创建或更新

nologin

显示一个账户不可用的信息,被设计用来作为那些不准登录的账户的默认 shell。

passwd

用来对一个用户或组账户进行密码修改

pwck

校验密码文件/etc/passwd 和 /etc/shadow 的完整性

pwconv

从一个正常的密码文件中创建或更新一影子密码文件

pwunconv

从 /etc/shadow 更新 /etc/passwd并删除前者

sg

当一个用户的 GID 被设置到所给的组时执行所指定的命令

su

用另一个用户和组ID来运行一个 shell

useradd

用所给名称建立一个新的用户或更新默认新用户的信息

userdel

删除所指定的用户账户

usermod

用来更改所给用户的登录名、 用户标识(UID)、 shell、 最初组、 主目录等

vigr

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

vipw

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