Windows ACLs を利用して共有を設定する

提供: 雑廉堂Wiki
2019年3月2日 (土) 18:29時点におけるMeisina04 (トーク | 投稿記録)による版 (smb.conf ファイルで拡張ACLサポートを有効にする File)

はじめに

Extended access control lists (ACL) enable you to set permissions on shares, files, and directories using Windows ACLs and applications. Samba supports shares using extended ACLs on: 拡張アクセス制御リスト(ACL)を使用すると、WindowsのACLおよびアプリケーションを使用して、共有、ファイル、およびディレクトリに対するアクセス許可を設定できます。Sambaは、以下で拡張ACLを使用して共有をサポートします。

  • ドメインメンバ
  • Active Directory (AD) ドメインコントローラ (DC)
  • NT4 プライマリドメインコントローラ (PDC)
  • NT4 バックアップドメインコントローラ (BDC)
  • スタンドアローンホスト

拡張ACLの代わりに、POSIX ACLを使用して共有を設定できます。 詳細については、 POSIX ACLs を利用して共有を設定するを見てください。.

ホストの準備

共有を作成する前にSambaを設定する必要があります。 どのタイプのSambaサーバーが必要かに応じて、以下を参照してください:


ファイルシステムのサポート

共有が作成されるファイルシステムは、次のものをサポートしている必要があります。:

  • ユーザーとシステムの xattr 名前空間。
  • 拡張されてアクセスコントロールリスト (ACL).

For further details, see File system support.


拡張ACL(Access Control List)をサポートする共有を作成するには、 smbd サービスがACLサポートを有効にして構築されている必要があります。 Active Directory(AD)ドメインコントローラ(DC)として機能するSambaホストは、拡張ACLサポートにより常に有効になっています。

SambaがACLサポート付きでビルドされたかどうかを確認するには、次のように入力:

# smbd -b | grep HAVE_LIBACL
   HAVE_LIBACL

出力が表示されない場合

smb.confファイルで拡張ACLサポートを有効にする

拡張アクセス制御リスト(ACL)を使って共有を設定するには、 smb.conf ファイルでサポートを有効にする必要があります。 拡張ACLサポートをグローバルに有効にするには、 smb.conf ファイルの [global] セクションに次の設定を追加します。

vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes

あるいは、特定の共有に対してのみ拡張ACLサポートを有効にするには、共有のセクションにパラメータを追加します。 パレメータの詳細については smb.conf(5) のマニュアルページを見てください。

SeDiskOperatorPrivilege 権限の付与

SeDiskOperatorPrivilege 権限を付与されたユーザーとグループのみが共有権限を設定できます。

Domain Admins グループに権限を付与するには、次のように入力します。

# net rpc rights grant "SAMDOM\Domain Admins" SeDiskOperatorPrivilege -U "SAMDOM\administrator"
Enter SAMDOM\administrator's password:
Successfully granted rights.

SeDiskOperatorPrivilege 特権が付与されているすべてのユーザーとグループを一覧表示するには、次のように入力します。

# net rpc rights list privileges SeDiskOperatorPrivilege -U "SAMDOM\administrator"
Enter administrator's password:
SeDiskOperatorPrivilege:
  BUILTIN\Administrators
  SAMDOM\Domain Admins

共有を追加

Demo 共有名を使用して/srv/samba/Demo/ディレクトリを共有するには、次の手順を実行します。

  • root ユーザーとして、ディレクトリを作成します。
# mkdir -p /srv/samba/Demo/
  • ドメイン管理者以外のアカウントがWindowsで権限を設定できるようにするには、SeDiskOperatorPrivilege特権を付与したユーザーまたはグループにフルコントロール rwx )を付与します。 例えば:
# chown root:"Domain Admins" /srv/samba/Demo/
# chmod 0770 /srv/samba/Demo/
  • [Demo] 共有定義を smb.conf ファイルに追加します。
[Demo]
       path = /srv/samba/Demo/
       read only = no
共有固有の詳細設定とファイルシステムのアクセス許可は、Windowsのユーティリティを使用して設定します。
  • Sambaの設定を再読み込みする:
# smbcontrol all reload-config

共有許可とACLの設定

拡張アクセス制御リスト(ACL)をサポートする共有を設定するときは、 smb.conf ファイルの共有セクションにパラメータを追加するのではなく、Windowsユーティリティを使用して共有アクセス権を設定します。

Demo 共有にアクセス許可とACLを設定するには:

  • SeDiskOperatorPrivilege 権限が付与されているアカウントを使用してWindowsホストにログオンします。 例えば SAMDOM \ Administrator または SAMDOM \ john john Domain Admins のメンバーです。
  • [開始]をクリックし、コンピュータの管理と入力してアプリケーションを起動します。
  • [操作 / 別のコンピュータに接続]を選択します。
  • Sambaホストの名前を入力し、 OK をクリックしてコンソールをホストに接続します。
  • システムツール / 共有フォルダ / 共有メニューを開きます。
Computer Management Shares.png
  • 共有を右クリックして、プロパティを選択します。
  • [共有アクセス権]タブを選択し、共有アクセス権を確認します。 Everyone が表示される必要があります。 例えば:
Share.png
Sambaは /usr/local/samba/var/locks/share_info.tdb データベースに共有許可を保存します。
  • [セキュリティ]タブをクリックします。
  • 編集ボタンをクリックして、共有のルートディレクトリにファイルシステムのACLを設定します。 例えば:
Demo Share Security.png
Samba共有で SYSTEM アカウントを使うことについての詳細はSYSTEMアカウントを見てください。
ACLが格納される場所の詳細については、バックエンドのファイルシステムACLを参照してください。
  • 追加ボタンをクリックしてください。
  • 詳細ボタンをクリック
  • [今すぐ検索]をクリックします
  • リストからユーザーまたはグループを選択します(例: Domain Users )。
  • [ OK ]をクリックします
  • [ OK ]をクリックします
  • 付与する権限を選択します。たとえば、フルコントロールです。
  • 続行するかどうかを尋ねるウィンドウズのセキュリティボックスが開きます。 Yes をクリックしてください。
  • グループ名またはユーザー名のリストを確認すると、 Domain Users がリストされているはずです。
  • [ OK ]をクリックして[デモのアクセス許可]ウィンドウを閉じます。
  • 更新した設定を保存するには、[ OK ]をクリックします。

共有権限とACLの設定について詳しくは、Windowsの資料を参照してください。

フォルダにACLを設定する

拡張アクセス制御リスト(ACL)を使用する共有上にあるフォルダーにファイルシステムのアクセス許可を設定するには

  • ファイルシステムのACLを変更するフォルダにフルコントロールを持つアカウントを使用してWindowsホストにログオンします。
  • フォルダに移動します。
  • フォルダを右クリックして、プロパティを選択します。
  • [セキュリティ]タブを選択し、[編集]ボタンをクリックします。
  • 許可を設定してください。 例えば:
ファイル:Folder Permissions.png

:Samba共有で SYSTEM アカウントを使うことについての詳細はSYSTEMアカウントを見てください。

:ACLが格納される場所の詳細については、バックエンドのファイルシステムACLを参照してください。

  • [ OK ]をクリックして[フォルダのアクセス許可]ウィンドウを閉じます。
  • 更新した設定を保存するには、[ OK ]をクリックします。

ACLの設定について詳しくは、Windowsの資料を参照してください。

バックエンドのファイルシステムACL

Sambaはファイルシステムのアクセス権を拡張ファイルシステムのアクセス制御リスト(ACL)と拡張属性に格納します。 例えば:

  • /srv/samba/Demo/ディレクトリの拡張ACLを一覧表示するには、次のように入力します。:
# getfacl /srv/samba/Demo/
# file: srv/samba/Demo/
# owner: root
# group: root
user::rwx
user:root:rwx
group::---
group:root:---
group:domain\040users:rwx
group:domain\040admins:rwx
mask::rwx
other::---
default:user::rwx
default:user:root:rwx
default:group::---
default:group:root:---
default:group:domain\040users:rwx
default:group:domain\040admins:rwx
default:mask::rwx
default:other::---
  • ディレクトリ、/srv/samba/Demo/security.NTACLの拡張属性の一覧を表示するには、次のように入力:
# getfattr -n security.NTACL -d /srv/samba/Demo/
# file: srv/samba/Demo/
security.NTACL=0sBAAEAAAAAgAEAAIAAQC4zK0lHchKFvwXwbPR/h8P8sXMj5dNIT5QQuWsYwO3RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcG9zaXhfYWNsAEbGxuGu39MBuiZRk2pYxeL5ZWc4au0ikqRAk53MkjVd2b4quyk2WwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABJy0AAAA0AAAAAAAAADsAAAAAQUAAAAAAAUVAAAASSVmaZneO8cxOHk/9AEAAAEFAAAAAAAFFQAAAEklZmmZ3jvHMTh5P0oIAAACAMQABwAAAAALFACpABIAAQEAAAAAAAEAAAAAAAAUAAAAEAABAQAAAAAAAQAAAAAACxQA/wEfAAEBAAAAAAADAAAAAAALFACpABIAAQEAAAAAAAMBAAAAAAMkAP8BHwABBQAAAAAABRUAAABJJWZpmd47xzE4eT9KCAAAAAAkAP8BHwABBQAAAAAABRUAAABJJWZpmd47xzE4eT/0AQAAAAMkAL8BEwABBQAAAAAABRUAAABJJWZpmd47xzE4eT8BAgAA

ファイルシステムACLと拡張属性の前の例は、次のWindows ACLにマップされています:

Principal Permissions Applies to
Domain Users (SAMDOM\Domain Users) Modify, Read & execute, List folder contents, Read, Write (This folder, subfolders and files)
Domain Admins (SAMDOM\Domain Admins) Full control (This folder, subfolders and files)
  • もっと読みやすい形式でACLを取得するには、次のように入力します。:
# samba-tool ntacl get /usr/local/samba/var/locks/sysvol --as-sddl
# O:BAG:SYD:PAI(A;OICIIO;WOWDGRGWGX;;;CO)(A;OICIIO;GRGX;;;AU)(A;;0x001200a9;;;AU)(A;OICIIO;GA;;;SY)(A;;0x001f01ff;;;SY)(A;OICIIO;WOWDGRGWGX;;;BA)(A;;0x001e01bf;;;BA)(A;OICIIO;GRGX;;;SO)(A;;0x001200a9;;;SO)

トラブルシューティング

トラブルシューティングは、次の項目を参照してください: