修改具有 777 权限的文件,但不能修改具有 755 权限的文件?

修改具有 777 权限的文件,但不能修改具有 755 权限的文件?

我可以修改权限为 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

相关内容