密码是Linux安全的重要组成部分,通过这部分的学习,你应该学会怎样为你的Linux系统建立一个密码策略,密码保存在什么地方,怎样为你的用户管理密码等。

有效的密码策略是一个好的系统管理计划的重要组成部分。这个策略需要包括以下几点:

  • 允许的密码组成和禁止的密码组成
  • 修改密码的频率
  • 取回或重置丢失的密码
  • 用户对密码的操作

密码文件是/etc/passwd,它是系统上所有用户的数据库文件。每一行的形式如下:

username:password:uid:gid:gecos:homedir:shell

简要介绍下gecos字段。这个字段是为了记录用户的多样性的信息。例如,用户的全名,办公室的位置,办公室电话,家庭电话,简单备注等。出于安全和隐私上的考虑,这个字段目前已经越来越少的被使用到了。但是,系统管理员要知道这个字段,因为传统的Unix程序例如fingermail会用到这个字段。因此gecos字段通常被成为finger information field。这个字段是逗号界限格式,可以通过chfnchange finger)命令更改。如果密码字段出现一个星号,那么这个用户将不能登陆Linux系统。系统管理员可以通过修改密码字段或者使用passwd -l命令锁住用户。一些系统用户通常有root权限,因此系统管理员不希望这些用户可以登陆Linux系统,可以通过将这些系统用户的shell设置为sbin/nologin或者bin/false阻止这些账户的登陆。

下面给出/etc/passwd文件的内容形式:

cindy@cindy-ThinkPad-X200:~$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文件的内容形式:

cindy@cindy-ThinkPad-X200:~$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. 1个字段是用户名。
  2. 2个字段是编码后的密码。
  3. 3个字段是上次修改密码的时间,这个时间是从197011日起计算。这个日子在UNIX领域被成为epoch
  4. 4个字段是再过多少天密码才可以被再次修改的时间(避免修改密码到新密码后快速修改会原始密码)
  5. 5个字段是再过多少天密码必须被再次修改的时间。
  6. 6个字段是密码过期前多少天,用户会收到警告。
  7. 7个字段是密码过期后多少天,用户会被禁用。
  8. 8个字段是从197011日起,该帐号disabled的天数。
  9. 9个字段为保留字段。

需要注意的是密码过期日期和警告在Ubuntu中是默认禁用的。如果需要启用相应的密码策略,需要系统管理员建立相应的密码策略。etc/shadow的权限时600,常规用户不可读。

系统管理员可以手动编辑/etc/shadow文件或者使用chage命令更改密码规则(详细信息请参考shadowchageman页)。

系统管理员可通过命令chpasswd批量修改用户密码。命令接受的输入为用户名/密码对:

sudo chpasswd username:password

可以通过重定向文件输入来批量工作。此外,Ubuntu还提供了newusers命令,批量增加文本文件中的用户,并为用户分配群组,分配/home目录等。


Logo

更多推荐