Linux 是多用户操作系统。每个用户由用户名和 UID 标识,每个用户组有 GID;普通用户有一个主要用户组,也可以加入其他组以访问共享资源。whoami 显示当前用户,id 显示 UID、GID 和所有组。
所有者、所属组与三组权限
ls -l 的输出如 -rw-r--r-- 1 alice developers 1536 ... notes.txt:alice 是所有者,developers 是所属组,前十个字符描述文件类型与权限。权限依次分为 user、group、others 三组。
r · 4文件:读取;目录:查看目录项
w · 2文件:修改;目录:创建或删除项目
x · 1文件:执行;目录:进入并访问项目
权限拆解
- | rwx | r-x | r-- user group other 7 5 4
使用 chmod 修改权限
符号形式可以精确表达变化:chmod u+x backup.sh 为所有者增加执行权限,chmod g+w shared.txt 为所属组增加写权限,chmod o-r private.txt 移除其他用户的读取权限。对象缩写为 u、g、o、a。
数字形式把 r、w、x 的 4、2、1 相加。chmod 755 script.sh 表示 rwxr-xr-x,chmod 644 notes.txt 表示 rw-r--r--。不要把 755 或 644 当作无需判断的固定模板,更不要为了省事使用过宽权限。
修改所有者和所属组
sudo chown bob report.txt 修改所有者,sudo chown bob:developers report.txt 同时修改所有者与组,chgrp developers report.txt 只改组。多人服务器应优先通过用户组管理共享访问。
权限情景解码器
知识测验
知识测验
准备团队部署目录
在实验机上为 deploy.sh 与 settings.conf 设置明确的最小权限和所属关系。
- 查看当前身份、所属组及两个文件的现有权限。
- 让 deploy.sh 的所有者可读写执行,developers 组只读和执行,其他人无权限。
- 让 settings.conf 只有所有者可读写,其他人无权限。
- 把两个文件的所属组改为 developers,并再次验证。