このトピックでは、ポータブルオペレーティングシステムインターフェイス (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を設定してファイルおよびディレクトリへのアクセスを制御するには、次の手順を実行します。
ユーザーとグループを作成します。
この例では、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
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::---
ACL設定を確認します。
次のコマンドを実行して、adminiユーザーに読み取りおよび書き込み権限があることを確認します。
sudo su admini -c 'touch dir0/file'
sudo su admini -c 'echo 123 > dir0/file'
プレーヤーユーザーに読み取り専用の権限があることを確認します。
プレーヤーユーザーにfileファイルを作成する権限がないことを確認します。
たとえば、プレーヤーユーザーがdir0ディレクトリにfileファイルを作成できないことを確認します。
以下のコマンドを実行します。
sudo su player -c 'touch dir0/file'
出力が次の情報に似ている場合、プレーヤーユーザーにはファイルファイルを作成する権限がありません。
touch: cannot touch 'dir0/file': Permission denied
プレーヤーユーザーがdir0/fileファイルのコンテンツを表示する権限を持っていることを確認します。
以下のコマンドを実行します。
sudo su player -c 'cat dir0/file'
出力が次の情報に似ている場合、プレーヤーユーザーはdir0/fileファイルの内容を表示する権限を持っています。
123
プレーヤーユーザーに書き込み権限がないことを確認します。
以下のコマンドを実行します。
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::---
anonymユーザーにdir0ディレクトリに対する権限がないことを確認します。
匿名ユーザーにdir0ディレクトリ内のファイルを表示する権限がないことを確認します。
以下のコマンドを実行します。
sudo su anonym -c 'ls dir0'
出力が次の情報に似ている場合、anonymユーザーにはdir0ディレクトリに対する権限がありません。
ls: cannot open directory dir0: Permission denied
匿名ユーザーにファイルのコンテンツを表示する権限がないことを確認します。
以下のコマンドを実行します。
sudo su anonym -c 'cat dir0/file'
出力が次の情報に似ている場合、匿名ユーザーにはファイルの内容を表示する権限がありません。
cat: dir0/file: Permission denied
匿名ユーザーにファイルへのアクセス権限がないことを確認します。
以下のコマンドを実行します。
sudo su anonym -c 'getfacl dir0/file'
出力が次の情報に似ている場合、匿名ユーザーにはファイルにアクセスする権限がありません。
getfacl: dir0/file: Permission denied
関連する API 操作
次の方法を使用して、ユーザーから権限を取り消すことができます。
NFSv4 ACLを使用する場合は、各ユーザーをグループに追加することをお勧めします。 これにより、別のユーザーではなくグループの権限を設定できます。 ユーザーからオブジェクトに対する権限を取り消すには、オブジェクトに対する権限が付与されているグループからユーザーを削除します。 たとえば、次のコマンドは admini を adminis グループから削除し、adminis2 グループに追加します。
次のコマンドを実行して、adminis2グループを作成します。
sudo groupadd adminis2
次のコマンドを実行して、adminisグループからadminiユーザーを削除し、adminis2グループに追加します。
sudo usermod -g adminis2 admini
ユーザーのID情報を照会します。
以下のコマンドを実行します。
id admini
次の情報が返されます。
uid=1057(admini) gid=1057(admini) groups=1061(adminis2)
adminiユーザーの権限を確認します。
adminiユーザーにアクセスする権限がないことを確認します。dir0ディレクトリに移動します。
以下のコマンドを実行します。
sudo su admini -c 'ls dir0'
出力が次のような情報である場合、adminiユーザーにはdir0ディレクトリにアクセスする権限がありません。
ls: cannot open directory dir0: Permission denied
のコンテンツを表示する権限がadminiユーザーにないことを確認します。dir0 /ファイルファイルを作成します。
以下のコマンドを実行します。
sudo su admini -c 'cat dir0/file'
出力が次の情報に似ている場合、adminiユーザーにはdir0/fileファイルの内容を表示する権限がありません。
cat: dir0/file: Permission denied
adminiユーザーにアクセスする権限がないことを確認します。dir0 /ファイルファイルを作成します。
以下のコマンドを実行します。
sudo su admini -c 'getfacl dir0/file'
出力が次のような情報である場合、adminiユーザーにはdir0/fileファイルにアクセスする権限がありません。
getfacl: dir0/file: Permission denied