BBS水木清华站∶精华区

发信人: HYD.bbs@bbs.ee.nthu.edu.tw. (追风男孩), 信区: linux 
标  题: 如何安装 shadow 
发信站: ☆清华电机☆  Thu Jun  1 23:29:32 1995 
转信站: 无 (post digest) 
 
★ 您将可以在 linux.csie.nctu.edu.tw 的 gopher server 中取得这份文件 ! 
 
 
        0. 前言 : 
           真希望 shadow password 会变成 Linux Distribution 的 default, 
           那就可以省掉很多很多麻烦了.... 
 
        1. shadow 的优缺 : 
           shadow 将 user 真正编码後的密码放在 /etc/shadow 中, 而在原 
           /etc/passwd 中密码栏为一 *, 而 /etc/shadow 只有 root 跟属於 
           shadow group 的人才能读取密码.  因此增加了安全性, 相对的也 
           增加了应用程式的不便.   因此一些须要读取密码的应用程式须要 
           跟 libshadow.a 连结, 也要 setgid 给 shadow, 有时甚至得修改 
           source code 中有关 getpass() crypt() 的部份.  此外, shadow 
           对 account 可有 expire date 并有 /etc/login.defs 对 login 
           作控制及设定, 也是一大优点. 
 
 
 
        2. 要到那去抓呢 ? 
           ftp.edu.tw:/Op/Linux/packages/Admin 中有 shadow-3.3.1.tar.gz 
           而 shadow-3.3.2.patch 是为 linux 作的 patch, 并不是真的3.3.2 
           版.  而我个人曾自己修改 shadow-3.3.1 并增加一些功能, 放在 
           ftp.edu.tw:/Op/Linux/collect/source/shadow/private 下, 您亦 
           可试试. 
 
        3. 如何安装 ? 
           解开後应该打 make 就行了, 没 error 後打 make save, 会备份旧的 
           util 到 save/ 下, 再打 make install. 
           然後用 whereis 找一下 passwd/chsh/chfn/.. 等看看有没有重复的, 
           杀掉旧的 binary.   再来 .. 
           1) cd /etc 
           2) pwconv 
           3) mv -f npasswd passwd 
           4) mv -f nshadow shadow 
           5) touch gshadow 
           6) chmod 640 shadow gshadow 
           7) chown root.shadow shadow gshadow 
           8) 用 pwck, grpck 检查一下是否有 error. 
           检查一下 /etc/login.defs 存不存在, 并改一下内容, 由其是 mail 
           那行.  试著 login 一下, 再试试 passwd/chfn/chsh 等, 没问题就 
 
           那行.  试著 login 一下, 再试试 passwd/chfn/chsh 等, 没问题就 
           恭喜了. 
 
        4. 如何 compile 跟密码有关的程式 ?! 
           换 shadow 後, 有些东西如 ftpd, sudo, screen 等须要重 compile, 
           首先能找到已为 shadow 改过的程式是最好, 找不到时就得自己改啦. 
           以下是须要注意的 : 
           0) 在有 getpwnam() getpwuid() crypt() 的 *.c 中 include <shadow.h> 
              并在 Makefile 中加 -lshadow 以跟 shadow-library link, 若作 
              出来的程式对密码不能 work, 再参照 1~3 修改. 
           1) getpwnam() getpwuid() 取得的 pw_passwd 为 *, 须用 getspnam() 
              getspuid() 来取得真正密码. (可参考 /usr/include/shadow.h) 
           2) crypt() 须用 pwd_encrypt() 取代才可用 16 字元的密码. 
           3) getpass(), 有的程式用自己的 getpass, 有时只抓 8 字元, 这时 
              16 字元的密码就挂了, 改用系统的 getpass() 就好了. 
 
        5. 权限 : 
           若不是用 root 执行的程式如 xlock 须要 chgrp shadow, chmod g+s 
           shadow 才能读到 /etc/shadow. 
 
        6. Good luck !! 

BBS水木清华站∶精华区