posix / chmodの大文字Xとは何ですか?

posix / chmodの大文字Xとは何ですか?

私はそれが何であるかを知っていますウゴア(所有者、グループ、その他、すべて)または読み書き(読み取り/右/実行)または4,2,1または、、、、、、大文字が-何であるかをf理解dするためにl読んでみましたが、その項目はありません。それから読んだ。man chmodXchmodこの記事posix/chmod にありますが、次の節で停止しました。

実行可能ビットは、ターゲットa)がディレクトリであり、b)ユーザ、グループまたは他のユーザに対して少なくとも1つの実行可能ビットが設定されている場合にのみセットされる。

私も読んだこの記事このコード例を見ると、次のようになります。

chmod -R u=rwX,g=rX,o=rX testdir/

testdir/所有者(u)、グループ(g)、および他のすべての人(o)に対する再帰的権限があることを認識していますが、それでも大文字Xの意図を見逃していることを認めます。

おそらく、ここにある教訓的な表現がこれについてある程度明らかにすることができるでしょう(私がここに掲示する主な理由は、これに対するSE会議が見つからないからです)。

修正する

申し訳ありません。この人のポイントを見逃した。私はXが引数リストの前に現れるとは思わず、検索結果Xの代わりにxが返されたと思いましたが、これは私のせいでした。

ベストアンサー1

これマンページ説明する:

ファイルがディレクトリである場合、またはすでに一部のユーザーに対する実行権限がある場合にのみ実行/検索(X

POSIX説明する:

これパーマシンボルXファイルがディレクトリである場合、または現在の(変更されていない)ファイルモードビットに1つ以上の実行ビットセット(S_IXUSR、S_IXGRP、またはS_IXOTH)がある場合は、ファイルモードビットの実行/検索部分を示す必要があります。ファイルがディレクトリではなく、現在のファイルモードビットに実行ビットが設定されていない場合は、無視する必要があります。

これは条件付き権限フラグです。chmod現在処理中の項目を見て、それがディレクトリであるか、現在の権限(所有者、グループなど)に実行ビットが設定されている場合は要求された権限で動作しx、そうでなければそれを無視します。特定のガイドラインを適用すると条件がchmod確認されるため、X同じ実行で実行ビットをクリアしてa-x,a=rwXディレクトリに実行ビットのみを設定できます。

stat出力の「アクセス」セクションまたはの最初の列を見ると、ファイルに実行ビットが設定されていることを確認できますls -l。実行ビットはで表されますx-rwxr-xr-x実行ファイルの共通は、実行ビットが所有者、グループ、および他のユーザーに対して設定されていることを示します。-rw-r--r--他のファイルでは、共通は実行ビットが設定されていないことを示します(ただし、読み取りビットはすべての人に設定され、所有者の書き込みに設定されます)。少し)。バラよりUNIX権限とその属性についてその中に詳細があります。

したがって、あなたの例では、u=rwXすべての場合に読み取りおよび書き込み権限を設定し、ディレクトリと実行可能ファイルに対して実行し、同様にグループ(g=rX)および他の(o=rX)および実行可能ファイルのディレクトリに対して読み取りおよび実行します。

この演算子の目的は、ユーザーがchmodさまざまなファイルとディレクトリを提供し、正しい実行権限を取得できるようにすることです(ファイル中に無効な実行ビットセットがないと仮定)。これは、ファイルとディレクトリ(たとえば、既存のfind . -type f -exec chmod 644 {} +コマンドfind . -type d -exec chmod 755 {} +)の区別を避け、実行可能ファイルを合理的な方法で処理しようとします。

(知っているアップルシステムchmod明らかにXタスクのみがサポートされています+。 )

おすすめ記事