すべてのプロダクト
Search
ドキュメントセンター

File Storage NAS:POSIX ACL を使用したアクセス制御

最終更新日:Sep 09, 2026

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 を設定してアクセスを制御するには、次の手順に従います。

  1. ユーザーとグループの作成

    この例では、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
  2. ファイルとディレクトリへのアクセスを制御するための 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::--- 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. パーミッションの確認

    1. admini ユーザーに読み取りおよび書き込みパーミッションがあることの確認

      sudo su admini -c 'touch dir0/file'
      sudo su admini -c 'echo 123 > dir0/file'
    2. player ユーザーに読み取り専用パーミッションがあることの確認

      1. player ユーザーが file ファイルを作成できないことの確認

        たとえば、file ファイルを dir0 ディレクトリに作成します。

        • 次のコマンドを実行します。

          sudo su player -c 'touch dir0/file'
        • 次のようなメッセージが返された場合、player ユーザーには file ファイルを作成するパーミッションがありません。

          touch: cannot touch ‘dir0/file’: Permission denied
      2. player ユーザーが dir0/file を読み取れることの確認

        • 次のコマンドを実行します。

          sudo su player -c 'cat dir0/file'
        • 次の情報が返された場合、player ユーザーには dir0/file ファイルの内容を表示するパーミッションがあります。

          123
      3. 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::---
    3. anonym ユーザーが dir0 に対するパーミッションを持たないことの確認

      1. anonym ユーザーが dir0 内のファイルを一覧表示できないことの確認

        • 次のコマンドを実行します。

          sudo su anonym -c 'ls dir0'
        • パーミッションが拒否された場合の想定される出力:

          ls: cannot open directory dir0: Permission denied
      2. anonym ユーザーがファイルを読み取れないことの確認

        • 次のコマンドを実行します。

          sudo su anonym -c 'cat dir0/file'
        • 読み取りパーミッションが拒否された場合の想定される出力:

          cat: dir0/file: Permission denied
      3. anonym ユーザーがファイルの ACL にアクセスできないことの確認

        • 次のコマンドを実行します。

          sudo su anonym -c 'getfacl dir0/file'
        • アクセスが拒否された場合の想定される出力:

          getfacl: dir0/file: Permission denied

ユーザーパーミッションの取り消し

次の例では、ユーザーを別のグループに再割り当てすることで、ユーザーのパーミッションを取り消します。

ベストプラクティス: パーミッションは個々のユーザーではなく、グループに付与してください。 アクセスを取り消すには、ユーザーを別のグループに移動してください。 次の手順では、admini ユーザーを adminis グループから adminis2 に移動します。

  1. adminis2 グループの作成:

    sudo groupadd adminis2
  2. admini ユーザーを adminis グループから adminis2 に移動:

    sudo usermod -g adminis2 admini
  3. ユーザーのグループメンバーシップの確認

    • 次のコマンドを実行します。

      id admini
    • 次の情報が返されます。

      uid=1057(admini) gid=1061(adminis2) groups=1061(adminis2)
  4. admini ユーザーのパーミッションの確認

    1. admini ユーザーが dir0 にアクセスできないことの確認

      • 次のコマンドを実行します。

        sudo su admini -c 'ls dir0'
      • admini ユーザーが dir0 にアクセスできない場合の想定される出力:

        ls: cannot open directory dir0: Permission denied
    2. admini ユーザーが dir0/file を読み取れないことの確認

      • 次のコマンドを実行します。

        sudo su admini -c 'cat dir0/file'
      • admini ユーザーが dir0/file を読み取れない場合の想定される出力:

        cat: dir0/file: Permission denied
    3. admini ユーザーが dir0/file にアクセスできないことの確認

      • 次のコマンドを実行します。

        sudo su admini -c 'getfacl dir0/file'
      • admini ユーザーが dir0/file にアクセスできない場合の想定される出力:

        getfacl: dir0/file: Permission denied