◆アクセス制御方式の比較
アクセス制御方式 |
UNIX上のアクセス制御 |
Windowsクライアントからの制御 |
設定の難易度 |
共有単位での制御 |
× 一律に同じパーミッションで設定 |
× 共有単位で制御。ファイル単位では制御不可。 |
易 |
ACLによる制御 |
〇 ACLによる詳細なアクセス制御 |
△ ACLの設定可能な範囲でWindowsのアクセス許可に対応づけ |
難 |
NTFS互換モジュールによる制御 |
× アクセス許可の設定可能な範囲でACLに対応づけ。ただしUNIX上でのACL操作は想定されていない。 |
〇 NTFS互換のアクセス許可をサポート。 |
並 |
◆ACL設定
先ずは定義予定のグループを予め作成します。
# cd /var/lib/samba/shares/shared
# groupadd=/usr/sbin/groupadd #groupaddコマンドのパス入力メンドイので
# groupadd group
# groupadd group1
# groupadd group2
#
setfacl -m group:group1:rw- test.txt #group1を読み書き可能に設定
# setfacl -m group:group2:r-- test.txt #group2を読み取り可能に設定
# setfacl -m user:user1:r-x test.txt #user1ユーザーを読み取り実行可能に設定
# getfacl test.txt #test.txtファイルのaclを表示。
# file: test.txt
# owner: root
# group: root
user::rw-
user:user1:r-x
group::r--
group:group1:rw-
group:group2:r--
mask::rwx
other::r--
Windowsクライアントからtest.txtの詳細を確認すると以下のようになります。

又、マスクで設定の可能です。
# setfacl -m mask::r-x test.txt #マスクをr-xに設定
# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:user1:r-x
group::r--
group:group1:rw- #effective:r-- ←パーミッションがマスクにより読み取り専用とされた
group:group2:r--
mask::r-x
other::r--
[root@smb01 shares]# mkdir dir1
# getfacl dir1/
# file: dir1/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
◆SamabaのACLとNTFSのアクセス許可のマッピング
NTFSのアクセス許可ではさまざまな属性がサポートされていますが、LinuxのACLではrwxレベルの制御しか行えません。その為、NTFSのアクセス許可とLinuxのACLとでは以下の様なマッピングが行われます。
〇NTFSのアクセス許可からLinuxのACLへマッピング
NTFSのアクセス許可 |
LinuxのACL |
変更 |
rwx |
追加 |
rwx |
追加と読み取り |
rwx |
読み取りと実行 |
rwx |
フォルダ内容の一覧表示 |
r-x |
読み取りと実行 |
r-x |
読み取り |
r-- |
書き込み |
-w- |
〇LinuxのACLからNTFSのアクセス許可へのマッピング
LinuxのACL |
NTFSのアクセス許可 |
rwx |
フルコントロール(acl map full controlパラメータがno)の時は「変更」にマッピングされる。 |
r-x |
読み取りと実行/フォルダ内容の一覧表示 |
r-- |
読み取り |
-w- |
書き込み |
--x |
実行 |
◆NTFS互換モジュールによるNTFS互換のアクセス許可のサポート
最近のSamabaでは、acl_xattrというモジュールによりNTFS互換のアクセスを許可によるアクセス制御がサポートされています。これはVFSモジュールを用いることで、Windowsマシンから渡されたアクセス許可の情報を、拡張属性やTDBファイルに格納出来るようになります。
例)
[aclshare]
path = /var/lib/samba/shares/aclshare
writeable = yes
vfs objects = acl_xattr #NTFSアクセス許可のサポート
acl_xattr:ignore system acls = yes #アクセス制御の際にパーミッションやACL設定無視。
;EOF
# mkdir /var/lib/samba/shares/aclshare
# chown user1:root /var/lib/samba/shares/aclshare
# chmod 700 /var/lib/samba/shares/aclshare
# systemctl restart smb.service
上記設定後、Windowsマシンでaclshareへアクセスし、user1でログイン後、aclshare共有フォルダの詳細を確認すると以下のようになります。
上記画面で「編集」をクリックします。

上記画面で「SYSTEM」のアクセス許可に「フルコントロール」にチェックし、同じように「user1」も同じチェックをし、「OK」をクリック。
上記メッセージが表示されたら「はい」をクリック。
これにより、管理ユーザーとSYSTEMのアクセス許可が「フルコントロール」になり、かつアクセス許可の許可といったNTFS固有の設定も適切に設定されます。
以降、通常のWindowsサーバのファイル共有と同様に、アクセス許可の設定を行うことが出来ます。
例題
問題集76頁11,12
Linuxファイルシステムと共有/サービスのパーミッション - Linux技術者認定 LinuC | LPI-Japan