Linux操作系统接收到用户名和密码后,会首先在“/etc/passwd”查找输入的用户名,找到该用户名后会读取该用户的UID和GID以及该用户的主目录、个性化设置等内容。之后根据查找到的UID,在“/etc/shadow”文件中查询用户密码,如果密码匹配,则完成登录过程,进入用户界面或用户Shell。可以看出,“/etc/passwd”和/etc/shadow”这两个文件的重要性。下面就简单介绍这两个文件的内容,从底层配置文件了解用户账户在系统中的详细信息。
#查看用户UID
os@tedu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
......省略
gdm:x:120:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
os: x: 1000: 1000: OS,,,: /home/os: /bin/bash
#1 2 3 4 5 6 7
cups-pk-helper:x:121:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
在passwd文件中每一行代表一个账户信息,每一行以“:”(英文冒号)为分隔符,共7段,保存账户的一些基本信息。passwd文件第一行信息为root账户信息,该账户是最重要的一个账户,对Linux文件系统中的所有文件和设备拥有绝对控制权。Root账号之后有许多系统运行必备的账号,如:bin、daemon、adm等。再之后是一般用户账户,此处以“os”用户为例,说明每一行中每字段的意义。
- 账户名称:用户用来登录使用的名称,方便记忆,一般为英文、数字的组合。
- 账户密码,用户登录时使用的密码,但是该文件是所有用户都可读的,显然如果可以查看任意用户的密码是很不安全的,所以该字段已经被替换成了“x”,真实的密码已经加密并保存到“/etc/shadow”文件中。
- UID(用户标识符),每个用户都有一个独立的UID,由一串数字构成。
- GID,用户所在组的ID号,也是由一串数字构成,gid的信息保存在另一个文件中,回头再说
- 用户信息说明该字段主要是解释账号的意义,比如:姓名、家庭住址、工号工位信息等。
- 用户默认主文件夹用户主文件夹的绝对路径,例如:用户root的主文件夹在“/root”,用户os的主文件夹在“/home/os”。可以通过修改该路径将用户主文件夹移动到别的目录中。
- 用户默认Shell前面章节中提到Ubuntu操作系统中打开终端操作时是打开的bash环境,因为Ubuntu默认的shell是bash。对不同用户来说可以通过修改该字段,设置自己喜欢的shell环境为默认环境。
同passwd文件类似,shadow文件中也是每一行代表一个账户信息,其中每一行用“:”分割,共分为9个字段,如下所示。
查看shadow文件中的用户密码
os@tedu:~$ sudo cat /etc/shadow
root:!:17729:0:99999:7:::
daemon:*:17647:0:99999:7:::
bin:*:17647:0:99999:7:::
......省略
os: $6$6YKe......省略/cbvit.mCWmeeuceQM0: 17729: 0: 99999: 7 : : :
#1 2 3 4 5 6 7 8 9
cups-pk-helper:*:17729:0:99999:7:::
每个字段的意义如下:
- 账户名称:用户用来登录使用的名称,方便记忆。
- 密码:账户的真实密码,一般会加密之后再进行保存,很难被破解。另外,在不同的Linux发行版中,采用的加密算法可能也不相同,但对某一种加密算法来说,加密后的密码长度是一定的,可以通过改变加密后的密码长度来使密码失效,达到限制用户登录目的。
- 最近更新密码的日期:该字段保存的是上一次更改密码的日期,该日期以天为单位,表示从1970年1月1日至今累加的天数。示例中显示“17729”转换成日期为2018年7月17日,说明是在7月17日更改的密码。
- 密码不可被更改的天数:该字段表示上次密码更改后,至少多少天后才可以再更改密码。示例中该字段是0,表示随时可以更改密码。该字段可以限制用户或管理员频繁更改密码。
- 密码需要重新更改的天数:该字段表示,上次更改密码后,最多多少天后需要更改密码,用户或管理员必须在规定的时间内修改密码,否则密码会过期。密码过期后,用户依然是可以登录系统并进行其他工作的,不过密码过期后会在用户登录时强制要求更改密码才可以继续使用。示例中该字段是99999,换算为年大约273年,表示必须在273年之内修改密码,一般即可认为不需要修改密码。
- 密码需要更改期限前的警告天数:和第5个字段相配合,该字段表示在密码过期前多少天进行警告。示例中该字段为7,表示密码到期前7天会弹出提醒,提醒用户或管理员更改密码。
- 密码过期后账户宽限日期:该字段和第5字段配合,表示当密码过期后几天内如果用户没有登录更改密码,则密码会失效,密码失效后则该账户将无法使用该密码进行登录。
- 账户失效日期:和第3字段类似,也是从1970年1月1日开始累积的天数,表示该账户在规定日期之后将失效,此时无论密码是否过期,都不能再使用。
- 保留:该字段保留,以后添加新功能时可能会使用到。
网友评论