Amazon FSx for NetApp ONTAPのボリュームのセキュリティスタイルを変更した場合の影響を確認してみた
既にボリューム内にファイルやディレクトリがある状態でセキュリティスタイルを変更した場合の影響が気になる
こんにちは、のんピ(@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)でした!