这是一个很重要的文件,保存了 Linux 里面所有用户的基本信息。
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
...
/etc/passwd 文件的每一行信息,代表一个用户,我们自己也能在这个文件按照上面的格式,写入这样的一行信息,也就相当于新增了一个用户。Linux 的所有一切,都可以通过修改一个文件改变,这就正是我们开篇提到的 一切皆文件
的概念。
在每一行信息中又通过 :
号分割成七个部分,每个部分又代表了不同的含义。
x
字符表示,其实它的真身保存在另外一个文件 /etc/shadow
,是加密的状态。/etc/group
。上面 /etc/passwd 这个文件的阅读权限,所有用户都可以。于是怕直接把密码放在这个文件里面,可能会遇到安全问题,于是 Linux 把密码单独的放到 /etc/shadow
文件,当然存放的也不会是明文密码,而是加密过后的。/etc/shadow 除了保存密码之外,也保存了一些与密码相关的配置信息。
1 root:*:17647:0:99999:7:::
2 daemon:*:17647:0:99999:7:::
3 bin:*:17647:0:99999:7:::
4 sys:*:17647:0:99999:7:::
5 sync:*:17647:0:99999:7:::
6 games:*:17647:0:99999:7:::
7 man:*:17647:0:99999:7:::
8 lp:*:17647:0:99999:7:::
9 mail:*:17647:0:99999:7:::
10 news:*:17647:0:99999:7:::
...
30 jmjc:$6$p9Wzl9Mk6GG7Z/1/$a9I8URYE/TUsSGMscXkW4S/.lm4qckmXuF0x2KZwCVNrewCRRdO1ndqO2S6NwaHmDQSS/tJX.hkt5WvivWu.B1:17698:0:99999:7:::
同样的 /etc/shadow 的格式和 /etc/passwd 是一样的,每一行代表一个用户,以 :
号作为功能分割。
*
号,或者其他单个的特殊符号 ! / x ...
,说明该用户还未设置密码,大概率是一个虚拟用户。该文件用于存放组名,关联的是一个 GID
。
1 root:x:0:
2 daemon:x:1:
3 bin:x:2:
4 sys:x:3:
5 adm:x:4:syslog,jmjc
6 tty:x:5:
7 disk:x:6:
8 lp:x:7:
9 mail:x:8:
10 news:x:9:
11 uucp:x:10
...