既にボリューム内にファイルやディレクトリがある状態でセキュリティスタイルを変更した場合の影響が気になる
こんにちは、のんピ(@non____97)です。
皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)のボリュームにて、既にボリューム内にファイルやディレクトリがある状態でセキュリティスタイルを変更した場合の影響が気になったことはありますか? 私はあります。
設定したセキュリティスタイルによって、アクセス許可方法(NFSモードビット/NFSv4 ACL/NTFS)やアクセス許可を変更できるクライアント(NFS or SMB)が異なります。セキュリティスタイルの詳細は以下記事をご覧ください。
こちらのセキュリティスタイルはボリューム作成後に変更することもできます。
ONTAP コマンドラインインターフェイス (CLI) と REST API に加えて、Amazon FSx コンソール AWS CLI、、および Amazon FSx API を使用して、FSx FSx for NetApp ONTAP ボリュームの設定を更新できます。既存の FSx for ONTAP ボリュームの次のプロパティを変更できます。
ボリューム名
ジャンクションパス
ボリュームサイズ
ストレージ効率
容量プールの階層化ポリシー
ボリュームセキュリティスタイル
スナップショットポリシー
階層化ポリシーの冷却期間
タグをバックアップにコピーする ( AWS CLI および Amazon FSx API を使用)
アクセス許可方法が変わるということは既存のファイルやディレクトリにはどのような影響を与えるのでしょうか。
実際に確認してみました。
いきなりまとめ
- アクセスしてくるクライアントのプロトコルとアクセス許可方式を鑑みて、セキュリティスタイルの設定は慎重に行おう
- セキュリティスタイルがUNIXの場合、SMB経由でアクセス許可を変更しようとしても受け付けられない
- セキュリティスタイルの変更は既存のファイルにディレクトリに影響を与えない
- 今まで設定していたアクセス許可は削除されない
- セキュリティスタイルがUNIXの場合、ファイルのモードビットを400にしていても、ドメインのAdministratorは読み書きできる
- セキュリティスタイルがUNIXの場合にNTFS ACLを確認すると
UnixPermUid\root
、UnixPermGid\root
、UnixPerm\other
がDACLに登録される- モードビットをNTFS ACLのスタイルに近似させようとして発生している
- セキュリティスタイルがUNIXの時に作成したオブジェクトのDACLを変更するためにはONTAP CLIを使用する必要がある
- エクスプローラーやfsmgmt.mscからDACLの変更できない
- ファイルセキュリティポリシーを使用して、一度NTFSのDACLを正しく適用すればエクスプローラー経由でもDACLの変更できるようになる
- ファイルセキュリティポリシーの適用が完了後、セキュリティ記述子を外して再適用しても既存のファイルやディレクトリのDACLに影響は与えない
ボリュームのセキュリティスタイルがUNIXの場合
SVMとボリュームの状態確認
まず、ボリュームのセキュリティスタイルをUNIXにしてFSxNを用意します。
ルートボリュームおよびvol1
のセキュリティスタイルをUNIXに設定しました。また、用意したSVMのSMBサーバーをcorp.non-97.netドメインに参加させています。
ONTAP CLIからもドメイン参加していること、各ボリュームのセキュリティスタイルがUNIXであること、デフォルトのファイル共有を確認します。
> ssh fsxadmin@management.fs-0d97c4e96200eed2f.fsx.us-east-1.amazonaws.com
The authenticity of host 'management.fs-0d97c4e96200eed2f.fsx.us-east-1.amazonaws.com (10.0.8.225)' can't be established.
ECDSA key fingerprint is SHA256:oo7AxV8jQ69Yqj0YiVs8dwg6XtQcan/2Z4FyhfJlIxM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'management.fs-0d97c4e96200eed2f.fsx.us-east-1.amazonaws.com,10.0.8.225' (ECDSA) to the list of known hosts.
Password:
This is your first recorded login.
Your privilege has changed since last login.
::> set diag
Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y
::*> cifs show
Server Status Domain/Workgroup Authentication
Vserver Name Admin Name Style
----------- --------------- --------- ---------------- --------------
SVM-UNIX SVM-UNIX up CORP domain
::*> cifs show -instance
Vserver: SVM-UNIX
CIFS Server NetBIOS Name: SVM-UNIX
NetBIOS Domain/Workgroup Name: CORP
Fully Qualified Domain Name: CORP.NON-97.NET
Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net
Default Site Used by LIFs Without Site Membership:
Workgroup Name: -
Kerberos Realm: -
Authentication Style: domain
CIFS Server Administrative Status: up
CIFS Server Description:
List of NetBIOS Aliases: -
::*> volume show -fields security-style
vserver volume security-style
-------- ------------- --------------
SVM-UNIX SVM_UNIX_root unix
SVM-UNIX vol1 unix
2 entries were displayed.
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
SVM-UNIX c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
SVM-UNIX ipc$ / browsable - -
2 entries were displayed.
なお、SMBサーバーをドメイン参加させる際に委任されたファイルシステム管理者グループ
は指定していません。
::*> cifs users-and-groups local-group show-members
Vserver Group Name Members
-------------- ---------------------------- ------------------------
SVM-UNIX BUILTIN\Administrators SVM-UNIX\Administrator
CORP\Domain Admins
BUILTIN\Guests CORP\Domain Guests
BUILTIN\Users CORP\Domain Users
3 entries were displayed.
ファイル共有の作成
vol1をパスとするファイル共有share1
を作成します。
::*> cifs share create -vserver SVM-UNIX -share-name share1 -path /vol1
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
SVM-UNIX c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
SVM-UNIX ipc$ / browsable - -
SVM-UNIX share1 /vol1 oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
3 entries were displayed.
現時点でのSVMの/
および/vol1
のモードビット、NTFSのDACLを確認します。
::*> vserver security file-directory show -vserver SVM-UNIX -path /
Vserver: SVM-UNIX
File Path: /
File Inode Number: 64
Security Style: unix
Effective Style: unix
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1
Vserver: SVM-UNIX
File Path: /vol1
File Inode Number: 64
Security Style: unix
Effective Style: unix
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
どちらもモードビット755で設定されており、NTFSのDACLは設定されていませんでした。
ファイル共有をSMBからマウントして読み書き
ファイル共有をSMBからマウントして読み書きします。
まずはドメインのAdministratorです。
> whoami -fqdn
CN=Administrator,CN=Users,DC=corp,DC=non-97,DC=net
> New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SVM-UNIX.corp.non-97.net\share1"
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Z FileSystem \\SVM-UNIX.corp.non-97.net\share1
> ls Z:\
> echo test1.txt > Z:\test1.txt
> ls Z:\
Directory: \\SVM-UNIX.corp.non-97.net\share1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 7:22 AM 24 test1.txt
> cat Z:\test1.txt
test1.txt
問題なく読み書きできました。
続いて、ドメインユーザーのtest-user01です。
> whoami -fqdn
CN=test-user01,OU=FSxForONTAP,DC=corp,DC=non-97,DC=net
> New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SVM-UNIX.corp.non-97.net\share1"
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Z FileSystem \\SVM-UNIX.corp.non-97.net\share1
> ls Z:\
Directory: \\SVM-UNIX.corp.non-97.net\share1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 7:22 AM 24 test1.txt
> echo test2.txt > Z:\test2.txt
out-file : Access to the path '\\SVM-UNIX.corp.non-97.net\share1\test2.txt' is denied.
At line:1 char:1
+ echo test2.txt > Z:\test2.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
> ls Z:\
Directory: \\SVM-UNIX.corp.non-97.net\share1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 7:22 AM 24 test1.txt
読み込みはできますが、書き込みは拒否されてしまいました。
share1のディレクトリおよびshare1上のファイルのACLを確認します。
> Get-Acl -Path Z:\ | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute, Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-0 Allow ReadAndExecute, Synchronize
> Get-ChildItem -Path "Z:\\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test1.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
SIDが列挙されており全容はつかめませんが、corp.non-97.net上のドメインユーザーはAdministrator以外書き込みが許可されていないように見えます。
fsmgmt.mscからも確認します。
share1のShare Permissionsは以下のとおり、Everyoneに対してFull Controlで許可をしています。
share1のSecurityは以下のとおりです。UnixPermUid\root
、UnixPermGid\root
、UnixPerm\other
、ドメインのAdministratorのACEがありました。
UnixPermUid\root
、UnixPermGid\root
、UnixPerm\other
がDACLに登録されているのは以下NetApp Communityサイトでも話題に上がっています。どうやらセキュリティスタイルをUNIXにした場合、モードビットをNTFS ACLのスタイルに近似させようとして発生しているようです。
ファイル共有のパスにNFSでアクセス
ファイル共有のパスにNFSでアクセスし、読み書きできることを確認します。
$ sudo mount -t nfs svm-038f4ea1145d94e0f.fs-0d97c4e96200eed2f.fsx.us-east-1.amazonaws.com:/vol1 /mnt/fsxn/vol1
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-038f4ea1145d94e0f.fs-0d97c4e96200eed2f.fsx.us-east-1.amazonaws.com:/vol1 nfs4 61G 320K 61G 1% /mnt/fsxn/vol1
$ ls -l /mnt/fsxn/vol1
total 0
-rwxr-xr-x. 1 root daemon 24 Jun 20 07:22 test1.txt
$ echo test3.txt | sudo tee -a /mnt/fsxn/vol1/test3.txt > /dev/null
$ ls -l /mnt/fsxn/vol1
total 0
-rwxr-xr-x. 1 root daemon 24 Jun 20 07:22 test1.txt
-rw-r--r--. 1 root root 10 Jun 20 07:32 test3.txt
問題なく読み書きできました。
SMB経由で作成したファイルのモードビットは 755で、NFS経由で作成したファイルのモードビットは744になっていました。
モードビットが400のファイルをドメインのAdministratorで読み書きできるか
試しに400のファイルを作成した場合、ドメインのAdministratorから書き込みできるのか確認します。
400のファイルを作成します。
$ echo test4.txt | sudo tee -a /mnt/fsxn/vol1/test4.txt > /dev/null
$ ls -l /mnt/fsxn/vol1
total 0
-rwxr-xr-x. 1 root daemon 24 Jun 20 07:22 test1.txt
-rw-r--r--. 1 root root 10 Jun 20 07:32 test3.txt
-rw-r--r--. 1 root root 10 Jun 20 07:33 test4.txt
$ sudo chmod 400 /mnt/fsxn/vol1/test4.txt
$ ls -l /mnt/fsxn/vol1
total 0
-rwxr-xr-x. 1 root daemon 24 Jun 20 07:22 test1.txt
-rw-r--r--. 1 root root 10 Jun 20 07:32 test3.txt
-r--------. 1 root root 10 Jun 20 07:33 test4.txt
ドメインのAdministratorで読み書きします。
> echo test >> Z:\test4.txt
> cat Z:\test4.txt
test4.txttest
はい、問題なくできました。
PowerShellからACLを確認しましょう。
> Get-ChildItem -Path "Z:\\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test1.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test3.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow Read, Synchronize
CORP\Administrator Allow Write, Read, ChangePermissions,
TakeOwnership, Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow Write, Read,
Synchronize
S-1-5-21-2038298172-1297133386-22222-0 Allow Read, Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test4.txt O:S-1-5-21-2038298172-1297133386-11111-0 CORP\Administrator Allow Read, ChangePermissions, TakeOwnership,
Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow Read, Synchronize
400で設定したtest4.txtでもドメインのAdministratorに対する書き込みが許可されていますね。
エクスプローラーから確認すると、ReadとSpecial permissionsに対する許可がされていました。
ONTAP CLIでも各ファイルのACLを確認しておきます。
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test1.txt
Vserver: SVM-UNIX
File Path: /vol1/test1.txt
File Inode Number: 96
Security Style: unix
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 1
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test3.txt
Vserver: SVM-UNIX
File Path: /vol1/test3.txt
File Inode Number: 97
Security Style: unix
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 644
UNIX Mode Bits in Text: rw-r--r--
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test4.txt
Vserver: SVM-UNIX
File Path: /vol1/test4.txt
File Inode Number: 98
Security Style: unix
Effective Style: unix
DOS Attributes: 21
DOS Attributes in Text: ---A---R
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 400
UNIX Mode Bits in Text: r--------
ACLs: -
NFSで確認した権限と所有者で一致していますね。
SMB経由でDACLを変更しようとしてみる
SMB経由でDACLを変更しようとしてみます。
share1のSecurityは現在以下の状態です。
test-user01に対するFull Controlの許可を行おうとします。
共有のルートから権限変更を行おうとして警告が出ています。Yes
をクリックします。
すると、追加したはずのtest-user01に対するACEが消えてしまいました。
セキュリティスタイルがUNIXの場合はアクセス許可を変更できるクライアントはNFSのみなので、こちらは意図した挙動です。
この様子はCLIでも確認できます。
> Get-Acl -Path Z:\ | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute, Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-0 Allow ReadAndExecute, Synchronize
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/
Vserver: SVM-UNIX
File Path: /vol1/
File Inode Number: 64
Security Style: unix
Effective Style: unix
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
share1内のファイルのACLを確認しましたが、特に変化はありませんでした。
ボリュームのセキュリティスタイルをUNIXからNTFSに変更した場合
セキュリティスタイルを変更
vol1のセキュリティスタイルをNTFSに変更します。
::*> volume show -fields security-style
vserver volume security-style
-------- ------------- --------------
SVM-UNIX SVM_UNIX_root unix
SVM-UNIX vol1 unix
2 entries were displayed.
::*> volume modify -volume vol1 -security-style ntfs
Volume modify successful on volume vol1 of Vserver SVM-UNIX.
::*> volume show -fields security-style
vserver volume security-style
-------- ------------- --------------
SVM-UNIX SVM_UNIX_root unix
SVM-UNIX vol1 ntfs
2 entries were displayed.
セキュリティスタイル変更後、ONTAP CLIおよびPowerShellからACLを確認します。
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/
Vserver: SVM-UNIX
File Path: /vol1/
File Inode Number: 64
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8004
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-Everyone-0x1f01ff
ALLOW-Everyone-0x10000000-OI|CI|IO
> Get-Acl -Path Z:\ | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
BUILTIN\Administrators Everyone Allow FullControl
Everyone Allow 268435456
> Get-ChildItem -Path "Z:\\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test1.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test3.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow Read, Synchronize
CORP\Administrator Allow Write, Read, ChangePermissions,
TakeOwnership, Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow Write, Read,
Synchronize
S-1-5-21-2038298172-1297133386-22222-0 Allow Read, Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test4.txt O:S-1-5-21-2038298172-1297133386-11111-0 CORP\Administrator Allow Read, ChangePermissions, TakeOwnership,
Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow Read, Synchronize
vol1にEveryone Full Controlで許可するDACLが適用されましたね。
一方で既存のファイルに対するACLは変わりありませんでした。
ドメインユーザーで書き込みできるようになったか確認
ドメインユーザーtest-user01で書き込みできるようになったか確認をします。
> echo test2.txt > Z:\test2.txt
> ls Z:\
Directory: \\SVM-UNIX.corp.non-97.net\share1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 7:22 AM 24 test1.txt
-a---- 6/20/2024 7:55 AM 24 test2.txt
-a---- 6/20/2024 7:32 AM 10 test3.txt
-a---- 6/20/2024 7:39 AM 21 test4.txt
書き込みできました。
各ファイルのACLも確認しましょう。
> Get-ChildItem -Path "Z:\\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test1.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\test-user01 Allow ReadAndExecute, Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test2.txt CORP\test-user01 Everyone Allow FullControl
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test3.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow Read, Synchronize
CORP\test-user01 Allow Read, Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow Write, Read,
Synchronize
S-1-5-21-2038298172-1297133386-22222-0 Allow Read, Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test4.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-11111-0 Allow Read, Synchronize
先ほど追加したtest2.txtのみディレクトリのACLを継承して、Everyone Full Controlの許可が設定されていますね。
NFSで読み書きできるか確認
NFSで読み書きできるか確認します。
$ ls -l /mnt/fsxn/vol1
ls: cannot open directory '/mnt/fsxn/vol1': Permission denied
$ sudo ls -l /mnt/fsxn/vol1
ls: cannot open directory '/mnt/fsxn/vol1': Permission denied
はい、セキュリティスタイルをNTFSに変えたタイミングでアクセスできなくなっていました。
どうやらセキュリティスタイルがNTFSの場合、NFSクライアントはユーザーネームマッピングをしないとアクセスできないようです。
SMB経由でDACLを変更しようとしてみる
SMB経由でDACLを変更しようとしてみます。
test-user01に対するFull Controlの許可を行おうとします。
Applyをすると、問題なく適用できました。
PowerShellやONTAP CLIからも確認します。
> Get-Acl -Path Z:\ | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
BUILTIN\Administrators Everyone Allow FullControl
CORP\test-user01 Allow FullControl
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test1.txt
Vserver: SVM-UNIX
File Path: /vol1/test1.txt
File Inode Number: 96
Security Style: ntfs
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 1
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test2.txt
Vserver: SVM-UNIX
File Path: /vol1/test2.txt
File Inode Number: 100
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8504
Owner:CORP\test-user01
Group:CORP\Domain Users
DACL - ACEs
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test3.txt
Vserver: SVM-UNIX
File Path: /vol1/test3.txt
File Inode Number: 97
Security Style: ntfs
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 644
UNIX Mode Bits in Text: rw-r--r--
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/test4.txt
Vserver: SVM-UNIX
File Path: /vol1/test4.txt
File Inode Number: 98
Security Style: ntfs
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 400
UNIX Mode Bits in Text: r--------
ACLs: -
セキュリティスタイルがUNIXの時に作成したファイルのACLには影響を与えていませんが、セキュリティスタイルがNTFSの時に作成したファイルtest2.txt
には追加した権限が継承されていますね。
ドメインユーザーでセキュリティスタイルがUNIXの時に作成したファイルを操作
test-user01でセキュリティスタイルがUNIXの時に作成したファイルを操作しようとしてみます。
> echo test1 >> Z:\test1.txt
out-file : Access to the path '\\SVM-UNIX.corp.non-97.net\share1\test1.txt' is denied.
At line:1 char:1
+ echo test1 >> Z:\test1.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
> cat Z:\test4.txt
cat : Access to the path '\\SVM-UNIX.corp.non-97.net\share1\test4.txt' is denied.
At line:1 char:1
+ cat Z:\test4.txt
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (\\SVM-UNIX.corp...hare1\test4.txt:String) [Get-Content], Unauthorized
AccessException
+ FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand
はい、DACLのとおり操作できませんでした。
ボリュームのセキュリティスタイルをNTFSからUNIXに変更した場合
ディレクトリの追加
今までの挙動からして、セキュリティスタイルの変更は既存のファイルにディレクトリに影響を与えないようです。
ファイル共有上に作成したディレクトリ内のファイルについても、同様に権限は継承されないのでしょうか。
SMB経由でディレクトリおよびファイルを作成します。
> mkdir Z:\dir1
Directory: \\SVM-UNIX.corp.non-97.net\share1
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 6/20/2024 8:07 AM dir1
> echo dir1_test1.txt > Z:\dir1\dir1_test1.txt
> ls Z:\dir1
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 8:07 AM 34 dir1_test1.txt
> Get-Acl -Path Z:\dir1 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir1 CORP\test-user01 Everyone Allow FullControl
CORP\test-user01 Allow FullControl
ONTAP CLIから作成したディレクトリとファイルのACLを確認しておきます。
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir1/
Vserver: SVM-UNIX
File Path: /vol1/dir1/
File Inode Number: 99
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8404
Owner:CORP\test-user01
Group:CORP\Domain Users
DACL - ACEs
ALLOW-Everyone-0x1f01ff-OI|CI (Inherited)
ALLOW-CORP\test-user01-0x1f01ff-OI|CI (Inherited)
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir1/*
Vserver: SVM-UNIX
File Path: /vol1/dir1/dir1_test1.txt
File Inode Number: 104
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8404
Owner:CORP\test-user01
Group:CORP\Domain Users
DACL - ACEs
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
share1のルートで許可した権限が継承されていますね。
セキュリティスタイルをUNIXに変更
セキュリティスタイルをUNIXに変更します。
::*> volume show -fields security-style
vserver volume security-style
-------- ------------- --------------
SVM-UNIX SVM_UNIX_root unix
SVM-UNIX vol1 ntfs
2 entries were displayed.
::*> volume modify -volume vol1 -security-style unix
Volume modify successful on volume vol1 of Vserver SVM-UNIX.
::*> volume show -fields security-style
vserver volume security-style
-------- ------------- --------------
SVM-UNIX SVM_UNIX_root unix
SVM-UNIX vol1 unix
2 entries were displayed.
変更後のACLを確認します。
> Get-Acl -Path Z:\ | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow FullControl
CORP\test-user01 Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-0 Allow FullControl
> Get-Acl -Path Z:\dir1 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir1 O:S-1-5-21-2038298172-1297133386-11111-65534 S-1-5-21-2038298172-1297133386-33333 Allow FullControl
CORP\test-user01 Allow FullControl
S-1-5-21-2038298172-1297133386-11111-65534 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-65534 Allow FullControl
> Get-Acl -Path Z:\dir1\dir1_test1.txt | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir1
Path Owner Access
---- ----- ------
dir1_test1.txt O:S-1-5-21-2038298172-1297133386-11111-65534 S-1-5-21-2038298172-1297133386-33333 Allow FullControl
CORP\test-user01 Allow FullControl
S-1-5-21-2038298172-1297133386-11111-65534 Allow
FullControl
S-1-5-21-2038298172-1297133386-22222-65534 Allow
FullControl
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir1
Vserver: SVM-UNIX
File Path: /vol1/dir1
File Inode Number: 99
Security Style: unix
Effective Style: unix
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir1/*
Vserver: SVM-UNIX
File Path: /vol1/dir1/dir1_test1.txt
File Inode Number: 104
Security Style: unix
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: -
ONTAP CLI上からはDACLを確認できなくなってしまいましたが、Get-ACLの結果を確認するに、test-user01に対するアクセス許可は残っていますね。継承されたものであっても既存のACLには影響を与えなさそうです。
NFSでアクセスできるようになったことを確認
NFSでアクセスできるようになったことを確認します。
$ ls -lR /mnt/fsxn/vol1
/mnt/fsxn/vol1:
total 4
drwxrwxrwx. 2 nobody nobody 4096 Jun 20 08:07 dir1
-rwxr-xr-x. 1 root daemon 24 Jun 20 07:22 test1.txt
-rwxrwxrwx. 1 nobody nobody 24 Jun 20 07:55 test2.txt
-rw-r--r--. 1 root root 10 Jun 20 07:32 test3.txt
-r--------. 1 root root 21 Jun 20 07:39 test4.txt
/mnt/fsxn/vol1/dir1:
total 0
-rwxrwxrwx. 1 nobody nobody 34 Jun 20 08:07 dir1_test1.txt
はい、問題なくアクセスできるようになりました。セキュリティスタイルがNTFSの状態で作成したファイルやディレクトリの所有者とグループはnobodyになっていますね。
SMB経由でセキュリティスタイルがNTFSの時に作成したファイルにアクセスできるか
SMB経由でセキュリティスタイルがNTFSの時に作成したファイルにアクセスできるかを確認します。
test-user01でtest2.txtに追記をします。
> echo test2.txt >> Z:\test2.txt
> cat Z:\test2.txt
test2.txt
test2.txt
問題なくできました。
こちらのファイルのACLもNTFSで設定したものが生きています。
> Get-Acl -Path Z:\test2.txt | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test2.txt O:S-1-5-21-2038298172-1297133386-11111-65534 S-1-5-21-2038298172-1297133386-33333 Allow FullControl
CORP\test-user01 Allow FullControl
S-1-5-21-2038298172-1297133386-11111-65534 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-65534 Allow FullControl
share1配下のACLを改めて確認すると、以下のとおりです。
> Get-ChildItem -Path "Z:\\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir1 O:S-1-5-21-2038298172-1297133386-11111-65534 S-1-5-21-2038298172-1297133386-33333 Allow FullControl
CORP\test-user01 Allow FullControl
S-1-5-21-2038298172-1297133386-11111-65534 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-65534 Allow FullControl
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test1.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\test-user01 Allow ReadAndExecute, Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test2.txt O:S-1-5-21-2038298172-1297133386-11111-65534 S-1-5-21-2038298172-1297133386-33333 Allow FullControl
CORP\test-user01 Allow FullControl
S-1-5-21-2038298172-1297133386-11111-65534 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-65534 Allow FullControl
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test3.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow Read, Synchronize
CORP\test-user01 Allow Read, Synchronize
S-1-5-21-2038298172-1297133386-11111-0 Allow Write, Read,
Synchronize
S-1-5-21-2038298172-1297133386-22222-0 Allow Read, Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
test4.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-11111-0 Allow Read, Synchronize
なお、エクスプローラーからshare1直下およびshare1内のdir1ディレクトリのACLは以下のとおりです。
S-1-5-21-2038298172-1297133386-11111-65534
はpcuserとして認識されているようです。
ボリュームのセキュリティスタイルを再度UNIXからNTFSに変更した場合
NFS経由でディレクトリを追加
再度ボリュームのセキュリティスタイルを再度UNIXからNTFSに変更する前の下準備としてNFS経由でディレクトリとファイルを作成します。その際、セキュリティスタイルがUNIXの時に作成したディレクトリdir1
配下にもファイルを作成します。
$ mkdir /mnt/fsxn/vol1/dir2
$ ls -ld /mnt/fsxn/vol1/dir2
drwxr-xr-x. 2 ssm-user ssm-user 4096 Jun 20 08:32 /mnt/fsxn/vol1/dir2
$ echo dir2_test1.txt > /mnt/fsxn/vol1/dir2/dir2_test1.txt
$ ls -l /mnt/fsxn/vol1/dir2
total 0
-rw-r--r--. 1 ssm-user ssm-user 15 Jun 20 08:33 dir2_test1.txt
$ echo dir1_test2.txt > /mnt/fsxn/vol1/dir1/dir1_test2.txt
$ ls -l /mnt/fsxn/vol1/dir1
total 0
-rwxrwxrwx. 1 nobody nobody 34 Jun 20 08:07 dir1_test1.txt
-rw-r--r--. 1 ssm-user ssm-user 15 Jun 20 08:34 dir1_test2.txt
SMB経由でNFS経由で作成したディレクトリ上にファイルを作成できるか
SMB経由でNFS経由で作成したディレクトリ上にファイルを作成できるか確認します。
まず、test-user01です。
> echo dir2_test2.txt >> Z:\dir2\dir2_test2.txt
out-file : Access to the path '\\SVM-UNIX.corp.non-97.net\share1\dir2\dir2_test2.txt' is denied.
At line:1 char:1
+ echo dir2_test2.txt >> Z:\dir2\dir2_test2.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
はい、怒られました。
次にドメインのAdministratorです。
> echo dir2_test3.txt >> Z:\dir2\dir2_test3.txt
> ls Z:\dir2
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 8:33 AM 15 dir2_test1.txt
-a---- 6/20/2024 8:37 AM 34 dir2_test3.txt
こちらは書き込みできました。ドメインのAdministratorであればセキュリティスタイルがUNIXであっても自由に操作できそうですね。
作成したディレクトリおよびディレクトリ配下のACLは以下のとおりです。
> Get-Acl -Path Z:\dir2 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir2 O:S-1-5-21-2038298172-1297133386-11111-1001 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow ReadAndExecute, Synchronize
S-1-5-21-2038298172-1297133386-11111-1001 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1001 Allow ReadAndExecute,
Synchronize
> Get-ChildItem -Path "Z:\dir2\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Path Owner Access
---- ----- ------
dir2_test1.txt O:S-1-5-21-2038298172-1297133386-11111-1001 S-1-5-21-2038298172-1297133386-33333 Allow Read,
Synchronize
CORP\Administrator Allow Read, Synchronize
S-1-5-21-2038298172-1297133386-11111-1001 Allow Write,
Read, Synchronize
S-1-5-21-2038298172-1297133386-22222-1001 Allow Read,
Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Path Owner Access
---- ----- ------
dir2_test3.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
NTFSにshare1のルートで設定したtest-user01の権限は継承されていないことが分かります。
セキュリティスタイルをNTFSに変更
セキュリティスタイルをNTFSに変更します。
::*> volume modify -volume vol1 -security-style ntfs
Volume modify successful on volume vol1 of Vserver SVM-UNIX.
::*> volume show -fields security-style
vserver volume security-style
-------- ------------- --------------
SVM-UNIX SVM_UNIX_root unix
SVM-UNIX vol1 ntfs
2 entries were displayed.
このタイミングでNFS経由でアクセスできなくなりました。
$ ls -l /mnt/fsxn/vol1/dir1
ls: cannot access '/mnt/fsxn/vol1/dir1': Permission denied
前回セキュリティスタイルがNTFSの時に作成したディレクトリ配下のファイルのACLを確認します。
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir1/*
Vserver: SVM-UNIX
File Path: /vol1/dir1/dir1_test1.txt
File Inode Number: 104
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8404
Owner:CORP\test-user01
Group:CORP\Domain Users
DACL - ACEs
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
Vserver: SVM-UNIX
File Path: /vol1/dir1/dir1_test2.txt
File Inode Number: 108
Security Style: ntfs
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 1001
UNIX Group Id: 1001
UNIX Mode Bits: 644
UNIX Mode Bits in Text: rw-r--r--
ACLs: -
2 entries were displayed.
SMB経由で作成したdir1_test1.txt
はNTFSのDACLが設定され、NFS経由で作成したdir1_test2.txt
はNTFSのDACLは設定されていませんね。
先ほどセキュリティスタイル変更前に作成したdir2
についても確認しましょう。
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2/
Vserver: SVM-UNIX
File Path: /vol1/dir2/
File Inode Number: 106
Security Style: ntfs
Effective Style: unix
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 1001
UNIX Group Id: 1001
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2/*
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test1.txt
File Inode Number: 107
Security Style: ntfs
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 1001
UNIX Group Id: 1001
UNIX Mode Bits: 644
UNIX Mode Bits in Text: rw-r--r--
ACLs: -
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test3.txt
File Inode Number: 109
Security Style: ntfs
Effective Style: unix
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 1
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
2 entries were displayed.
NTFSのDACLは設定されていませんね。
PowerShellで確認した結果は以下のとおりです。最初にUNIXからNTFSに変更した時と大きな変わりはありません。強いていうならばdir2をssm-userで作成したためかプリンシパルのSIDS-1-5-21-2038298172-1297133386-11111-0
からS-1-5-21-2038298172-1297133386-11111-1001
やS-1-5-21-2038298172-1297133386-11111-1001
になっていますね。
> Get-Acl -Path Z:\dir1 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir1 CORP\test-user01 Everyone Allow FullControl
CORP\test-user01 Allow FullControl
> Get-Acl -Path Z:\dir2 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir2 O:S-1-5-21-2038298172-1297133386-11111-1001 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow ReadAndExecute, Synchronize
S-1-5-21-2038298172-1297133386-11111-1001 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1001 Allow ReadAndExecute,
Synchronize
> Get-ChildItem -Path "Z:\dir2\" | ForEach-Object {
Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
}
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Path Owner Access
---- ----- ------
dir2_test1.txt O:S-1-5-21-2038298172-1297133386-11111-1001 S-1-5-21-2038298172-1297133386-33333 Allow Read,
Synchronize
CORP\Administrator Allow Read, Synchronize
S-1-5-21-2038298172-1297133386-11111-1001 Allow Write,
Read, Synchronize
S-1-5-21-2038298172-1297133386-22222-1001 Allow Read,
Synchronize
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Path Owner Access
---- ----- ------
dir2_test3.txt O:S-1-5-21-2038298172-1297133386-11111-0 S-1-5-21-2038298172-1297133386-33333 Allow ReadAndExecute,
Synchronize
CORP\Administrator Allow FullControl
S-1-5-21-2038298172-1297133386-11111-0 Allow FullControl
S-1-5-21-2038298172-1297133386-22222-1 Allow ReadAndExecute,
Synchronize
セキュリティスタイルがUNIXの時に作成したオブジェクトのACLを変更する
セキュリティスタイルがUNIXの時に作成したオブジェクトのACLを変更できるか確認します。
dir2というディレクトリで試します。
エクスプローラーから確認できる現在のDACLは以下のとおりです。
test-user01に対するFull Controlを許可します。
この状態でApply
をクリックします。
すると、test-user01に対するFull Controlを許可するACEが消えてしまいました。
もちろんドメインのAdministratorを使って操作しています。
fsmgmt.msc
から試しましたが同様の結果でした。
どうやら、GUIではセキュリティスタイルがUNIXの時に作成したオブジェクトのACLを変更することはできないようです。
諦めるしかないのでしょうか。
こんな時にはONTAP CLIで対応可能です。
具体的にはファイルセキュリティポリシーを使ってNTFSのDACLを適用します。詳細は以下記事のONTAP CLIでSACLを設定する
の章をご覧ください。
まず、セキュリティ記述子の作成をします。
::*> vserver security file-directory ntfs show
This table is currently empty.
::*> vserver security file-directory ntfs dacl show
This table is currently empty.
::*> vserver security file-directory ntfs create -ntfs-sd security-descriptor -vserver SVM-UNIX -owner BUILTIN\Administrators
::*> vserver security file-directory ntfs show
Vserver: SVM-UNIX
NTFS Security Owner Name Primary Raw Control
Descriptor Name Group Name Flags
------------ -------------- -------------- --------------
security-descriptor
BUILTIN\Administrators
- -
::*> vserver security file-directory ntfs dacl show
Vserver: SVM-UNIX
NTFS Security Descriptor Name: security-descriptor
Account Name Access Access Apply To
Type Rights
-------------- ------- ------- -----------
BUILTIN\Administrators
allow full-control this-folder, sub-folders, files
BUILTIN\Users allow full-control this-folder, sub-folders, files
CREATOR OWNER allow full-control this-folder, sub-folders, files
NT AUTHORITY\SYSTEM
allow full-control this-folder, sub-folders, files
4 entries were displayed.
BUILTIN\Users
に権限は付与したくなかったので、BUILTIN\Users
のACEを削除します。
::*> vserver security file-directory ntfs dacl remove -ntfs-sd security-descriptor -access-type allow -account BUILTIN\Users
::*> vserver security file-directory ntfs dacl show
Vserver: SVM-UNIX
NTFS Security Descriptor Name: security-descriptor
Account Name Access Access Apply To
Type Rights
-------------- ------- ------- -----------
BUILTIN\Administrators
allow full-control this-folder, sub-folders, files
CREATOR OWNER allow full-control this-folder, sub-folders, files
NT AUTHORITY\SYSTEM
allow full-control this-folder, sub-folders, files
3 entries were displayed.
ファイルセキュリティポリシーの作成をします。
::*> vserver security file-directory policy show
This table is currently empty.
::*> vserver security file-directory policy create -policy-name security-policy -vserver SVM-UNIX
::*> vserver security file-directory policy show
Vserver Policy Name
------------ --------------
SVM-UNIX security-policy
ファイルセキュリティポリシーへのセキュリティ記述子の追加をします。適用するパスは先ほどSMB経由で権限変更ができなかった/vol1/dir2
です。
::*> vserver security file-directory policy task show
This table is currently empty.
::*> vserver security file-directory policy task add -vserver SVM-UNIX -policy-name security-policy -path /vol1/dir2 -security-type ntfs -ntfs-mode propagate -ntfs-sd security-descriptor -index-num 1 -access-control file-directory
::*> vserver security file-directory policy task show
Vserver: SVM-UNIX
Policy: security-policy
Index File/Folder Access Security NTFS NTFS Security
Path Control Type Mode Descriptor Name
----- ----------- --------------- -------- ---------- ---------------
1 /vol1/dir2 file-directory ntfs propagate security-descriptor
ファイルセキュリティポリシーの適用を行います。
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2
Vserver: SVM-UNIX
File Path: /vol1/dir2
File Inode Number: 106
Security Style: ntfs
Effective Style: unix
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 1001
UNIX Group Id: 1001
UNIX Mode Bits: 755
UNIX Mode Bits in Text: rwxr-xr-x
ACLs: -
::*> vserver security file-directory apply -vserver SVM-UNIX -policy-name security-policy
[Job 46] Job is queued: Fsecurity Apply. Use the "job show -id 46" command to view the status of this operation.
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2
Vserver: SVM-UNIX
File Path: /vol1/dir2
File Inode Number: 106
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8014
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI
ALLOW-CREATOR OWNER-0x1f01ff-OI|CI
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI
ALLOW-Everyone-0x1f01ff-OI|CI (Inherited)
ALLOW-CORP\test-user01-0x1f01ff-OI|CI (Inherited)
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2/*
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test1.txt
File Inode Number: 107
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8014
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-(Inherited)
ALLOW-CREATOR OWNER-0x1f01ff-(Inherited)
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-(Inherited)
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test3.txt
File Inode Number: 109
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8014
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-(Inherited)
ALLOW-CREATOR OWNER-0x1f01ff-(Inherited)
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-(Inherited)
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
2 entries were displayed.
適用をすると、セキュリティ記述子で定義したNTFSのDACLがdir2
および、その配下に適用されましたね。vol1
で設定されているtest-user01のACEも継承されていそうです。
PowerShellでも確認します。
> Get-Acl -Path Z:\dir2 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir2 BUILTIN\Administrators CREATOR OWNER Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Administrators Allow FullControl
Everyone Allow FullControl
CORP\test-user01 Allow FullControl
> Get-ChildItem -Path "Z:\dir2\" | ForEach-Object {
>> Get-Acl -Path $_.FullName | Format-Table -AutoSize -Wrap
>> }
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Path Owner Access
---- ----- ------
dir2_test1.txt BUILTIN\Administrators BUILTIN\Administrators Allow FullControl
CREATOR OWNER Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
Everyone Allow FullControl
CORP\test-user01 Allow FullControl
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Path Owner Access
---- ----- ------
dir2_test3.txt BUILTIN\Administrators BUILTIN\Administrators Allow FullControl
CREATOR OWNER Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
Everyone Allow FullControl
CORP\test-user01 Allow FullControl
ONTAP CLIで確認したものと同じものが設定されていそうです。
エクスプローラーからでもその様子は確認できました。
test-user01で書き込めることを確認します。
> echo dir2_test2.txt >> Z:\dir2\dir2_test2.txt
> ls Z:\dir2\
Directory: \\SVM-UNIX.corp.non-97.net\share1\dir2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/20/2024 8:33 AM 15 dir2_test1.txt
-a---- 6/20/2024 8:59 AM 34 dir2_test2.txt
-a---- 6/20/2024 8:37 AM 34 dir2_test3.txt
書き込めました。
エクスプローラー経由でACLの変更ができるか確認します。
試しにtest-user02のACEを追加しようとしたところ、問題なく追加できました。
一度NTFSのDACLを正しく適用すればエクスプローラー経由でも変更できるようになるようです。
ファイルセキュリティポリシーからセキュリティ記述子を削除したときの挙動
おまけでファイルセキュリティポリシーからセキュリティ記述子を削除した際の挙動を確認します。
役目を終えたセキュリティ記述子は削除しても良いのでしょうか。
やってみます。
::*> vserver security file-directory policy task show
Vserver: SVM-UNIX
Policy: security-policy
Index File/Folder Access Security NTFS NTFS Security
Path Control Type Mode Descriptor Name
----- ----------- --------------- -------- ---------- ---------------
1 /vol1/dir2 file-directory ntfs propagate security-descriptor
::*> vserver security file-directory policy task remove -vserver SVM-UNIX -policy-name security-policy -path /vol1/dir2
::*> vserver security file-directory policy task show
This table is currently empty.
::*> vserver security file-directory apply -vserver SVM-UNIX -policy-name security-policy
[Job 53] Job is queued: Fsecurity Apply. Use the "job show -id 53" command to view the status of this operation.
::*> job show 53
Owning
Job ID Name Vserver Node State
------ -------------------- ---------- -------------- ----------
53 Fsecurity Apply SVM-UNIX FsxId0d97c4e96200eed2f-01
Success
Description: File Directory Security Apply Job
::*> job show 53 -instance
Job ID: 53
Owning Vserver: SVM-UNIX
Name: Fsecurity Apply
Description: File Directory Security Apply Job
Priority: Low
Node: FsxId0d97c4e96200eed2f-01
Affinity: Cluster
Schedule: @now
Queue Time: 06/20 21:54:23
Start Time: 06/20 21:54:23
End Time: 06/20 21:54:23
Drop-dead Time: -
Restarted?: false
State: Success
Status Code: 0
Completion String: Operation completed successfully. File ACLs modified using policy "security-policy" on Vserver "SVM-UNIX". File count: 0.
Job Type: FSEC_APPLY
Job Category: FSECURITY
UUID: a7bb05c7-2f4f-11ef-9e47-9fc9b8f51854
Execution Progress: Complete: Operation completed successfully. File ACLs modified using policy "security-policy" on Vserver "SVM-UNIX". File count: 0. [0]
User Name: fsxadmin
Process: mgwd
Restart Is or Was Delayed?: false
Restart Is Delayed by Module: -
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2
Vserver: SVM-UNIX
File Path: /vol1/dir2
File Inode Number: 106
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 10
DOS Attributes in Text: ----D---
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8514
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI
ALLOW-BUILTIN\Administrators-0x1f01ff
ALLOW-CREATOR OWNER-0x1f01ff-OI|CI|IO
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI
ALLOW-CORP\test-user02-0x1f01ff-OI|CI
ALLOW-Everyone-0x1f01ff-OI|CI (Inherited)
ALLOW-CORP\test-user01-0x1f01ff-OI|CI (Inherited)
::*> vserver security file-directory show -vserver SVM-UNIX -path /vol1/dir2/*
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test1.txt
File Inode Number: 107
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8514
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-(Inherited)
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-(Inherited)
ALLOW-CORP\test-user02-0x1f01ff-(Inherited)
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test3.txt
File Inode Number: 109
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 0
UNIX Group Id: 0
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8514
Owner:BUILTIN\Administrators
Group:BUILTIN\Administrators
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-(Inherited)
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-(Inherited)
ALLOW-CORP\test-user02-0x1f01ff-(Inherited)
ALLOW-Everyone-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
Vserver: SVM-UNIX
File Path: /vol1/dir2/dir2_test2.txt
File Inode Number: 112
Security Style: ntfs
Effective Style: ntfs
DOS Attributes: 20
DOS Attributes in Text: ---A----
Expanded Dos Attributes: -
UNIX User Id: 65534
UNIX Group Id: 65534
UNIX Mode Bits: 777
UNIX Mode Bits in Text: rwxrwxrwx
ACLs: NTFS Security Descriptor
Control:0x8504
Owner:CORP\test-user01
Group:CORP\Domain Users
DACL - ACEs
ALLOW-BUILTIN\Administrators-0x1f01ff-(Inherited)
ALLOW-CORP\test-user01-0x1f01ff-(Inherited)
ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-(Inherited)
ALLOW-CORP\test-user02-0x1f01ff-(Inherited)
ALLOW-Everyone-0x1f01ff-(Inherited)
3 entries were displayed.
どうやらDACLは削除されることなく残るようです。
PowerShellでも確認できました。
> Get-Acl -Path Z:\dir2 | Format-Table -AutoSize -Wrap
Directory: \\SVM-UNIX.corp.non-97.net\share1
Path Owner Access
---- ----- ------
dir2 BUILTIN\Administrators CREATOR OWNER Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Administrators Allow FullControl
CORP\test-user02 Allow FullControl
Everyone Allow FullControl
CORP\test-user01 Allow FullControl
セキュリティスタイルの設定は慎重に
Amazon FSx for NetApp ONTAPのボリュームのセキュリティスタイルを変更した場合の影響を確認してみました。
ONTAP CLIを強制的に変更できるとはいえ、意図しないセキュリティスタイルを使用するとリカバリするのが大変です。アクセスしてくるクライアントのプロトコルとアクセス許可方式を鑑みて、セキュリティスタイルの設定は慎重に行いましょう。
SMBでアクセスする場合はNTFSを選ぶのが無難だと考えます。UNIXユーザーにネームマッピングしてNFSv4 ACLで制御するということは稀と考えます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!