SETFACL(1) | Access Control Lists | SETFACL(1) |
名前
setfacl -ファイルのアクセス制御リスト (access control list) を設定する書式
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...説明
このユーティリティはファイルとディレクトリのアクセス制御リスト (Access Control List, ACL) を設定する。コマンドラインでは、一連のコマンドの後にファイル群を指定する (さらに別の一連のコマンド、ファイル群、... を続けて指定することができる)。許可
ケーパビリティ (capability) CAP_FOWNER を持つファイル所有者とプロセスは、ファイルの ACL を変更する権限が付与されている。これはファイルモードにアクセスするのに必要な許可と類似している (現在の Linux システムでは、CAP_FOWNER ケーパビリティを持つユーザは root のみである)。オプション
- -b, --remove-all
- 全ての拡張 ACL エントリを削除する。所有者・グループ・その他という基本 (base) ACL エントリは保存される。
- -k, --remove-default
- デフォルト ACL を削除する。デフォルト ACL が存在しない場合、警告は出されない。
- -n, --no-mask
- 実効権 (effective right) マスクを再計算しない。 setfacl のデフォルト動作では、ACL マスクエントリが明示的に指定されない限り、 ACL マスクエントリを再計算する。マスクエントリは所有グループ・指名ユーザ (named user)・指名グループのエントリの全ての許可を結合したものに設定される (マスクエントリに影響を受けるエントリは、正にこれらである)。
- --mask
- ACL マスクエントリが明示的に指定されている場合でも、実効権マスクを再計算する ( -n オプションを参照)。
- -d, --default
- 全ての操作をデフォルト ACL に適用する。入力セットに含まれる通常の ACL エントリをデフォルト ACL エントリに昇格させる。入力セットに含まれるデフォルト ACL エントリは破棄される (これが起こった場合は警告を出す)。
- --restore=file
- `getfacl -R' またはそれと同様なもので作成された許可のバックアップで復旧する。ディレクトリサブツリーの全ての許可が、この方法で復旧される。入力に所有者コメントまたはグループコメントが含まれている場合、 setfacl はファイルの所有者と所有グループを復旧しようとする。入力に (setuid, setgid, sticky ビットを定義する) フラグコメントが含まれている場合、入力に従ってこれらのビットを設定する。指定されなかった場合はこれらのビットをクリアする。この操作は `--test' 以外のオプションと併用できない。
- --test
- テストモード。ファイルの ACL を変更する代わりに、結果の ACL の一覧を表示する。
- -R, --recursive
- 全てのファイルとディレクトリに対して再帰的に操作を適用する。このオプションは `--restore' と併用できない。
- -L, --logical
- 論理的に辿り、ディレクトリへのシンボリックリンクを辿る。デフォルトの動作では、シンボリックリンク引き数を辿り、サブディレクトリで見つかったシンボリックリンクはスキップする。-R と一緒に使用した場合にのみ効果を持つ。このオプションは `--restore' と併用できない。
- -P, --physical
- 物理的に辿り、ディレクトリへのシンボリックリンクをスキップする。シンボリックリンク引き数もスキップする。-R と一緒に使用した場合にのみ効果を持つ。このオプションは `--restore' と併用できない。
- -v, --version
- setfacl のバージョンを表示し、終了する。
- -h, --help
- コマンドラインオプションを説明するヘルプを表示する。
- --
- コマンドラインオプションの終わり。残りの引き数は、たとえダッシュ文字で始まっていたとしても、ファイル名として解釈される。
- -
-
ファイル名引き数が 1 つのダッシュ文字である場合、 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) で使用される。
uid と gid には名前と数値のどちらも指定できる。
perms フィールド許可を表す文字の組み合わせである。読み込み (r), 書き込み (w), 実行 (x) は、ファイルがディレクトリであるか何れかのユーザの実行許可 (X) が既にある場合にのみ実行される。文字の組合わせの代わりに、 perms フィールドを 8 進数 (0-7) にすることもできる。
自動的に作成されるエントリ
初期状態では、ファイルとディレクトリは所有者・グループ・その他という 3 つの基本 ACL エントリを持つ。 ACL が有効であるためには満たさなければならない、いくつかのルールがある。- *
- 3 つの基本エントリは削除できない。これらの基本エントリ型のそれぞれに対して、必ず 1 つのエントリがなければならない。
- *
- ACL が指名ユーザエントリまたは指名グループオブジェクトを持つ場合、実効権マスクも持たなければならない。
- *
- ACL がデフォルト ACL エントリを持つ場合、 3 つのデフォルト ACL 基本エントリ (デフォルト所有者・デフォルトグループ・デフォルトのその他) が存在しなければならない。
- *
- デフォルト ACL が指名ユーザエントリまたは指名グループオブジェクトを持つ場合、デフォルト実効権マスクも持たなければならない。
ユーザがこれらのルールを確実に守るための助けとして、 setfacl は以下の条件で既存のエントリからエントリを作成する:
- *
- ACL が指名ユーザまたは指名グループのエントリを持ち、かつマスクエントリが存在しない場合、グループエントリと同じ許可を持つマスクエントリが作成される。 -n オプションが指定されない限り、マスクエントリの許可は、そのマスクエントリの影響を受ける全ての許可を合わせたもの含めるように、更に調整される ( -n オプションの説明を参照すること)。
- *
- デフォルト ACL エントリが作成され、かつデフォルト ACL が所有者・所有グループ・その他のエントリを持たない場合、 ACL 所有者・所有グループ・その他のエントリのコピーがデフォルト ACL に追加される。
- *
- デフォルト ACL が指名ユーザまたは指名グループのエントリを持ち、かつマスクエントリが存在する場合、デフォルト ACL のグループエントリと同じ許可を持つマスクエントリが追加される。 -n オプションが指定されない限り、マスクエントリの許可は、そのマスクエントリの影響を受ける全ての許可を合わせたもの含めるように、更に調整される ( -n オプションの説明を参照すること)。
例
追加のユーザの読み込みアクセスを許可する。
setfacl -m u:lisa:r file
全てのグループと全ての指名ユーザの書き込みアクセスを (実効権マスクを使って) 取り消す。
setfacl -m m::rx file
ファイルの ACL から指名グループエントリを削除する。
setfacl -x g:staff file
あるファイルの ACL を他にコピーする。
getfacl file1 | setfacl --set-file=- file2
アクセス ACL をデフォルト ACL にコピーする。
getfacl --access dir | setfacl -d -M- dir
POSIX 1003.1e DRAFT STANDARD 17 への準拠
環境変数 POSIXLY_CORRECT が定義されている場合、 getfacl のデフォルトの動作は、以下のように変わる。標準に準拠しない全てのオプションは無効にされる。“default:”プレフィックスは無効にされる。 -x と -X オプションは許可フィールドを受け付ける (しかし、無視する)。著者
Andreas Gruenbacher, < a.gruenbacher@bestbits.at>.関連項目
getfacl(1), chmod(1), umask(1), acl(5)ACL File Utilities | May 2000 |