在Linux文件权限上使用布尔AND

时间:2012-10-10 21:09:29

标签: linux permissions boolean

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

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

即。 (755 && 555 == 555)

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

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

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

2 个答案:

答案 0 :(得分:1)

答案是否定的。

因为在755中,文件的所有者具有写入权限,而在555中,所有者没有写入权限。 (虽然所有者可以使用chmod进行更改,因为他是所有者!)。

我认为您要检查另一个权限是否包含包含。如果你以某种方式拥有文件的权限,那么只需检查:

if (perm_of_file >= perm_required)

答案 1 :(得分:1)

  • ((file_mode&& some_bits)== some_bits)#是逻辑,你需要按位和
  • ((file_mode& some_bits)== some_bits)#是按位
  • 文件模式(仍然)以 octal 表示法表示,在大多数类C语言中,您需要添加前导零以指示八进制模式
  • 命令行程序(如chmod或find)不需要前导零,他们希望数字模式字符串为八进制
  • 找到。 -mode xxx#查找完全模式xxx
  • 的文件
  • 找到。 -mode -xxx#查找至少模式位xxx set
  • 的文件