POSIX アクセス制御リスト (ACL) を設定して、NFSv3 ファイルシステム内のファイルとディレクトリにきめ細かいパーミッションを設定します。
前提条件
NFSv3 ファイルシステムがマウントされていること。 詳細については、「NFS ファイルシステムのマウント」をご参照ください。
ファイルシステムで NFS ACL 機能が有効化されていること。 この機能が有効化されていない場合、
setfaclコマンドを使用して POSIX ACL を設定することはできません。NAS コンソールにログインして、ファイルシステムの詳細ページに移動します。[アクセス制御] タブをクリックして [NFS ACL] スイッチをオンにするか、EnableNfsAcl API を呼び出します。
コマンド
次の表に、一般的な POSIX ACL コマンドを示します。
コマンド | 説明 |
getfacl <filename> | ファイルの ACL を照会します。 |
setfacl -m g::w <filename> | GROUP に書き込みパーミッションを付与します。 |
setfacl -m u:player:w <filename> | ユーザー player に書き込みパーミッションを付与します。 |
setfacl -m g:players:rwx <filename> | players グループに読み取り、書き込み、実行のパーミッションを付与します。 |
setfacl -x g:players <filename> | players グループからパーミッションを取り消します。 |
getfacl file1 | setfacl --set-file=- file2 | file1 の ACL を file2 にコピーします。 |
setfacl -b file1 | file1 からすべての拡張 ACE を削除します。 所有者、グループ、その他の基本 ACE は保持されます。 |
setfacl -k file1 | file1 からすべてのデフォルト ACE を削除します。 |
setfacl -R -m g:players:rw dir | dir 内のすべてのファイルとサブディレクトリに対する読み取りおよび書き込みパーミッションを players グループに付与します。 |
setfacl -d -m g:players:rw dir1 | dir1 内の新しいファイルとサブディレクトリに対するデフォルトの読み取りおよび書き込みパーミッションを players グループに付与します。 |
POSIX ACL の設定
POSIX ACL を設定してアクセスを制御するには、次の手順に従います。
ユーザーとグループの作成
この例では、3 人のユーザー (player、admini、anonym) と 2 つのグループ (players、adminis) を作成し、player を players グループに、admini を adminis グループに割り当てます。
sudo useradd player sudo groupadd players sudo usermod -g players player sudo useradd admini sudo groupadd adminis sudo usermod -g adminis admini sudo useradd anonymファイルとディレクトリへのアクセスを制御するための POSIX ACL の設定
この例では、dir0 という名前のディレクトリを作成することを前提としています。 dir0 ディレクトリ内のすべてのファイルに対して、players グループに読み取り専用パーミッションを付与し、adminis グループに読み取り、書き込み、実行のパーミッションを付与し、他のユーザーにはパーミッションを付与しません。
sudo umask 777 sudo mkdir dir0 sudo setfacl -m g:players:r-x dir0 sudo setfacl -m g:adminis:rwx dir0 sudo setfacl -m u::--- dir0 sudo setfacl -m g::--x dir0 sudo setfacl -m o::--- dir0 sudo setfacl -d -m g:players:r-x dir0 sudo setfacl -d -m g:adminis:rwx dir0 sudo setfacl -d -m u::--- dir0 sudo setfacl -d -m g::--x dir0 sudo setfacl -d -m o::--- dir0sudo getfacl dir0を実行して、設定を確認します。# file: dir0 # owner: root # group: root user::--- group::--x group:players:r-x group:adminis:rwx mask::rwx other::--- default:user::--- default:group::--x default:group:players:r-x default:group:adminis:rwx default:mask::rwx default:other::---パーミッションの確認
admini ユーザーに読み取りおよび書き込みパーミッションがあることの確認
sudo su admini -c 'touch dir0/file'sudo su admini -c 'echo 123 > dir0/file'player ユーザーに読み取り専用パーミッションがあることの確認
player ユーザーが file ファイルを作成できないことの確認
たとえば、file ファイルを dir0 ディレクトリに作成します。
次のコマンドを実行します。
sudo su player -c 'touch dir0/file'次のようなメッセージが返された場合、player ユーザーには file ファイルを作成するパーミッションがありません。
touch: cannot touch ‘dir0/file’: Permission denied
player ユーザーが dir0/file を読み取れることの確認
次のコマンドを実行します。
sudo su player -c 'cat dir0/file'次の情報が返された場合、player ユーザーには dir0/file ファイルの内容を表示するパーミッションがあります。
123
player ユーザーがファイルに書き込めないことの確認
次のコマンドを実行します。
sudo su player -c 'echo 456 >> dir0/file'書き込みパーミッションが拒否された場合の想定される出力:
bash: dir0/file: Permission denied
sudo su player -c 'getfacl dir0/file'を実行して、dir0/file に対する player ユーザーのパーミッションを表示します。# file: dir0/file # owner: admini # group: adminis user::--- group::--x group:players:r-x group:adminis:rwx mask::rwx other::---
anonym ユーザーが dir0 に対するパーミッションを持たないことの確認
anonym ユーザーが dir0 内のファイルを一覧表示できないことの確認
次のコマンドを実行します。
sudo su anonym -c 'ls dir0'パーミッションが拒否された場合の想定される出力:
ls: cannot open directory dir0: Permission denied
anonym ユーザーがファイルを読み取れないことの確認
次のコマンドを実行します。
sudo su anonym -c 'cat dir0/file'読み取りパーミッションが拒否された場合の想定される出力:
cat: dir0/file: Permission denied
anonym ユーザーがファイルの ACL にアクセスできないことの確認
次のコマンドを実行します。
sudo su anonym -c 'getfacl dir0/file'アクセスが拒否された場合の想定される出力:
getfacl: dir0/file: Permission denied
ユーザーパーミッションの取り消し
次の例では、ユーザーを別のグループに再割り当てすることで、ユーザーのパーミッションを取り消します。
ベストプラクティス: パーミッションは個々のユーザーではなく、グループに付与してください。 アクセスを取り消すには、ユーザーを別のグループに移動してください。 次の手順では、admini ユーザーを adminis グループから adminis2 に移動します。
adminis2 グループの作成:
sudo groupadd adminis2admini ユーザーを adminis グループから adminis2 に移動:
sudo usermod -g adminis2 adminiユーザーのグループメンバーシップの確認
次のコマンドを実行します。
id admini次の情報が返されます。
uid=1057(admini) gid=1061(adminis2) groups=1061(adminis2)
admini ユーザーのパーミッションの確認
admini ユーザーが dir0 にアクセスできないことの確認
次のコマンドを実行します。
sudo su admini -c 'ls dir0'admini ユーザーが dir0 にアクセスできない場合の想定される出力:
ls: cannot open directory dir0: Permission denied
admini ユーザーが dir0/file を読み取れないことの確認
次のコマンドを実行します。
sudo su admini -c 'cat dir0/file'admini ユーザーが dir0/file を読み取れない場合の想定される出力:
cat: dir0/file: Permission denied
admini ユーザーが dir0/file にアクセスできないことの確認
次のコマンドを実行します。
sudo su admini -c 'getfacl dir0/file'admini ユーザーが dir0/file にアクセスできない場合の想定される出力:
getfacl: dir0/file: Permission denied