0

我想检查 Linux 上的文件是否具有 555 权限,但该文件具有 755 权限。所以我在我的程序中做了一个布尔 AND:

if ((perm_of_file && perm_required) == 555)

IE(755 && 555 == 555)

这应该评估为真吗?我知道这从编程的角度来看并不直观,真正的背景问题是: 755 是否被视为 555 权限组的“成员”?

我尝试了什么:我find -perm 555在 Linux 上使用它并没有列出那些具有 755 权限的文件,所以我猜这个问题的答案是否定的?

如果有人可以帮助我回答或改写这个问题,那将非常有帮助。提前致谢!

4

2 回答 2

1

答案是不。

因为在 755 中文件的所有者有写权限,而在 555 中所有者没有写权限。(尽管所有者可以更改它,chmod因为他是所有者!)。

如我所见,您想检查一个权限是否包含在另一个权限中。如果您以某种方式拥有文件的权限,则只需检查:

if (perm_of_file >= perm_required)

于 2012-10-10T21:20:55.777 回答
1
  • ((file_mode && some_bits) == some_bits) # 是逻辑的,你需要按位和
  • ((file_mode & some_bits) == some_bits) # 是按位的并且
  • 文件模式(仍然)以八进制表示,在大多数类似 C 的语言中,您需要添加前导零来表示八进制模式
  • 命令行程序(例如 chmod 或 find)不需要前导零,它们希望数字模式字符串为八进制
  • 寻找 。-mode xxx # 查找模式为 xxx 的文件
  • 寻找 。-mode -xxx # 查找至少设置了模式位 xxx 的文件
于 2012-10-10T23:02:48.813 回答