2012-10-10 23 views
0

我想檢查Linux上的文件是否具有權限555,但該文件具有755權限。 所以我做一個布爾值,在我的計劃:在Linux文件權限上使用布爾值AND

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

(755 && 555 == 555)

如果這一評估爲真? 我知道這是不直觀的編程準備和真正的背景問題是: 755被視爲555權限組的「成員」?

我的嘗試: 我在Linux上使用find -perm 555,並沒有列出誰擁有755允許這些文件,所以我猜這個問題的答案是NO?

如果有人能幫我回答或重述這個問題,那會非常有幫助。 在此先感謝!

+0

'如果((perm_of_file&perm_required)== 0555)',或者甚至更好:'如果((perm_of_file&perm_required)== perm_required)' – wildplasser

回答

1
  • ((file_mode & & some_bits)== some_bits)#是邏輯和,則需要按位和
  • ((file_mode & some_bits)== some_bits)#is bitwise and
  • 文件模式是(仍然)以表示八進制表示法,在大多數C語言中,您需要添加前導零來表示八進制模式
  • 命令行程序(例如chmod或find)不需要前導零,他們期望數值模式 - 字符串爲八進制
  • 找。 -mode xxx#找到的文件,正好模式xxx
  • 找到。 -mode -xxx#發現文件與至少模式位設置XXX
+0

那些子彈搖滾!感謝您的明確答案。 –

+0

我試過使用find -perm -555,它列出了至少有555個權限的所有文件,按預期工作 –

+0

但是,'755&555'給了我'547'的結果,不應該是555嗎? –

1

答案是否定的。

因爲在755文件的所有者具有寫權限,並在555所有者沒有寫權限。 (雖然店主可以用chmod來更改它,因爲他是店主!)。

正如我看到你想檢查一個許可是否在包括在另一個。如果你以某種方式有文件的權限,然後簡單地檢查:

if (perm_of_file >= perm_required)

+0

通過將答案與@ wildplasser的答案相結合,我得到了一個完美的答案。謝謝你的澄清 ! –