手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

Unix/BSD/Linux的口令机制初探

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

(1) 上一次修改口令的日期,以从1 9 7 0年1月1日开始的天数表示。
(2) 口令在两次修改间的最小天数。口令在建立后必须更改的天数。
(3)口令更改之前向用户发出警告的天数。
(4)口令终止后帐号被禁用的天数。
(5)自从1 9 7 0年1月1日起帐号被禁用的天数。
(6)保留域。
下面是个Red Hat Linux系统中/ e t c / s h a d o w文档的例子:

root:mGqwuvdF41bc:10612:0:99999:7:::
bin:*:10612:0:99999:7:::
daemon*:10612:0:99999:7:::
adm:*:10612:0:99999:7:::
lp*:10612:0:99999:7:::
sync:*:10612:0:99999:7:::
shutdown:*:10612:0:99999:7:::
halt:*:10612:0:99999:7:::
mail:*:10612:0:99999:7:::
news:*:10612:0:99999:7:::
uucp:*:10612:0:99999:7:::
operator:*:10612:0:99999:7:::
freebird:sdfaBh45ZiQn1llfa:10612:0:99999:7:::

缺省情况下,口令更新并不开启。于是没有口令更改前的最小天数,也没有口令必须更改的日期。口令在99 999天内必须更换的声明几乎无用,因为从现在起几乎更有2 5 0年。在口令终止前7天警告用户的声明也没用,除非选择使用口令更新。在本例中没有声明,还能够在口令终止和帐号禁用之间配置一个时间段。

在可选影子口令功能的系统中,用一条相对简单的命令配置并更新影子口令文档:p w c o n v。该命令在影子口令文档不存在的情况下创建一个新的。假如已存在一个影子文档,p w c o n v把/ e t c / p a s s w d中的新用户添加到/ e t c / s h a d o w中,把/ e t c / p a s s w d中没有的用户从影子文档中删去,并把口令从/ e t c / p a s s w d移到影子文档中。在Red Hat Linux中,p w c o n v把新的/ e t c / p a s s w d文档写到一个名为n p a s s w d的文档中,把新影子文档写到n s h a d o w中。这些新文档需要手工进行重命名或拷贝。用户能够用p w u n c o n v命令返回到不使用影子文档的情况下,他把影子文档中的信息合并回传统的口令文档中。

提示:早期的L i n u x不支持影子口令。
注意:在solaris下,必须使用隐蔽口令文档,在Linux下,假如用户安装了shadow软件也能够使用。

3.2/etc/master.passwd

在BSD下,实际的口令文档是/etc/master.passwd.,这里的密码都是简单的文本数据库,每个用户占一行,行中字段用":"隔开。 /etc/master.passwd权限为0600,而/etc/passwd为0644,这就意味着任何人都人存取/etc/passwd.但只有 root才能读取/etc/master.passwd.
在BSD中,/etc/master.passwd是/etc/passwd的超集,他直接生成/etc/passwd文档。所以在BSD中 /etc/passwd文档总是无需直接进行编辑。一旦运行vipw,passwd,chfn,chsh或chpass这些命令,也是对 /etc/master.passwd进行修改。并且修改后会自动生成/etc/passwd.(一同生成的更有由pwd_mkdb工具生成的 /etc/master.passwd的散列表形式。)
平面文档数据库(/etc/passwd,/etc/master.passwd)都只对少量用户合适,用户一多,查找速度就慢。因此在BSD 下相应的更有两个数据库格式的散列表/etc/pwd.db和/etc/spwd.db,其权限也和上面两文档对应。每次运行chfn,passwd等命令后,pwd_mkdb都会自动修改这两个文档。

提示:若希望根据另一个FreeBSD重新构件用户列表或从另一个FreeBSD机器移植一个用户列表,只须简单的把新的master.passwd(比如master.passwd.new)文档置于/etc/下(或/ 下),然后运行如下命令(注意先备份):

%cp /etc/master.passwd /etc/master.passwd.bak
%pwd_mkdb -p /etc/master.passwd.new

这样/etc/master.passwd文档将被覆盖,其他三个文档也得以重建。(-p即为生成新的/etc/passwd)

注意:/etc/master.passw文档和shadow文档形式和功能都相同,但是和/etc/master.passwd不同的是,Linux下(或其他系统)使用的/etc/shadow文档并非/etc/passwd文档的超集。/etc/passwd文档也并非由/etc/shadow文档产生,需要手工维护这两个文档。

4.BSD下使用“密码过期机制”
“密码过期”意即超过规定的时间密码无效,用户必须在此之前修改密码。要实现此功能,需要修改/etc/login.conf文档,在default段中加入passwordtime=90d(或2y,6w,24h之类的)如:

default:\
    :password_format=md5:\
    :copyright=/etc/COPYRIGHT:\
    :welcome=/etc/motd:\
    :passwordtime=24h:\

因为/etc/login.conf数据库必须编译成一个散列表,所以必须运行cap_mkdb程式,以生成此散列表,然后才能使修改生效。如下操作:
蕄_mkdb /etc/login.conf

这样,若24小时内未修改密码,登陆时将提示输入新的密码。

注意:在配置passwordtime属性时,passwd会在/etc/master.passwd的第六字段写入最后一次修改密码的时间。
/etc/login.conf在密码及其他配置方面更有很多值得使用的地方,不妨man 看看。

后记

本文只简要的说明了一下Unix/Linux特别是BSD的口令机制,要也因本人水平,不能在此文深入的论述此问题。关于密码的安全性,连同密码破解和任何使用更安全的加密机制等问题,本人会在以后撰文论述。

参考资料:
man 5 passwd
man 3 crypt
man md5
man des
man login.conf
DES-to-MD5-(mini)HOWTO
《Hacking Linux Exposed》
《Unix System Administrator Handbook》

作者简介:
Freebird,姓名:匡萃彪。CNFUG核心成员。Unix/Linux/BSD的狂热追随者,熟悉BSD,Linux, Solaris,C,Shell。主要研究方向:各种服务器架设、系统和网络安全、内核源码分析连同英文文档翻译。欢迎您通过 freebird@cnfug.org和本人联系。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!