このトピックでは、POSIX (Portable Operating System Interface) ACL (アクセス制御リスト) を設定する方法について説明します。 POSIX ACL を使用して、NFSv3 プロトコルを使用してマウントされたファイルシステム上のファイルおよびディレクトリに対するアクセスを制御できます。

始める前に

NFSv3 ファイルシステムがマウントされていること。 詳細については、 「NFSv3 ファイルシステムをマウントする」 をご参照ください。

コマンド

下表に、POSIX ACLの 設定に関連するコマンドを示します。

Command 説明
getfacl <filename> 指定されたファイルに適用される ACL を表示します。
setfacl -m g::w <filename> グループに書き込み権限を付与します。
setfacl -m u:player:w <filename> ユーザー player に書き込み権限を付与します。
setfacl -m g:players:rwx <filename> グループ players に読み取り、書き込み、および実行のアクセス権限を付与します。
setfacl -x g:players <filename> グループ player から権限を削除します。
getfacl file1 | setfacl --set-file =-file2 file1 の ACL を file2 にコピーします。
setfacl -b file1 file1 からすべての拡張 ACE を削除します。 所有者、グループ、その他の基本 ACE は保持されます。
setfacl -k file1 file1 からすべてのデフォルト ACE を削除します。
nfs4_setfacl -R -m g:players:rw dir グループ players に、dir 内のファイルおよびサブディレクトリへの読み取りおよび書き込みアクセスを許可します 。
setfacl -d -m g:players:rw dir1 グループ players に、dir1 内に新しく作成されたファイルおよびサブディレクトリへの読み取りおよび書き込みアクセスを許可します。

手順

NFS ACLを設定してファイルとディレクトリへのアクセスを制御するには、以下の手順に従います。

  1. ユーザーとグループを作成します。

    次のコマンドを使用して操作を完了します。名前が player 、admini 、anonym のユーザーをそれぞれ作成し、グループ 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
  2. ファイルとディレクトリへのアクセスを制御するための POSIX ACL を設定します。

    次のコマンドを使用して、操作を完了します。ディレクトリ dir0 を作成し、players に読み取り専用アクセス権を付与し、adminis に読み書き込みおよび実行アクセス権を付与し、その他のクラスには dir0 内のすべてのファイルに対するアクセス権を付与しません。

    sudo umask 777
    sudo mkdir dir0
    sudo setfacl -mg:players:rx 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 -mg ::-x dir0
    sudo setfacl -d -m o::--- dir0
    設定の完了後、sudo 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::---
  3. ACL 設定を確認します。
    1. admini に dir0/file ファイルに対する読み取りおよび書き込みアクセス権が付与されていることを確認します。
      [root@vbox test] sudo su admini -c 'touch dir0/file'
      [root@vbox test] sudo su admini -c 'echo 123 > dir0/file'
    2. player に dir0/file に対する読み取り専用アクセス権が付与されていることを確認します。
      [root@vbox test] sudo su player -c 'touch dir0/file'
      touch: cannot touch ‘dir0/file’: Permission denied
      [root@vbox test] sudo su player -c 'cat dir0/file'
      123
      [root@vbox test] sudo su player -c 'echo 456 >> dir0/file'
      bash: dir0/file: Permission denied
      [root@vbox test] sudo su player -c 'getfacl dir0/file'
      # file: dir0/file
      # owner: admini
      # group: adminis
      user::---
      group::---
      group:players:r-x
      group:adminis:rwx
      mask::rwx
      other::---
    3. anonym が dir0/file ファイルにアクセスできないことを確認します。
      [root@vbox test] sudo su anonym -c 'ls dir0'
      ls: cannot open directory dir0: Permission denied
      [root@vbox test] sudo su anonym -c 'cat dir0/file'
      cat: dir0/file: Permission denied
      [root@vbox test] sudo su anonym -c 'getfacl dir0/file'
      getfacl: dir0/file: Permission denied

関連する操作

次の方法を使用して、ユーザーからアクセス権限を削除できます。

NFSv4 ACL を設定する際、各ユーザーをグループに分類することを推奨します。 この方法を使用すると、NFSv4 ACL を設定する際、各ユーザーに個別に権限を付与する代わりに、グループに対してアクセス権限を付与できます。 オブジェクトへのアクセス権が付与されたグループからユーザーを削除することにより、ユーザーからオブジェクトへのアクセスを無効にできます。 たとえば、次のコマンドは admini を adminis グループから削除し、adminis2 グループに追加します。

[root@vbox test] sudo groupadd adminis2
[root@vbox test] sudo usermod -g adminis2 admini
[root@vbox test] id admini
uid=1057(admini) gid=1057(admini) groups=1061(adminis2)
[root@vbox test] sudo su admini -c 'ls dir0'
ls: cannot open directory dir0: Permission denied
[root@vbox test] sudo su admini -c 'cat dir0/file'
cat: dir0/file: Permission denied
[root@vbox test] sudo su admini -c 'getfacl dir0/file'
getfacl: dir0/file: Permission denied