Fedora 37
Sponsored Link

NFS : NFS 4 ACL ツール2022/11/21

 
NFS 4 ACL ツールを使用すると、NFS(v4) ファイルシステム上でも ACL の設定が可能となります。
使用方法は ACL ツールと同様に操作可能です。
[1] NFSv4 で NFS 共有領域をマウントしている NFS クライアント上で NFS 4 ACL ツールをインストールします。
[root@node01 ~]#
dnf -y install nfs4-acl-tools
[2] 例として、[node01.srv.world] 上で [dlp.srv.world:/home/nfsshare] の領域を NFSv4 で [/mnt] にマウントしているとします。
[root@node01 ~]#
df -hT /mnt

Filesystem                   Type  Size  Used Avail Use% Mounted on
dlp.srv.world:/home/nfsshare nfs4   15G  1.7G   14G  11% /mnt

[root@node01 ~]#
ll /mnt

total 4
drwx------. 2 root root   6 Nov 21 10:57 testdir
-rw-------. 1 root root 887 Nov 21 10:58 testfile.txt
[3] NFSv4 ファイルシステム上の ファイル/ディレクトリの ACL を表示する。
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
A::OWNER@:rwatTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

[root@node01 ~]#
nfs4_getfacl /mnt/testdir


# file: /mnt/testdir
A::OWNER@:rwaDxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

# 表示される ACL は [:] 区切りで下記の項目を表示
# ACE = Access Control Entry
# (ACE Type):(ACE Flags):(ACE Principal):(ACE Permissions)
各項目の意味です。
ACE Type  
A A = Allow : 許可のアクセス権を意味する。
D D = Deny : 拒否のアクセス権を意味する。
ACE Flags  
d Directory-Inherit : 新規サブディレクトリは表示の ACE を継承する。
f File-Inherit : 新規ファイルは表示の ACE を継承するが、継承フラグは継承しない。
n No-Propogate-Inherit : 新規サブディレクトリは表示の ACE を継承するが継承フラグは継承しない。
i Inherit-Only : 新規ファイル/サブディレクトリは表示の ACE を継承するが、当該フラグ付きのディレクトリの ACE は Null となる。
ACE Principal  
(USER)@(NFSDomain) 通常のユーザー
[NFSDomain] は [idmapd.conf] 内の [Domain] で指定したドメイン名
(GROUP)@(NFSDomain) 通常のグループ
グループの場合は [g] フラグを指定する ⇒ A:g:GROUP@NFSDomain:rxtncy
OWNER@ 特殊なプリンシパル : 所有者
GROUP@ 特殊なプリンシパル : グループ
EVERYONE@ 特殊なプリンシパル : 全ユーザー
ACE Permissions  
r ファイルのデータの読み取り / ディレクトリ内でのファイルリスト表示
w ファイルのデータの書き込み / ディレクトリ内でのファイル新規作成
a ファイルのデータの追加書き込み / ディレクトリ内でのサブディレクトリ新規作成
x ファイルの実行 / ディレクトリの移動 (change-directory)
d ファイル/ディレクトリの削除
D ディレクトリ配下のファイル/サブディレクトリの削除
t ファイル/ディレクトリの属性の読み取り
T ファイル/ディレクトリの属性の書き込み
n ファイル/ディレクトリの名前属性の読み取り
N ファイル/ディレクトリの名前属性の書き込み
c ファイル/ディレクトリの ACL の読み取り
C ファイル/ディレクトリの ACL の書き込み
o ファイル/ディレクトリの所有者の変更
ACE Permissions Aliases nfs4_setfacl 使用時は ACE Permissions のエイリアスとして以下のフラグも使用可
R R = rntcy : 一般的な読み取り権
W W = watTNcCy : 一般的な書き込み権
X X = xtcy : 一般的な実行権

[4] ACE を追加/削除する。
[root@node01 ~]#
ll /mnt

total 4
drwx------. 2 root root   6 Nov 21 10:57 testdir
-rw-------. 1 root root 887 Nov 21 10:58 testfile.txt

[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
A::OWNER@:rwatTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

# [/mnt/testfile.txt] ファイルへの一般的な読み取り/実行権を [fedora] ユーザーに付与

[root@node01 ~]#
nfs4_setfacl -a A::fedora@srv.world:rxtncy /mnt/testfile.txt
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
D::OWNER@:x
A::OWNER@:rwatTcCy
A::1000:rxtcy
A::GROUP@:tcy
A::EVERYONE@:tcy


# [fedora] ユーザーで確認

[fedora@node01 ~]$
ll /mnt

total 4
drwx------. 2 root root   6 Nov 21 10:57 testdir
-rw-r-x---. 1 root root 887 Nov 21 10:58 testfile.txt

[fedora@node01 ~]$
cat /mnt/testfile.txt

test file

# [/mnt/testfile.txt] ファイルへの一般的な読み取り/実行権を [fedora] ユーザーから削除

[root@node01 ~]#
nfs4_setfacl -x A::1000:rxtcy /mnt/testfile.txt
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
A::OWNER@:rwatTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy
[5] ACL を直接編集する。
[root@node01 ~]#
nfs4_setfacl -e /mnt/testfile.txt


# $EDITOR にセットされたエディターが起動して ACL を直接編集可能
# Fedora 36 の $EDITOR のデフォルトは [vim], $EDITOR=null の場合のデフォルトは [vi]
## Editing NFSv4 ACL for file: /mnt/testfile.txt
A::OWNER@:rwatTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy
[6] ACE をファイルから追加する。
# ACL リスト作成

[root@node01 ~]#
vi acl.txt
A::fedora@srv.world:RX
A::redhat@srv.world:RWX

# ファイルを指定して ACL 付与

[root@node01 ~]#
nfs4_setfacl -A acl.txt /mnt/testfile.txt
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
D::OWNER@:x
A::OWNER@:rwatTcCy
A::1000:rxtcy
A::1001:rwaxtcy
A::GROUP@:tcy
A::EVERYONE@:tcy
[7] 既存の ACE を新しい ACE で置き換える。
# ACL リスト作成

[root@node01 ~]#
vi acl.txt
A::OWNER@:rwaxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

# ファイルを指定して ACL 置換

[root@node01 ~]#
nfs4_setfacl -S acl.txt /mnt/testfile.txt
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
A::OWNER@:rwaxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy
[8] 特定の ACE を新しい ACE で置き換える。
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
A::OWNER@:rwaxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

# EVERYONE の ACE を読み取り/実行可に置き換え

[root@node01 ~]#
nfs4_setfacl -m A::EVERYONE@:tcy A::EVERYONE@:RX /mnt/testfile.txt
[root@node01 ~]#
nfs4_getfacl /mnt/testfile.txt


# file: /mnt/testfile.txt
A::OWNER@:rwaxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:rxtcy
関連コンテンツ