linux-chmod用法解析

解析 Linux chmod 的数字模式与符号模式

在学习 AWS 认证(如 SAA)或进行 DevOps 实操时,我们经常会遇到这样一个报错:
WARNING: UNPROTECTED PRIVATE KEY FILE!
这是因为 SSH 客户端要求私钥文件(.pem)必须具备严格的权限控制。解决它的核心命令就是 chmod

本文将带你彻底搞懂 chmod 的两种操作方式:数字模式 (Numeric Mode)符号模式 (Symbolic Mode)


一、 数字模式:逻辑严密的八进制法

数字模式是 Linux 系统中最常用的方式,它通过三个(或四个)八进制数字来定义权限。

1. 核心权重计算

每一个数字代表一个特定角色的权限总和。你只需要记住 4 (读)、2 (写)、1 (执行)

权限 缩写 数字权重
读取 (Read) r 4
写入 (Write) w 2
执行 (Execute) x 1
无权限 - 0

计算公式: 最终权限 = $Read + Write + Execute$。

  • 例如:rwx = 4 + 2 + 1 = 7
  • 例如:rw- = 4 + 2 + 0 = 6
  • 例如:r-- = 4 + 0 + 0 = 4

2. 三位数的含义

一个典型的数字命令如 chmod 755,其数字位置对应不同的对象:

  1. 第一位:文件所有者 (User/Owner)
  2. 第二位:所属组 (Group)
  3. 第三位:其他人 (Others)

典型案例: chmod 400 my-key.pem
意味着:所有者仅读 (4),组和其他人无任何权限 (00)。这是 AWS 私钥的安全标准。


二、 符号模式:直观的语义表达

如果你不想做算术题,符号模式提供了更具可读性的方式。它的语法结构是:谁 (Who) 操作 (Operator) 权限 (Permission)

1. 组成部分

  • Who(对象)u (用户), g (组), o (其他人), a (所有人)
  • Operator(操作)+ (增加), - (移除), = (精确设定/覆盖)
  • Permission(权限)r (读), w (写), x (执行)

2. 常用操作对比

需求 符号命令 说明
增加执行权 chmod +x script.sh 给所有人增加执行权限
移除写权限 chmod go-w file.txt 移除组和其他人的写权限
精确设置权限 chmod u=rwx,go=rx file 所有者全开,其他人只读/执行
保护私钥 chmod u=r,go= key.pem 精确设置所有者只读,其余留空

三、 实战:为什么 AWS 私钥非要 400?

当你从 AWS 下载 .pem 文件后,默认权限通常是 0644 (针对 Linux) 或更高。

  • 0644 的危险之处: 这意味着系统里的其他用户可以读取你的私钥,从而可能盗取你的服务器访问权。
  • SSH 的强制校验: SSH 协议设计者为了安全性,会在连接前检查私钥权限。如果权限超过 0400(即除了所有者,其他人有任何权限),连接就会被强制中断。

解决方案对比:

  • 数字法: chmod 400 my-key.pem(最推荐,简单快捷)
  • 符号法: chmod u=r,go= my-key.pem(最清晰,明确清空他人权限)

四、 总结:我该选哪种?

  • 选择数字模式:当你需要快速、一次性设置完整的权限位时(如 755, 644, 400)。这在编写自动化脚本、Ansible 配置时是行业标准。
  • 选择符号模式:当你只想微调现有权限时(如“我想给这个文件加个执行权”,即 chmod +x),或者你觉得计算数字太麻烦时。

💡 小贴士: 你可以使用 ls -l 命令来查看修改后的结果。如果看到权限位显示为 -r--------,那么恭喜你,你的私钥现在非常安全!

WindowsTerminal_cKSZwHPfFB.png