Dell EMC OneFS:アクセス制御リスト (ACL)の理解と活用

前回の記事では不必要なNTFSアクセス権の抽出方法について投稿しました。
現場作業での困り事を備忘録のように記載しましたが、もう少し基本的な情報をベンダーが公開しているホワイトペーパーを元に説明をします。(リンク先が公開を止める場合もございます)
Dell EMC PowerScale OneFSはデータ管理と保護にアクセス制御リスト(ACL)を利用します。ACLはファイルやディレクトリに対する特定のユーザーやグループの権限を定義します。

ACLの基本的な権限

OneFSではファイルやディレクトリに対する様々な権限があります。これらはファイルの読み書き、属性の読み書き、ディレクトリのリスト表示、サブディレクトリの作成など様々な操作に対応しています。これらの権限はすべて対象となるオブジェクト(ファイルやディレクトリ)によって異なります。

OneFSのACL継承

OneFSではACLの継承がサポートされています。これにより親ディレクトリから子ディレクトリへと権限が自動的に適用され管理が容易になります。
OneFSのACL継承はWindowsのNTFS ACL継承と同じ意味を持ちます。

実例をふまえて説明します。
親ディレクトリが継承可能なACLエントリを含まない場合次の状況でOneFSシンセティックACLが生成されます。
 • クラスタへのSSHセッションを通じて親ディレクトリ内に新しいファイルまたはディレクトリが作成される
 • 親ディレクトリ内のNFSを通じて新しいファイルまたはディレクトリが作成される
以下の例ではSSHを使用してクラスタに接続し継承可能なACLエントリを含まない親ディレクトリを作成しました。

Cluster01-1# ls -led parent-dir
drwxr-xr-x +    2  root   wheel    0  Jul  17  01:16  parent-dir
  OWNER:    user:root
  GROUP:    group:wheel
  0:    user:root    allow    dir_gen_read, dir_gen_write, dir_gen_execute, std_write_dac, delete_child
  1:    group:wheel   allow    dir_gen_read, dir_gen_execute
  2:    everyone    allow    dir_gen_read, dir_gen_execute

以下例では、さらにmkdirコマンドを使用して親ディレクトリの下にサブディレクトリを作成し、そのサブディレクトリのACLを確認します。以下に示されているように、POSIXモードビットに従ってOneFSシンセティックACLが生成されます。

Cluster01-1# cd parent-dir
Cluster01-1# ls
Cluster01-1# pwd
/ifs/parent-dir
Cluster01-1# mkdir sub-dir
Cluster01-1# ls -led sub-dir
drwxr-xr-x 2 root wheel 0 Jul 17 01:18 sub-dir
  OWNER: user:root
  GROUP: group:wheel
  SYNTHETIC ACL
  0: user:root    allow    dir_gen_read, dir_gen_write, dir_gen_execute, std_write_dac, delete child
  1: group:wheel    allow    dir_gen_read, dir_gen_execute
  2: everyone    allow    dir_gen_read, dir gen execute

シンセティックACLがSMBを通じて修正されるとOneFS実ACLが初期化されます。
サブディレクトリのACLは以下に示されるようにWindows Explorer UIを通じて編集されます。最初のACEが修正されユーザーにフルコントロール権限が付与されます。

クラスタに戻り、ls –ledコマンドを使用してOneFS ACLを再度確認します。このコマンドは、OneFSのシンセティックACLがOneFSのリアルACLに変更され許可される権限がdir_gen_allに変更されたことを示しています。

Cluster01-1# ls -led sub-dir
drwxr-xr-x + 2 root wheel wheel 0 Jul 17 01:18 sub-dir
  OWNER: user:root
  GROUP: group:wheel
  CONTROL: dacl_auto_inherited
  0: user:root    allow    dir_gen_all
  1: group:wheel    allow    dir_gen_read, dir_gen_execute
  2: everyone    allow    dir gen read, dir gen execute

また、NFSv4クライアントツール(nfs4_setfacl)やOneFS上の拡張chmodコマンドツールを使用して、OneFSのシンセティックACLを変更することでOneFSのリアルACLを初期化することもできます。

OneFSのACLの操作

OneFSでは、lsやchmodといった従来のUnixコマンドツールを使用してACLを管理することができます。これらのツールは、ACLエントリの追加、変更、削除を行ったり、ACL継承フラグを設定したりするために利用されます。

例えば、OneFSにあるファイルのACLを表示するには、ls –leコマンドまたはls –lenコマンドを実行します。ディレクトリのACLを表示するには、ls –ledコマンドまたはls –lendコマンドを実行します。

次の例ではディレクトリのACLが示されています。出力結果でPOSIXモードビットの後に+記号が追加されており、これはファイルまたはディレクトリがOneFSのリアルACLを含んでいることを示しています。

Cluster01-1# ls -led top-dir
drwxr-xr-x + 3 root wheel 23 Jul 16 07:10 top-dir
  OWNER: user:root
  GROUP: group:wheel
  0: user:root    allow    dir_gen_all
  1: group:wheel    allow    dir_gen_read, dir_gen_execute
  2: everyone    allow    dir_gen_read, dir_gen_execute
Cluster01-1# 1s -lend top-dir
drwxr-xr-x + 3 0 0 23 Jul 16 07:10 top-dir
  OWNER: user:0 
  GROUP: group:0
  0: user:0    allow    dir_gen_all
  1: group:0    allow    dir_gen_read, dir_gen_execute
  2: SID:S-1-1-0 allow dir gen read, dir gen execute

chmodコマンドを使用してACLエントリを追加、変更、削除することも可能です。たとえば、chmod +a#オプションを使用してディレクトリにACLエントリを追加し、そのエントリに特定の権限を与えることができます。
※因みに # <index> を指定しない場合はIndexは若い番号が自動付与されます。

追加:

以下で示す通りACLエントリはインデックス1のACLに配置されuser01がtop-dirディレクトリに対してdir_gen_readとdir_gen_writeの権限を持つことを許可します。

Cluster01-1# chmod +a# 1 user user01    allow    dir_gen_read, dir_gen_execute top-dir
Cluster01-1# ls -led top-dir
drwxr-xr-x + 3 root wheel 23 Jul 16 07:10 top-dir
  OWNER: user:root
  GROUP: group:wheel
  0: user:root    allow    dir_gen_all
  1: user:user01    allow    dir_gen_read, dir_gen_execute
  2: group:wheel    allow    dir_gen_read, dir_gen_execute
  3: everyone    allow    dir gen read, dir gen execute

変更:

上記で追加したACLエントリを変更するには、=a#オプション付きのchmodコマンドを使用します。一部のシェルでは、=を\文字でエスケープする必要があります。以下が示す通りACLエントリはuser01にdir_gen_readの権限のみを付与するように変更されます。

Cluster01-1# chmod \=a# 1 user user01 allow dir_gen_read top-dir
Cluster01-1# ls -led top-dir
drwxr-xr-x + 3 root wheel 23 Jul 16 07:10 top-dir
  OWNER: user:root
  GROUP: group:wheel
  0: user:root    allow    dir_gen_all
  1: user:user01    allow    dir_gen_read
  2: group:wheel    allow    dir_gen_read, dir_gen_execute
  3: everyone    allow    dir gen read, dir gen execute

削除:

以前に変更したACLエントリを削除するには、chmodコマンドを-a#オプションとともに使用し、その後にACEのインデックスを指定します。

Cluster01-1# chmod -a# 1 top-dir
Cluster01-1# ls -led top-dir
drwxr-xr-x + 3 root wheel 23 Jul 16 07:10 top-dir
  OWNER: user:root
  GROUP: group:wheel
  0: user:root    allow    dir_gen_all
  1: group:wheel    allow    dir_gen_read, dir_gen_execute
  2: everyone    allow    dir gen read, dir gen execute

ACE継承の使用

ACLエントリには、object_inheritやcontainer_inheritなどの継承フラグを指定することも可能です。これらのフラグは現在のディレクトリやその下のファイルとサブデクトリに対してACE(Access Control Entry)を適用するために使用されます。たとえば、object_inheritフラグは現在のディレクトリとその中のファイルにACEを適用し、container_inheritフラグは現在のディレクトリとその中のサブディレクトリにACEを適用します。

新しいディレクトリが親ディレクトリの下に作成された場合、親ディレクトリに指定された継承フラグを持つACEが新しいディレクトリに伝播されます。これにより新しいディレクトリは親ディレクトリからACEを継承します。また、この継承されたACEには親ディレクトリから継承されたことを示すinherited_aceフラグが付与されます。

以下の例では、Windowsの(OI)(CI)フラグと同様に、object_inheritとcontainer_inheritの継承フラグが指定されたACLエントリが追加されます。これによりACEは現在のディレクトリに適用されtop-dirディレクトリ内のサブディレクトリとファイルに伝播します。

Cluster01-1# chmod +a# 1 user user01 allow dir_gen_read,dir_gen_execute,object_inherit,container_inherit top-dir
Cluster01-1# ls -led top-dir
drwxr-xr-x + 3 root wheel 23 Jul 16 07:10 top-dir
  OWNER: user:root
  GROUP: group:wheel
  0: user:root    allow    dir_gen_all
  1: user:user01    allow    dir_gen_read, dir_gen_execute, object_inherit, container_inherit
  2: group:wheel    allow    dir_gen_read, dir_gen_execute
  3: everyone    allow    dir gen read, dir gen execute

次のステップではtop-dirの下に新しいディレクトリが作成された前提。
以下の例では親ディレクトリで指定され新しいディレクトリに伝播されたobject_inheritとcontainer_inheritのフラグを持つACEが表示されています。また、inherited_aceフラグもありこれはACEが親ディレクトリから継承され明示的に指定されていないことを示しています。

Cluster01-1# pwd
/ifs/top-dir
Cluster01-1# mkdir dir-1
Cluster01-1# ls -led dir-1
d---r-x--- + 2 root wheel 0 Jul 16 15:00 dir-1
  OWNER: user:root
  GROUP: group:wheel
  CONTROL: dacl_auto_inherited, sacl_auto_inherited
  0: user:user01    allow    inherited dir_gen_read, dir_get_execute, object_inherit, container_inherit, inherited_ace

まとめ

ACLはファイルとディレクトリに対するアクセス権を細かく制御するための重要なツールです。Dell EMC PowerScale OneFSでは、これらのACLを効果的に管理し適用するための豊富な機能が提供されています。これにより、データの保護とアクセス制御がより簡単かつ効果的に行えます。

タイトルとURLをコピーしました