ACL が必要な理由
UNIX ファイル システム上のすべてのファイルには、所有者/グループと一連のアクセス許可があります。複数のユーザーが同じファイルにアクセスする必要があり、ユーザーが異なるグループに属している場合を想像してください。ファイル アクセス制御リスト (FACL) または単に ACL は、追加のユーザー/グループとそのファイルへのアクセス許可のリストです。
ファイルに ACL が添付されているかどうかを知る方法
ファイルに ACL が添付されているかどうかは、非常に簡単にわかります。 ls -l コマンドは、以下に示すような出力を生成します。
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
+ に注意してください 許可の最後に署名します。これにより、ファイルに ACL が添付されていることが確認されます。
ACL の表示
ファイルの詳細 ACL 情報を表示するには、getfacl を使用します 指図。
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
3 人の異なる user: に注目してください:行。最初の行には、ファイルの所有者の標準的なファイル許可がリストされています。他の 2 つのユーザー権限は、ユーザー john と sam の個別の権限です。ここでのマスク フィールドは、ユーザーとグループに付与した追加のアクセス許可にのみ適用されます。マスクが rwx に設定されている場合、読み取り、書き込み、および実行のパーミッションが追加のユーザー/グループに付与されます。マスクが r-x に設定されている場合、書き込み権限は追加のユーザー/グループに付与されません。一般的に、しない mask を rwx 以外に設定します。マスク値は、標準の UNIX ユーザー/グループ/その他のアクセス許可には影響しません。
ACL のないファイル
ACL のないファイルに対して getfacl コマンドを実行すると、追加の「user:」行と「mask」行は表示されず、標準のファイル許可が表示されます。
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
FACL の作成と管理
setfacl コマンドは、指定されたファイルに ACL を設定するために使用されます。ファイル /tmp/test でユーザー john に rw アクセス権を付与するには:
# setfacl -m u:john:rw /tmp/test
-m オプションは、コマンド ラインで指定されたファイルの ACL を変更するように setfacl に指示します。ユーザー john の代わりに、ファイルに対する特定の権限を持つグループを持つことができます:
# setfacl -m g:accounts:rw /tmp/test
複数のユーザーとグループの FACL も 1 つのコマンドで設定できます:
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
ディレクトリのデフォルト FACL
デフォルトの ACL はディレクトリでのみ作成されます。ディレクトリにデフォルトの ACL を設定すると、そのディレクトリ内に作成されたすべてのファイルにも、そのデフォルトの FACL が自動的に割り当てられます。
ディレクトリにデフォルトの FACL を作成するには:
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
ここで、accounts ディレクトリに新しいファイルを作成し、そのファイルに FACL をリストします:
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
FACL の削除
FACL を削除するには、-x オプションを指定して setfacl コマンドを使用します:
# setfacl -x u:john /tmp/test
上記のコマンドは、ファイル /tmp/test のユーザー john の ACL を削除します。他のユーザー/グループの ACL (影響を受けない場合)。
ファイルに関連付けられたすべての ACL を削除するには、setfacl で -b オプションを使用します。
# setfacl -b /tmp/test
FACL のバックアップ
多くの場合、バックアップ ソフトウェアはファイルの FACL に関連するメタデータをコピーしない場合があります。その場合、ファイルの FACL 情報をバックアップすることをお勧めします。現在、ディレクトリ内のすべてのファイル (すべてのサブディレクトリを含む) の FACL を 1 つのファイルにコピーできます。
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
FACL の復元
/accounts ディレクトリ内のファイルを復元する場合、そのディレクトリ内のファイルに関連付けられている FACL を復元する必要があります。これを行うには、FACL バックアップ ファイル accounts_facl を使用します –restore とともに オプション:
# setfacl --restore=accounts_facl