我可以修改权限为 777 的文件,但不能修改权限为 755 的文件。我通过调用一些 sed 命令来实现这一点。我觉得很奇怪,因为我甚至可以在 Vim 中修改权限为 700 的文件。
为什么无法修改具有 755 权限的文件? sed、awk 和 find 等基本 unix 工具是否需要 777 权限?
答案1
UNIX 和类 UNIX 系统上的权限工作如下...
rwxrwxrwx = 777
您会注意到有 3 个 rwx“集合”。它们指定用于:
- 用户:拥有文件/目录所有权的人。
- 团体:如果某个组对一组特定的文件具有控制权,并且您属于该组,那么您将继承分配给该组的权限。
- 其他:您不属于以上任何一类。
更加图形化的表示:
用户 | 团体 | 其他 |
---|---|---|
呜呜 | 哎呀 | 哦 |
读写 | 读写 | 读写 |
7 | 7 | 7 |
你可能会问,777 是从哪里来的?
- 读取权限 (r) - 4
- 写权限 (w) - 2
- 执行权限 (x) - 1
3 位数字序列中的每个独立数字都按该顺序代表用户、组和其他类别。例如,如果数字为 777,则每个人都可以完全访问该文件。如果数字为 111,则每个人都只能执行访问。
对于具有 755 权限的文件,如果您不是该文件的所有者,则您只有读取和执行权限。您将无法写入这些文件。对于具有 700 权限的文件,您可能可以写入这些文件,因为它们是您自己创建的。该umask
命令将告诉您可以从 777 中减去的数字,以查看系统上默认创建文件的权限。
答案2
您是否已检查过这些文件的所有权和755
权限?
您必须是这些文件的所有者才能对其进行“写入”。
您很可能拥有具有权限的文件700
,
这可以解释您具有写入这些文件的能力。
-rwxrwxrwx
--- controls for Others
--- controls for Group
--- controls for User or Owner
答案3
如果您使用sed -i
“修改文件”,那么您实际上做的是创建一个新文件,然后重命名它以替换旧文件。(您可以通过使用ls -i
显示前后的 inode 编号并注意它是否发生变化来验证这一点。)
在这种情况下,相关权限不是文件的权限,而是包含目录的权限,而您没有提到。
另一方面,当您保存缓冲区时,像 vim 这样的编辑器将简单地覆盖现有文件。
答案4
使用著名的在线 CHMOD 计算器,它效果很好,而且交互性很强:
http://www.onlineconversion.com/html%5Fchmod%5Fcalculator.htm