主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

Linux 用户和用户组管理

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


评论区 0
发表评论