今回はLinux(Asianux Server 3)側のSamba共有のACL(Access Control List)をWindowsのACLとマッピングして
表示し、さらにWindows側からLinux側のACLを変更する手順について確認します。
■ Linux側でのACLの設定方法
・ACLの権限の付与
ユーザー単位の場合
setfacl -m u:ユーザー名:rwx ファイル名
グループ単位の場合
setfacl -m g:グループ名:rws ファイル名
・ACLの権限の解除
ユーザー単位の場合
setfacl -x u:ユーザー名 ファイル名
グループ単位の場合
setfacl -x g:グループ名 ファイル名
全てのACLの設定を削除
setfacl -b ファイル名
・ACLの設定の確認
getfacl ファイル名
【作業1】 Linux側でSambaの共有ディレクトリにACLを設定
1. 以下のユーザーおよびグループを追加
# groupadd smbgroup
# useradd -g smbgroup smbuser1
# useradd -g smbgroup smbuser2
2 rootをSamba認証用のユーザーとして登録
(rootでないと【作業3】でACLの変更ができない為)
# pdbedit -a root
3. smb.confに以下の様に記述しSambaデーモンを再起動
[Share]
path=/share
read only = yes
wirte list = @root smbuser1
4. /share下にテキストファイルTextFromLinux.txtをコピー
5. /shareに対して以下の権限を設定
smbuser1には読み取り、書き込み、実行の権限を付与
smbuser2と読み取り、実行の権限を付与
smbgroupには読み取りの権限を付与
# setfacl -m u:smbuser1:rwx -R /share
# setfacl -m u:smbuser2:rx -R /share
# setfacl -m g:smbgroup:r /share
# getfacl /share
# file: share
# owner: root
# group: root
user: :rwx
user:smbuser1:rwx
user:smbuser2:r-x
group: : rwx
group:smbgroup:r--
mask: :rwx
other: : r-x
# getfacl /share/TextFromLinux.txt
# file: share/TextFromLinux.txt
# owner: root
# group: root
user: :rwx
user:smbuser1:rwx
user:smbuser2:r-x
group: : rwx
group:smbgroup:r--
mask: :rwx
other: : r-x
【作業2】 WindowsのエクスプローラーでLinuxのACLを確認
今回はWindows Server 2008(RC0)を使用してみます。
1. Samba共有ディレクトリにネットワークドライブを割り当てます。
ログインユーザーは/shareのACLを変更できるrootにします。
2. 共有ディレクトリShareのプロパティを表示し[セキュリティ]タブを選択します。
[グループ名またはユーザー名]には以下のユーザー/グループが表示されています。
Everyone
root (ユーザー)
root (グループ)
smbuser1
smbuser2
smbgroup
権限はディレクトリでは全ユーザー/グループで「特殊なアクセス許可」になっています。
3. Share下のTextFromLinux.txtのプロパティを表示し[セキュリティ]タブを選択します。
表示される[グループ名またはユーザー名]はディレクトリと同じですが、アクセス権限は以下の様に
表示されています。
・LinuxのACLで読み取り、書き込み、実行の権限を与えたsmbuser1とこのディレクトリの所有者のrootは
WindowsのACLではフルコントロールの権限が与えられています。
・LinuxのACLで読み取りと実行の権限を与えたsmbuser2はWindowsのACLでは「読み取りと実行」、
「読み取り」の権限が与えられています。
・LinuxのACLで読み取りの権限のみを与えたsmbgroupはWindowsのACLでも読み取りの権限のみが
与えられています。
4. [詳細設定]ボタンをクリックして特殊なアクセス許可の詳細を表示します。
これはディレクトリ・ファイル共に以下の様に表示されています。
・LinuxのACLで読み取り、書き込み、実行の権限を与えたsmbuser1とこのディレクトリの所有者のrootは
Windowsの特殊なアクセス許可ではフルコントロールの権限が与えられています。
・LinuxのACLで読み取りと実行の権限を与えたsmbuser2はWindowsの特殊なアクセス許可では
以下の権限が与えられています。
フォルダのスキャン/ファイルの実行
フォルダの一覧/データの読み取り
属性の読み取り
拡張属性の読み取り
アクセス許可の読み取り
・LinuxのACLで読み取りの権限を与えたsmbgroupはWindowsの特殊なアクセス許可では
以下の権限が与えられています。
フォルダの一覧/データの読み取り
属性の読み取り
拡張属性の読み取り
アクセス許可の読み取り
【作業3】 WindowsエクスプローラーでLinuxのACLを変更
Shareディレクトリとその下のTextFromLinux.txtファイルのACLを変更してみます。
1. エクスプローラーの特殊なアクセス許可でsmbuser2にフルコントロールの権限を与えるように変更します。
2. エクスプローラーの特殊なアクセス許可でsmbuser1に「属性の読み取り」の権限のみを与えるように
変更します。
3. Linux側でgetfaclを実行しACLの権限が変更されていることを確認します。
# getfacl /share
# file: share
# owner: root
# group: root
user: :rwx
user:smbuser1:r--
user:smbuser2:rwx
group: : rwx
group:smbgroup:r--
mask: :rwx
other: : r-x
# getfacl /share/TextFromLinux.txt
# file: share/TextFromLinux.txt
# owner: root
# group: root
user: :rwx
user:smbuser1:r--
user:smbuser2:rwx
group: : rwx
group:smbgroup:r--
mask: :rwx
other: : r-x
LinuxのACLで読み取り権限を与えた場合はWindowsの特殊なアクセス許可では
「フォルダの一覧/データの読み取り」、「属性の読み取り」、「拡張属性の読み取り」、「アクセス許可の読み取り」
の4つの権限が与えられますが、Windows側で上記のどれか1つにでも権限を与えれば
Linux側のACLでは読み取り権限が与えられるようですね。
ちなみにこの様にWindows側からLinux側のACLを表示・変更することができるのですが
その逆 = Linux側からWindowsのACLを表示・変更 ということはできないみたいです。