+X シンボリック権限を 8 進数値で表すことは可能ですか? chmod(1) のマニュアル ページには次のように書かれています:
ファイルがディレクトリであるか、すでに何らかのユーザーに実行権限がある場合にのみ実行/検索します。
つまり、chmod -R g+X
ユーザー、グループ、またはその他の実行ビットがすでに設定されている場合にのみ、グループ実行権限が追加されます。これは、find を使用して難しい方法で実行することもできます。
find . -perm /ugo=x -exec chmod g+x {} \;
しかし、8進モードで同じことをどうやって実行できるかは明らかではありません。探すまたはテストまずファイルの権限をチェックします。これは可能ですか、それともシンボリック権限とオクテット権限が重複しない領域があるのでしょうか?
答え1
簡単に言うと、それは不可能です。
長い話:8進数の権限は状態です。[+-][rwxXst]
表記は、変化する状態を表しますoperations
。=[rwxXst]
セット状態であり、Gilles が言ったように 8 進モードと同等です。1X
つは唯一の条件付き操作であり、その他はすべて無条件です。
8進数の権限を持つファイルを作成する場合はchmod
、最後に州権限ビットをそのまま使用します。操作を使用するときは、終わり許可ビットに。
あなたの質問は、すべての平方根を表す単一の数字があるかどうかを尋ねることに等しい。答えは明らかに「いいえ」です。すべての平方根は収穫数(衒学者:虚数/無理数である可能性もあるが)だが、始まりの州(番号)はどれか分かりません。
答え2
シンボリック モードは、8 進モードよりも表現力が豊かです。これは、8 進モードでは絶対的な変更しか表現できないためです。相対的な変更、つまり だけでなく+X
、すべての新しいビットを指定しないモード ( g+x
— やa+rwx
、setuid/setgid ビットを削除しない など) は、8 進モードでは表現できません。
=
逆に、任意の 8 進モードは、一般に、たとえば4750
= u+rwxs,g=rx,o-rwxt
(またはu=rwxs,g=rx,o=
、その他の多くの組み合わせ)を使用して、記号モードとして表現できます。