注意:当编辑/etc/passwd文件来建立一个新账号时,应在密码字段放一个"*",(一些伪用户,例如daemon也如此)以避免用户未经权而使用该账号。直到你为此新建账号设置了真实密码。
3.2/etc/shadow文件
传统上,/ e t c / p a s s w d文件在很大范围内是可读的,因为许多程序需要用它来把U I D转换为用户名。例如,如果不能访问/ e t c / p a s s w d,那么ls -l命令将显示数字U I D而不是用户名。不幸的是,使用口令猜测程序,具有加密口令的可读/ e t c / p a s s w d文件表现出巨大的安全危险。多数近来的U N I X产品支持一个变通方法:影子口令文件。影子口令系统把口令文件分成两部分: / e t c / p a s s w d和影子口令文件。影子口令文件保存加密的口令;/ e t c / p a s s w d中的c o d e d - p a s s w o r d域都被置为“X”或其他替代符号。影子口令文件只能被r o o t或像p a s s w d这样的s e t _ u i d程序在需要合法访问时读取,其他所有非授权用户都被拒绝访问。习惯上,影子口令文件保存在/ e t c / s h a d o w中,尽管有些系统使用可选的路径和文件名。例如B S D系统把加密的口令保存在/ e t c / m a s t e r. p a s s w d。
/etc/shadow剖析
/ e t c / s h a d o w文件包含用户名和加密口令以及下面一些域:
(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
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 |