修改权限
100%

权限 · 第 2 课

修改权限

学习如何使用符号和八进制 `chmod` 模式更改 Linux 权限位。

chmod 命令会更改文件和目录的模式位。通常,只有文件所有者或拥有必要权限的进程才能进行此更改。运行 chmod 前后都应使用 ls -l 检查当前模式。

使用符号模式

符号模式说明要更改哪个权限类别、如何更改以及涉及哪些权限。

  • 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 展开如下:

  • 所有者 74 + 2 + 1,即 rwx
  • 54 + 1,即 r-x
  • 其他 54 + 1,即 r-x

与符号模式中的 +- 操作不同,八进制模式会提供完整的普通权限集合。后续课程会介绍用于特殊模式位的可选首位数字。

哪个八进制值表示读取权限?

chmod 640 report 会设置哪些普通权限?

安全应用更改

只授予用户和服务所需的访问权限。不要把 chmod 777 当作排查问题的快捷方式,因为它会向每个类别授予读取、写入和执行,常常在未解决所有权、目录遍历、ACL 或服务策略问题的情况下增加风险。

递归更改需要格外谨慎。使用 chmod -R 前,应预览目标树、考虑符号链接和挂载文件系统,并在小范围内测试。更改后应验证结果模式,而不是假设命令影响了预期对象。

为什么 chmod 777 通常不是解决访问问题的好方法?

课程已完成

你已完成 修改权限

现在,你可以使用有意设计的 chmod 表达式更改普通 Linux 模式位。

  • 使用符号模式进行有针对性的添加、移除或赋值。

  • 用读取 4、写入 2 和执行 1 构建八进制数字。

  • 按所有者、组和其他的顺序读取八进制类别。

  • 验证更改,并应用所需的最小权限。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 权限