在 Linux 系统中,用户和用户组是基本的权限管理机制。理解它们的概念和如何操作对于系统管理是非常重要的。
用户(User)
用户是系统中的一个实体,代表一个能够登录系统并执行任务的个体。每个用户在系统中都有一个唯一的用户ID(UID)和用户名。
- UID(User ID): 每个用户在系统中的唯一标识。系统保留一些 UID 给系统用户(通常是 0-999)。
- 用户名(Username): 用户在系统中的名字,用于登录和标识。
用户组(Group)
用户组是用户的集合,用户组用于简化权限管理。每个用户组都有一个唯一的组ID(GID)和组名。
- GID(Group ID): 每个用户组在系统中的唯一标识。
- 组名(Group Name): 用户组在系统中的名字,用于标识和管理权限。
用户和用户组的关系
- 每个用户至少属于一个用户组,这个组叫做主组。
- 用户可以属于多个附加组,这样可以方便地授予权限。
常用的用户和用户组管理命令
用户管理
useradd
:添加新用户。usermod
:修改用户信息。userdel
:删除用户。passwd
:设置或修改用户密码。
用户组管理
groupadd
:添加新用户组。groupmod
:修改用户组信息。groupdel
:删除用户组。gpasswd
:管理组成员。
getent passwd
命令
getent
命令用于从系统数据库(如 passwd、group、hosts 等)中获取条目。getent passwd
命令用于获取系统中的用户条目。
用法
getent passwd [username]
- 如果不带参数,
getent passwd
会列出所有用户。 - 如果带参数
username
,getent passwd username
会列出指定用户的信息。
示例
# 列出所有用户
getent passwd
# 列出指定用户的信息
getent passwd alice
输出格式
getent passwd
命令的输出格式与 /etc/passwd
文件的内容相同,每一行代表一个用户,字段用冒号 :
分隔:
username:password:UID:GID:GECOS:home_directory:shell
username
:用户名password
:用户密码(通常是x
,表示密码被存储在/etc/shadow
文件中)UID
:用户 IDGID
:主组 IDGECOS
:用户描述信息home_directory
:用户的主目录shell
:用户的默认 shell
实例讲解
假设有一个用户 alice
,getent passwd alice
的输出可能是:
alice:x:1001:1001:Alice:/home/alice:/bin/bash
alice
:用户名x
:表示密码被存储在/etc/shadow
中1001
:用户 ID1001
:主组 IDAlice
:用户描述信息/home/alice
:用户的主目录/bin/bash
:用户的默认 shell