0

Linux上のファイルに555のアクセス許可があるかどうかを確認したいのですが、代わりにそのファイルに755のアクセス許可があります。だから私は私のプログラムでブールANDを行います:

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

すなわち(755 && 555 == 555)

これは真と評価されるべきですか?私はこれがプログラミングの見通しから直感的ではないことを知っています、そして本当の背景の質問は次のとおり です:755は555許可グループの「メンバー」と見なされますか?

私が試したこと:find -perm 555Linuxで使用していますが、755のアクセス許可を持つファイルがリストされていないので、質問に対する答えはNOだと思いますか?

誰かが私がこの質問に答えたり言い換えたりするのを手伝ってくれるなら、それはとても役に立ちます。前もって感謝します!

4

2 に答える 2

1
  • ((file_mode && some_bits) == some_bits) # は論理的であり、ビット単位の and が必要です
  • ((file_mode & some_bits) == some_bits) # はビット単位であり、
  • ファイルモードは (まだ) 8 進表記で表されます。ほとんどの C ライクな言語では、8 進モードを示すために先行ゼロを追加する必要があります。
  • コマンドライン プログラム (chmod や find など) は先頭のゼロを必要とせず、数値のモード文字列が 8 進数であることを期待します。
  • 探す 。-mode xxx #正確にモード xxx のファイルを検索
  • 探す 。-mode -xxx #少なくともモード ビット xxx が設定されたファイルを検索します
于 2012-10-10T23:02:48.813 に答える
1

答えはノーだ。

755 ではファイルの所有者に書き込み権限があり、555 では所有者には書き込み権限がないためです。(ただし、所有者なchmodので、所有者は変更できます!)。

ご覧のとおり、あるアクセス許可が別のアクセス許可に含まれているかどうかを確認したいと考えています。どういうわけかファイルのアクセス許可を持っている場合は、次を確認してください。

if (perm_of_file >= perm_required)

于 2012-10-10T21:20:55.777 に答える