密码是Linux安全的重要组成部分,通过这部分的学习,你应该学会怎样为你的Linux系统建立一个密码策略,密码保存在什么地方,怎样为你的用户管理密码等。
有效的密码策略是一个好的系统管理计划的重要组成部分。这个策略需要包括以下几点:
允许的密码组成和禁止的密码组成
修改密码的频率
取回或重置丢失的密码
用户对密码的操作
密码文件是/etc/passwd,它是系统上所有用户的数据库文件。每一行的形式如下:
username:password:uid:gid:gecos:homedir:shell
简要介绍下gecos字段。这个字段是为了记录用户的多样性的信息。例如,用户的全名,办公室的位置,办公室电话,家庭电话,简单备注等。出于安全和隐私上的考虑,这个字段目前已经越来越少的被使用到了。但是,系统管理员要知道这个字段,因为传统的Unix程序例如finger,mail会用到这个字段。因此gecos字段通常被成为finger information field。这个字段是逗号界限格式,可以通过chfn(change finger)命令更改。如果密码字段出现一个星号,那么这个用户将不能登陆Linux系统。系统管理员可以通过修改密码字段或者使用passwd -l命令锁住用户。一些系统用户通常有root权限,因此系统管理员不希望这些用户可以登陆Linux系统,可以通过将这些系统用户的shell设置为sbin/nologin或者bin/false阻止这些账户的登陆。
下面给出/etc/passwd文件的内容形式:
@linuxidc:~$cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
cindy:x:1000:1000:cindy,,,:/home/cindy:/bin/bash
……
我们注意到没有一个用户显示了密码,而是在密码字段有一个x。这是因为用户密码是阴影密码(shadow passwords),这属于Linux中的一个安全增强机制。真正的密码保存在文件/etc/shadow中。/etc/shadow文件只对于系统管理员和PAM可读。Ubuntu中自动启用了shadow password。下面给出/etc/shadow文件的内容形式:
@linuxidc:~$sudo cat /etc/shadow
[sudo]password for cindy:
root:$7$h9pRtnF/$Zf8pynVBJ/m.DfAl.Q1lgw8ZCmeGYqKCe/47sNfEV6FUq59UnB1CTcZVr4.7AwtyLpizdnwlqxe0f2J/mD6th.:15536:0:99999:7:::
daemon:*:15453:0:99999:7:::
bin:*:15453:0:99999:7:::
sys:*:15453:0:99999:7:::
sync:*:15453:0:99999:7:::
games:*:15453:0:99999:7:::
man:*:15453:0:99999:7:::
lp:*:15453:0:99999:7:::
cindy:$6$/IMKHjoh$osdeLeLwe3f11QXlRts2huVISmSKUpTyaDeXihtYV39.7OAqakAeLda4WAWXpIeeopBmrU/zCDaKhp/aL1gqW1:15536:0:99999:7:::
……
冒号分开的各个字段的解释:
第1个字段是用户名。
第2个字段是编码后的密码。
第3个字段是上次修改密码的时间,这个时间是从1970年1月1日起计算。这个日子在UNIX领域被成为epoch。
第4个字段是再过多少天密码才可以被再次修改的时间(避免修改密码到新密码后快速修改会原始密码)
第5个字段是再过多少天密码必须被再次修改的时间。
第6个字段是密码过期前多少天,用户会收到警告。
第7个字段是密码过期后多少天,用户会被禁用。
第8个字段是从1970年1月1日起,该帐号disabled的天数。
第9个字段为保留字段。
需要注意的是密码过期日期和警告在Ubuntu中是默认禁用的。如果需要启用相应的密码策略,需要系统管理员建立相应的密码策略。etc/shadow的权限时600,常规用户不可读。
系统管理员可以手动编辑/etc/shadow文件或者使用chage命令更改密码规则(详细信息请参考shadow和chage的man页)。
系统管理员可通过命令chpasswd批量修改用户密码。命令接受的输入为用户名/密码对:
sudo chpasswd username:password
可以通过重定向文件输入来批量工作。此外,Ubuntu还提供了newusers命令,批量增加文本文件中的用户,并为用户分配群组,分配/home目录等。