Linux 用户管理(一)

September 18, 2017

讲讲 Linux 中用户以及用户组相关的一些知识吧。

用户

首先介绍一个一个文件:/etc/passwd,这个文件中存储了一下与用户相关的信息,举个例子:

$ grep /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
ubuntu:x:500:500:ubuntu,,,:/home/ubuntu:/bin/zsh

内容大概是上面这个样子的,在行数上我做了一些删减,可以看到每一行都代表了一个用户,我们看看每一行的含义,以第一行为例吧。

root:x:0:0:root:/root:/bin/bash
 1   2 3 4   5    6      7

可以看到常见的一行用户信息包含七个部分(由 : 分割),下面分别解释一下每一个部分的含义。

  1. 用户名
  2. 用户密码,曾经 UNIX 的密码就存储在这个字段上面,由于存在安全隐患,后来移到了 /etc/shadow 文件下面
  3. 用户的 UID
  4. 用户的 GID
  5. 用户信息说明,在功能上没有实际用处
  6. 用户的主文件夹
  7. 用户的默认 Shell

在 Linux 中,UID 的数值有一些特殊的含义,当 UID 为 0 的时候,代表该账号是系统管理员,当 UID 为 1-499 的时候,表示是系统账号,然后其他范围是可登陆账号。

用户组

就像上面介绍的用户相关文件 /etc/passwd 一样,用户组也有一个类似的文件,该文件为 /etc/group,让我们看一下该文件中的内容。

$ grep /etc/group
root:x:0:
daemon:x:1:
ubuntu:x:500:

这个文件内容长这个样子(对行数有删减),可以看到与 /etc/passwd 有相似之处,让我们解释一下各个字段的含义。

root:x:0:
 1   2  3 4

可以看到一共有四个字段。

  1. 用户组名称
  2. 用户组密码,同样,由于安全原因,用户组密码移动到了 /etc/gshadow 中去了,另外,平常也怎么会用到 /etc/gshadow
  3. 该用户组的 GID
  4. 该用户组支持的账号名称

其他

看到这里,细心的你会发现,在用户文件中,有一个字段表示为 GID,而在用户组文件中,第四个字段则为用户组支持的账号名称,你可能会觉得奇怪,为什么在两个地方同时存在了类似的信息。下面我来解释一下。

这就涉及到了初始用户组和次要用户组了。在用户文件中的 GID 字段,表示该用户的初始用户组,当用户登录到系统的时候,就获得了初始用户组相关的权限。而在用户组文件中列举的该用户组支持的账号名称,则表示该用户组是所列举用户的次要用户组。所以,如果一个用户组是某个用户的初始用户组,则不需要将该用户填到该用户组的第四个字段。

拿我上面举的例子说明,用户 root 的初始用户组 GID 为 0,即用户组 root,可以看到,用户组 root 的第四个字段为空。

然后再说一下有效用户组,通过上面的介绍,我们知道,一个用户可以属于多个用户组,我们也知道,创建文件的时候文件在用户组方面会有相应的权限,那么,当你创建一个文件的时候,这个文件属于的用户组是什么呢?者涉及到有效用户组,使用 groups 命令可以查看有效用户组。

$ groups
ubuntu adm cdrom sudo dip plugdev lpadmin sambashare

位列第一个的用户组即有效用户组,创建的文件所属的用户组为有效用户组的。

我们也可以切换有效用户组,使用 newgrp 即可.

newgrp groupname

一个小知识点事,newgrp 会创建一个新的 shell 进程。

这就是有关用户和用户组的一些简单的知识了,下面再写一篇文章介绍一些用户管理相关的命令。

# Linux
知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
© 2015 - 2022 zhuscat
Hosted on Vercel