1.7. POSIX ACL を使用した Samba ファイル共有の設定
Samba は、Linux サービスとして、POSIX ACL との共有に対応します。chmod などのユーティリティーを使用して、Samba サーバーの権限をローカルに管理できます。拡張属性に対応するファイルシステムに共有が保存されている場合は、複数のユーザーおよびグループで ACL を定義できます。
代わりにきめ細かい Windows ACL を使用する必要がある場合は、Windows ACL を使用する共有の設定 を参照してください。
このセクションの一部は、Samba Wiki に公開されているドキュメント Setting up a Share Using POSIX ACLs に掲載されています。ライセンスは、CC BY 4.0 にあります。著者および貢献者は、Wiki ページの history タブを参照してください。
1.7.1. POSIX ACL を使用する共有の追加 リンクのコピーリンクがクリップボードにコピーされました!
/srv/samba/example/ ディレクトリーのコンテンツを提供し、POSIX ACL を使用する example という名前の共有を作成できます。
前提条件
Samba が、以下のいずれかのモードで設定されている。
手順
ディレクトリーが存在しない場合は作成します。以下に例を示します。
# mkdir -p /srv/samba/example/SELinux を、
enforcingモードで実行する場合は、そのディレクトリーにsamba_share_tコンテキストを設定します。# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?" # restorecon -Rv /srv/samba/example/ディレクトリーにファイルシステムの ACL を設定します。詳細は、以下を参照してください。
/etc/samba/smb.confファイルにサンプル共有を追加します。たとえば、共有の write-enabled を追加するには、次のコマンドを実行します。[example] path = /srv/samba/example/ read only = no注記ファイルシステムの ACL に関係なく、
read only = noを設定しないと、Samba がディレクトリーを読み取り専用モードで共有します。/etc/samba/smb.confファイルを検証します。# testparmfirewall-cmdユーティリティーを使用して必要なポートを開き、ファイアウォール設定を再読み込みします。# firewall-cmd --permanent --add-service=samba # firewall-cmd --reloadsmbサービスを再起動します。# systemctl restart smb
1.7.2. POSIX ACL を使用する Samba 共有での標準的な Linux ACL の設定 リンクのコピーリンクがクリップボードにコピーされました!
Linux の標準 ACL は、所有者、グループ、その他の未定義ユーザーの権限の設定に対応します。ユーティリティーの chown、chgrp、および chmod を使用して ACL を更新できます。正確な制御が必要な場合は、より複雑な POSIX ACL を使用します。以下を参照してください。
Setting extended ACLs on a Samba share that uses POSIX ACLs.
以下の手順では、/srv/samba/example/ ディレクトリーの所有者を root ユーザーに設定し、Domain Users グループに読み取りおよび書き込みの権限を付与して、他のすべてのユーザーのアクセスを拒否します。
前提条件
- ACL を設定する Samba 共有がある。
手順
# chown root:"Domain Users" /srv/samba/example/
# chmod 2770 /srv/samba/example/
ディレクトリーで set-group-ID (SGID) ビットを有効にすると、新しいディレクトリーエントリーを作成したユーザーのプライマリーグループに設定する通常の動作の代わりに、すべての新しいファイルとサブディレクトリーのデフォルトグループが、そのディレクトリーグループのデフォルトグループに自動的に設定されます。
1.7.3. POSIX ACL を使用する Samba 共有での拡張 ACL の設定 リンクのコピーリンクがクリップボードにコピーされました!
共有ディレクトリーが保存されているファイルシステムが拡張 ACL に対応している場合は、それを使用して複雑な権限を設定できます。拡張 ACL には、複数のユーザーおよびグループの権限を指定できます。
拡張 POSIX ACL を使用すると、複数のユーザーおよびグループで複雑な ACL を設定できます。ただし、設定できるのは以下の権限のみです。
- アクセスなし
- 読み取りアクセス
- 書き込みアクセス
- 完全な制御
フォルダーの作成やデータの追加 など、詳細な Windows 権限が必要な場合は、Windows ACL を使用するように共有を設定します。
以下の手順では、共有で拡張 ACL を有効にする方法を説明します。また、拡張 ACL の設定例も含まれています。
前提条件
- ACL を設定する Samba 共有がある。
手順
/etc/samba/smb.confファイルの共有セクションで以下のパラメーターを有効にして、拡張 ACL の ACL 継承を有効にします。inherit acls = yes詳細は、man ページの
smb.conf(5)のパラメーターの説明を参照してください。smbサービスを再起動します。# systemctl restart smbディレクトリーの ACL を設定します。以下に例を示します。
例1.2 拡張 ACL の設定
以下の手順は、
/srv/samba/example/ディレクトリーに対して、Domain Adminsグループに読み取り、書き込み、および実行の権限、Domain Usersグループに対する読み取りおよび実行の権限を設定し、その他の全員のアクセスを拒否します。ユーザーアカウントのプライマリーグループへの自動許可権限を無効にします。
# setfacl -m group::--- /srv/samba/example/ # setfacl -m default:group::--- /srv/samba/example/ディレクトリーのプライマリーグループは、さらに動的な
CREATOR GROUPプリンシパルにマッピングされます。Samba 共有で拡張 POSIX ACL を使用すると、このプリンシパルは自動的に追加され、削除できません。ディレクトリーに権限を設定します。
Domain Adminsグループに読み取り、書き込み、および実行の権限を付与します。# setfacl -m group:"DOMAIN\Domain Admins":rwx /srv/samba/example/Domain Usersグループに読み取りおよび実行の権限を付与します。# setfacl -m group:"DOMAIN\Domain Users":r-x /srv/samba/example/その他の ACL エントリーに権限を設定し、その他の ACL エントリーに一致しないユーザーへのアクセスを拒否します。# setfacl -R -m other::--- /srv/samba/example/
この設定は、このディレクトリーにのみ適用されます。Windows では、これらの ACL は
このフォルダーのみのモードにマッピングされます。前の手順で設定した権限を、このディレクトリーに作成した新規ファイルシステムのオブジェクトから継承できるようにするには、以下のコマンドを実行します。
# setfacl -m default:group:"DOMAIN\Domain Admins":rwx /srv/samba/example/ # setfacl -m default:group:"DOMAIN\Domain Users":r-x /srv/samba/example/ # setfacl -m default:other::--- /srv/samba/example/この設定では、プリンシパルの
このフォルダーのみモードが、このフォルダー、サブフォルダー、およびファイルに設定されます。
Samba は、手順に設定されている権限を、以下の Windows ACL にマッピングします。
Expand プリンシパル アクセス 適用先 Domain\Domain Admins
完全な制御
このフォルダー、サブフォルダー、およびファイル
Domain\Domain Users
読み取りおよび実行
このフォルダー、サブフォルダー、およびファイル
Everyone[a]なし
このフォルダー、サブフォルダー、およびファイル
owner (Unix User\owner) [b]
完全な制御
このフォルダーのみ
primary_group (Unix User\primary_group) [c]
なし
このフォルダーのみ
完全な制御
サブフォルダーおよびファイルのみ
なし
サブフォルダーおよびファイルのみ
[a] Samba は、このプリンシパルの権限をその他の ACL エントリーからマッピングします。[b] Samba は、ディレクトリーの所有者をこのエントリーにマッピングします。[c] Samba は、ディレクトリーのプライマリーグループをこのエントリーにマッピングします。[d] 新規ファイルシステムオブジェクトでは、作成者はこのプリンシパルの権限を自動的に継承します。[e] POSIX ACL を使用する共有では、このプリンシパルの設定または削除には対応していません。[f] 新規ファイルシステムオブジェクトの場合、作成者のプライマリーグループは、自動的にこのプリンシパルの権限を継承します。