-perm /a+x、-perm /a=x、-perm -a=x、および -perm -a+x と find の違いは何ですか?

-perm /a+x、-perm /a=x、-perm -a=x、および -perm -a+x と find の違いは何ですか?

私はこれらすべてのオプションについて混乱しています。これは、ファイルがすべてのユーザー-perm /a+xに対して実行権限を持つことを意味し、ファイルがすべてのユーザーに対して実行-perm -a+x権限を持つ必要があることを意味しますが、a+x違いは何ですかa=x

[user@j6727961 ~]$ find -name 'perm*' -perm /a+x
./perm
./perm1
[user@j6727961 ~]$ find -name 'perm*' -perm /a=x
./perm
./perm1
[user@j6727961 ~]$ ll
total 57280
drwxrwxr-x. 2 user user       54 Dec  9 20:06 exercises
-rwxrwxrwx. 1 user user        0 Dec 10 21:08 perm
----rwxrwx. 1 user user        0 Dec 10 21:09 perm1
[user@j6727961 ~]$ find -name 'perm*' -perm -a=x
./perm
[user@j6727961 ~]$ find -name 'perm*' -perm -a+x
./perm

答え1

findで使用するためにはビットは変更されず、a=xandの意味はa+x同じです。


ただし、通常、3つのオプションは次のとおりです(+modeは廃止されました)。

 mode    # exactly
-mode    # ALL bits SET
/mode    # ANY bit  SET

これはmode 760、権限のあるファイルが検索されることを意味します。正確に 760

A -mode 220(バイナリ010 010 000または-w--w----)は、所有者とグループ(すべて)書き込みビットが設定され、他のビットが設定されているすべてのファイルを検索します。これは重要ではありません。
例: 630 ( 110 011 000 または rw- -rx ---)。

a は/mode 220すべてのビット設定と一致します。
実際には220,230,360,270と同じです。
すべて(バイナリ)x1x x1x xxx。ここで、xは「無関係」を意味します。

ビットセットを表現する別の方法は次のとおりです。

a (for all)
u (for user)
g (for group) and
o (for others)

Anは、a+rファイルが持つことができる権限(追加またはバイナリOR)r - r - r -を設定することと同じであることを意味します。または a+x は --x--x--x または 001001001 または 111 を意味 (追加) します。

したがって、2つを混ぜてください。

  • perm a+x ===> perm 111 ===>権限111のみのファイル
  • perm -a+x ===> perm -111 ===> u(ser) g(roup) によって実行されるそしてその他)
  • perm /a+x ===> perm /111 ===> u(ser) g(roup) によって実行されるまたは その他)

a=xまたは、このコマンドにa+x固有の意味がありますchmod。ユーザーの実行ビットを変更(設定)します。つまり、
.: 。ただし、ユーザーの残りの2つのビットはクリアされ、実行ビットのみが設定され、ユーザーの権限が正確になります。 A は、これらのビットを正確にまたはユーザーのために設定します。 Aも同じことをするだろう。 u+xOR 100u=x1
chmod u+rwx file7rwx
chmod u=rwx file

検索の場合、ビットは変更されず、a=x同じa+x意味を持ちます。

関連情報