预计所需编译时间: 0.4 SBU 预计所需硬盘空间: 11 MB |
Shadow用来增强系统密码的安全性。
安装下列程序: chage, chfn, chpasswd, chsh, dpasswd, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck, grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers, passwd, pwck, pwconv, pwunconv, sg (link to newgrp), useradd, userdel, usermod, vigr (link to vipw) 和 vipw
Shadow 依赖于: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Sed.
login, getty 和 init 程序 (以及其他一些) 维护几个登陆文件,用来记录登陆到系统的用户。然而,它们本身却不创建这些文件,所以如果你想记录这些消息,就要自己创建文件,并保持正确的读写权限:
用下面的命令创建这些文件,能确保正确的权限:
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp} |
/var/run/utmp 文件列出现在登陆的用户,/var/log/wtmp 文件列出以前有谁登陆过,是在什么时间,/var/log/lastlog 文件显示每个用户最后一次登陆的时间,/var/log/btmp 列出失败的登陆尝试。
Shadow 把 passwd 程序的路径硬编码了,但用的方法错了。如果在安装 shadow 前没有 passwd 程序存在,它会(错误地)假设存在/bin/passwd,然后却把它自己带的passwd安装成 /usr/bin/passwd。这会造成找不到 /bin/passwd 的奇怪错误。为了修正这个 bug,我们创建一个空的 passwd 文件,以使它能硬编码到正确的位置:
touch /usr/bin/passwd |
目前的 shadow 套件中 newgrp 命令会出错,这是一个bug。下面的补丁(也出现在 Shadow 的CVS中)修正了这个错误:
patch -Np1 -i ../shadow-4.0.3-newgrp-fix.patch |
为编译 Shadow 做准备:
./configure --prefix=/usr --libdir=/usr/lib --enable-shared |
编译软件包:
make |
安装软件包:
make install |
Shadow 使用两个文件来配置系统的身份验证。安装这些配置文件:
cp etc/{limits,login.access} /etc |
我们希望改变加密的方法,使用MD5密码,它比缺省的"crypt"方法更安全,也允许大于8位的密码。我们还希望改变老的/var/spool/mail邮箱位置到目前的/var/mail。我们在拷贝配置文件时做这些改变:
sed -e 's%/var/spool/mail%/var/mail%' \ -e 's%#MD5_CRYPT_ENAB.no%MD5_CRYPT_ENAB yes%' \ etc/login.defs.linux > /etc/login.defs |
注: 手动输入上面的命令时要格外小心。最好是拷贝粘贴上面的命令。
根据vipw的手册页,vigr应是它的一个符号链接。因为 shadow 的安装过程中没有创建这样的链接,我们不得不手动创建它:
ln -s vipw /usr/sbin/vigr |
vipw 链接现在指向一个空的文件,因为这个文件不需要在这里,删除它:
rm /bin/vipw |
把sg程序移到 /usr/bin 目录:
mv /bin/sg /usr/bin |
把Shadow的动态库文件移到更合理的位置:
mv /usr/lib/lib{shadow,misc}.so.0* /lib |
库文件移走了,但有的软件包还会在/usr/lib目录里找它们。为了满足要求,创建下列符号链接:
ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so |
useradd 程序的 -D 参数需要这个目录才能正常工作:
mkdir /etc/default |
Coreutils 和 Shadow 密码套件分别安装了一个同样的groups程序。如果你愿意,你可以删除Shadow 密码套件所安装的groups程序:
rm /bin/groups |
这个软件包中包括一些工具程序,用来修改用户的密码,加入新的用户或组,删除它们,以及其它用途。在此,我们不想解释shadow密码是什么意思,在源代码的doc/HOWTO文件中有详细介绍。这里,你需要记住一点,如果你决定使用shadow密码,那么所有需要对密码进行校验的程序(例如:xdm、ftp守护进程、pop3守护进程等等)都需要和它兼容,也就是说它们得能够使用shadow密码。
下面的命令使 Shadow 密码生效:
/usr/sbin/pwconv |
下面的命令使 shadow 的组密码生效:
/usr/sbin/grpconv |
正常情况下,你还没有创建任何密码,然而,如果是创建密码后才运行上面的命令,就需要用 passwd 来更新所有现存的用户密码,同时用 gpasswd 更新所有现存的组密码。