「POSIX ACLs を利用して共有を設定する」の版間の差分
(同じ利用者による、間の2版が非表示) | |||
169行目: | 169行目: | ||
|} | |} | ||
<nowiki>*</nowiki> これらのプリンシパルをACLから構成または削除することは、Windows ACLを使用している場合にのみサポートされます。 詳細については、[[Windows | <nowiki>*</nowiki> これらのプリンシパルをACLから構成または削除することは、Windows ACLを使用している場合にのみサポートされます。 詳細については、[[Windows ACLs を利用して共有を設定する]]を参照してください。 | ||
詳しくは、<code>setfacl</code>のマニュアルページを参照してください。 | 詳しくは、<code>setfacl</code>のマニュアルページを参照してください。 | ||
= | = 共有権限を設定する = | ||
'' | ''オプション'': Sambaはユーザーが接続したときに検証される各共有に許可を設定することを可能にします。 | ||
共有上のコンテンツへのアクセスは、ファイルシステムのアクセス制御リスト(ACL)を使用して制御されます。 詳細は、[[#Samba共有へのPOSIX_ACLの設定 | Samba共有へのPOSIX ACLの設定]]を参照してください。 | |||
== ユーザーおよびグループベースの共有アクセスを構成する == | |||
共有ベースのアクセス制御を使用すると、特定のユーザーおよびグループに対して共有へのアクセスを許可または拒否することができます。 たとえば、<code>example_user</code>アカウントへのアクセスが拒否されている間に<code>Domain Users</code>グループのすべてのメンバーが共有にアクセスできるようにするには、共有の設定に次のパラメータを追加します。: | |||
valid users = +SAMDOM\"Domain Users" | valid users = +SAMDOM\"Domain Users" | ||
invalid users = SAMDOM\example_user | invalid users = SAMDOM\example_user | ||
<code>invalid users</code>パラメータは、<code>valid users</code>パラメータよりも優先度が高くなります。 たとえば、<code>example_user</code>アカウントが<code>Domain Users</code>グループのメンバーである場合、前の例ではこのアカウントへのアクセスは拒否されています。 | |||
詳しくは、<code>smb.conf(5)</code>のマニュアルページのパラメータの説明を参照してください。 | |||
== | == ホストベースの共有アクセスの設定 == | ||
ホストベースのアクセス制御を使用すると、ホスト名、IPアドレス、またはIP範囲に基づいて共有へのアクセスを許可または拒否できます。 たとえば、127.0.0.1のIPアドレス、10.99.0.0 / 24のIP範囲、および<code>GoodHost</code>のホスト名で共有にアクセスし、さらにホスト名が<code>BadHost</code>のアクセスを拒否するには、共有の設定に次のパラメータを追加します: | |||
hosts allow = 127.0.0.1 10.99.0.0/24 GoodHost | hosts allow = 127.0.0.1 10.99.0.0/24 GoodHost | ||
hosts deny = BadHost | hosts deny = BadHost | ||
<code>hosts deny</code>パラメータは<code>hosts allow</code>パラメータより高い優先順位を持ちます。 たとえば、<code>BadHost</code>が<code>hosts allow</code>パラメータに記載されているIPアドレスで解決された場合でも、このホストへのアクセスは拒否されます。 | |||
For further details, see the parameter descriptions in the <code>smb.conf(5)</code> man page. | For further details, see the parameter descriptions in the <code>smb.conf(5)</code> man page. |
2019年3月1日 (金) 21:00時点における最新版
はじめに
SambaはPOSIXアクセス制御リスト(ACL)との共有をサポートしています。 それらを使用すると、UNIXユーティリティを使用してSambaホスト上でローカルに権限を管理できます。 共有のファイルシステムが拡張属性をサポートしている場合は、WindowsのACLと同様に、拡張POSIX ACLを使用して複数のユーザーおよびグループをACLに設定できます。 詳細は拡張ACLの設定をご覧ください。 細かいWindows ACLが必要な場合は、代わりにWindows ACLを使用して共有を設定してください。 詳細については、 Windows ACLを使用した共有の設定を参照してください。
Sambaは、以下のPOSIX ACLとの共有をサポートしています。
- ドメインメンバー
- NT4 PDCとBDC
- スタンドアロンホスト
{{#invoke:Message box|imbox}}
ホストの準備
共有を作成する前に、Sambaをセットアップしてください。 詳しくは、以下を参照してください。
ファイルを実行可能にする
デフォルト設定を使用すると、POSIX x-bitが設定されている場合、ユーザはSamba共有上で*.exe
や*.bat
などのファイルのみを実行できます。。たとえば、次のファイルはroot
ユーザーおよびDomain Users
グループのメンバーに対して実行可能です:
-rwxr-x--- 1 root "Domain Users" 133160 1. Jan 00:00 /srv/samba/Demo/example.exe
シナリオによっては、xビットが設定されているかどうかにかかわらず、ユーザーが共有上のすべてのファイルを実行できるようにする必要があります。 有効にするには、smb.conf
の[global]
セクションで設定します。:
acl allow execute always = yes
共有を追加する
共有名Demo
を使用して/srv/samba/Demo/
ディレクトリを共有するには、次の手順を実行します:
- ディレクトリを作成:
# mkdir -p /srv/samba/Demo/
- 共有の定義
[Demo]
をsmb.conf
ファイルに追加します。:
[Demo] path = /srv/samba/Demo/ read only = no
- これらは、書き込み可能な共有を設定するために必要な最小限のパラメータです。 必要に応じて、共有権限を設定できます。 詳細は共有アクセス許可の設定をご覧ください。
- Sambaの設定をリロード:
# smbcontrol all reload-config
ACLを設定
標準UNIX ACLを設定
UNIXオペレーティングシステムの標準アクセス制御リスト(ACL)は、1人の所有者、1つのグループ、およびその他すべての人(その他)に対するアクセス許可の設定をサポートしています。 ディレクトリに複数のACLを設定する必要がある場合は、拡張ACLの設定を参照してください。
例えば、/srv/samba/Demo/
ディレクトリの所有者をroot
にするには、所有者とDomain Users
グループに読み書きの許可を付与し、そして他のすべてのユーザーに対してはアクセスを拒否します。次のように入力してください:
# chmod 2770 /srv/samba/Demo/ # chown root:"Domain Users" /srv/samba/Demo/
{{#invoke:Message box|imbox}}
For further details about the permissions, see the chmod(1)
and chown(1)
man page.
拡張ACLを設定
ファイルシステムが拡張アクセス制御リスト(ACL)をサポートしている場合は、拡張POSIX ACLを使用できます。 WindowsのACLと同じように、ファイルやディレクトリ上の複数のユーザーやグループに権限を設定することができます。 ただし、POSIX ACLは次の一般的な権限モードに制限されています:
- None
- Read
- Write
- Full control
たとえば、Domain Admins
グループに対する読み取り、書き込み、および実行権限を設定するには、Domain Users
グループに対する読み取りおよび実行権限を使用し、/srv/samba/Demo/
ディレクトリで他のユーザー全員へのアクセスを拒否します:
inherit acls = yes
パラメータを、その共有の設定に追加してください。例えば次のように入力してください:
[Demo] path = /srv/samba/Demo/ read only = no inherit acls = yes
inherit acls = yes
パラメータは拡張ACLのACLの継承を有効にします。詳細は、smb.conf
のマニュアルページのパラメータの説明を参照してください。
- Samba をリロード:
# smbcontrol all reload-config
- ディレクトリが拡張ACLをサポートするファイルシステムに格納されていることを確認します。 詳細については、ファイルシステムのサポートを参照してください。
- ユーザーアカウントのプライマリグループに対するアクセス許可の自動付与を無効にします:
# setfacl -m group::--- /srv/samba/Demo/ # setfacl -m default:group::--- /srv/samba/Demo/
- ディレクトリのプライマリグループは、動的な
CREATOR GROUP
プリンシパルにさらにマッピングされます。 Samba共有で拡張POSIX ACLを使用する場合、この主体は自動的に追加され、削除することはできません。CREATOR GROUP
プリンシパルの詳細については、Well-known security identifiers in Windows operating systemsを参照してください。
- ディレクトリにアクセス許可を設定:
Domain Admins
グループに読み取り、書き込み、および実行権限を付与します:
# setfacl -m group:"SAMDOM\Domain Admins":rwx /srv/samba/Demo/
Domain Users
グループに読み取り権限と実行権限を付与します:
# setfacl -m group:"SAMDOM\Domain Users":r-x /srv/samba/Demo/
- 他のACLエントリと一致しないユーザーへのアクセスを拒否するには、
other
ACLエントリにアクセス許可を設定します:
- 他のACLエントリと一致しないユーザーへのアクセスを拒否するには、
# setfacl -R -m other::--- /srv/samba/Demo/
- これらの設定はディレクトリ自体にのみ適用されます。 Windowsでは、これは
このフォルダのみ
に変換されます。
- 前の手順で設定したのと同じ権限が、このディレクトリに作成された新しいファイルシステムオブジェクトに継承されるように設定するには、次のように入力します:
# setfacl -m default:group:"SAMDOM\Domain Admins":rwx /srv/samba/Demo/ # setfacl -m default:group:"SAMDOM\Domain Users":r-x /srv/samba/Demo/ # setfacl -m default:other::--- /srv/samba/Demo/
- この設定で、プリンシパルに対する
このフォルダのみ
モードがこのフォルダ、サブフォルダおよびファイル
に変更されます。
前の手順で設定したACLは、次のWindows ACLにマッピングされます:
Principal | Access | Applies to | Comments |
---|---|---|---|
SAMDOM\Domain Admins | Full control | This folder, subfolders, and files | |
SAMDOM\Domain Users | Read & execute | This folder, subfolders, and files | |
Everyone | None | This folder, subfolders, and files | Samba maps the permissions for this principal from the UNIX other ACL entry.
|
directory_owner (Unix User\directory_owner) * | Full control | This folder only | Samba maps the owner of the directory to this entry. |
directory_primary_group (Unix User\directory_primary_group) * | None | This folder only | Samba maps the primary group of the directory to this entry. |
CREATOR OWNER * | Full control | Subfolders and files only | On new file system objects, the creator inherits automatically the permissions of this principal. |
CREATOR GROUP * | None | Subfolders and files only | On new file system objects, the creator's primary group inherits automatically the permissions of this principal. |
* これらのプリンシパルをACLから構成または削除することは、Windows ACLを使用している場合にのみサポートされます。 詳細については、Windows ACLs を利用して共有を設定するを参照してください。
詳しくは、setfacl
のマニュアルページを参照してください。
共有権限を設定する
オプション: Sambaはユーザーが接続したときに検証される各共有に許可を設定することを可能にします。
共有上のコンテンツへのアクセスは、ファイルシステムのアクセス制御リスト(ACL)を使用して制御されます。 詳細は、 Samba共有へのPOSIX ACLの設定を参照してください。
ユーザーおよびグループベースの共有アクセスを構成する
共有ベースのアクセス制御を使用すると、特定のユーザーおよびグループに対して共有へのアクセスを許可または拒否することができます。 たとえば、example_user
アカウントへのアクセスが拒否されている間にDomain Users
グループのすべてのメンバーが共有にアクセスできるようにするには、共有の設定に次のパラメータを追加します。:
valid users = +SAMDOM\"Domain Users" invalid users = SAMDOM\example_user
invalid users
パラメータは、valid users
パラメータよりも優先度が高くなります。 たとえば、example_user
アカウントがDomain Users
グループのメンバーである場合、前の例ではこのアカウントへのアクセスは拒否されています。
詳しくは、smb.conf(5)
のマニュアルページのパラメータの説明を参照してください。
ホストベースの共有アクセスの設定
ホストベースのアクセス制御を使用すると、ホスト名、IPアドレス、またはIP範囲に基づいて共有へのアクセスを許可または拒否できます。 たとえば、127.0.0.1のIPアドレス、10.99.0.0 / 24のIP範囲、およびGoodHost
のホスト名で共有にアクセスし、さらにホスト名がBadHost
のアクセスを拒否するには、共有の設定に次のパラメータを追加します:
hosts allow = 127.0.0.1 10.99.0.0/24 GoodHost hosts deny = BadHost
hosts deny
パラメータはhosts allow
パラメータより高い優先順位を持ちます。 たとえば、BadHost
がhosts allow
パラメータに記載されているIPアドレスで解決された場合でも、このホストへのアクセスは拒否されます。
For further details, see the parameter descriptions in the smb.conf(5)
man page.