一文读懂linux下用户与群组

接触过linux的都知道,linux下所有文件都有对应的用户和群组。用户和群组是linux系统中非常重要的一个概念。今天,我们一起来看看linux下的用户和群组。

用户ID查看

首先,linux系统会为每个用户都分配一个用户ID以及组ID,linux是以这个ID号为唯一标识符。那么,如何查看用户的ID号呢?非常简单:使用id命令即可。直接输入id表示查看当前用户的,后接用户名则表示查看该用户的ID。

# id
uid=0(root) gid=0(root) groups=0(root)
# id mysql
uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)

/etc/passwd文件

要想理解linux下用户和组,那么就需要知道几个配置文件以及这些配置文件各个字段的意义。下面,我们来看看/etc/passwd这个文件,文件结构如下:

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
……

该配置文件中每一行都是一个用户相关信息,每一行中都有7个字段(以:作为分隔符)。各个字段含义如下:

  • 第一个字段表示用户名
  • 第二个字段表示密码,这里都用x代替。密码实际存放在/etc/shadow文件中
  • 第三个字段表示用户ID,ID为0的表示系统超级管理员,一般默认用户名为root。1~999表示系统账号,系统账号一般的登录shell不为/bin/bash。>=1000表示一般用户。
  • 第四个字段表示用户组GID,但新建一个账号后,系统除了会创建一个账号为,还会创建以这个账号为组名的用户组。
  • 第五个字段表示,用户说明,这个没多大用处。
  • 第六个字段表示用户家目录,即但该用户登录后,默认会进入的目录。
  • 第七个字段表示用户可用的shell。但我们想让一个用户不能进行登录操作,就可以将此用户的shell改为/sbin/nologin

/etc/shadow文件

看完了/etc/passwd文件后,我们来看看和用户密码相关的配置文件/etc/shadow。该文件结构如下:

# head -n 3 /etc/shadow
root:$6$E/9IBcKQna8DvKn2LsHNu5NGQ8ZPXClq1DM4J6UCzb0lgWi/:18204:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::

和/etc/passwd文件一样,该文件也是一行表示一个用户的密码相关信息,也是以:作为分隔符号。但它的字段比较多,共有9个字段。下面看看这些字段表示的含义吧:

  • 用户名
  • 密码,这个是加密后的密码
  • 最近一次修改密码的时间,该时间是以1970年一月一日为标准,距离该标准的天数
  • 多长时间不能修改。该字段以第三个字段为标准,表示多少天内禁止修改密码。
  • 密码有效期。
  • 密码快到期提前多少天开始提醒用户
  • 密码过期后的宽限时间,及过期后还有多少天的宽限时间。
  • 账号失效时间。当账号失效时间到了,该账号就不能使用。不管密码的有效期、宽限时间等。
  • 保留字段。

/etc/group

接下来,我们再来看用户组配置文件。

# head -3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

该配置文件字段较少,只有四个字段,意义如下:

  • 组名
  • 密码,这里都以x替代,真正的密码存放在/etc/gshadwo文件中
  • 组ID
  • 附加组:每个用户都可以加入多个附加组,但只有一个原始组。

掌握了上面三个所说的配置文件,对于理解linux下用户和组的概念非常有帮助。对于账号管理的命令的各个参数的意义就更加明白。

其实用户组也有对应的密码管理配置文件,但日常中几乎不会用到,所以这里就不介绍了。