当前位置:Linux教程 - Linux - 如何安装 shadow

如何安装 shadow



        
    ★ 您将可以在 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
    并在 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 !!

    发布人:netbull 来自:JJ的Linux世界