一、用户管理
1. useradd
– 创建用户
-
用途:创建新用户。
-
语法:
useradd [选项] 用户名
-
常用选项:
-m
:创建用户的家目录(如/home/用户名
)。-s
:指定用户的默认 Shell(如/bin/bash
)。-g
:指定主组(默认创建与用户名相同的组)。-G
:指定附加组(可加入多个组)。
-
示例:
# 创建用户 alice,并指定家目录和 Shell sudo useradd -m -s /bin/bash alice # 创建用户 bob,并加入 developers 组 sudo useradd -m -G developers bob
2. passwd
– 修改用户密码
-
用途:设置或修改用户密码。
-
语法:
passwd [用户名]
-
示例:
# 修改当前用户的密码 passwd # 修改指定用户的密码(需管理员权限) sudo passwd alice
3. usermod
– 修改用户属性
-
用途:修改现有用户的属性(如组、Shell、家目录等)。
-
语法:
usermod [选项] 用户名
-
常用选项:
-aG
:将用户添加到附加组(需与-G
一起使用)。-s
:修改用户的默认 Shell。-d
:修改用户的家目录。-L
:锁定用户(禁用登录)。-U
:解锁用户。
-
示例:
# 将 alice 添加到 sudo 组 sudo usermod -aG sudo alice # 修改 bob 的默认 Shell 为 /bin/zsh sudo usermod -s /bin/zsh bob # 锁定用户 alice sudo usermod -L alice
4. userdel
– 删除用户
-
用途:删除用户及其相关文件。
-
语法:
userdel [选项] 用户名
-
常用选项:
-r
:删除用户的家目录和邮件文件。
-
示例:
# 删除用户 alice 及其家目录 sudo userdel -r alice
二、组管理
1. groupadd
– 创建组
-
用途:创建新用户组。
-
语法:
groupadd [选项] 组名
-
示例:
# 创建 developers 组 sudo groupadd developers
2. groupmod
– 修改组属性
-
用途:修改现有组的属性(如组名)。
-
语法:
groupmod [选项] 组名
-
常用选项:
-n
:修改组名。
-
示例:
# 将组名 developers 改为 devs sudo groupmod -n devs developers
3. groupdel
– 删除组
-
用途:删除用户组。
-
语法:
groupdel 组名
-
示例:
# 删除 devs 组 sudo groupdel devs
三、权限管理
1. chmod
– 修改文件权限
-
用途:修改文件或目录的权限(读
r
、写w
、执行x
)。 -
语法:
chmod [选项] 权限 文件或目录
-
权限表示:
- 符号模式:
u
(所有者)、g
(所属组)、o
(其他用户)。
示例:chmod u+x script.sh
(给所有者添加执行权限)。 - 数字模式:三组数字分别对应所有者、组、其他用户的权限。
权限计算:r=4
,w=2
,x=1
(如755
=rwxr-xr-x
)。
- 符号模式:
-
示例:
# 设置文件权限为 rw-r--r-- chmod 644 file.txt # 给脚本添加执行权限 chmod +x script.sh
2. chown
– 修改文件所有者
-
用途:修改文件或目录的所有者或所属组。
-
语法:
chown [选项] 所有者[:组] 文件或目录
-
常用选项:
-R
:递归修改目录及其内容。
-
示例:
# 将文件所有者改为 alice sudo chown alice file.txt # 将文件所有者和组改为 alice:developers sudo chown alice:developers file.txt # 递归修改目录的所有者 sudo chown -R alice:developers /project
3. chgrp
– 修改文件所属组
-
用途:修改文件或目录的所属组。
-
语法:
chgrp [选项] 组名 文件或目录
-
示例:
# 将文件所属组改为 developers sudo chgrp developers file.txt
四、权限与用户组实战案例
场景 1:共享目录权限管理
-
创建共享目录:
sudo mkdir /shared
-
创建用户组:
sudo groupadd team
-
设置目录权限:
sudo chown root:team /shared sudo chmod 775 /shared # 允许组成员读写
-
将用户加入组:
sudo usermod -aG team alice sudo usermod -aG team bob
-
验证权限:
# 以 alice 身份创建文件 sudo -u alice touch /shared/test.txt # 以 bob 身份编辑文件 sudo -u bob echo "Hello" >> /shared/test.txt
场景 2:限制用户访问
-
锁定用户:
sudo usermod -L alice # 锁定 alice sudo usermod -U alice # 解锁 alice
-
限制用户 Shell:
sudo usermod -s /sbin/nologin alice # 禁止登录
五、注意事项
-
权限分配原则:
- 遵循最小权限原则,避免过度授权。
- 敏感文件(如
/etc/passwd
)应限制为root
可写。
-
特殊权限:
- SUID:允许用户以文件所有者的权限执行(如
/usr/bin/passwd
)。 - SGID:目录中新文件的组继承目录的组。
- Sticky Bit:仅文件所有者可删除文件(如
/tmp
)。
- SUID:允许用户以文件所有者的权限执行(如
-
查看用户信息:
id alice # 查看用户 UID、GID 及所属组
-
切换用户:
su - alice # 切换到 alice 用户 sudo -u alice command # 以 alice 身份执行命令