即使 shadow suite 对大部分需要存取密码档的程序可以包含更新程序,但是仍有一些需要 存取密码档的额外程序在系统中。
如果你正执行 Debian 版本 (或者即使你不是),你可以找到 Debian 需要 rebuild 的原始码: ftp://ftp.debian.org/debian/stable/source/
这节剩余的部分在讨论更新 adduser
, wu_ftpd
, ftpd
,
pop3d
, xlock
,xdm
和 sudo
程序以便于让这些程序支持
shadow suite。
请看 Adding Shadow Support to a C program 这节,主要是在 讨论如何将 shadow 支持放到其他需要程序(虽然这些程序需要以 SUID root 执行或 SGID shadow 需正确存取 shadow 档)。
Slackware 版本包含一个新增使用者的交互程序叫做 /sbin/adduser
。该程序的 shadow
版本可以在
ftp://sunsite.unc.edu/pub/Linux/system/ Admin/accounts/adduser.shadow-1.4.tar.gz找到。
我很鼓励你使用 Shadow Suite 供应的程序(例如useradd
, usermod
,
和 userdel
) 来取代 slackware 的adduser
程序。 它们只需花一点时间学习
,但是它将值得的,因为你可以看到更多控制和在正确展现锁住 /etc/passwd
和
/etc/shadow
的文档(adduser
就没有办法啰)。
参考 Putting the Shadow Suite to use 该节得到更多相关信息。
但是如果你已经拥有啰,接下来是你要做的部分:
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin
大部分的 Linux 系统都有 wu_ftpd
server。 如果你的版本没有附带 shadow 安装,
那么你的 wu_ftpd
就没有办法对 shadow 编译。 wu_ftpd
是从
inetd/tcpd
开始且以 root 权限执行的程序。 如果你正在跑一个旧版的
wu_ftpd
daemon, 无论如何你将要更新它因为较旧版本有 bug 将危及 root
权限。(参考
Linux security home page
得到更多相关信息)。
幸运的是你只需要取的有嵌入 shaow 的原始码和重新编译就可以啰!
如果你不是正在执行 ELF 系统, wu_ftp
server 可以从 Sunsite 网址
wu-ftp-2.4-fixed.tar.gz 找到。
当你获得这个 server,把它放在 /usr/src
目录,然后输入:
cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx
然后编辑 ./src/makefiles/Makefile.lnx
,和改变
LIBES = -lbsd -support
这一行到:
LIBES = -lbsd -support -lshadow
现在你已经准备好执行 script 建立跟安装:
cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
这是用在 Linux shadow configuration file、编译和安装 server。
在我的 Slackware 2.3 系统,我也需要在执行前作下列步骤:
build
:
cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -
在 ELF 系统下会有编译问题的报告,但是下一版的 Beta 版则可以正确的执行。 可以从 wu-ftp-2.4.2-beta-10.tar.gz 找到。
当你获得这个 server,把它放在 /usr/src
目录,然后输入:
cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config
然后编辑 config.lnx
,和改变:
#undef SHADOW.PASSWORD
这一行到:
#define SHADOW.PASSWORD
然后,
cd ../Makefiles
且编辑 Makefile.lnx
档和改变
LIBES = -lsupport -lbsd # -lshadow
这一行到:
LIBES = -lsupport -lbsd -lshadow
然后建立(build)和安装(install):
cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
注:你应该检查你的 /etc/inetd.conf
档来确认你的 wu.ftpd server 是不是真的活著。
有些版本可能将 server daemons 放在不同的地方或用不同的名字表示。
如果你正在执行标准的 ftpd
server,我将建议你更新 wu_ftpd
server。
离开上述的 bug ,系统会比较安全。
如果你坚持在标准模式,或者你需要 NIS 支持,在 Sunsite ftpd-shadow-nis.tgz 有参考资料。
如果你需要支持第三版 Post Office Protocol (POP3),你将需要重新编译 pop3d
程序。 pop3d
可以透过 inetd/tcpd
以 root
权限正常的执行。
从 Sunsite 有两个版本可以获得: pop3d-1.00.4.linux.shadow.tar.gz 和 pop3d+shadow+elf.tar.gz
这两个都很简单可以安装。
如果你安装 shadow suite,然后执行 X Windows System 和
lock 萤幕没以更新你的 xlock
档, 你将必须使用 CNTL-ALT-Fx
去切换
另一个 tty,签入(login)和杀掉(kill) xlock
process
(或使用 CNTL-ALT-BS
杀掉 X server)。
很幸运的这也很容易可以更新你的 xlock
程序。
如果你正执行 XFree86 Versions 3.x.x,且正正确使用
xlockmore
(是一个很棒的萤幕保护程序).
这个套件支持 shadow,只要重新编译即可。如果你有任何较老的 xlock
版本,我建议你更新下列版本:
xlockmore-3.5.tgz
可以从
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/screensavers/xlockmore-3.7.tgz
网站获得。
基本上这是你所要的。
撷取 xlockmore-3.7.tgz
,并将它放在 /usr/src
目录并解压缩:
tar -xzvf xlockmore-3.7.tgz
编辑这个档: /usr/X11R6/lib/X11/config/linux.cf
, 和改变
#define HasShadowPasswd NO
这一行到:
#define HasShadowPasswd YES
然后建立可执行档:
cd /usr/src/xlockmore
xmkmf
make depend
make
然后搬移所以文档到正确目录且更新文档拥有者及执行权限:
cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow
你的 xlock 将可以正确的运作啰!
xdm
是一个可以表示在 X-Windows 签入画面的程序。某些系统开始 xdm
当系统被告知道一个特定的执行水准(参考 /etc/inittab
)。
伴随著 Shadow Suite 安装, xdm
需要被更新。
很幸运的这也很容易可以更新你的 xdm
程序。
xdm.tar.gz
可以从下列网址获得:
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz
撷取 xdm.tar.gz
档并将它放在 /usr/src
目录然后解压缩:
tar -xzvf xdm.tar.gz
编辑这个档: /usr/X11R6/lib/X11/config/linux.cf
,且改变
#define HasShadowPasswd NO
这一行到:
#define HasShadowPasswd YES
然后建立可执行档:
cd /usr/src/xdm
xmkmf
make depend
make
然后搬移所有文档正确目录:
cp xdm /usr/X11R6/bin/
xdm
以 root 权限在执行,所以你不需要改变文档存取权限。
sudo
程序允许系统管理员让使用者可以以 root 权限正常的执行程序。
这是非常方便的因为它可以限制管理者执行 root 帐号本身权限,还可以允许使用者作
像 mounte drives 的事情。
sudo
需要读取密码因为在执行时需确认使用者密码。 sudo
已经执行 SUID root,
所以存取 /etc/shadow
党不是问题。
sudo
支持 shadow suite 可在下列网址取得:
ftp://sunsite.unc.edu/pub/Linux/system/Admin/sudo-1.2-shadow.tgz
警告:当你安装 sudo
你的 /etc/sudoers
档将取代预设值,所以你
需要备份原始程序。如果你有家任何设定在预设程序,你可能要编辑 Makefile 且移除复制该档到
/etc
的这行。
该套件已经对 shadow 进行设定,所以只要重新编译该套件即可 (把它放在 /usr/src
目录):
cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install
imapd
是一个像 pop3d
的 email server。
imapd
随著 Pine E-mail 套件发生。 其操作手册在介绍该套件时即包含
shadow 支持。然而,我发现这不全然正确。 再加上在编译时加上 libshadow.a
函式库
和该套件结合 build script / Makefile 是非常不容易的。所以对 imapd
加入 shadow
支持是不太可能的。
如果有任何答案,可以 Email 给我,我会将该解答放到这里。
pppd server 可以使用几种权限设定:
Password Authentication Protocol (PAP) 和 Cryptographic
Handshake Authentication Protocol (CHAP)。 pppd server 从
/etc/ppp/chap-secrets
和/或 /etc/ppp/pap-secrets
档读取密码字串。
如果你正使用预设 pppd 的执行,就没有必要再重新安装 pppd 。
pppd 以允许你使用 login 参数。 如果 login 选项被选取,
pppd 将使用 /etc/passwd
档的帐号密码给 PAP. 当然在不久密码档会是
shadowedm。pppd-1.2.1d 档已经加入对 shadow 的支持。
下一节加入支持 shadow 的范例是针对
pppd-1.2.1d
(一个较老版本的 pppd).
pppd-2.2.0
版就已经包括 shadow 支持啰。