07. 用户与权限管理
Linux 是多用户系统。文件权限、用户、用户组和 sudo 是服务器管理的基础。
1. 查看当前用户
whoami
bash
whoami显示当前用户名。
id
bash
id
id alice显示用户 ID、组 ID 和所属用户组。
常见字段:
| 字段 | 说明 |
|---|---|
uid | 用户 ID |
gid | 主组 ID |
groups | 用户所属组 |
groups
bash
groups
groups alice查看用户所属组。
2. 查看登录用户
who
bash
who显示当前登录系统的用户。
w
bash
w显示登录用户及其正在运行的命令。
last
bash
last查看历史登录记录。
3. 用户管理
用户管理通常需要管理员权限。
添加用户:useradd
bash
sudo useradd alice
sudo useradd -m -s /bin/bash alice常用参数:
| 参数 | 说明 |
|---|---|
-m | 创建 home 目录 |
-s | 指定登录 shell |
-g | 指定主组 |
-G | 指定附加组 |
更适合交互式创建用户的命令:
bash
sudo adduser aliceadduser 通常会提示设置密码、用户信息,并自动创建 home 目录。
设置密码:passwd
bash
passwd
sudo passwd alice说明:
| 命令 | 说明 |
|---|---|
passwd | 修改当前用户密码 |
sudo passwd alice | 修改 alice 的密码 |
删除用户:userdel
bash
sudo userdel alice
sudo userdel -r alice常用参数:
| 参数 | 说明 |
|---|---|
-r | 同时删除用户 home 目录和邮件目录,慎用 |
4. 用户组管理
添加组:groupadd
bash
sudo groupadd research删除组:groupdel
bash
sudo groupdel research修改用户组:usermod
bash
sudo usermod -aG research alice
sudo usermod -aG sudo alice常用参数:
| 参数 | 说明 |
|---|---|
-aG | 将用户追加到附加组 |
-g | 修改用户主组 |
-s | 修改用户 shell |
-d | 修改 home 目录 |
注意:把用户加入附加组时,应使用 -aG。如果只用 -G,可能覆盖原有附加组。
5. 文件权限基础
使用 ls -l 查看权限:
bash
ls -l file.txt示例:
text
-rw-r--r-- 1 alice research 1024 Sep 11 10:00 file.txt含义:
| 部分 | 说明 |
|---|---|
- | 文件类型,d 表示目录 |
rw- | 文件所有者权限 |
r-- | 所属组权限 |
r-- | 其他用户权限 |
alice | 所有者 |
research | 所属组 |
权限字符:
| 字符 | 对文件 | 对目录 |
|---|---|---|
r | 读取文件内容 | 列出目录内容 |
w | 修改文件内容 | 在目录中新建、删除、重命名文件 |
x | 执行文件 | 进入目录 |
6. 修改权限:chmod
符号方式
bash
chmod u+x script.sh
chmod g+w data.txt
chmod o-r secret.txt
chmod a+r public.txt对象:
| 符号 | 说明 |
|---|---|
u | 所有者 |
g | 所属组 |
o | 其他用户 |
a | 所有人 |
操作:
| 符号 | 说明 |
|---|---|
+ | 增加权限 |
- | 移除权限 |
= | 设置为指定权限 |
数字方式
bash
chmod 644 file.txt
chmod 755 script.sh
chmod -R 755 mydir数字含义:
| 数字 | 权限 |
|---|---|
4 | 读 |
2 | 写 |
1 | 执行 |
常见组合:
| 权限 | 含义 |
|---|---|
600 | 只有所有者可读写 |
644 | 所有者可读写,其他人只读 |
700 | 只有所有者可读写执行 |
755 | 所有者可读写执行,其他人可读执行 |
777 | 所有人可读写执行,通常不推荐 |
递归修改目录权限:
bash
chmod -R 755 project-R 会影响目录下所有文件,执行前要确认路径。
7. 修改所有者和所属组
chown
bash
sudo chown alice file.txt
sudo chown alice:research file.txt
sudo chown -R alice:research project常用参数:
| 参数 | 说明 |
|---|---|
用户 | 修改文件所有者 |
用户:组 | 同时修改所有者和所属组 |
-R | 递归修改 |
chgrp
bash
sudo chgrp research file.txt
sudo chgrp -R research project用于只修改所属组。
8. sudo 权限
临时以管理员权限运行命令
bash
sudo apt update
sudo systemctl restart ssh切换到 root shell
bash
sudo -i退出 root shell:
bash
exit查看 sudo 权限
bash
sudo -l9. 特殊权限简介
SUID
让可执行文件以文件所有者身份运行。
bash
chmod u+s fileSGID
对目录设置 SGID 后,新建文件默认继承目录所属组。
bash
chmod g+s shared_dir共享目录常用:
bash
sudo chgrp research shared_dir
chmod 2775 shared_dirSticky Bit
常用于公共可写目录,用户只能删除自己的文件。
bash
chmod +t shared_tmp/tmp 通常就是 sticky bit 目录。
10. umask
umask 决定新建文件和目录的默认权限。
bash
umask
umask 022
umask 077常见值:
| umask | 效果 |
|---|---|
022 | 文件通常为 644,目录通常为 755 |
077 | 文件通常为 600,目录通常为 700,更私密 |
11. 权限排查示例
无法执行脚本:
bash
ls -l run.sh
chmod u+x run.sh
./run.sh无法进入目录:
bash
ls -ld data
chmod u+x data共享目录让组成员可写:
bash
sudo chgrp -R research project
chmod -R g+rw project
find project -type d -exec chmod g+x {} \;说明:目录需要 x 权限才能进入。