权限管理

root 与权限层级

Linux 是多用户操作系统,权限管控是其安全基石。

  • root(超级管理员):拥有系统最高权限,可操作任何文件、修改任何配置、管理任何进程。普通用户的权限严格受限,仅能操作自己的家目录(/home/用户名)及系统允许的临时目录(如 /tmp)。

切换用户的方式:

命令说明
su - [用户名]切换用户- 表示同时加载目标用户的环境变量(建议始终加 -),省略用户名默认切换为 root。退出用 exit
sudo 其他命令以 root 权限执行单条命令。需在 /etc/sudoers 中配置授权(Arch 默认 wheel 组用户可用 sudo)。
sudo -i提权后以 登录 Shell 方式进入 root 环境,加载 /root/.bashrc,切换到 /root 目录。sudo -s 更干净,推荐持续 root 时使用。
sudo -s提权后起一个 Shell,但继承当前用户的环境变量和工作目录,可能导致 PATH 错乱。

补充su 需要目标用户密码,sudo 只需自己的密码且可细粒度授权。

run0(systemd 255+,Arch 可用)systemd 新提供的提权工具,不依赖 SUID,通过 systemd-run 创建独立隔离会话,环境更干净且日志可追踪。用法同 sudo,目前尚未普及,知晓即可。


用户与用户组

Linux 的权限控制有两个维度:针对用户针对用户组。一个用户可以属于多个组,但有一个主组(默认与用户名同名)。

以下命令均需 root 权限:

操作命令说明
创建用户组groupadd 组名
删除用户组groupdel 组名
创建用户useradd [-g 组] [-d 路径] 用户名-g 指定主组(默认创建同名组),-d 指定家目录(默认 /home/用户名
删除用户userdel [-r] 用户名-r 同时删除家目录;不加则家目录保留
查看用户信息id [用户名]显示 UID、GID 及所属组列表;省略则查看自身
将用户加入组usermod -aG 组名 用户名-aG 追加附加组(不加 -a 会覆盖原有附加组)
查看所有用户getent passwd返回 7 个字段:用户名:密码占位:UID:GID:描述:家目录:登录Shell
查看所有组getent group返回:组名:密码占位:GID:成员列表

权限信息的结构与含义

ls -l 输出示例:drwxr-xr-x 2 alice dev 4096 Jul 11 10:00 myfolder

第一段(10 个槽位) 表示文件类型与权限:

槽位含义
第 1 位文件类型:- 普通文件,d 目录,l 软链接
第 2~4 位所属用户(u) 的权限:读(r)、写(w)、执行(x)
第 5~7 位所属用户组(g) 的权限
第 8~10 位其他用户(o) 的权限

权限对文件 vs 目录的影响:

权限文件的作用目录的作用
r(读)查看文件内容列出目录下文件名(需要 x 配合才能进入)
w(写)修改文件内容在目录内创建/删除/重命名文件(需要 x 配合才能进入)
x(执行)将文件作为程序运行进入目录(cd)并访问其子项

关键认知:对目录的 w 权限仅允许修改目录条目本身,与目录内文件的权限无关。删除一个文件,取决于目录的 w 权限,而非文件自身的 w 权限。


修改权限:chmod

只有文件所属用户或 root 可以修改权限。

基础语法chmod [-R] 权限 目标

  • -R:递归修改目录内所有子项。

字母表示法(u/g/o/a):

操作示例含义
赋值 =chmod u=rwx,g=rx,o=r file用户:rwx,组:r-x,其他:r—
增加 +chmod u+x file给所属用户增加执行权限
移除 -chmod o-w file移除其他用户的写权限
全部 achmod a+x file给所有角色增加执行权限

数字序号记法

rwx 视为二进制位:r=4w=2x=1,三者相加得到一个 0~7 的数字。三位数字分别对应 用户 / 组 / 其他

数字权限组合含义
7rwx读+写+执行
6rw-读+写
5r-x读+执行
4r--只读
3-wx写+执行
2-w-只写
1--x仅执行
0---无权限

示例chmod 755 script.sh → 用户 rwx,组 r-x,其他 r-x
chmod 600 secret.txt → 用户 rw-,组和其他无权限。


修改所属权:chown

只有 root 可以修改文件所属用户和组。

基础语法chown [-R] [用户][:][组] 目标

命令效果
chown root file所属用户改为 root,组不变
chown :root file所属组改为 root,用户不变
chown root:test file用户改为 root,组改为 test
chown -R alice:dev folder/递归修改目录内所有内容

补充:chroot — 改变进程根目录

chroot 新根 [命令] 将进程的 / 临时替换为指定目录,用于系统修复(U盘启动后挂载硬盘分区执行 chroot /mnt)或构建最小化隔离环境。需 root 权限,仅隔离文件系统视图,不隔离进程与网络。