最低特权原则:为什么文件允许类似600/644/755

2026年8月21日3 次浏览来源:Dev.to阅读原文

任何曾与SSH私人密钥合作的人,都会遇到一个指示"设定为600".

相形之下,配置文件往往得到644,可执行脚本得到755.

这三位数到底是什么意思,为什么正确的数字取决于你处理的文件类型?

此帖从Unix-style(Mac/Linux)文件权限的力学开始,并工作到其背后的设计原理:最小特权.

授权作为谁和什么Unix-family操作系统的2D网格将文件访问作为网格表达: 三种"谁"与三种"什么"交叉. "谁"分拆出档案的主人,主人所属的团体,其他人("其他"). "什么"破解成读取,写出,并被执行. 3×3网格中的每个单元格要么被授予,要么被授予,要么不授予,这正是一个像列表那样的显示你的东西.

脱去主角和剩下的9个角色是3个组——所有者,组别,其他——在给予或没有时,每个组作为r/w/x提供.

为什么一个数字可以代表读取/写出/执行数字符号,如将rwx组合成一个八进制数字.

读取值为4, 写取值为2, 执行值为1, 功率为2, 而无论设置的比特, 你总和 。

注:此处使用两个功率,因为每个读出/写出/执行都作为独立的比特(上或下)被跟踪,任何子集的{4,2,1}的地图总和都返回到一个完全的比特组合.

没有模棱两可之处——例如,6只能指读取+write(4+2),从没有其他的组合.

读写,不执行 (:4+2=6 只读 (:4读出,写出,并执行 (:4+2+1=7) 完全没有访问权 (:0) 一个三位数,如这些单位数上行,为所有者,组等,左到右.

意思是"所有者得到读取+写取,组别和其他得到什么".

普通数字到底意味着什么 通过这个镜头读取上面提到的数字: 数字所有者组 其他典型使用 600 rw -- -- -- -- 私人密钥 机密文件 644 rw -r 普通配置文件, 数据安全可曝光 700 rwx -- -- -- 个人目录( 如) 755 rwx r-x r-x 可执行的脚本,任何人都可以运行程序 模式是一致的:所有者总是得到文件实际需要的任何访问(读/写,有时执行),组/其他得到的要么是"只读",要么是"一无所有"——永远不写访问.

将赠款组或其他写入访问(666,777)的组合不作为默认显示,因为这意味着"系统上任何人都可以修改这个文件",想要这样做的合法理由很少.

最低特权原则作为数字执行 上面的图案是一个更广泛的安全概念的文件系统层面的体现:最不特权的原则.

注:至少特权是指只给予一个用户或进程工作实际所需的最低准入——仅此而已.

当发生错误或账户受损时 爆炸半径越大 要求600对一私人钥匙的假设是,只有钥匙的拥有者有合法的理由阅读它.

在多人共享的机器上(比如在多用户服务器上共享的),让读取权限打开给组或其他手段,该机器上的任何其他用户都可以读取密钥的内容.

SSH客户端库——OpenSSH和paramiko都拒绝在此状态下加载密钥.

仅仅被别人阅读的可能性就被视为不安全,无论它是否真正被阅读过.

相形之下,Config文件通常被留在644(只为组/其他读取),正因为看到其内容的另一个用户没有伤害.

同样逻辑在可执行脚本上解释了755:任何人都可以运行,但只有所有者才能修改.

这些数字并不是任意的公约——它们是"谁应该能够触摸这个文件,如何"的直接编码.

一个真实的例子: 在 Thi 中检查组/ 其他位表

分享