08 权限与用户

学习目标

  • 能查看当前用户身份和用户组。
  • 能理解文件权限的读、写、执行。
  • 能在需要时使用管理员权限执行命令。

命令总览

命令用途含义基本用法例子
whoami查看有效用户显示当前进程的 effective userwhoamiwhoami
id查看用户 ID 和组 ID显示 UID、GID 和所属组id [用户名]id
groups查看用户组显示当前用户或指定用户所属组groups [用户名]groups
chmod修改权限change mode,修改读写执行权限chmod 权限 文件chmod u+x -- script.sh
chown修改所有者change owner,通常需要授权,见下方语法参考chown 用户:组 文件chown -- USER:GROUP /absolute/path
sudo按策略切换执行身份经 sudoers 策略以 root 或其他用户运行命令sudo [选项] 命令sudo -l
su切换用户substitute user,切换到另一个用户su 用户名su root
passwd修改密码设置当前用户或指定用户密码passwd [用户名]passwd

常用场景

查看当前身份:

whoami
id
groups

给脚本增加执行权限:

chmod u+x -- run.sh
./run.sh

设置常见文件权限:

chmod 644 config.txt
chmod 755 script.sh

查看 sudo 策略(可能要求认证):

sudo -l

修改所有者是状态变更,仅作语法参考:

sudo chown -- USER:GROUP /absolute/path

新手注意

  • Linux mode 常见三类对象:文件所有者、所属组、其他用户;ACL、capability、SELinux/AppArmor 还可能增加约束。
  • r 表示读,w 表示写,x 表示执行。
  • 对目录,x 表示遍历/搜索目录项,不是“执行目录”;只读目录名通常还需要 r。
  • chmod u+x 明确只给 owner 增加执行位;省略 who 的 chmod +x 结果会受 umask 影响。
  • 644/755 是常见示例,不是通用安全答案;秘密文件、共享目录和服务账户要按实际访问模型设计。
  • sudo 能运行什么由策略决定,不等于获得无限管理员授权。执行删除、覆盖、改权限命令前要特别确认。
  • 不建议长期停留在 root 用户下操作;需要高权限时优先用 sudo。

数字权限的最小直觉

r=4、w=2、x=1,每组相加形成 owner/group/other 三位,例如 640 表示 owner 读写、group 只读、other 无权限。检查而不是背答案:

umask
stat --format='%A %a %U:%G %n' -- config.txt
namei -l -- "$PWD/config.txt"

namei 属于 util-linux,最小系统可能没有;它有助于逐级检查目录遍历权限。

无 sudo 权限练习

在自有实验目录创建 run.sh 与 config.txt,只改变 owner 权限:

chmod u+x,go-x -- run.sh
chmod u=rw,g=r,o= -- config.txt
stat --format='%A %a %U:%G %n' -- run.sh config.txt

不要递归 chmod/chown。真实递归变更必须核对 canonical absolute path、owner/group 是否存在、符号链接和挂载边界,并取得授权。

参考资料