Linux 用户和用户组管理
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。每个用户账号都拥有一个唯一的用户名和口令(账号密码)。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
✅ 实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
Linux 系统用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录 Shell 等资源。
刚添加的账号是被锁定的,无法使用,需要使用passwd
命令设置密码后才能解锁并正常登录。
1. 添加新用户账号
使用useradd
命令可以在 Linux 系统中添加新的用户账号。以下是基本用法和常见选项:
sudo useradd [选项] 用户名
✅ 常用选项:
-c comment
:指定一段注释性描述。-d 目录
:指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。-g 用户组
:指定用户所属的用户组。-G 用户组
:用户组 指定用户所属的附加组。-s Shell文件
:指定用户的登录 Shell。-u 用户号
:指定用户的用户号,如果同时有-o
选项,则可以重复使用其他用户的标识号。
✅ 使用实例:
1. 创建普通用户(默认设置):
sudo useradd username
- 系统会使用默认设置(如
/etc/default/useradd
中的配置)创建用户,但不会创建家目录。
2. 创建用户并指定家目录(推荐):
sudo useradd -m username
-m
或--create-home
:自动创建用户的家目录(通常位于/home/username
)。
3. 指定用户的家目录路径:
sudo useradd -m -d /path/to/custom_home username
-d
:自定义家目录路径。
2. 删除帐号
当一个账号不想再使用时,可以在系统中直接删除。
删除用户账号就是要将/etc/passwd
等系统文件中的该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel
命令,其格式如下:
sudo userdel [选项] 用户名
✅ 常用选项:
-r 用户名
:彻底删除用户,清理/home/用户名
和/var/mail/用户名
。-f 用户名
:强制删除,即使用户当前已登录或存在未退出的进程(慎用,可能残留进程)。-Z 用户名
:移除 SELinux 用户映射(仅适用于 SELinux 系统,如 RHEL/CentOS)。
✅ 使用实例:
1. -r:删除用户并移除家目录和邮件池:
sudo userdel -r kaiczuser
- 用户 kaiczuser 被删除(
/etc/passwd
和/etc/shadow
中移除记录)。 - 家目录
/home/kaiczuser
被删除(如果存在)。 - 邮件池
/var/mail/kaiczuser
被删除(如果存在)。
2. -f:强制删除用户(即使仍在登录或运行进程):
sudo userdel -f kaiczuser
- 即使用户 kaiczuser 仍在运行进程或登录,也会被强制删除。
- 但家目录和邮件池不会自动删除(除非同时加
-r
)。
3. -Z:移除 SELinux 用户映射(仅 SELinux 系统有效):
sudo userdel -Z kaiczuser
- 用户 kaiczuser 被删除。
- SELinux 用户映射(
/etc/selinux/targeted/seusers
)中的记录被移除。
3、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录 Shell 等。
修改已有用户的信息使用usermod
命令,其格式如下:
sudo usermod -[选项] 用户名
✅ 常用选项:
-l 新用户名
:修改用户登录名(不会自动重命名家目录)-u 新UID
:修改用户ID(需手动更新文件所有权)-g 主组名/GID
:修改用户主组-G 附加组名
:替换用户的附加组列表(用逗号分隔多个组)-aG 附加组名
:追加附加组(需与-G配合使用)-d 新家目录
:修改家目录路径(不会移动内容)-m
:与-d配合使用,移动原家目录内容到新位置-s 新shell
:修改用户登录shell(如/bin/bash或/sbin/nologin)-c "注释"
:修改用户描述信息(GECOS字段)-e 日期
:设置账号过期时间(YYYY-MM-DD格式)-f 天数
:密码过期后宽限天数-L
:锁定用户账号(禁止登录)-U
:解锁用户账号-Z SEUSER
:修改SELinux用户映射(仅SELinux系统)
✅ 使用实例:
1. -l:修改用户登录名
# 将 old_user 改名为 new_user(需手动处理家目录)
sudo usermod -l new_user old_user
sudo mv /home/old_user /home/new_user
/etc/passwd
中的用户名记录被更新- 需手动修改 crontab 等服务的用户引用
2. -u:修改用户UID
# 将用户UID改为1005(需更新文件所有权)
sudo usermod -u 1005 username
find / -user old_uid -exec chown 1005 {} \;
- 必须确保新UID未被其他用户占用
- 正在运行的进程可能需要重启
3. -d + -m:迁移家目录
# 将家目录迁移到/new/location(自动移动文件)
sudo usermod -d /new/location -m username
- 自动创建目标目录(如果不存在)
- 原目录下的隐藏文件(如.bashrc)也会被迁移
4. -aG:追加附加组
# 追加到sudo和docker组(保留原有组)
sudo usermod -aG sudo,docker username
- 必须使用
-a
参数避免覆盖原有组 - 组名之间用逗号分隔(不能有空格)
5. -L/-U:账号锁定/解锁
# 锁定账号(在密码前加!)
sudo usermod -L username
# 解锁账号
sudo usermod -U username
- 锁定后
/etc/shadow
中密码字段首字符变为!
- 不影响已建立的SSH连接
6. -e:设置账号过期
# 设置2024年底过期(YYYY-MM-DD格式)
sudo usermod -e 2024-12-31 username
- 到期后用户将无法登录
- 查看状态:
chage -l username
4、用户口令的管理
用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的 Shell 命令是passwd
,超级用户可以为自己和其他用户指定口令,普通用户只能修改自己的口令。
✅ 命令的格式为:
sudo passwd -[选项] 用户名
✅ 常用选项:
-d
:删除用户口令,即使账户无密码。-f
:强迫用户下次登录时修改口令。-l
:锁用用户账户口令,即禁用账号。-u
:解锁用户账户口令,即解锁账号。
例如,假设当前用户是 kaicz,下面是使用passwd
修改该用户口令的命令:
$ passwd # 修改当前用户口令
Old password:****** # 输入当前密码(显示为星号)
New password:******* # 输入新密码(需符合密码策略)
Re-enter new password:******* # 再次确认新密码
假设当前用户是超级用户,可以用下面命令修改 kaicz 用户的口令:
$ passwd kaicz # 修改 kaicz 用户口令
New password:****** # 输入新密码(需符合密码策略)
Re-enter new password:******* # 再次确认新密码
Linux 系统用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同,如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group
文件的更新。
1. 增加新用户组
使用groupadd
命令,可以增加一个新的用户组。以下是基本用法和常见选项:
sudo groupadd [选项] 用户组
✅ 常用选项:
-g GID
:指定新用户组的组标识号(GID)。-o
:一般与-g选项同时使用,表示新用户组的 GID 可以与系统已有用户组的 GID 相同。
✅ 使用实例:
1. 使用groupadd
创建用户组:
sudo groupadd group1
- 此命令向系统中增加了一个新组
group1
,新组的组标识号是在当前已有的最大组标识号的基础上加 1。
2. 使用groupadd
创建用户组(指定组标识号为 101):
sudo groupadd -g 101 group2
- 此命令向系统中增加了一个新组
group2
,同时指定新组的组标识号是 101。
2. 删除用户组
使用groupdel
命令,可以删除一个已有的用户组。以下是基本用法:
sudo groupdel 用户组
✅ 使用实例:
1. 使用groupdel
命令,删除用户组:
sudo groupdel group1
3. 修改用户组
使用groupmod
命令,可以修改用户组的属性。以下是基本用法和常见选项:
sudo groupmod [选项] 用户组
✅ 常用选项:
-g GID
:为用户组指定新的组标识号。-o
:与-g
选项同时使用,用户组的新 GID 可以与系统已有用户组的GID相同。-n 旧用户组 新用户组
:将用户组的名字改为新名字。
✅ 使用实例:
1. 使用groupmod
命令,修改用户组标识号:
groupmod -g 102 group2
2. 使用groupmod
命令,修改用户组标识号和用户组名:
sudo groupadd -g 101 group2
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈