今天刷题的时候用到了load_file("/etc/passwd")
,不知道这个文件有啥内容和作用,写篇文章总结所学。
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
....
www:x:500:500:www:/home/www:/bin/bash
以上就是这个文件的内容,这个文件中保存的就是系统中所有的用户和用户的主要信息。
七个字段的详细含义
每行代表一个用户,用:
作为分隔符,划分为 7 个字段,我们逐个来看具体的含义。
以第一行root:x:0:0:root:/root:/bin/bash
为例:
-
第一个字段中保存的是:注册名,也就是用户名称,这里为
root
。 -
第二字段为:口令(passwd),也就是密码,这里的
x
代表的是密码标志,而不是真正的密码,真正的密码是保存在 /etc/shadow 文件中。
注:在早期的 UNIX 中,这里保存的就是真正的加密密码串。现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc /shadow作为真正的口令文件,用于保存包括个人口令在内的数据。 -
第三个字段就是用户 ID(UID),这里为
0
,代表超级用户。
注:0=超级用户、1~499=系统用户(伪用户)、500-65535=普通用户。 -
第四个字段就是用户的组 ID、这里为
0
,代表所属组为0组。 -
第五个字段是这个用户的简单说明,这里为
root
,没有什么特殊作用,可以不写。
注:如用户的真实姓名、办公室地址、联系电话等。 -
第六个字段是这个用户的家目录,这里为
/root
。
注:超级用户的家目录是 /root 目录,普通用户在 /home/ 目录下建立和用户名相同的目录作为家目录,如 lamp 用户的家目录就是 /home/lamp/ 目录。 -
第七个字段为:用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名,可以理解为用户登录之后所拥有的权限,这里为
/bin/bash
,代表可以使用bash程序。
例:若为/sbin/nologin
代表禁止登录,一般为系统用户。若为/usr/bin/passwd
,这是修改用户密码程序的路径,代表用户只能改自己的密码。
拓展:初始组与附加组的概念
这里第四个字段-用户组
可以发现和第三个字段-用户id
是一样的,这里需要解释一下初始组和附加组的概念。
所谓初始组,指用户一登陆录就立刻拥有这个用户组的相关权限。每个用户的初始组只能有一个,一般就是将和这个用户的用户名相同的组名作为这个用户的初始组。举例来说,我们手工添加用户 lamp,在建立用户 lamp 的同时就会建立 lamp 组作为 lamp 用户的初始组。
所谓附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组要把用户再加入其他的用户组外,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。
举例来说,刚刚的 lamp 用户除属于初始组 lamp 外,我又把它加入了 users 组,那么 lamp 用户同时属于 lamp 组、users 组,其中 lamp 是初始组,users 是附加组。当然,初始组和附加组的身份是可以修改的,但是我们在工作中不修改初始组,只修改附加组,因为修改了初始组有时会让管理员逻辑混乱。
需要注意的是,在 /etc/passwd 文件的第四个字段中看到的 ID 是这个用户的初始组。
参考: