概要
ファイルやディレクトリへACLを設定します。個別ユーザーやグループへ細かな権限を与える時に有効ですが、maskや既定ACLの理解が必要です。
基本構文
setfacl [オプション]... { -m | -x } ACL記述 ファイル...
setfacl [オプション]... -b ファイル...
setfacl [オプション]... --restore=バックアップファイル詳細解説
setfaclは、ファイルやディレクトリに対してアクセス制御リストを追加、変更、削除するコマンドです。chmodが三者向けの基本権限を扱うのに対し、setfaclは個別ユーザーや個別グループへの例外的な権限制御を扱えます。
共有ディレクトリで特定ユーザーへだけ書き込み権を与える、ディレクトリへ既定ACLを設定して新規作成物へ継承させる、といった運用で有効です。
設定後はgetfaclで結果を確認し、maskや継承の影響まで読み直す習慣が重要です。
このコマンドを使う場面
共有ディレクトリで特定ユーザーやグループへ例外的な権限を与えたい時、既定ACLで継承ルールを作りたい時に使います。
まず安全に試す方法
1. touch sample.txt
2. setfacl -m u:$(id -un):rw sample.txt
3. getfacl sample.txt
4. setfacl -b sample.txt
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
検証用ファイルへ自分自身のACLを追加し、出力の意味を読み取ります。
-
setfacl -bを実行し、追加前後の差を確認します。
資格試験との関連
-
LinuC レベル2
範囲: 2.11.1 Sambaの設定と管理根拠: officialLinuCレベル2では、Sambaや共有設定の文脈でアクセス制御リストの理解が求められ、getfaclやsetfaclが重要な補助コマンドになります。
-
LPIC-2
範囲: 共有環境の権限制御根拠: editorialLPIC-2では、共有や権限制御の理解を深める補助知識としてACL操作の理解が役立ちます。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、setfaclはLinux運用の基礎体力を支える重要なコマンドです。
実行結果サンプル
-
setfacl -m u:alice:rw sample.txt getfacl sample.txtuser::rw- user:alice:rw- group::r-- mask::rw- other::r-- -
setfacl -m d:g:project:rwx shared getfacl shareddefault:group:project:rwx...
戻り値コード
- 0 正常終了。ACL変更に成功しました。
- >0 権限不足、ACL記述不正、対象不存在、ACL非対応などで変更できませんでした。
使用例
setfacl -m u:alice:rw file.txtsetfacl -m g:project:rwx sharedsetfacl -x u:alice file.txtsetfacl -b file.txt
よくあるエラー
-
設定したのに期待どおりにならない 原因: mask行が実効権限を制限しているか、ファイルシステムがACLを十分に扱えていません。対処: getfaclでmaskを確認し、必要なら調整します。
-
Operation not supportedと表示される 原因: 対象ファイルシステムがACLに対応していないか、マウント設定で無効です。対処: ファイルシステム種別とマウントオプションを確認します。
導入・互換性情報
POSIX必須ではなく、ACL対応環境と追加パッケージに依存することがあります。Linuxではaclパッケージに含まれることが多いです。
注意点 / セキュリティリスク
危険度は中程度です。ACLは柔軟な反面、設定意図が見えにくくなりやすく、保守性を下げることがあります。設定後の確認が必須です。
FAQ
-
Q. chmodだけでは駄目ですか。 A. 単純な三者向け権限制御で足りるなら十分です。個別ユーザーや個別グループへの例外設定が必要な時にsetfaclを使います。
-
Q. 設定後は何を確認すべきですか。 A. getfaclで結果を確認し、必要なら対象ユーザーで実アクセス確認まで行うのが安全です。
関連用語
参照リンク
- カテゴリー: Permissions And Ownership
- レベル: Practical
- 対応試験: LinuC, LinuC レベル2, LPIC, LPIC-2, 共通基礎