Linux 用户配置文件

/etc/passwd

这是一个很重要的文件,保存了 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 的所有一切,都可以通过修改一个文件改变,这就正是我们开篇提到的 一切皆文件 的概念。

在每一行信息中又通过 : 号分割成七个部分,每个部分又代表了不同的含义。

  • 1. 用户名。
  • 2. 密码,上面都是用 x 字符表示,其实它的真身保存在另外一个文件 /etc/shadow,是加密的状态。
  • 3. uid (用户编号),500 以内的 ID 已经被系统保留了,我们注册的普通用户一般都大于 500 或者 1000。
  • 4. gid (用户组编号),存放在单独管理用户组表 /etc/group
  • 5. 注释。
  • 6. 用户目录。
  • 7. shell 默认是 bash。

/etc/shadow

上面 /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 是一样的,每一行代表一个用户,以 : 号作为功能分割。

  • 1. 用户名。
  • 2. 加密的密码,例如像上面的 * 号,或者其他单个的特殊符号 ! / x ...,说明该用户还未设置密码,大概率是一个虚拟用户。
  • 3. 上一次更改密码的日期。
  • 4. 用户修改密码限制,默认 0 不限制。
  • 5. 用户过期时间,默认 99999 不限制。
  • 6. 密码到期前警告,当前为 7 ,说明如果密码在 7 天后过期会提前警告此用户。
  • 7. 密码失效期限,默认为空。如果该值是 3,说明密码必须修改的期限到了,但是用户并未修改密码,系统会在给他 3 天的保留时间。
  • 8. 账号的生命周期。配置的是秒数,而第 5 段那个 99999 的过期时间,配置的是天数。当前为空,表示不过期。
  • 9. 功能未定义,系统保留用的。

/etc/group

该文件用于存放组名,关联的是一个 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
...
更多教程 HTML5 教程 CSS3 教程 JavaScript 教程 JQuery 教程 React.js 教程 Node.js 教程 Koa2 教程 Python 教程 Linux 教程