大家好!在处理Linux这个出色的操作系统时,最先遇到的关卡之一就是“用户管理”。为什么我们要为每个用户单独创建账户,又为什么要复杂地划分群组呢?🤔
原因正是安全与权限管理。通过只赋予每个人必要的权限并明确追踪操作记录,系统可以运行得更加稳定和安全。今天,我将A到Z地、简单明了地为大家讲解Linux用户和组管理的所有内容!

1. 邀请新用户 (useradd, adduser)
向系统添加新用户的命令主要有两种:
- useradd: 基本的低级(low-level)工具。可以通过选项在一行中指定所有设置,因此常用于脚本。
- adduser: 基于useradd创建的用户友好型脚本。以交互方式进行,方便初学者使用。
在这里,我们将重点介绍具有强大选项的useradd。
# 创建用户'harry',并指定默认shell为zsh,辅助组为sudo的示例
sudo useradd -m -s /bin/zsh -G sudo harry
- -m: 创建用户的主目录。(通常是 /home/username)
- -s: 指定用户登录时使用的默认Shell。(例如:/bin/bash, /bin/zsh)
- -g: 指定用户的主(Primary)组。(下面会详细说明!)
- -G: 指定用户所属的辅助(Secondary)组,用逗号分隔。
2. 设置用户密码 (passwd, chpasswd)
创建用户后,需要设置密码,对吧?
- passwd [用户名]: 最常见的方法。管理员用于设置其他用户的密码。
`
sudo passwd harry
`
- chpasswd: 在脚本中设置密码时非常实用的命令。
`
将用户’harry’的密码设置为’supersecret’
echo ‘harry:supersecret’ | sudo chpasswd
`
3. 组的概念:主组 vs 辅助组 (最重要!)
在Linux中,组是权限管理的核心。用户必须属于一个“主组”,并且可以额外属于多个“辅助组”。
🏢 主组 (Primary Group)
- 就像用户所属的“主要部门”。
- 当用户创建文件时,该文件默认归属于这个主组。
- 如果在创建用户时未指定,通常会自动创建一个与用户名同名的组作为主组。
🤝 辅助组 (Secondary Groups)
- 就像用户参与的 extit{ extit}“项目团队”或“社团” extit{ extit}。
- 用于赋予用户对特定文件或目录的额外访问权限。
- 最典型的例子是sudo或wheel组。属于这些组的用户可以临时获得管理员权限!
用户的组信息可以通过id命令一目了然。
id harry
# uid=1001(harry) gid=1001(harry) groups=1001(harry),27(sudo)
# ▲ 主组(gid) ▲ 辅助组(groups)
4. 修改现有用户信息 (usermod)
如果想修改已创建的用户信息,可以使用usermod (User Modify) 命令。
修改主组
我们把harry的主要部门移到sales团队吧?
# 将harry的主组更改为sales
sudo usermod -g sales harry
- -g: 这是修改主组的选项。
添加到辅助组 (⚠️ 注意!)
让harry也加入developers项目团队吧。
# 将harry“添加”到developers组
sudo usermod -aG developers harry
- -aG: 将用户 extit{ extit}添加(Append) extit{ extit}到新的辅助组。这里的-a选项非常重要!
- 如果只输入usermod -G developers harry而没有-a,用户将退出所有现有的辅助组(如sudo),只属于developers组,所以务必注意。
5. 管理组本身的命令
- groupadd [组名]: 创建新组。(例如:sudo groupadd sales)
- groupdel [组名]: 删除现有组。
结论:权限管理的开始与结束
只要您清楚理解useradd、passwd、usermod、id这四个命令以及“主组/辅助组”的概念,就相当于掌握了Linux权限管理的一半。
系统地管理用户和组的习惯是加强系统安全、防止意外错误的最基本的第一步。今天学到的内容将帮助您使服务器更加坚固!🚀
标签:
Linux, 用户管理, 组管理, useradd, usermod, passwd, chpasswd, sudo, Linux基础, 系统管理
发表回复