Amazon FSx for NetApp ONTAPのボリュームのセキュリティスタイルを変更した場合の影響を確認してみた

セキュリティスタイルの設定は慎重に
2024.06.21

既にボリューム内にファイルやディレクトリがある状態でセキュリティスタイルを変更した場合の影響が気になる

こんにちは、のんピ(@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 を使用)

ボリュームの更新 - FSx for ONTAP

アクセス許可方法が変わるということは既存のファイルやディレクトリにはどのような影響を与えるのでしょうか。

実際に確認してみました。

いきなりまとめ

  • アクセスしてくるクライアントのプロトコルとアクセス許可方式を鑑みて、セキュリティスタイルの設定は慎重に行おう
    • セキュリティスタイルがUNIXの場合、SMB経由でアクセス許可を変更しようとしても受け付けられない
  • セキュリティスタイルの変更は既存のファイルにディレクトリに影響を与えない
    • 今まで設定していたアクセス許可は削除されない
  • セキュリティスタイルがUNIXの場合、ファイルのモードビットを400にしていても、ドメインのAdministratorは読み書きできる
  • セキュリティスタイルがUNIXの場合にNTFS ACLを確認するとUnixPermUid\rootUnixPermGid\rootUnixPerm\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ドメインに参加させています。

1.SVM

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で許可をしています。

2.share1のShare Permissions

share1のSecurityは以下のとおりです。UnixPermUid\rootUnixPermGid\rootUnixPerm\other、ドメインのAdministratorのACEがありました。

3.share1のSecurity

UnixPermUid\rootUnixPermGid\rootUnixPerm\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に対する許可がされていました。

4.test4.txtのSecurity

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は現在以下の状態です。

5.share1のSecurity Advanced

test-user01に対するFull Controlの許可を行おうとします。

6.Apply前

共有のルートから権限変更を行おうとして警告が出ています。Yesをクリックします。

すると、追加したはずのtest-user01に対するACEが消えてしまいました。

7.Applyすると消えた

セキュリティスタイルが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を確認しましたが、特に変化はありませんでした。

9.既存のファイルのパーミッションは変わらなさそう

ボリュームのセキュリティスタイルを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の許可を行おうとします。

10.share1にtest-user01の権限を付与する直前

Applyをすると、問題なく適用できました。

11.正常に権限を付与できた

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は以下のとおりです。

12.再度UNIXに変更した後のshare1

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-1001S-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は以下のとおりです。

14.dir2のSecurity

test-user01に対するFull Controlを許可します。

15.dir2にtest-user01を追加しようとする

この状態でApplyをクリックします。

16.dir2にtest-user01を追加しようとする2

すると、test-user01に対するFull Controlを許可するACEが消えてしまいました。

17.dir2にtest-user01を追加しても反映されない

もちろんドメインの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で確認したものと同じものが設定されていそうです。

エクスプローラーからでもその様子は確認できました。

18.ファイルセキュリティポリシー適用後のdir2

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を追加しようとしたところ、問題なく追加できました。

19.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)でした!