chmod 命令会更改文件和目录的模式位。通常,只有文件所有者或拥有必要权限的进程才能进行此更改。运行 chmod 前后都应使用 ls -l 检查当前模式。
权限 · 第 2 课
修改权限
学习如何使用符号和八进制 `chmod` 模式更改 Linux 权限位。
使用符号模式
符号模式说明要更改哪个权限类别、如何更改以及涉及哪些权限。
u选择所有者类别。g选择组类别。o选择其他类别。a选择全部三个类别。+添加权限,-移除权限,=精确设置所选类别。
例如,为所有者添加执行权限:
$ chmod u+x myfile
移除组写入权限:
$ chmod g-w myfile
同时为所有者和组添加写入权限:
$ chmod ug+w myfile
多个子句可以用逗号分隔。以下命令把所有者设为可读写、组设为只读、其他设为没有权限:
$ chmod u=rw,g=r,o= myfile
如果像 chmod +x myfile 那样省略类别,进程 umask 会影响更改哪些类别。明确写出类别,更便于审查预期结果。
哪个符号模式会移除组写入权限,而不改变组的其他权限位?
使用八进制模式
八进制模式用一位数字设置每个基本权限三元组。每个类别中的值相加:
4表示读取2表示写入1表示执行0表示没有权限
最右侧三位依次表示所有者、组和其他。例如:
$ chmod 755 myfile
模式 755 展开如下:
- 所有者
7是4 + 2 + 1,即rwx。 - 组
5是4 + 1,即r-x。 - 其他
5是4 + 1,即r-x。
与符号模式中的 + 或 - 操作不同,八进制模式会提供完整的普通权限集合。后续课程会介绍用于特殊模式位的可选首位数字。
哪个八进制值表示读取权限?
chmod 640 report 会设置哪些普通权限?
安全应用更改
只授予用户和服务所需的访问权限。不要把 chmod 777 当作排查问题的快捷方式,因为它会向每个类别授予读取、写入和执行,常常在未解决所有权、目录遍历、ACL 或服务策略问题的情况下增加风险。
递归更改需要格外谨慎。使用 chmod -R 前,应预览目标树、考虑符号链接和挂载文件系统,并在小范围内测试。更改后应验证结果模式,而不是假设命令影响了预期对象。
为什么 chmod 777 通常不是解决访问问题的好方法?
要在隔离环境中动手练习,可以使用 Linux 用户组和文件权限 实验,并在更改前后检查每个模式。
课程已完成
你已完成 修改权限
现在,你可以使用有意设计的 chmod 表达式更改普通 Linux 模式位。
使用符号模式进行有针对性的添加、移除或赋值。
用读取
4、写入2和执行1构建八进制数字。按所有者、组和其他的顺序读取八进制类别。
验证更改,并应用所需的最小权限。