首页 > 编程笔记

Linux对用户和用户组的管理

Linux系统是一个多用户、多任务的分时操作系统,用户在使用该系统的资源时,需要首先向系统管理员申请一个账号,这个账号只能该用户使用,然后用户就可以使用这个账号的身份进入系统。

用户的账号一方面不仅可以帮助系统管理员对使用系统的用户进行跟踪,而且还能控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性的保护。

注意,每个用户账号都拥有一个唯一的用户名和密码。用户在登录时输入正确的用户名和密码后,就能够进入系统和主目录。

用户账号的管理包括以下几个方面:
  1. 用户账号的添加、删除与修改;
  2. 用户组的创建与修改;
  3. 用户配置文件。

用户与用户组是什么

用户是指使用操作系统的人;用户组指在操作系统中具有相同系统权限的一组用户。

Linux 系统对账号和组的管理是通过 ID 号来实现的。用户在登录系统时,输入用户名和与之对应的密码,操作系统会先将用户名转化为 ID 号,然后判断该账号是否存在,并比对密码是否正确。

注意在 Linux 系统中,用户的 ID 号被称为 UID,用户组 ID 号被称为 GID。其中,UID 为 0 时,代表系统最高管理员,也就是 root 账号。

Linux 操作系统中的组分为基本组和附加组,一个用户同一时刻只可以加入一个基本组中,但可以同时加入多个附加组中。默认在创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中。

用户和用户组的对应关系有以下 4 种:
  1. 一对一:一个用户可以存在一个组中,是组中的唯一成员。
  2. 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限。
  3. 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
  4. 多对多:多个用户可以存在多个组中。

用户和用户组的配置文件

在 Linux 系统中包含 4 个配置文件,分别为 /etc/passwd、/etc/shadow、/etc/group 和 /etc/gshadow 文件。

1) /etc/passwd文件

/etc/passwd 文件存储了系统中所有用户的基本信息,也被称为用户信息数据库。

在 /etc/passwd 文件中,每一个用户都占有一行记录,并且用冒号划分成 7 个字段,如图 1 所示。

[root@bogon ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
......

其中每个字段都代表着一种含义,以 root 用户为例:

注意,/etc/passwd 文件中的密码字段都被设置成了 x,这并不是说所有的用户账号都使用相同的密码;/bin/Bash 为可登录系统的 Shell,而 /sbin/nologin 表示该账号无法登录系统。

2) /etc/shadow文件

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息。/etc/shadow 文件只有 root 用户才有查看权限,其他用户没有此权限,这样就保证了用户密码的安全性。

/etc/shadow 文件存储了所有用户的密码信息,每一个用户占用一行记录,如下所示:

[root@bogon ~]# cat /etc/shadow
root:$1$QfSojmtW$5wox.SEvltl/2nt0jxEnq0:18463:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
......

可以看出,/etc/shadow 文件中存储的密码信息也以冒号为分隔符,每条记录中都包含 9 个字段:

3) /etc/group文件

/etc/group 文件是用户组的配置文件,即用户组的所有信息都存放在此文件中。

/etc/group 文件包含 Linux 系统中使用到的每个组的信息,如下所示:

[root@bogon ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:

可以看出,/etc/group 文件中每一行各代表一个用户组。在各用户组中,以冒号作为字段之间的分隔符,分为 4 个字段:

注意,在用户组列表中,有些组并没有显示出用户,但并不说明组中没有该成员。当用户在 /etc/passwd 文件中指定某个组作为默认组时,则该用户不会作为该组成员出现在 /etc/group 文件中。

4) /etc/gshadow文件

/etc/gshadow 文件,用于存储 Linux 系统中用户组的密码信息。/etc/gshadow 文件也只有 root 用户才有查看权限,从而保证了用户组密码的安全性。

通过使用命令cat /etc/gshadow来查看文件存储信息,如下所示:

[root@bogon ~]# cat /etc/gshadow
root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon
tty:::
disk:::
lp:::daemon
mem:::
......

在 /etc/gshadow 文件中,每行代表一个组用户的密码信息,各行信息用冒号作为分隔符进行分隔开,共分为 4 个字段:

优秀文章