Red Hat Training

A Red Hat training course is available for RHEL 8

3.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 タブを参照してください。

3.7.1. POSIX ACL を使用する共有の追加

/srv/samba/example/ ディレクトリーのコンテンツを提供し、POSIX ACL を使用する example という名前の共有を作成できます。

前提条件

Samba が、以下のいずれかのモードで設定されている。

手順

  1. ディレクトリーが存在しない場合は作成します。以下に例を示します。

    # mkdir -p /srv/samba/example/
  2. SELinux を、enforcing モードで実行する場合は、そのディレクトリーに samba_share_t コンテキストを設定します。

    # semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
    # restorecon -Rv /srv/samba/example/
  3. ディレクトリーにファイルシステムの ACL を設定します。詳細は、以下を参照してください。

  4. /etc/samba/smb.conf ファイルにサンプル共有を追加します。たとえば、共有の write-enabled を追加するには、次のコマンドを実行します。

    [example]
    	path = /srv/samba/example/
    	read only = no
    注記

    ファイルシステムの ACL に関係なく、read only = no を設定しないと、Samba がディレクトリーを読み取り専用モードで共有します。

  5. /etc/samba/smb.conf ファイルを検証します。

    # testparm
  6. firewall-cmd ユーティリティーを使用して必要なポートを開き、ファイアウォール設定を再読み込みします。

    # firewall-cmd --permanent --add-service=samba
    # firewall-cmd --reload
  7. smb サービスを再起動します。

    # systemctl restart smb

3.7.2. POSIX ACL を使用する Samba 共有での標準的な Linux ACL の設定

Linux の標準 ACL は、所有者、グループ、その他の未定義ユーザーの権限の設定に対応します。ユーティリティーの chownchgrp、および 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) ビットを有効にすると、新しいディレクトリーエントリーを作成したユーザーのプライマリーグループに設定する通常の動作の代わりに、すべての新しいファイルとサブディレクトリーのデフォルトグループが、そのディレクトリーグループのデフォルトグループに自動的に設定されます。

関連情報

  • chown(1) および chmod(1) の man ページ

3.7.3. POSIX ACL を使用する Samba 共有での拡張 ACL の設定

共有ディレクトリーが保存されているファイルシステムが拡張 ACL に対応している場合は、それを使用して複雑な権限を設定できます。拡張 ACL には、複数のユーザーおよびグループの権限を指定できます。

拡張 POSIX ACL を使用すると、複数のユーザーおよびグループで複雑な ACL を設定できます。ただし、設定できるのは以下の権限のみです。

  • アクセスなし
  • 読み取りアクセス
  • 書き込みアクセス
  • 完全な制御

フォルダーの作成やデータの追加 など、詳細な Windows 権限が必要な場合は、Windows ACL を使用するように共有を設定します。Windows ACL で共有の設定

以下の手順では、共有で拡張 ACL を有効にする方法を説明します。また、拡張 ACL の設定例も含まれています。

前提条件

  • ACL を設定する Samba 共有がある。

手順

  1. /etc/samba/smb.conf ファイルの共有セクションで以下のパラメーターを有効にして、拡張 ACL の ACL 継承を有効にします。

    inherit acls = yes

    詳細は、man ページの smb.conf(5) のパラメーターの説明を参照してください。

  2. smb サービスを再起動します。

    # systemctl restart smb
  3. ディレクトリーの ACL を設定します。以下に例を示します。

    例3.2 拡張 ACL の設定

    以下の手順は、/srv/samba/example/ ディレクトリーに対して、Domain Admins グループに読み取り、書き込み、および実行の権限、Domain Users グループに対する読み取りおよび実行の権限を設定し、その他の全員のアクセスを拒否します。

    1. ユーザーアカウントのプライマリーグループへの自動許可権限を無効にします。

      # setfacl -m group::--- /srv/samba/example/
      # setfacl -m default:group::--- /srv/samba/example/

      ディレクトリーのプライマリーグループは、さらに動的な CREATOR GROUP プリンシパルにマッピングされます。Samba 共有で拡張 POSIX ACL を使用すると、このプリンシパルは自動的に追加され、削除できません。

    2. ディレクトリーに権限を設定します。

      1. Domain Admins グループに読み取り、書き込み、および実行の権限を付与します。

        # setfacl -m group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
      2. Domain Users グループに読み取りおよび実行の権限を付与します。

        # setfacl -m group:"DOMAIN\Domain Users":r-x /srv/samba/example/
      3. その他 の ACL エントリーに権限を設定し、その他の ACL エントリーに一致しないユーザーへのアクセスを拒否します。

        # setfacl -R -m other::--- /srv/samba/example/

      この設定は、このディレクトリーにのみ適用されます。Windows では、これらの ACL は このフォルダーのみ のモードにマッピングされます。

    3. 前の手順で設定した権限を、このディレクトリーに作成した新規ファイルシステムのオブジェクトから継承できるようにするには、以下のコマンドを実行します。

      # 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 にマッピングします。

    プリンシパルアクセス適用先

    Domain\Domain Admins

    完全な制御

    このフォルダー、サブフォルダー、およびファイル

    Domain\Domain Users

    読み取りおよび実行

    このフォルダー、サブフォルダー、およびファイル

    Everyone [a]

    なし

    このフォルダー、サブフォルダー、およびファイル

    owner (Unix User\owner) [b]

    完全な制御

    このフォルダーのみ

    primary_group (Unix User\primary_group) [c]

    なし

    このフォルダーのみ

    CREATOR OWNER [d] [e]

    完全な制御

    サブフォルダーおよびファイルのみ

    CREATOR GROUP [e] [f]

    なし

    サブフォルダーおよびファイルのみ

    [a] Samba は、このプリンシパルの権限を その他 の ACL エントリーからマッピングします。
    [b] Samba は、ディレクトリーの所有者をこのエントリーにマッピングします。
    [c] Samba は、ディレクトリーのプライマリーグループをこのエントリーにマッピングします。
    [d] 新規ファイルシステムオブジェクトでは、作成者はこのプリンシパルの権限を自動的に継承します。
    [e] POSIX ACL を使用する共有では、このプリンシパルの設定または削除には対応していません。
    [f] 新規ファイルシステムオブジェクトの場合、作成者のプライマリーグループは、自動的にこのプリンシパルの権限を継承します。