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タスクのみがサポートされています+。 )

答え2

からman chmod

rwxXst文字は、影響を受けるユーザーのファイルモードビット(読み取り(r)、書き込み(w)、実行(またはディレクトリ検索))(x)、 ファイルがディレクトリである場合、またはすでに一部のユーザー(X)に対する実行権限がある場合にのみ実行/検索します。実行時にユーザーまたはグループID、制限された削除フラグ、または固定ビット(t)を設定します。

(強調)。

しかし、それは多くを説明しません。この記事には2つのルールがありますそれが何をしているのかを明確にするために:


たとえば、ディレクトリに次のchmodコマンドを実行します。

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

上記のコマンドは、大文字の X を使用して、次の 2 つの規則に従って実行可能属性を設定します。

  1. ファイルがディレクトリの場合は、所有者、グループ、およびワールドの実行可能属性を設定します。つまり、そのディレクトリに入ることができます。

  2. ファイルが通常のファイルで、ファイルに特定の実行ビットが設定されている場合、その権限に実行可能属性が追加されます。ファイルに実行ビットが設定されていない場合、実行ビットは追加されません。

小文字の x を使用する単一のコマンドでは、この結果は得られません。


説明してください使用~のX

答え3

この答えを承認しないでください。これが私が上記のStephen Kittの答えで理解した内容であり、これを正しいものとして受け入れます。


1)a=rwX首都

2)次の組み合わせはa-x(すべてのファイルの実行ビットが失われていることを確認)、そして次に、次のようにa=rwX言います。すべての場所の読み書きビットを取得し、ディレクトリからのみ実行ビットを取得します。

関連情報