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

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

最終更新日:Jul 30, 2024

このトピックでは、ポータブルオペレーティングシステムインターフェイス (POSIX) アクセス制御リスト (ACL) を設定して、NFSv3ファイルシステム内のファイルおよびディレクトリへのアクセスを制御する方法について説明します。

前提条件

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

コマンド説明

POSIX ACLを設定する前に、特定のコマンドに慣れることをお勧めします。 次の表にコマンドを示します。

コマンド

説明

getfacl <filename>

指定されたファイルに適用されるACLを照会します。

setfacl -m g::w <filename>

指定されたファイルに対する書き込み権限をGROUP @ プリンシパルに付与するアクセス制御エントリ (ACE) を追加します。

setfacl -m u:player:w <filename>

プレーヤーユーザーに書き込み権限を付与します。

setfacl -m g:players:rwx <filename>

プレーヤーグループに読み取り、書き込み、および実行権限を付与します。

setfacl -x g:players <filename>

プレイヤーグループから権限を取り消します。

getfacl file1 | setfacl --set-file =-file2

file1ファイルのACLをfile2ファイルにコピーします。

setfacl -b file1

file1 からすべての拡張 ACE を削除します。 所有者、グループ、その他の基本 ACE は保持されます。

setfacl -k file1

file1 からすべてのデフォルト ACE を削除します。

setfacl -R -m g: プレイヤー: rw dir

dirディレクトリ内のファイルおよびサブディレクトリに対する読み取りおよび書き込み権限をプレーヤーグループに付与します。

setfacl -d -m g:players:rw dir1

dir1ディレクトリ内の新しいファイルおよびサブディレクトリに対する読み取りおよび書き込み権限をプレーヤーグループに付与します。

手順

NFS ACLを設定してファイルおよびディレクトリへのアクセスを制御するには、次の手順を実行します。

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

    この例では、player、admini、anonym のユーザーが作成されます。 プレイヤーとadminisのグループが作成されます。 プレーヤーユーザーがプレーヤーグループに追加され、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を設定して、ファイルとディレクトリへのアクセスを制御します。

    次のコマンドを実行して操作を完了します。Create a directory named dir0. プレーヤーグループへの読み取り専用権限、adminisグループへの読み取り、書き込み、および実行権限を付与し、他のクラスへのdir0ディレクトリ内のすべてのファイルへの権限は付与しません。

    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. ACL設定を確認します。

    1. 次のコマンドを実行して、adminiユーザーに読み取りおよび書き込み権限があることを確認します。

      sudo su admini -c 'touch dir0/file'

      sudo su admini -c 'echo 123 > dir0/file'
    2. プレーヤーユーザーに読み取り専用の権限があることを確認します。

      1. プレーヤーユーザーにfileファイルを作成する権限がないことを確認します。

        たとえば、プレーヤーユーザーがdir0ディレクトリにfileファイルを作成できないことを確認します。

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

          sudo su player -c 'touch dir0/file'
        • 出力が次の情報に似ている場合、プレーヤーユーザーにはファイルファイルを作成する権限がありません。

          touch: cannot touch 'dir0/file': Permission denied
      2. プレーヤーユーザーがdir0/fileファイルのコンテンツを表示する権限を持っていることを確認します。

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

          sudo su player -c 'cat dir0/file'
        • 出力が次の情報に似ている場合、プレーヤーユーザーはdir0/fileファイルの内容を表示する権限を持っています。

          123
      3. プレーヤーユーザーに書き込み権限がないことを確認します。

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

          sudo su player -c 'echo 456 >> dir0/file'
        • 出力が次の情報に似ている場合、プレーヤーユーザーには書き込み権限がありません。

          bash: dir0/file: Permission denied

        sudo su player -c 'getfacl dir0/file' コマンドを実行して、プレーヤーユーザーがdir0/fileファイルに対して持っている権限を表示することもできます。

        # file: dir0/file
        # owner: admini
        # group: adminis
        user::---
        group::---
        group:players:r-x
        group:adminis:rwx
        mask::rwx
        other::---
    3. anonymユーザーにdir0ディレクトリに対する権限がないことを確認します。

      1. 匿名ユーザーにdir0ディレクトリ内のファイルを表示する権限がないことを確認します。

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

          sudo su anonym -c 'ls dir0'
        • 出力が次の情報に似ている場合、anonymユーザーにはdir0ディレクトリに対する権限がありません。

          ls: cannot open directory dir0: Permission denied
      2. 匿名ユーザーにファイルのコンテンツを表示する権限がないことを確認します。

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

          sudo su anonym -c 'cat dir0/file'
        • 出力が次の情報に似ている場合、匿名ユーザーにはファイルの内容を表示する権限がありません。

          cat: dir0/file: Permission denied
      3. 匿名ユーザーにファイルへのアクセス権限がないことを確認します。

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

          sudo su anonym -c 'getfacl dir0/file'
        • 出力が次の情報に似ている場合、匿名ユーザーにはファイルにアクセスする権限がありません。

          getfacl: dir0/file: Permission denied

関連する API 操作

次の方法を使用して、ユーザーから権限を取り消すことができます。

NFSv4 ACLを使用する場合は、各ユーザーをグループに追加することをお勧めします。 これにより、別のユーザーではなくグループの権限を設定できます。 ユーザーからオブジェクトに対する権限を取り消すには、オブジェクトに対する権限が付与されているグループからユーザーを削除します。 たとえば、次のコマンドは admini を adminis グループから削除し、adminis2 グループに追加します。

  1. 次のコマンドを実行して、adminis2グループを作成します。

    sudo groupadd adminis2
  2. 次のコマンドを実行して、adminisグループからadminiユーザーを削除し、adminis2グループに追加します。

    sudo usermod -g adminis2 admini
  3. ユーザーのID情報を照会します。

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

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

      uid=1057(admini) gid=1057(admini) 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 /ファイルファイルを作成します。

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

        sudo su admini -c 'cat dir0/file'
      • 出力が次の情報に似ている場合、adminiユーザーにはdir0/fileファイルの内容を表示する権限がありません。

        cat: dir0/file: Permission denied
    3. adminiユーザーにアクセスする権限がないことを確認します。dir0 /ファイルファイルを作成します。

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

        sudo su admini -c 'getfacl dir0/file'
      • 出力が次のような情報である場合、adminiユーザーにはdir0/fileファイルにアクセスする権限がありません。

        getfacl: dir0/file: Permission denied