Linuxコマンドsetfaclについて学ぶ

Setfaclユーティリティは、ファイルとディレクトリのアクセス制御リスト(ACL) を設定しますコマンドラインでは、一連のコマンドの後に一連のファイルが続きます(これには別の一連のコマンドが続きます)。

オプション-m-xは、コマンドラインでACLが必要です。 複数のACLエントリはカンマ文字( `、 ')で区切ります。 オプション-M、 -Xは、ファイルまたは標準入力からACLを読み取ります。 ACLエントリー形式については、セクション「ACL ENTRIES」で説明しています。

--setおよび--set-fileオプションは、ファイルまたはディレクトリのACLを設定します。 以前のACLが置き換えられます。 この操作のACLエントリには、アクセス許可が含まれている必要があります。

-m(--modify)および-M(--modify-file)オプションは、ファイルまたはディレクトリのACLを変更します。 この操作のACLエントリには、アクセス許可が含まれている必要があります。

-x( -- remove および-X(-- remove -file)オプションは、ACLエントリを削除します。 POSIXLY_CORRECTが定義されていない限り、 permsフィールドのないACLエントリだけがパラメータとして受け入れられます。

-Mオプションと-Xオプションを使用してファイルから読み込む場合、setfaclはgetfaclが生成する出力を受け入れます。 1行に最大1つのACLエントリがあります。 シャープ記号( `# ')の後、行末までのすべてがコメントとして扱われます。

setfaclがACLをサポートしていないファイルシステムで使用されている場合、setfaclはファイルモード許可ビットで動作します。 ACLがパーミッションビットに完全に収まらない場合、setfaclはACLを可能な限り反映するようにファイルモード許可ビットを変更し、標準エラーにエラーメッセージを書き込み、0より大きい終了ステータスを返します。

シノプシス

setfacl [-bkndRLPvh] [{-m | -x} acl_spec] [{-M | -X} acl_file]ファイル...

setfacl --restore =ファイル

許可

CAP_FOWNERが可能なファイル所有者とプロセスには、ファイルのACLを変更する権限が与えられます。 これは、ファイルモードにアクセスするために必要なアクセス許可に似ています。 (現行のLinuxシステムでは、rootはCAP_FOWNER機能を持つ唯一のユーザーです)。

オプション

-b、--remove-all

すべての拡張ACLエントリを削除します。 所有者、グループ、その他の基本ACLエントリは保持されます。

-k、--remove-default

デフォルトのACLを削除します。 デフォルトACLが存在しない場合、警告は発行されません。

-n、--no-mask

有効な権利マスクを再計算しないでください。 setfaclのデフォルトの動作は、マスクエントリが明示的に与えられていない限り、ACLマスクエントリを再計算することです。 マスクエントリは、所有グループのすべてのアクセス許可とすべての名前付きのユーザーおよびグループエントリの和集合に設定されます。 (これらはまさにマスクエントリの影響を受けるエントリです)。

- マスク

ACLマスクエントリが明示的に指定されていても、有効な権利マスクを再計算します。 ( -nオプションを参照してください)。

-d、--default

すべての操作は、デフォルトACLに適用されます。 入力セット内の通常のACLエントリは、デフォルトのACLエントリに昇格されます。 入力セット内のデフォルトのACLエントリは破棄されます。 (それが起こると警告が出されます)。

--restore =ファイル

`getfacl -R 'などで作成された権限のバックアップを復元します。 このメカニズムを使用して、完全なディレクトリサブツリーのすべての権限が復元されます。 入力に所有者コメントまたはグループコメントが含まれていて、setfaclがrootによって実行されている場合は、すべてのファイルの所有者および所有グループも復元されます。 このオプションは `--test '以外のオプションと混在することはできません。

- テスト

テストモード。 すべてのファイルのACLを変更する代わりに、結果として得られるACLが一覧表示されます。

-R、 - 再帰的

再帰的にすべてのファイルとディレクトリに操作を適用します。 このオプションは `--restore 'と混在させることはできません。

-L、 - 論理

論理的な歩行、シンボリックリンクに従ってください。 デフォルトの動作では、シンボリックリンクの引数に従い、サブディレクトリで遭遇したシンボリックリンクをスキップします。 このオプションは `--restore 'と混在させることはできません。

-P、 - 物理的

物理的な歩行、すべてのシンボリックリンクをスキップします。 これはシンボリックリンクの引数もスキップします。 このオプションは `--restore 'と混在させることはできません。

- バージョン

setfaclのバージョンを出力して終了します。

- 助けて

コマンドラインオプションについて説明するヘルプを表示します。

コマンドラインオプションの終わり。 残りのすべてのパラメータは、ダッシュで始まっていても、ファイル名として解釈されます。

ファイル名パラメーターが単一のダッシュの場合、setfaclは標準入力からファイルのリストを読み取ります。

ACLエントリー

setfaclユーティリティーは、以下のACLエントリー形式を認識します(分かりやすくするために空白が挿入されています)。

[d [efault]:] [u [ser]:] uid [: perms ]

名前付きユーザーのアクセス許可。 uidが空の場合のファイル所有者の許可。

[d [efault]:] g [roup]: gid [: perms ]

名前付きグループのパーミッション。 gidが空の場合、所有グループのパーミッション。

[d [efault]:] m [ask] [:] [: perms ]

有効な権利マスク

[d [efault]:] o [ther] [:] [: perms ]

他人の許可。

区切り文字と非区切り文字の間の空白は無視されます。

パーミッションを含む適切なACLエントリは、変更および設定操作で使用されます。 (オプション-m-M 、-- set 、-- set-file )を使用します。 permsフィールドのないエントリは、エントリの削除に使用されます(オプション-x-X )。

uidgidでは 、名前または番号のいずれかを指定できます。

permsフィールドは、ファイルがディレクトリであるか、すでに一部のユーザー(X)に対して実行許可を持っている場合にのみ、読み取り(r) 、書き込み(w) 、実行(x) 、実行を示す文字の組み合わせです。 あるいは、 permsフィールドは8進数(0-7)にすることができます。

自動作成されたエントリ

最初は、ファイルとディレクトリには、所有者、グループ、その他の3つの基本ACLエントリのみが含まれています。 ACLが有効になるためには、いくつかの規則が満たされる必要があります。

*

3つの基本項目は削除できません。 これらの基本エントリタイプのそれぞれには、正確に1つのエントリが必要です。

*

ACLに名前付きユーザーエントリまたは名前付きグループオブジェクトが含まれる場合は常に、有効な権利マスクも含める必要があります。

*

ACLにデフォルトのACLエントリが含まれている場合は、3つのデフォルトACLベースエントリ(デフォルトの所有者、デフォルトグループ、デフォルトのその他のエントリ)も存在する必要があります。

*

既定のACLに名前付きユーザーエントリまたは名前付きグループオブジェクトが含まれる場合は常に、既定の有効な権利マスクも含まれている必要があります。

ユーザーがこれらのルールを確実にするのを助けるために、setfaclは、以下の条件のもとで既存のエントリからエントリを作成します。

*

ACLに名前付きユーザーまたは名前付きグループエントリが含まれていて、マスクエントリが存在しない場合は、グループエントリと同じアクセス許可を含むマスクエントリが作成されます。 -nオプションが指定されていない限り、マスクエントリのアクセス権は、マスクエントリの影響を受けるすべてのアクセス許可の和集合を含むようにさらに調整されます。 ( -nオプションの説明を参照)。

*

デフォルトACLエントリが作成され、デフォルトACLに所有者、所有グループ、またはその他のエントリが含まれていない場合、ACL所有者、所有グループ、またはその他のエントリのコピーがDefault ACLに追加されます。

*

デフォルトのACLに名前付きユーザエントリまたは名前付きグループエントリが含まれていて、マスクエントリが存在しない場合、デフォルトのデフォルトACLのグループエントリと同じアクセス権を含むマスクエントリが追加されます。 -nオプションが指定されていない限り、マスクエントリのアクセス権は、マスクエントリの影響を受けるすべてのアクセス許可の和を含むようにさらに調整されます。 ( -nオプションの説明を参照)。

使用例

追加のユーザーに読み取りアクセスを許可する

setfacl -mu:lisa:rファイル

有効な権利マスクを使用して、すべてのグループおよびすべての指定ユーザーからの書き込みアクセスを取り消します。

setfacl -mm :: rxファイル

ファイルのACLから名前付きグループエントリを削除する

setfacl -xg:staffファイル

あるファイルのACLを別のファイルにコピーする

getfacl file1 | setfacl --set-file = - file2

アクセスACLをデフォルトACLにコピーする

getfacl -a dir | setfacl -d -M- dir

POSIX準拠1003.1eドラフトスタンダード17

環境変数POSIXLY_CORRECTが定義されている場合、setfaclのデフォルト動作は次のように変更されます。すべての非標準オプションは無効です。 `` default: ''接頭辞は無効です。 -xオプションと-Xオプションも許可フィールドを受け入れます(無視してください)。

関連項目

umask (1)、