Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第16章 ファイルとプリントサーバー

本章では、Server Message Block (SMB) および common Internet file system (CIFS) プロトコルのオープンソース実装である Samba と、、Red Hat Enterprise Linux に同梱されているプライマリー FTP サーバーである vsftpd のインストールおよび設定の方法を紹介します。また、プリンターを設定する Print Settings ツールの使用方法についても説明します。

16.1. Samba

Samba は、Red Hat Enterprise Linux に SMB (Server Message Block サーバーメッセージブロック) プロトコルを実装します。SMB プロトコルは、ファイルの共有および共有されているプリンターなど、サーバー上のリソースへのアクセスに使われます。さらに Samba は、Microsoft Windows で使用される DCE RPC (Distributed Computing Environment Remote Procedure Call 分散コンピューティング環境リモートプロシージャコール) プロトコルを実装します。
Samba は以下の環境で実行できます。
  • Active Directory (AD) または NT4 ドメインメンバー
  • スタンドアロンサーバー
  • NT4 の Primary Domain Controller (PDC) または Backup Domain Controller (BDC)。

    注記

    Red Hat は、NT4 ドメインをサポートする Windows バージョンでの既存のインストールでのみ、これらのモードをサポートします。Red Hat は、新規の Samba NT4 ドメインのセットアップを推奨しません。なぜなら、Microsoft のオペレーティングシステム (Windows 7 以降) および Windows Server 2008 R2 は、NT4 ドメインをサポートしないからです。
インストールモードとは関係なく、オプションでディレクトリーおよびプリンターを共有できます。これにより、Samba はファイルおよびプリントサーバーとして機能できます。

注記

Red Hat は、Samba を AD ドメイン制御 (DC) として実行することをサポートしていません。

16.1.1. Samba サービス

Samba は以下のサービスを提供します。
smbd
このサービスは、SMB プロトコルを使用してファイル共有と印刷サービスを提供します。さらに、リソースのロックとユーザーの接続認証も、このサービスで提供しています。smb systemd サービスは、smbd デーモンを開始および停止します。
smbd サービスを使用するには、samba パッケージをインストールします。
nmbd
このサービスは、IPv4 プロトコル上の NetBIOS を使用してホスト名および IP 解決を提供します。名前解決に加え、nmbd サービスは、ドメイン、ワークグループ、ホスト、ファイル共有、およびプリンターを探すために SMB ネットワークのブラウジングを有効にします。そのためにサービスは、この情報をブロードキャストクライアントに直接報告するか、またはローカルあるいはマスターブラウザーにこの情報を転送するかのいずれかを実行します。nmb systemd サービスは、nmbd デーモンを開始および停止します。
現在の SMB ネットワークは DNS を使用して、クライアントおよび IP のアドレスを解決することに注意してください。
nmbd サービスを使用するには、samba パッケージをインストールします。
winbindd
winbindd サービスは、Name Service Switch (NSS) のインターフェースを提供し、ローカルシステムで AD または NT4 ドメインユーザーおよびグループを使用します。これにより、たとえば、ドメインユーザーは、Samba サーバーでホストされたサービスまたは他のローカルサービスの認証が可能となります。winbind systemd サービスは、winbindd デーモンを開始および停止します。
ドメインメンバーとして Samba を設定すると、smbd サービスを起動する前に winbindd を起動する必要があります。その順番で起動しないと、ローカルシステムでドメインユーザーおよびグループが利用できません。
winbindd サービスを使用するには、samba-winbind パッケージをインストールします。

重要

Red Hat は、winbindd サービスを使用して Samba をサーバーとして実行し、ローカルシステムにドメインユーザーおよびグループを提供します。制限が Windows の ACL (access control list) サポート、NTLM (NT LAN Manager) フォールバックなど、一定の制限があるため、SSSD (System Security Services Daemon) はサポートされません。

16.1.2. testparm ユーティリティーを使用したsmb.conf ファイルの確認

testparm ユーティリティーは、/etc/samba/smb.conf ファイルの Samba 設定が正しいことを確認します。このユーティリティーは、無効なパラメーターおよび値の検出だけでなく、ID マッピング用などの間違った設定も検出します。testparm に報告する問題がない場合、Samba サービスは /etc/samba/smb.conf ファイルを正常に読み込みます。testparm は、設定サービスが利用可能かどうか、または予想どおりに機能するかといったことを確認できない点に注意してください。

重要

Red Hat では、/etc/samba/smb.conf ファイルが修正されるたびに、testparm を使用してこのファイルを確認することを推奨しています。
/etc/samba/smb.conf ファイルを確認するには、root ユーザーとして testparm ユーティリティーを実行してください。testparm が、設定に間違ったパラメーター、値、その他のエラーがあると報告した場合は、問題を修正し、ユーティリティーを再度実行します。

例16.1 testparm の使用

以下の出力は、存在しないパラメーターおよび間違った ID マッピング設定を報告しています。
~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Unknown parameter encountered: "log levell"
Processing section "[example_share]"
Loaded services file OK.
ERROR: The idmap range for the domain * (tdb) overlaps with the range of DOMAIN (ad)!

Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

# Global parameters
[global]
	...

[example_share]
	...

16.1.3. Samba のセキュリティーモードについて

/etc/samba/smb.conf ファイル内の [global] セクションの security パラメーターは、サービスに接続するユーザーを Samba が認証する方法を管理します。Samba にインストールするモードに応じて、パラメーターを設定する値は異なってきます。
  • AD ドメインメンバー上で security = ads を設定します。
    このモードでは、Samba は Kerberos を使用して AD ユーザーを認証します。
    Samba をドメインメンバーとしてセットアップする方法は 「Samba をドメインメンバーとしてセットアップ」 を参照してください。
  • スタンドアロンサーバーに security = user を設定します。
    このモードでは、Samba はローカルデータベースを使用して接続するユーザーを認証します。
    Samba をスタンドアロンサーバーとしてセットアップする方法は 「Samba をスタンドアロンサーバーとしてセットアップ」 を参照してください。
  • NT4 PDC または BDC に、security = user を設定します。
    このモードで、Samba は ローカルまたは LDAP データベースにユーザーを認証します。
  • NT4 ドメインメンバー上で security = domain を設定します。
    このモードで、Samba は NT4 PDC または BDC へ接続するユーザーを認証します。このモードは、AD ドメインメンバーでは使用できません。
    Samba をドメインメンバーとしてセットアップする方法は 「Samba をドメインメンバーとしてセットアップ」 を参照してください。
詳細は、man ページの smb.conf(5)security パラメーターに関する説明を参照してください。

16.1.4. Samba をスタンドアロンサーバーとしてセットアップ

特定の状況では、管理者はドメインメンバーではない Samba サーバーのセットアップを必要とします。このインストールモードでは、Samba はセントラル DC ではなく、ローカルデータベースでユーザーを認証します。さらに、ユーザーが認証なしに 1 つまたは複数のサービスに接続できるようにゲストのアクセスを有効にできます。

16.1.4.1. スタンドアロンサーバーのサーバー設定のセットアップ

Samba をスタンドアロンサーバーとしてセットアップ

手順16.1 Samba をスタンドアロンサーバーとしてセットアップ

  1. samba パッケージをインストールします。
    ~]# yum install samba
  2. /etc/samba/smb.conf ファイルを編集し、以下のパラメーターを設定します。
    [global]
    	workgroup = Example-WG
    	netbios name = Server
    	security = user
    
    	log file = /var/log/samba/%m.log
    	log level = 1
    この設定は、Example-WG ワークグループ内の Server という名前のスタンドアロンサーバーを定義します。さらに、この設定は最低レベル (1) でのログオンを可能とし、ログファイルは /var/log/samba/ ディレクトリーに保存されます。Samba は、接続するクライアントの NetBIOS 名の log file パラメーターに %m マクロを拡張します。これにより、各クライアントに個別のログファイルが可能となります。
    詳細は、man ページの smb.conf(5) のパラメーターに関する説明を参照してください。
  3. ファイルまたはプリンター共有の設定。以下を参照してください。
  4. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  5. 認証が必要な共有をセットアップした場合は、ユーザーアカウントを作成します。詳細は 「ローカルユーザーアカウントの作成および有効化」 を参照してください。
  6. 必要なポートを開き、firewall-cmd ユーティリティーを使用して、ファイアーウォール設定を再読み込みします。
    ~]# firewall-cmd --permanent --add-port={139/tcp,445/tcp}
    ~]# firewall-cmd --reload
  7. smb サービスを開始します。
    ~]# systemctl start smb
  8. あるいは、smb サービスを有効にして、システムの起動時に自動的に起動するようにします。
    ~]# systemctl enable smb

16.1.4.2. ローカルユーザーアカウントの作成および有効化

共有への接続の際にユーザーが認証できるようにするには、オペレーティングシステムと Samba データベースの両方で Samba ホストにアカウントを作成しなければなりません。Samba は、オペレーティングシステムのアカウントに対してファイルシステムオブジェクトのアクセス制御リスト (ACL) を確認するように要求し、また、Samba アカウントに対して接続するユーザーを認証するように要求します。
デフォルト設定の passdb backend = tdbsam を使用する場合、Samba は /var/lib/samba/private/passdb.tdb データベースにユーザーアカウントを保存します。
たとえば、example Samba ユーザーを作成するには、以下を実行します。

手順16.2 Samba ユーザーの作成

  1. オペレーティングシステムのアカウントを作成します。
    ~]# useradd -M -s /sbin/nologin example
    前述のコマンドは、ホームディレクトリーを作成することなく example アカウントを追加します。アカウントが Samba の認証用にのみ使用される場合、アカウントがローカルでログインされることを防ぐため、/sbin/nologin コマンドをシェルとして割り当てます。
  2. オペレーティングシステムのアカウントを有効にするためにパスワードを設定します。
    ~]# passwd example
    Enter new UNIX password: password
    Retype new UNIX password: password
    passwd: password updated successfully
    Samba は、オペレーティングシステムのアカウントに設定されたパスワードを認証用として使用しません。しかし、アカウントを有効化するには自身でパスワードを設定する必要があります。アカウントを無効にすると、Samba はこのユーザーが接続した場合にアクセスを拒否します。
  3. Samba データベースにユーザーを追加し、アカウントにパスワードを設定します。
    ~]# smbpasswd -a example
    New SMB password: password
    Retype new SMB password: password
    Added user example.
    このアカウントを使用して Samba 共有に接続する場合は、このパスワードを認証に使います。
  4. Samba アカウントを有効にします。
    ~]# smbpasswd -e example
    Enabled user example.

16.1.5. Samba をドメインメンバーとしてセットアップ

AD または NT4 ドメインを実行する管理者は多くの場合、ドメインのメンバーとして Red Hat Enterprise Linux サーバーに参加するために Samba を使用したいと考えています。使用できた場合は、以下が可能となります。
  • 他のドメインメンバー上のドメインリソースへのアクセス
  • sshd などのローカルサービスに対するドメインユーザーの認証
  • ファイルおよびプリントサーバーとして機能するように、サーバー上にホストされたディレクトリーとプリンターの共有

16.1.5.1. ドメインへの参加

Red Hat Enterprise Linux システムをドメインに参加させるには、以下を実行します。

手順16.3 Red Hat Enterprise Linux システムをドメインに参加させるには、以下を実行します。

  1. 以下のパッケージをインストールします。
    ~]# yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \
           samba-winbind samba-common-tools
  2. AD に参加する場合は、追加で samba-winbind-krb5-locator パッケージをインストールします。
    ~]# yum install samba-winbind-krb5-locator
    このプラグインにより、Kerberos は DNS サービス記録を使用して AD サイトに基づいた Key Distribution Center (KDC) を探すことができます。
  3. あるいは、既存の /etc/samba/smb.conf Samba 設定ファイルの名前を変更します。
    ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.old
  4. ドメインに参加します。たとえば、ad.example.com という名前のドメインに参加するには、以下を実行します。
    ~]# realm join --client-software=winbind ad.example.com
    realm ユーティリティーは、以前のコマンドを使用して自動的に以下を実行します。
    • ad.example.com ドメインのメンバーシップ向けの /etc/samba/smb.conf ファイルの作成
    • ユーザーおよびグループルックアップ向けの winbind モジュールを /etc/nsswitch.conf ファイルへ追加
    • AD メンバーシップの /etc/krb5.conf ファイルに Kerberos クライアントを設定
    • /etc/pam.d/ ディレクトリーの Pluggable Authentication Module (PAM) 設定の更新
    • winbind サービスを開始し、システム起動時のサービス開始を実現
    realm ユーティリティーに関する詳細は、man ページの realm(8) と、『Red Hat Windows 統合ガイド』の realmd を使用した Active Directory ドメインへの接続 を参照してください。
  5. オプションとして、/etc/samba/smb.conf ファイルに代替の ID マッピングバックエンドまたはカスタマイズ ID マッピングを設定します。詳細は 「ID マッピングについて」 を参照してください。
  6. オプションとして、設定を確認します。「Samba がドメインメンバーとして正常に参加したことを確認」 を参照してください。
  7. サービスの winbindd サービス、および smbd サービスを起動します。
    # systemctl start winbindd
    # systemctl start smbd

    重要

    Samba を有効にして、ドメインユーザーおよびグループ情報をクエリーするには、smbd を起動する前に winbindd サービスを起動する必要があります。

16.1.5.2. Samba がドメインメンバーとして正常に参加したことを確認

ドメインメンバーとして Red Hat Enterprise Linux に参加した後、様々なテストを実行して正常に参加できたことを確認します。以下を参照してください。

オペレーティングシステムによるドメインユーザーアカウントとグループの取得が可能であることを確認

getent ユーティリティーを使用して、オペレーティングシステムがドメインユーザーおよびグループを取得できることを確認します。以下に例を示します。
  • AD ドメイン内の administrator アカウントのクエリーには、以下を実行します。
    ~]# getent passwd AD\\administrator
    AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
  • AD ドメイン内の Domain Users グループのメンバーをクエリーするには、以下を実行します。
    ~]# getent group "AD\\Domain Users"
    AD\domain users:x:10000:user
コマンドが正常に機能する場合は、ファイルおよびディレクトリーにパーミッションを設定する際にドメインユーザーとグループを使用できるか確認してください。たとえば、/srv/samba/example.txt ファイルのオーナーを administrator に、グループを Domain Admins に設定したい場合は、以下を実行します。
~]# chown administrator:"Domain Admins" /srv/samba/example.txt

AD ドメインユーザーが Kerberos チケットを取得できるかどうかを確認

AD 環境では、ユーザーは DC から Kerberos チケットを取得できます。たとえば、administrator ユーザーが Kerberos チケットを取得できるかどうかを確認するには、以下を実行してください。

注記

kinit ユーティリティーおよび klist ユーティリティーを使用するには、Samba ドメインメンバー上の krb5-workstation パッケージをインストールします。

手順16.4 Kerberos チケットの取得

  1. administrator@AD.EXAMPLE.COM プリンシパルのチケットを取得します。
    ~]# kinit administrator@AD.EXAMPLE.COM
  2. キャッシュされた Kerberos チケットを表示します。
    ~]# klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@AD.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    11.09.2017 14:46:21  12.09.2017 00:46:21  krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM
    	renew until 18.09.2017 14:46:19

利用可能なドメインの一覧表示

winbindd サービスで利用可能なすべてのドメインを一覧表示するには、以下を入力します。
~]# wbinfo --all-domains
Samba がドメインメンバーとして正常に参加した場合は、コマンドがビルトインおよびローカルホスト名を表示します。また、信頼されたドメインを含む Samba がメンバーのドメインも表示します。

例16.2 利用可能なドメインを表示します。

~]# wbinfo --all-domains
BUILTIN
SAMBA-SERVER
AD

16.1.5.3. ID マッピングについて

Windows ドメインは、固有のセキュリティー識別子 (SID) でユーザーおよびグループを識別します。しかし、Linux は各ユーザーおよびグループに対して固有の UID と GID を要求します。ドメインメンバーとして Samba を実行する場合は、winbindd サービスが、オペレーティングシステムにドメインユーザーおよびグループに関する情報を提供します。
winbindd サービスがユーザーおよびグループ固有の ID を Linux に提供できるようにするには、以下に対して /etc/samba/smb.conf ファイルに ID マッピングを設定する必要があります。
  • ローカルデータベース (デフォルトドメイン)
  • Samba サーバーがメンバーである AD または NT4 ドメイン
  • 信頼された各ドメイン。ユーザーは、信頼された各ドメインからこの Samba サーバーのリソースにアクセス可能でなければならない
16.1.5.3.1. ID の範囲の計画
Linux UID および GID を AD に保存するかどうかに関わらず、またはこれらを生成するよう Samba を設定するかどうかに関わらず、各ドメイン設定は、他のドメインと 重複してはならない 固有の ID 範囲を要求します。

警告

ID の範囲を重複して設定すると、Samba は正常に機能しません。

例16.3 一意の ID の範囲

以下は、重複しない ID マッピングの範囲のうち、デフォルト (*)、AD-DOM、および TRUST-DOM のドメインを表示しています。
[global]
...
idmap config * : backend = tdb
idmap config * : range = 10000-999999

idmap config AD-DOM:backend = rid
idmap config AD-DOM:range = 2000000-2999999

idmap config TRUST-DOM:backend = rid
idmap config TRUST-DOM:range = 4000000-4999999

重要

ドメインごとに 1 つの範囲を割り当てることができます。したがって、ドメイン間の範囲と範囲の間には十分なスペースが必要です。これにより、後でドメインが広がった場合は範囲を広げることが可能となります。
後でドメインに別の範囲を割り当てた場合、これらのユーザーおよびグループが以前作成したファイルおよびディレクトリーの所有権は失われます。
16.1.5.3.2. * デフォルトドメイン
ドメイン環境で、以下のそれぞれに対して 1 つの ID マッピング設定を追加します。
  • Samba サーバーがメンバーとなっているドメイン
  • Samba サーバーにアクセス可能な信頼された各ドメイン
しかし、その他のすべてのオブジェクトでは、Samba はデフォルトドメインから ID を割り当てます。これには、以下が含まれます。
  • ローカルの Samba ユーザーおよびグループ
  • BUILTIN\Administrators などの Samba のビルトインアカウントおよびグループ

重要

Samba が正常に操作できるようにするには、本セクションで説明しているとおりにデフォルトドメインを設定する必要があります。
デフォルトのドメインバックエンドは、割り当てられた ID を永久に保存するために書き込み可能でなければなりません。
デフォルトのドメインでは、以下のバックエンドのいずれかを使用できます。
tdb
デフォルトドメインが tdb バックエンドを使用するように設定する場合は、将来的に作成されるオブジェクトのほか、定義されたドメイン ID マッピング設定外のオブジェクトを含めても十分な広さに ID 範囲を設定します。
たとえば、/etc/samba/smb.conf ファイルの [global] セクションに以下を設定します。
idmap config * : backend = tdb
idmap config * : range = 10000-999999
詳細は tdb ID マッピングバックエンドの使用」 を参照してください。
autorid
デフォルトドメインが autorid バックエンドを使用するように設定する場合は、オプションでドメイン用に別の ID マッピング設定を追加できます。
たとえば、/etc/samba/smb.conf ファイルの [global] セクションに以下を設定します。
idmap config * : backend = autorid
idmap config * : range = 10000-999999
詳細は autorid バックエンドの設定」 を参照してください。

16.1.5.4. 様々な ID マッピングバックエンド

Samba は、特定の設定向けに別の ID マッピングバックエンドを提供します。以下は、最もよく使われるバックエンドです。

表16.1 よく使われる ID マッピングバックエンド

バックエンドユースケース
tdb* デフォルトドメインのみ
adAD ドメインのみ
ridAD および NT4 ドメイン
autoridAD、NT4、および * デフォルトのドメイン
以下のセクションでは、利点、バックエンドの使用箇所に関する推奨シナリオ、および設定方法を説明します。
16.1.5.4.1. tdb ID マッピングバックエンドの使用
winbindd サービスは、デフォルトで書き込み可能な tdb ID マッピングバックエンドを使用し、セキュリティー識別子 (SID)、UID、および GID マッピングテーブルを保存します。これには、ローカルユーザー、グループ、およびビルトインプリンシパルが含まれます。
* デフォルトドメインには、このバックエンドのみを使用します。以下に例を示します。
idmap config * : backend = tdb
idmap config * : range = 10000-999999
* デフォルトドメインに関する詳細は* デフォルトドメイン」を参照してください。
16.1.5.4.2. ad ID マッピングバックエンドの使用
ad ID マッピングバックエンドは、AD からアカウントおよびグループ情報を読み込むために読み取り専用の API を実装します。これには、以下の利点があります。
  • すべてのユーザーおよびグループ設定は、AD を中心に保存されます。
  • ユーザーおよびグループの ID は、このバックエンドを使用するすべての Samba サーバー上で一貫性があります。
  • ID は、破損の恐れのあるローカルデータベースに保存されないため、ファイルの所有権が不明になることはありません。
ad バックエンドは、AD から以下の属性を読み取ります。

表16.2 ad バックエンドが、ユーザーおよびグループオブジェクトから読み取る属性

AD 属性名オブジェクトタイプマッピング先
sAMAccountNameユーザーおよびグループオブジェクトに応じたユーザー名またはグループ名
uidNumberユーザーユーザー ID (UID)
gidNumberグループグループ ID (GID)
loginShell [a]ユーザーユーザーのシェルへのパス
unixHomeDirectory [a]ユーザーユーザーのホームディレクトリーへのパス
primaryGroupID [b]ユーザープライマリーグループの ID
[a] Samba は idmap config DOMAIN:unix_nss_info = yes に設定されている場合のみ、この属性を読み取ります。
[b] Samba は idmap config DOMAIN:unix_primary_group = yes に設定されている場合のみ、この属性を読み取ります。
16.1.5.4.2.1. ad バックエンドの前提条件
ad ID マッピングバックエンドを使用するには、以下に該当する必要があります。
  • ユーザーおよびグループの両方は、AD に固有の ID セットを持つ必要があり、ID は /etc/samba/smb.conf ファイルに設定された範囲内でなければなりません。ID が範囲外のオブジェクトは、Samba サーバーでは利用できません。
  • ユーザーおよびグループは、必要とされるすべての属性のセットを AD に持つ必要があります。必要な属性がない場合は、ユーザーまたはグループは Samba サーバーでは利用できません。必要な属性は設定によって異なります。表16.2「ad バックエンドが、ユーザーおよびグループオブジェクトから読み取る属性」 を参照してください。
16.1.5.4.2.2. ad バックエンドの設定
ad ID マッピングバックエンドを使用するために Samba AD メンバーを設定するには、以下に該当する必要があります。

手順16.5 ドメインメンバー上での ad バックエンドの設定

  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。
    1. 存在しない場合は、デフォルトドメイン (*) に ID マッピング設定を追加します。以下に例を示します。
      idmap config * : backend = tdb
      idmap config * : range = 10000-999999
      デフォルトドメインに関する詳細は* デフォルトドメイン」を参照してください。
    2. AD ドメインの ad ID マッピングバックエンドを有効にします。
      idmap config DOMAIN : backend = ad
    3. AD ドメイン内でユーザーおよびグループに割り当てられた ID の範囲を設定します。以下に例を示します。
      idmap config DOMAIN : range = 2000000-2999999

      重要

      範囲は、このサーバー上の他のドメイン設定と重複しないようにします。さらに、範囲は将来的に割り当てられるすべての ID を含むことが可能な広さでなければなりません。詳細は 「ID の範囲の計画」 を参照してください。
    4. Samba が AD からの属性を読み取る際に RFC 2307 スキーマを使用するよう設定します。
      idmap config DOMAIN : schema_mode = rfc2307
    5. Samba が、対応する AD 属性のユーザーホームディレクトリーのログインシェルとパスを読み取れるようにするには、以下を設定します。
      idmap config DOMAIN : unix_nss_info = yes
      または、すべてのユーザーに適用される統一されたドメイン全体のホームディレクトリーパスとログインシェルの設定が可能です。
      template shell = /bin/bash
      template homedir = /home/%U
      変数置換に関する詳細は、man ページの smb.conf(5) の 『VARIABLE SUBSTITUTIONS』 セクションを参照してください。
    6. デフォルトでは、Samba は Linux 上のユーザーのプライマリーグループとして、ユーザーオブジェクトの primaryGroupID 属性を使用します。または、代わりに gidNumber 属性に設定した値を使用するように Samba を設定できます。
      idmap config DOMAIN : unix_primary_group = yes
  2. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  3. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
  4. 設定が予想どおりに機能することを確認します。「オペレーティングシステムによるドメインユーザーアカウントとグループの取得が可能であることを確認」 を参照してください。
詳細は、man ページの smb.conf(5) および idmap_ad(8) を参照してください。
16.1.5.4.3. rid ID マッピングバックエンドの使用
Samba は、Windows SID の相対識別子 (RID) を使用して、Red Hat Enterprise Linux 上に ID を生成できます。

注記

RID は、SID の最後の部分になります。たとえば、ユーザーの SID が S-1-5-21-5421822485-1151247151-421485315-30014 の場合、RID は 30014 になります。Samba のローカル ID の算出方法は、man ページの idmap_rid(8) を参照してください。
rid ID マッピングバックエンドは、AD および NT4 ドメインのアルゴリズムマッピングスキームに基づいたアカウントとグループ情報を算出するために読み取り専用の API を実装します。バックエンドを設定する際、idmap config DOMAIN : range パラメーターで RID の最小値と最大値を設定する必要があります。Samba は、このパラメーターで設定された RID よりも小さい値または大きい値でユーザーやグループをマッピングすることはありません。

重要

rid は読み取り専用のバックエンドのため、BUILTIN グループ向けなどに新しい ID を割り当てることはできません。したがって、* デフォルトドメインにこのバックエンドを使用しないでください。
16.1.5.4.3.1. rid バックエンドを使用する場合の利点と欠点

利点

  • 設定範囲内に RID があるすべてのドメインユーザーおよびグループは、ドメインメンバー上で自動的に利用可能となります。
  • ID、ホームディレクトリー、およびログインシェルを手動で割り当てる必要はありません。

欠点

  • すべてのドメインユーザーは、同じログインシェルおよびホームディレクトリーを割り当てられます。しかし、変数を使用することも可能です。
  • ユーザーおよびグループ ID は、すべてが同じ ID 範囲の設定でrid バックエンドを使用する場合にのみ、Samba ドメインメンバー全体で同じになります。
  • ドメインメンバー上で利用可能な個々のユーザーまたはグループを除外することはできません。設定範囲外のユーザーおよびグループのみが除外されます。
  • winbindd サービスが ID を算出するために使用する計算式に基づくと、別のドメインのオブジェクトが同じ RID を持つ場合、複数のドメイン環境では ID の重複が発生する恐れがあります。
16.1.5.4.3.2. rid バックエンドの設定
Samba ドメインメンバーが rid ID マッピングバックエンドを使用するように設定するには、以下が必要です。

手順16.6 ドメインメンバー上での rid バックエンドの設定

  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。
    1. 存在しない場合は、デフォルトドメイン (*) に ID マッピング設定を追加します。以下に例を示します。
      idmap config * : backend = tdb
      idmap config * : range = 10000-999999
      デフォルトドメインに関する詳細は* デフォルトドメイン」を参照してください。
    2. ドメイン向けに rid ID マッピングバックエンドを有効にします。
      idmap config DOMAIN : backend = rid
    3. 将来的に割り当てられるすべての RID を十分に含むことができる範囲を設定します。以下に例を示します。
      idmap config DOMAIN : range = 2000000-2999999
      Samba は、このドメインの RID が範囲外のユーザーおよびグループを無視します。

      重要

      範囲は、このサーバー上のその他のドメイン設定と重複してはいけません。詳細は「ID の範囲の計画」を参照してください。
    4. すべてのマッピングされたユーザーに割り当てられるシェルおよびホームディレクトリーパスを設定します。
      template shell = /bin/bash
      template homedir = /home/%U
      変数置換に関する詳細は、man ページの smb.conf(5) の 『VARIABLE SUBSTITUTIONS』 セクションを参照してください。
  2. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  3. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
  4. 設定が予想どおりに機能することを確認します。「オペレーティングシステムによるドメインユーザーアカウントとグループの取得が可能であることを確認」 を参照してください。
16.1.5.4.4. autorid ID マッピングバックエンドの使用 [2]
autorid バックエンドは、rid ID マッピングバックエンドと同様の働きをしますが、別のドメインに自動的に ID を割り当てることができます。このため、以下のような状況では autorid バックエンドを使用できます。
  • * デフォルトドメインのみを対象。
  • * デフォルトドメインおよび追加ドメインの場合は、ドメインが追加されるたびに ID マッピング設定を作成する必要がありません。
  • 特定のドメインのみを対象。
16.1.5.4.4.1. autorid バックエンドを使用する場合の利点と欠点

利点

  • 計算された UID および GID が設定範囲内にあるすべてのドメインユーザーおよびグループは、ドメインメンバー上で自動的に利用可能となります。
  • ID、ホームディレクトリー、およびログインシェルを手動で割り当てる必要はありません。
  • 複数のドメイン環境内の複数のオブジェクトが同じ RID を持つ場合でも、ID は重複しません。

欠点

  • ユーザーおよびグループ ID は、Samba ドメインメンバー全体で同じではありません。
  • すべてのドメインユーザーは、同じログインシェルおよびホームディレクトリーを割り当てられます。しかし、変数を使用することも可能です。
  • ドメインメンバー上で利用可能な個々のユーザーまたはグループを除外することはできません。計算された UID および GID が設定範囲外のユーザーおよびグループのみが除外されます。
16.1.5.4.4.2. autorid バックエンドの設定
* デフォルトドメイン向けに autorid ID マッピングバックエンドを使用するために Samba ドメインメンバーを設定するには、以下を実行します。

注記

デフォルトドメインに autorid を使用する場合、オプションでドメイン用に別の ID マッピング設定を追加できます。

手順16.7 ドメインメンバー上での autorid バックエンドの設定

  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。
    1. * デフォルトドメイン向けに autorid ID マッピングバックエンドを有効化します。
      idmap config * : backend = autorid
    2. 既存および将来的に割り当てられるすべてのオブジェクトに ID を割り当てるのに十分なサイズの範囲を設定します。以下に例を示します。
      idmap config * : range = 10000-999999
      Samba は、このドメイン内の計算された ID が範囲外のユーザーおよびグループを無視します。バックエンドの ID の計算方法は、man ページの idmap_autorid(8) の 『THE MAPPING FORMULAS』 セクションを参照してください。

      警告

      範囲設定後に Samba が使用を開始すると、範囲の上限のみを増やすことができます。これ以外の範囲への変更は、新しい ID の割り当てとなり、その結果ファイルの所有権を失うことになります。
    3. または、範囲のサイズを設定します。以下に例を示します。
      idmap config * : rangesize = 200000
      Samba は、idmap config * : range パラメーターに設定された範囲のすべての ID が取得されるまで、各ドメインのオブジェクトに連続する ID の数字を割り当てます。詳細は man ページの idmap_autorid(8)rangesize パラメーターの説明を参照してください。
    4. すべてのマッピングされたユーザーに割り当てられるシェルおよびホームディレクトリーパスを設定します。
      template shell = /bin/bash
      template homedir = /home/%U
      変数置換に関する詳細は、man ページの smb.conf(5) の 『VARIABLE SUBSTITUTIONS』 セクションを参照してください。
    5. または、ドメイン向けに追加的な ID マッピング設定を追加します。個々のドメイン用の設定が利用できない場合、Samba は以前設定された * デフォルトドメインの autorid バックエンド設定を使用して、ID を計算します。

      重要

      個々のドメイン用に追加的なバックエンドを設定する場合、すべての ID マッピング設定範囲は重複してはいけません。詳細は 「ID の範囲の計画」 を参照してください。
  2. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  3. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
  4. 設定が予想どおりに機能することを確認します。「オペレーティングシステムによるドメインユーザーアカウントとグループの取得が可能であることを確認」 を参照してください。

16.1.6. IdM ドメインに Samba ファイルサーバーを統合

お使いの環境で Red Hat Identity Management (IdM) および Samba を実行する場合は、IdM ユーザーが共有へアクセスする際に Kerberos を使用して認証するよう Samba サーバーを設定することができます。
詳細は『Red Hat Windows 統合 ガイド』の該当セクションを参照してください。

16.1.7. Samba サーバーでのファイル共有の設定

Samba をファイルサーバーとして使用する場合は、スタンドアロンまたはドメインメンバー設定の /etc/samba/smb.conf ファイルに共有を追加します。
以下のいずれかを使用する共有を追加できます。

16.1.7.1. POSIX ACL を使用した共有のセットアップ [3]

Linux のサービスとして、Samba は POSIX ACL との共有をサポートします。これにより、chmod などのユーティリティーを使用して Samba サーバー上でパーミッションをローカルで管理できるようになります。共有が拡張属性をサポートするファイルシステムに保存されている場合は、複数のユーザーおよびグループを持つ ACL を定義できます。

注記

粒度の細かい Windows ACL を代わりに使用する必要がある場合は、「Windows ACL を使用した共有のセットアップ 」 を参照してください。
共有を追加する前に、Samba をセットアップします。以下を参照してください。
16.1.7.1.1. POSIX ACL を使用する共有の追加
/srv/samba/example/ ディレクトリーのコンテンツを提供し、POSIX ACL を使用する example という名前の共有を作成するには、以下を実行します。

手順16.8 POSIX ACL を使用する共有の追加

  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 をディレクトリーに設定します。詳細は 「ACL の設定」 を参照してください。
  4. example 共有を /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
  8. あるいは、smb サービスを有効にして、起動時に自動的に起動するようにします。
    ~]# systemctl enable smb
16.1.7.1.2. ACL の設定
POSIX ACL サポートを使用する共有
16.1.7.1.2.1. 標準 Linux ACL の設定
Linux 上の標準 ACL は、1 人のオーナー、1 つのグループ、その他のすべての定義されていないユーザーに対する設定パーミッションをサポートします。ACL の更新には、chownchgrp、および chmod ユーティリティーを使用できます。正確な制御が必要な場合は、より複雑な POSIX ACL を使用します。詳細は 「拡張 ACL の設定」 を参照してください。
たとえば、/srv/samba/example/ ディレクトリーのオーナーを root ユーザーに設定するには、Domain Users グループに読み取りと書き込みのパーミッションを与え、その他のすべてのユーザーへのアクセスを拒否します。
~]# chown root:"Domain Users" /srv/samba/example/
~]# chmod 2770 /srv/samba/example/

注記

ディレクトリーで set-group-ID (SGID) ビットを有効にすることで、すべての新規ファイルとサブディレクトリーのデフォルトグループをディレクトリーグループのものに自動的に設定します。これは、新規のディレクトリーエントリーを作成したユーザーのプライマリーグループに設定するという通常の動作の代わりになります。
パーミッションに関する詳細は、man ページの chown(1) および chmod(1) を参照してください。
16.1.7.1.2.2. 拡張 ACL の設定
共有ディレクトリーが保存されているファイルシステムが拡張 ACL をサポートする場合、これらを使用して複雑なパーミッションを設定できます。拡張 ACL には、複数のユーザーとグループへのパーミッションを含むことができます。
拡張 POSIX ACL により、複数のユーザーとグループを持つ複雑な ACL の設定が可能となります。しかし、設定できるのは、以下のパーミッションに限定されます。
  • アクセスなし
  • 読み取りアクセス
  • 書き込みアクセス
  • 完全制御
Create folder / append data などの粒度の細かい Windows パーミッションが必要な場合、Windows ACL を使用するように共有を設定します。詳細は 「Windows ACL を使用した共有のセットアップ 」 を参照してください。
共有で拡張 POSIX ACL を使用するには、以下を実行します。

手順16.9 共有における拡張 POSIX ACL の有効化

  1. /etc/samba/smb.conf ファイルの共有のセクションで以下のパラメーターを有効にし、拡張 ACL の ACL 継承を有効にします。
    inherit acls = yes
    詳細は、man ページの smb.conf(5) のパラメーターに関する説明を参照してください。
  2. smb サービスを再起動します。
    ~]# systemctl restart smb
  3. あるいは、smb サービスを有効にして、起動時に自動的に起動するようにします。
    ~]# systemctl enable smb
  4. ディレクトリーで ACL を設定します。拡張 ACL の使用に関する詳細は 5章アクセス制御リスト を参照してください。

    例16.4 拡張 ACL の設定

    以下の手順では、Domain Admins グループの読み取り、書き込み、実行パーミッション、およびDomain Users グループの読み取りと実行パーミッションを設定し、/srv/samba/example/ ディレクトリー上のその他すべてへのアクセスを拒否します。

    手順16.10 拡張 ACL の設定

    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. other の ACL エントリーに対するパーミッションが、他の ACL エントリーと一致しないユーザーへのアクセスを拒否するよう設定します。
        ~]# setfacl -R -m other::--- /srv/samba/example/
      これらの設定は、このディレクトリーにのみ適用されます。Windows では、これらの ACL は This folder only モードにマッピングされます。
    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/
      この設定により、プリンシパル用の This folder only (このフォルダーのみ) モードは現在、This folder, subfolders, and files に設定されています。
    Samba は、以前設定したパーミッションを以下の Windows ACL にマッピングします。
    プリンシパルアクセス対象
    DOMAIN\Domain Admins完全制御このフォルダー、サブフォルダー、およびファイル
    DOMAIN\Domain Users読み取り & 実行このフォルダー、サブフォルダー、およびファイル
    全員 [a]なしこのフォルダー、サブフォルダー、およびファイル
    owner (Unix User\owner) [b]完全制御このフォルダーのみ
    primary_group (Unix User\primary_group) [c]なしこのフォルダーのみ
    CREATOR OWNER [d] [e]完全制御サブフォルダーおよびファイルのみ
    CREATOR GROUP [f] [e]なしサブフォルダーおよびファイルのみ
    [a] Samba はこのプリンシパルを other ACL エントリーからマッピングします。
    [b] Samba は、このエントリーにディレクトリーのオーナーをマッピングします。
    [c] Samba は、ディレクトリーのプライマリーグループをこのエントリーにマッピングします。
    [d] 新規のファイルシステムオブジェクトでは、作成者はこのプリンシパルのパーミッションを自動的に継承します。
    [e] POSIX ACL を使用する共有でサポートされていない ACL からこれらのプリンシパルを設定または削除します。
    [f] 新規のファイルシステムオブジェクトでは、作成者のプライマリーグループはこのプリンシパルのパーミッションを自動的に継承します。
16.1.7.1.3. 共有でパーミッションを設定
オプションとして、Samba 共有にアクセスを限定または付与するには、/etc/samba/smb.conf ファイルの共有のセクションで特定のパラメーターを設定できます。

注記

共有ベースのパーミッションは、ユーザー、グループ、またはホストが共有へアクセスできるかどうかを管理します。これらの設定がファイルシステム ACL へ影響を及ぼすことはありません。
共有へのアクセスを制限するには、共有ベースの設定を使用します。たとえば、特定のホストからのアクセスを拒否する場合などです。
16.1.7.1.3.1. ユーザーおよびグループベースの共有アクセスの設定
ユーザーベースおよびグループベースのアクセス制御により、特定のユーザーまたはグループの共有へのアクセスを付与または拒否できます。たとえば、Domain Users グループのすべてのメンバーの user アカウントへのアクセスを拒否する一方で、共有へアクセスできるようにするには、以下のパラメーターを共有の設定に追加します。
valid users = +DOMAIN\"Domain Users"
invalid users = DOMAIN\user
invalid users パラメーターは、valid users パラメーターよりも優先度が高いです。たとえば、user アカウントが Domain Users グループのメンバーの場合は、以前の例を使用する場合はこのアカウントへのアクセスは拒否されます。
詳細は、man ページの smb.conf(5) のパラメーターに関する説明を参照してください。
16.1.7.1.3.2. ホストベースの共有アクセスの設定
ホストベースのアクセス制御により、クライアントのホスト名、IP アドレス、または IP 範囲をベースとする共有へのアクセスを付与または拒否できます。
127.0.0.1 IP アドレス、192.0.2.0/24 IP 範囲、および client1.example.com ホストを有効にし、共有にアクセスして client2.example.com ホストへのアクセスを追加的に拒否するには、以下を実行します。

手順16.11 ホストベースの共有アクセスの設定

  1. /etc/samba/smb.conf における共有の設定に以下のパラメーターを追加します。
    hosts allow = 127.0.0.1 192.0.2.0/24 client1.example.com
    hosts deny = client2.example.com
  2. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
hosts deny パラメーターは、hosts allow よりも優先度が高いです。たとえば、client1.example.com が、hosts allow パラメーターに一覧表示された IP アドレスへと解決する場合、このホストへのアクセスは拒否されます。
詳細は、man ページの smb.conf(5) のパラメーターに関する説明を参照してください。

16.1.7.2. Windows ACL を使用した共有のセットアップ [4]

Samba は、Windows ACL を共有およびファイルシステムオブジェクトへの設定をサポートをします。これにより、以下が可能となります。
  • 粒度の細かい Windows ACL の使用
  • Windows を使用した共有のパーミッションとファイルシステム ACL の管理
または、POSIX ACL を使用する共有の設定。詳細は 「POSIX ACL を使用した共有のセットアップ 」 を参照してください。
16.1.7.2.1. SeDiskOperatorPrivilege 権限の付与
SeDiskOperatorPrivilege の特権を付与されたユーザーおよびグループのみが、Windows ACL を使用する共有にパーミッションを設定できます。たとえば、DOMAIN\Domain Admins グループに特権を付与する場合は、以下を実行します。
~]# net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.

注記

ドメイン環境にて、ドメイングループに SeDiskOperatorPrivilege を付与します。これにより、ユーザーのグループメンバーシップを更新し、権限を中央管理できます。
SeDiskOperatorPrivilege を付与されたすべてのユーザーとグループを一覧表示するには、以下を実行します。
~]# net rpc rights list privileges SeDiskOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter administrator's password:
SeDiskOperatorPrivilege:
  BUILTIN\Administrators
  DOMAIN\Domain Admins
16.1.7.2.2. Windows ACL サポートの有効化
Windows ACL をサポートする共有を設定するには、この機能を Samba で有効にする必要があります。すべての共有向けにグローバルに有効にするには、/etc/samba/smb.conf ファイルの [global] セクションに以下の設定を追加します。
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
または、代わりに共有のセクションに同じパラメーターを追加することで、個別の共有に対して Windows ACL サポートを有効にできます。
16.1.7.2.3. Windows ACL を使用する共有の追加
/srv/samba/example/ ディレクトリーのコンテンツを共有し、Windows ACL を使用するexample という名前の共有を作成するには、以下を実行します。

手順16.12 Windows ACL を使用する共有の追加

  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. example 共有を /etc/samba/smb.conf ファイルに追加します。以下は、write-enabled の共有を追加する例です。
    [example]
    	path = /srv/samba/example/
    	read only = no

    注記

    ファイルシステム ACL に関係なく、read only = no を設定しない場合、Samba は読み取り専用モードでディレクトリーを共有します。
  4. すべての共有の [global] セクションで Windows ACL サポートを有効化していない場合は、以下のパラメーターを [example] セクションに追加し、この共有向けにこの機能を有効にします。
    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes
  5. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  6. 必要なポートを開き、firewall-cmd ユーティリティーを使用してファイアーウォール設定を再読み込みします。
    ~]# firewall-cmd --permanent --add-service=samba
    ~]# firewall-cmd --reload
  7. smb サービスを再起動します。
    ~]# systemctl restart smb
  8. あるいは、smb サービスを有効にして、起動時に自動的に起動するようにします。
    ~]# systemctl enable smb
16.1.7.2.4. Windows ACL を使用する共有の共有パーミッションおよびファイルシステム ACL の管理
Windows ACL を使用する Samba 共有上の共有およびファイルシステム ACL を管理するには、Computer Management などの Windows アプリケーションを使用します。詳細は、Windows ドキュメントを参照してください。
または、smbcacls ユーティリティーを使用して ACL を管理します。詳細は smbcacls を使用した SMB 共有上での ACL の管理」 を参照してください。

注記

Windows のファイルシステムパーミッションを変更するには、特権を付与された SeDiskOperatorPrivilege のあるアカウントを使用する必要があります。詳細は SeDiskOperatorPrivilege 権限の付与」 を参照してください。

16.1.7.3. smbcacls を使用した SMB 共有上での ACL の管理

smbcacls ユーティリティーは、SMB 共有上に保存されたファイルおよびディレクトリーの ACL を一覧表示、設定、および削除できます。smbcacls を使用して、以下のようにファイルシステム ACL を管理できます。
  • 詳細な Windows ACL または POSIX ACL を使用したローカルまたはリモートの Samba サーバー上での管理。
  • Windows でホストされる共有上の ACL をリモートで管理するための Red Hat Enterprise Linux での管理。
16.1.7.3.1. アクセス制御エントリーの理解
ファイルシステムオブジェクトの各 ACL エントリーには、以下のフォーマットで Access Control Entries (ACE) が含まれています。
security_principal:access_right/inheritance_information/permissions

例16.5 アクセス制御エントリー

AD\Domain Users グループに、Windows 上の This folder, subfolders, and files に適用される Modify パーミッションがある場合、ACL には以下の ACE が含まれます。
AD\Domain Users:ALLOWED/OI|CI/CHANGE
以下は、個々の ACE を説明しています。
セキュリティープリンシパル
セキュリティープリンシパルは、 ACL のパーミッションが適用されるユーザー、グループ、または SID です。
アクセス権
オブジェクトへのアクセスを付与または拒否するかを定義します。値は ALLOWED または DENIED になります。
継承情報
以下の値が存在します。

表16.3 継承設定

詳細マッピング先
OIオブジェクトの継承このフォルダーおよびファイル
CIコンテナーの継承このフォルダーおよびサブフォルダー
IO継承のみACE は現在のファイルまたはディレクトリーに適用されません
ID継承済みACE は親ディレクトリーから継承されました
さらに、値を以下のように組み合わせることが可能です。

表16.4 継承設定の組み合わせ

値の組み合わせWindows の Applies to 設定にマッピングします
OI|CIこのフォルダー、サブフォルダー、およびファイル
OI|CI|IOサブフォルダーおよびファイルのみ
CI|IOサブフォルダーのみ
OI|IOファイルのみ
アクセス許可
この値は、1 つ以上の Windows パーミッションを表す 16 進数値または smbcacls エイリアスのいずれかになります。
  • 1 つ以上の Windows パーミッションを表す 16 進数値
    以下の表は、Windows パーミッションの詳細および対応する値を 16 進数値で表しています。

    表16.5 16 進数値での Windows パーミッションおよびそれに対応する smbcacls

    Windows パーミッション16 進数値
    完全制御0x001F01FF
    フォルダーのトラバース / ファイルの実行0x00100020
    フォルダーの一覧表示 / データの読み取り0x00100001
    読み取り属性0x00100080
    拡張属性の読み取り0x00100008
    ファイルの作成 / データの書き込み0x00100002
    フォルダーの作成 / データの追加0x00100004
    属性の書き込み0x00100100
    拡張属性の書き込み0x00100010
    サブフォルダーとファイルの削除0x00100040
    削除0x00110000
    パーミッションの読み取り0x00120000
    パーミッションの変更0x00140000
    所有者の取得0x00180000
    ビット単位の OR 操作を使用して、複数のパーミッションを 1 つの 16 進数値としてまとめることができます。詳細は 「ACE マスクの計算」 を参照してください。
  • smbcacls エイリアス。以下の表は利用可能なエイリアスを表示します。

    表16.6 既存の smbcacls エイリアスおよびそれに対応する Windows パーミッション

    smbcacls エイリアスWindows パーミッションへのマッピング
    R読み取り
    READ読み取り & 実行
    W
    特殊
    • ファイルの作成 / データの書き込み
    • フォルダーの作成 / データの追加
    • 属性の書き込み
    • 拡張属性の書き込み
    • パーミッションの読み取り
    D削除
    Pパーミッションの変更
    O所有者の取得
    Xトラバース / 実行
    CHANGE変更
    FULL完全制御

    注記

    パーミッションを設定する場合は、1 文字のエイリアスを複数組み合わせることができます。たとえば、Windows パーミッションの ReadDelete を設定するには、RD と設定できます。しかし、2 文字以上のエイリアスを複数組み合わせたり、エイリアスと 16 進数値を組み合わせたりしてはいけません。
16.1.7.3.2. smbcacls を使用した ACL の表示
--add などのオペレーションパラメーターなしに smbcacls を実行すると、ユーティリティーはファイルシステムオブジェクトの ACL を表示します。
たとえば、//server/example 共有の root ディレクトリーの ACL を一覧表示するには、以下を実行します。
~]# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021
コマンドの出力は、以下を表示します。
  • REVISION: セキュリティー記述子の内部的な Windows NT ACL のリビジョン
  • CONTROL: セキュリティー記述子制御
  • OWNER: セキュリティー記述子のオーナーの名前または SID
  • GROUP: セキュリティー記述子のグループの名前または SID
  • ACL エントリー。詳細は 「アクセス制御エントリーの理解」 を参照してください。
16.1.7.3.3. ACE マスクの計算
多くの場合、ACE を追加または更新する場合は、表16.6「既存の smbcacls エイリアスおよびそれに対応する Windows パーミッション」 に一覧表示された smbcacls エイリアスを使用します。
ただし、表16.5「16 進数値での Windows パーミッションおよびそれに対応する smbcacls 値」 に一覧表示されているように詳細な Windows パーミッションを設定したい場合は、ビット単位の OR 操作を使用して正しい値を計算する必要があります。値の計算には、以下のシェルコマンドを使用することが可能です。
~]# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))

例16.6 ACE マスクの計算

以下のパーミッションを設定したい場合。
  • Traverse folder / execute file (0x00100020)
  • List folder / read data (0x00100001)
  • Read attributes (0x00100080)
以前のパーミッション用に 16 進数値を計算するには、以下を入力します。
~]# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1
ACE を設定または更新した場合は返された値を使用します。
16.1.7.3.4. smbcacls を使用した ACL の追加、更新、および削除
smbcacls ユーティリティーに渡すパラメーターに応じて、ファイルまたはディレクトリーから ACL を追加、更新、および削除できます。

ACL の追加

AD\Domain Users グループに、This folder, subfolders, and filesCHANGE パーミッションを与える //server/example 共有の root に ACL を追加するには、以下を実行します。
~]# smbcacls //server/example / -U "DOMAIN\administrator \
       --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE

ACL の更新

ACL の更新は、新規の ACL の追加に似ています。既存のセキュリティープリンシパルと共に --modify パラメーターを使用して ACL をオーバーライドすることで、ACL を更新します。smbcacls が ACL リストにセキュリティープリンシパルを見つけた場合は、ユーティリティーがパーミッションを更新します。そうでなければ、コマンドは以下のエラーを表示して失敗します。
SID principal_name の ACL が見つかりません
たとえば、AD\Domain Users グループのパーミッションを更新し、This folder, subfolders, and files 向けに READ に設定する場合は、以下を実行します。
~]# smbcacls //server/example / -U "DOMAIN\administrator \
       --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ

ACL の削除

ACL を削除するには、正確な ACL と共に --deletesmbcacls ユーティリティーにパスします。以下に例を示します。
~]# smbcacls //server/example / -U "DOMAIN\administrator \
       --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ

16.1.7.4. ユーザーによる Samba サーバーでのディレクトリー共有の有効化

Samba サーバーでは、root パーミッションなしに、ユーザーがディレクトリーを共有できるよう設定できます。
16.1.7.4.1. ユーザー共有機能の有効化
ユーザーがディレクトリーを共有できるようになる前に、管理者は Samba でユーザー共有を有効化する必要があります。たとえば、ローカルの example グループのメンバーのみを有効にし、ユーザー共有を作成するには、以下を実行します。

手順16.13 ユーザー共有の有効化

  1. ローカルの example グループがない場合は、これを作成します。
    ~]# groupadd example
  2. Samba のディレクトリーを用意し、ユーザー共有定義を保存してこのパーミッションを適切に設定します。以下に例を示します。
    1. ディレクトリーを作成します。
      ~]# mkdir -p /var/lib/samba/usershares/
    2. example グループの書き込みパーミッションを設定します。
      ~]# chgrp example /var/lib/samba/usershares/
      ~]# chmod 1770 /var/lib/samba/usershares/
      このディレクトリーの他のユーザーが保存したファイルの名前を変更したり、削除したりしないように sticky ビットを設定します。
  3. /etc/samba/smb.conf ファイルを編集し、以下を [global] セクションに追加します。
    1. ユーザー共有の定義を保存するために設定したディレクトリーのパスを設定します。以下に例を示します。
      usershare path = /var/lib/samba/usershares/
    2. Samba がこのサーバーで作成を許可するユーザー共有の数を設定します。以下に例を示します。
      usershare max shares = 100
      usershare max shares パラメーターに 0 のデフォルトを使用する場合、ユーザー共有は無効化されます。
    3. オプションとして、絶対ディレクトリーパスの一覧を設定します。たとえば、Samba は /data および /srv ディレクトリーのサブディレクトリーのみの共有を許可すると設定する場合は、以下のように設定します。
      usershare prefix allow list = /data /srv
    自身で設定可能なさらなるユーザー共有関連のパラメーターの一覧に関しては、man ページの smb.conf(5) の 『USERSHARES』 セクションを参照してください。
  4. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  5. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
ユーザーは、ユーザー共有を作成できるようになりました。詳細は 「ユーザー共有の追加」 を参照してください。
16.1.7.4.2. ユーザー共有の追加
「ユーザー共有機能の有効化」 に従って Samba を設定すると、ユーザーは net usershare add コマンドを実行すれば、root パーミッションがなくても Samba サーバー上でディレクトリーを共有できます。
net usershare add コマンドの概要

net usershare add share_name path [[ comment ] | [ ACLs ]] [ guest_ok=y|n ]

重要

ユーザー共有の作成時に ACL を設定する場合は、ACL の前にコメントパラメーターを指定する必要があります。空のコメントを設定するには、二重引用符の付いた空の文字列を使用します。
ユーザーが、ユーザー共有でゲストアクセスを有効にできるのは、/etc/samba/smb.conf ファイルの [global] セクションにおいて管理者が usershare allow guests = yes と設定した場合のみである点に注意してください。

例16.7 ユーザー共有の追加

Samba サーバーで /srv/samba/ ディレクトリーを共有したいユーザーがいるとします。共有の名前は example とする必要があり、コメントの設定はなく、ゲストユーザーがアクセス可能でなければなりません。さらに、AD\Domain Users グループは共有パーミッションにフルアクセスできるように設定し、その他のユーザーは読み取りパーミッションに設定する必要があります。この共有を追加するには、ユーザーとして以下を実行します。
~]$ net usershare add example /srv/samba/ "" \
       "AD\Domain Users":F,Everyone:R guest_ok=yes
16.1.7.4.3. ユーザー共有の設定の共有
ユーザー共有の設定を更新したい場合は、同じ共有名と新規の設定で net usershare add コマンドを使用し、共有をオーバーライドします。詳細は 「ユーザー共有の追加」 を参照してください。
16.1.7.4.4. 既存のユーザー共有に関する情報の表示
ユーザーは、Samba サーバー上で net usershare info コマンドを入力して、ユーザー共有およびその設定を表示できます。
あらゆるユーザーが作成したすべてのユーザー共有を表示するには、以下を実行します。
~]$ net usershare info -l
[share_1]
path=/srv/samba/
comment=
usershare_acl=Everyone:R,host_name\user:F,
guest_ok=y
...
コマンドを実行するユーザーが作成した共有のみを一覧表示するには、-l パラメーターを省略します。
特定の共有に関する情報のみを表示したい場合は、共有名またはワイルドカードをコマンドに渡します。たとえば、名前が share_ から始まる共有に関する情報を表示するには、以下を実行します。
~]$ net usershare info -l share_*
16.1.7.4.5. ユーザー共有の一覧表示
Samba サーバーで、設定なしで利用可能なユーザー共有のみを一覧表示したい場合は、net usershare list コマンドを使用します。
あらゆるユーザーが作成した共有を一覧表示するには、以下を実行します。
~]$ net usershare list -l
share_1
share_2
...
コマンドを実行するユーザーが作成した共有のみを一覧表示するには、-l パラメーターを省略します。
特定の共有のみを一覧表示するには、コマンドに共有名またはワイルドカードを渡します。たとえば、名前が share_ から始まる共有のみを一覧表示するには、以下を実行します。
~]$ net usershare list -l share_*
16.1.7.4.6. ユーザー共有の削除
ユーザー共有を削除するには、共有を作成したユーザーとして、または root ユーザーとして以下を入力します。
~]$ net usershare delete share_name

16.1.7.5. 共有へのゲストアクセスの有効化

特定の状況では、ユーザーが認証なしに接続できるディレクトリーを共有したい場合もあります。これを設定するには、共有上でゲストアクセスを有効にします。

警告

認証を必要としない共有はセキュリティーリスクとなる恐れがあります。
共有上でゲストアクセスが有効になった場合、Samba は guest account パラメーターに設定されたオペレーティングシステムアカウントにゲスト接続をマッピングします。ゲストユーザーは、以下の条件のうち少なくとも 1 つを満たしている場合にこれらのファイルへアクセスできます。
  • アカウントは、ファイルシステム ACL に一覧表示されています。
  • other ユーザー向けの POSIX パーミッションが許可します。

例16.8 ゲストの共有パーミッション

ゲストアカウントを nobody にマッピングするよう Samba を設定した場合 (デフォルト)、ACL は以下を実行します。
  • ゲストユーザーが file1.txt を読み取ることを許可。
  • ゲストユーザーが file2.txt を読み取り、変更することを許可。
  • ゲストユーザーが file3.txt を読み取ること、または変更することを阻止。
-rw-r--r--. 1 root       root      1024 1. Sep 10:00 file1.txt
-rw-r-----. 1 nobody     root      1024 1. Sep 10:00 file2.txt
-rw-r-----. 1 root       root      1024 1. Sep 10:00 file3.txt
たとえば、既存の [example] 共有のゲストアクセスを有効にするには、以下を実行します。

手順16.14 ゲスト共有のセットアップ

  1. /etc/samba/smb.conf ファイルを編集します。
    1. これが、このサーバーにセットアップする最初のゲスト共有の場合は、以下を実行します。
      1. [global] セクションで、map to guest = Bad User を設定します。
        [global]
        	...
        	map to guest = Bad User
        この設定で、Samba はユーザー名が存在しない限り、間違ったパスワードを使用したログイン試行を拒否します。指定したユーザー名が存在せず、ゲストアクセスが共有で有効になっている場合、Samba は接続をゲストログインとして扱います。
      2. デフォルトでは、Samba はゲストアカウントを Red Hat Enterprise Linux 上の nobody アカウントにマッピングします。オプションで、別のアカウントを設定できます。以下に例を示します。
        [global]
        	...
        	guest account = user_name
        このパラメーターに設定されたアカウントは、Samba サーバーでローカルに存在する必要があります。セキュリティー上の理由から、Red Hat は有効なシェルが割り当てられていないアカウントの使用を推奨します。
    2. [example] セクションに guest ok = yes 設定を追加します。
      [example]
      	...
      	guest ok = yes
  2. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  3. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config

16.1.8. Samba プリントサーバーのセットアップ [5]

Samba をプリントサーバーとしてセットアップした場合、お使いのネットワーク内のクライアントは Samba を使用して印刷できます。さらに、設定されている場合は、Windows のクライアントは Samba サーバーからドライバーをダウンロードできます。
プリンターを共有する前に、Samba をセットアップします。

16.1.8.1. Samba spoolssd サービス

Samba spoolssd は、smbd サービスに統合されたサービスです。Samba 設定内の spoolssd を有効にし、多数のジョブ、プリンターなど、プリントサーバーのパフォーマンスを大幅に向上させます。
spoolssd なしでは、Samba は smbd プロセスを fork し、各印刷ジョブの printcap キャッシュを初期化します。プリンターが多数の場合は、キャッシュが初期化されるまでの数秒間ほど、smbd サービスが反応しないことがあります。spoolssd サービスにより、遅延なしに印刷ジョブを処理する pre-fork の smbd プロセスを開始することが可能となります。主要な spoolssd smbd プロセスは、少量のメモリーおよび fork を使用し、子プロセスを終了します。
spoolssd サービスを有効にするには、以下を実行します。

手順16.15 spoolssd サービスの有効化

  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。
    1. 以下のパラメーターを追加します。
      rpc_server:spoolss = external
      rpc_daemon:spoolssd = fork
    2. オプションで、以下のパラメーターを設定できます。
      パラメーターデフォルト詳細
      spoolssd:prefork_min_children5子プロセスの最小数
      spoolssd:prefork_max_children25子プロセスの最大数
      spoolssd:prefork_spawn_rate5Samba は、新規の接続が確立された場合に、このパラメーターに設定された新規の子プロセスの数を spoolssd:prefork_max_children に設定された上限値まで fork します。
      spoolssd:prefork_max_allowed_clients100子プロセスが対応するクライアントの数
      spoolssd:prefork_child_min_life60秒単位での子プロセスの最短寿命。最短は 60 秒
  2. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  3. smb サービスを再起動します。
    ~]# systemctl restart smb
サービスの再起動後、Samba は自動的に smbd 子プロセスを開始します。
~]# ps axf
...
30903 smbd
30912  \_ smbd
30913      \_ smbd
30914      \_ smbd
30915      \_ smbd
...

16.1.8.2. Samba でのプリントサーバーサポートの有効化

プリントサーバーサポートを有効化するには、以下を実行します。

手順16.16 Samba でのプリントサーバーサポートの有効化

  1. Samba サーバー上で CUPS をセットアップし、プリンターを CUPS バックエンドに追加します。詳細は 「印刷設定」 を参照してください。

    注記

    CUPS が Samba プリントサーバーのローカルにインストールされている場合、Samba が CUPS に転送できるのは印刷ジョブのみです。
  2. /etc/samba/smb.conf ファイルを編集します。
    1. spoolssd サービスを有効にする場合は、[global] セクションに以下のパラメーターを追加してください。
      rpc_server:spoolss = external
      rpc_daemon:spoolssd = fork
      詳細は 「Samba spoolssd サービス」 を参照してください。
    2. 印刷バックエンドを設定するには、[printers] セクションを追加します。
      [printers]
      	comment = All Printers
      	path = /var/tmp/
      	printable = yes
      	create mask = 0600

      重要

      printers の共有名はハードコードされ、変更することはできません。
  3. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  4. 必要なポートを開き、firewall-cmd ユーティリティーを使用してファイアーウォール設定を再読み込みします。
    ~]# firewall-cmd --permanent --add-service=samba
    ~]# firewall-cmd --reload
  5. smb サービスを再起動します。
    ~]# systemctl restart smb
サービスの再起動後、Samba は CUPS バックエンドに設定されたすべてのプリンターを自動的に共有します。特定のプリンターのみを手動で共有したい場合は 「特定のプリンターを手動で共有」 を参照してください。

16.1.8.3. 特定のプリンターを手動で共有

デフォルトで Samba をプリントサーバーとして設定した場合、Samba は CUPS バックエンドで設定されたすべてのプリンターを共有します。特定のプリンターのみを共有する場合は、以下を実行します。

手順16.17 特定のプリンターを手動で共有

  1. /etc/samba/smb.conf ファイルを編集します。
    1. [global] セクションで以下を設定することで、自動プリンター共有を無効化します。
      load printers = no
    2. 共有する各プリンターにセクションを追加します。たとえば、CUPS バックエンドで example と名付けられたプリンターを Samba で Example-Printer として共有する場合は、以下のセクションを追加します。
      [Example-Printer]
      	path = /var/tmp/
      	printable = yes
      	printer name = example
      各プリンターには、個別のスプールディレクトリーは必要ありません。[printers] セクションに設定するように、プリンターの path パラメーターに同じスプールディレクトリーを設定することが可能です。
  2. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  3. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config

16.1.8.4. Windows クライアント向け自動プリンタードライバーダウンロードをセットアップ [6]

Windows クライアント向けに Samba プリントサーバーを実行している場合は、ドライバーをアップロードしてプリンターを事前に設定できます。ユーザーがプリンターに接続した場合、Windows はローカルでクライアント上にドライバーを自動的にダウンロードおよびインストールします。インストールに際して、ローカル管理パーミッションはユーザーには必要ではありません。さらに、Windows はトレイの数など、事前に設定されたドライバー設定を適用します。

注記

自動プリンタードライバーダウンロードをセットアップする前に、Samba をプリントサーバーとして設定し、プリンターを共有する必要があります。詳細は 「Samba プリントサーバーのセットアップ 」 を参照してください。
16.1.8.4.1. プリンタードライバーに関する基本情報
本セクションでは、プリンタードライバーに関する一般情報を提供します。

サポートされるドライバーモデルバージョン

Samba は、プリンタードライバーモデルバージョン 3 のみをサポートします。これは、Windows 2000 以降および Windows Server 2000 以降でサポートされています。Samba は、Windows 8 および Windows Server 2012 に導入されたドライバーモデルバージョン 4 をサポートしません。しかし、これ以降の Windows のバージョンも、バージョン 3 のドライバーをサポートしています。

package-aware ドライバー

Samba は、package-aware ドライバーをサポートしません。

アップロード向けのプリンタードライバーの準備

Samba プリントサーバーにドライバーをアップロードできるようになる前に、以下を実行します。
  • ドライバーが圧縮形式で提供される場合は、これを解凍します。
  • ドライバーによっては、Windows ホスト上でローカルにドライバーをインストールするセットアップアプリケーションを開始する必要があります。特定の状況では、セットアップの実行中にインストーラーが個々のファイルをオペレーティングシステムの一時フォルダーに展開します。ドライバーファイルをアップロードに使用するには、以下を実行します。
    1. インストーラーを起動します。
    2. 一時フォルダーから新しい場所にファイルをコピーします。
    3. インストールをキャンセルします。
プリントサーバーへのアップロードをサポートするドライバーについて、プリンターの製造元に問い合わせしてください。

クライアントへのプリンターに 32 ビットと 64 ビットのドライバーを提供します。

32 ビットと 64 ビットの両方の Windows クライアントにプリンター用のドライバーを提供するには、両方のアーキテクチャーにまったく同じ名前のドライバーをアップロードする必要があります。たとえば、Example PostScript という名前の 32 ビットのドライバーと、Example PostScript (v1.0) という名前の 64 ビットのドライバーをアップロードする場合は、名前が一致しません。その結果、プリンターには 1 つのドライバーのみを割り当てることになり、そのドライバーは両方のアーキテクチャーでは利用できません。
16.1.8.4.2. ユーザーによるドライバーのアップロードと事前設定の有効化
プリンタードライバーをアップロードして事前設定できるようにするには、ユーザーまたはグループに SePrintOperatorPrivilege 権限を付与する必要があります。たとえば、printadmin グループに権限を与える場合は、以下を実行します。
~]# net rpc rights grant "printadmin" SePrintOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.

注記

ドメイン環境で、ドメイングループに SePrintOperatorPrivilege を付与します。これにより、ユーザーのグループメンバーシップを更新することで、権限を中央管理できます。
SePrintOperatorPrivilege を付与されたユーザーおよびグループを一覧表示するには、以下を実行します。
~]# net rpc rights list privileges SePrintOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter administrator's password:
SePrintOperatorPrivilege:
  BUILTIN\Administrators
  DOMAIN\printadmin
16.1.8.4.3. print$ 共有のセットアップ
Windows オペレーティングシステムは、プリントサーバーの print$ という名前の共有からプリンタードライバーをダウンロードします。この共有名は Windows でハードコードされ、変更することはできません。
/var/lib/samba/drivers/ ディレクトリーを print$ として共有し、ローカルの printadmin グループのメンバーがプリンタードライバーをアップロードできるようにするには、以下を実行します。

手順16.18 print$ 共有のセットアップ

  1. [print$] セクションを /etc/samba/smb.conf ファイルに追加します。
    [print$]
    	path = /var/lib/samba/drivers/
    	read only = no
    	write list = @printadmin
    	force group = @printadmin
    	create mask = 0664
    	directory mask = 2775
    これらの設定の使用
    • printadmin グループのメンバーのみがプリンタードライバーを共有にアップロードできます。
    • 新規に作成されたファイルおよびディレクトリーのグループは、printadmin に設定されます。
    • 新規ファイルのパーミッションは 664 に設定されます。
    • 新規のディレクトリーのパーミッションは、2775 に設定されます。
  2. プリンターに 64 ビットのドライバーのみをアップロードする場合は、この設定を /etc/samba/smb.conf ファイルの [global] セクションに追加します。
    spoolss: architecture = Windows x64
    この設定を指定しない場合、Windows では、32 ビットバージョンがアップロードされているドライバーのみを表示します。
  3. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  4. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
  5. printadmin グループが存在しない場合は、これを作成します。
    ~]# groupadd printadmin
  6. SePrintOperatorPrivilege 権限を printadmin グループに付与します。
    ~]# net rpc rights grant "printadmin" SePrintOperatorPrivilege \
           -U "DOMAIN\administrator"
    Enter DOMAIN\administrator's password:
    Successfully granted rights.
  7. SELinux を enforcing モードで実行する場合は、samba_share_t コンテキストをディレクトリーに設定します。
    ~]# semanage fcontext -a -t samba_share_t "/var/lib/samba/drivers(/.*)?"
    ~]# restorecon -Rv /var/lib/samba/drivers/
  8. /var/lib/samba/drivers/ ディレクトリーにパーミッションを設定します。
    • POSIX ACL を使用する場合は、以下を設定します。
      ~]# chgrp -R "printadmin" /var/lib/samba/drivers/
      ~]# chmod -R 2775 /var/lib/samba/drivers/
    • Windows ACL を使用する場合は、以下を設定します。
      プリンシパルアクセス適用
      CREATOR OWNER完全制御サブフォルダーおよびファイルのみ
      Authenticated Users読み取り & 実行、フォルダーコンテンツの一覧表示、読み取りこのフォルダー、サブフォルダー、およびファイル
      printadmin完全制御このフォルダー、サブフォルダー、およびファイル
      Windows での ACL 設定に関する詳細は、Windows ドキュメントを参照してください。
16.1.8.4.4. クライアントが Samba プリントサーバーを信頼できるように GPO を作成
セキュリティー上の理由から、最近の Windows オペレーティングシステムは、クライアントが、信頼できないサーバーから non-package-aware プリンタードライバーをダウンロードできないようにしています。お使いのプリントサーバーが AD のメンバーの場合は、Samba サーバーを信頼するために、ドメインに Group Policy Object (GPO) を作成できます。
GPO を作成するには、お使いの Windows コンピューターに Windows Remote Server Administration Tools (RSAT) がインストールされていなければなりません。詳細は Windows ドキュメントを参照してください。

手順16.19 クライアントが Samba プリントサーバーを信頼できるように GPO を作成

  1. AD ドメイン Administrator ユーザーなど、グループポリシーの編集が許可されたアカウントを使用して Windows コンピューターにログインします。
  2. Group Policy Management コンソールを開きます。
  3. AD ドメインを右クリックして、Create a GPO in this domain, and Link it here (このドメインに GPO を作成し、ここにリンクします) を選択します。
  4. Legacy printer Driver Policy など、GPO の名前を入力し、OK をクリックします。ドメインエントリーの下に、新しい GPO が表示されます。
  5. 新規に作成された GPO を右クリックし、Edit を選択して Group Policy Management Editor を開きます。
  6. Computer ConfigurationPoliciesAdministrative TemplatesPrinters に移動します。
  7. ウィンドウの右側で、Point and Print Restriction (ポイントアンドプリント制限) をダブルクリックしてポリシーを編集します。
    1. ポリシーを有効化し、以下のオプションを設定します。
      1. Users can only point and print to these servers (ユーザーはこれらのサーバーにポイントアンドプリントのみできます) を選択し、Samba プリントサーバーの完全修飾ドメイン名 (FQDN) をこのオプションの横にあるフィールドに入力します。
      2. Security Prompts (セキュリティープロンプト) の下にあるチェックボックスは両方とも、Do not show warning or elevation prompt (警告またはエレベーションプロンプトを表示しない) を選択します。
    2. OK をクリックします。
  8. ポリシーを編集するには、Package Point and Print - Approved servers (ポイントアンドプリントをパッケージ - 承認済みサーバー) をダブルクリックします。
    1. ポリシーを有効化し、Show ボタンをクリックします。
    2. Samba プリントサーバーの FQDN を入力します
    3. OK をクリックして、Show Contents とポリシープロパティーウィンドウの両方を閉じます。
  9. Group Policy Management Editor を閉じます。
  10. Group Policy Management コンソールを閉じます。
Windows ドメインメンバーによるグループポリシーの適用後、ユーザーがプリンターに接続するとプリンタードライバーは Samba サーバーから自動的にダウンロードされます。
グループポリシーの使用に関する詳細は、Windows ドキュメントを参照してください。
16.1.8.4.5. ドライバーのアップロードおよびプリンターの事前設定
Windows クライアントの Print Management アプリケーションを使用して、Samba プリントサーバー上でホストされるドライバーをアップロードし、プリンターを事前設定します。詳細は Windows ドキュメントを参照してください。

16.1.9. Samba サーバーのパフォーマンスのチューニング [7]

本セクションでは、特定の状況における Samba のパフォーマンスを向上させる設定、そしてパフォーマンスを低下させる設定を説明します。

16.1.9.1. SMB プロトコルバージョンの設定

SMB の新バージョンはそれぞれ、機能を追加してプロトコルのパフォーマンスを向上させます。最新の Windows および Windows Server オペレーティングシステムは常に、最新のプロトコルバージョンをサポートします。Samba が最新のプロトコルバージョンも使用する場合、Samba に接続する Windows クライアントはパフォーマンスの向上による恩恵を受けます。Samba では、server max protocol のデフォルト値は、サポート対象の安定した最新の SMB プロトコルバージョンに設定されています。
最新の安定した SMB プロトコルバージョンを常に有効にするには、server max protocol パラメーターを設定しません。手動でマニュアルを設定した場合、最新のプロトコルバージョンを有効化するために、SMB プロトコルの設定を新バージョンごとに変更する必要があります。
/etc/samba/smb.conf ファイルの [global] セクションから server max protocol を設定解除して削除するには、以下を実行します。

16.1.9.2. 多数のファイルを含むディレクトリーでの共有のチューニング

100,000 以上のファイルがあるディレクトリーを含む共有のパフォーマンスを向上させるには、以下を実行します。

手順16.20 多数のファイルを含むディレクトリーでの共有のチューニング

  1. 共有にあるすべてのファイル名を小文字に変更します。

    注記

    この手順の設定を使用して、小文字以外のファイル名は今後表示されません。
  2. 共有のセクションで、以下のパラメーターを設定します。
    case sensitive = true
    default case = lower
    preserve case = no
    short preserve case = no
    パラメーターに関する詳細は、man ページの smb.conf(5) にある説明を参照してください。
  3. Samba 設定を再読み込みします。
    ~]# smbcontrol all reload-config
これらの設定の適用後、この共有にある新規に作成されたすべてのファイルの名前は、小文字を使用しています。これらの設定により、Samba はディレクトリーの大文字小文字をスキャンする必要がなくなり、パフォーマンスが向上します。

16.1.9.3. パフォーマンスを低下させる恐れのある設定

デフォルトで、Red Hat Enterprise Linux のカーネルのネットワークパフォーマンスは、高くチューニングされています。たとえば、カーネルはバッファーサイズに自動チューニングメカニズムを使用しています。/etc/samba/smb.conf ファイルの socket options パラメーターを設定すると、これらのカーネル設定をオーバーライドします。その結果、ほとんどの場合、このパラメーターを設定すると Samba ネットワークのパフォーマンスは低下します。
カーネルの最適化された設定を使用するには、/etc/samba/smb.conf[global] セクションから socket options パラメーターを削除します。

16.1.10. よく使われる Samba コマンドラインユーティリティー

本セクションでは、Samba サーバーを使用する際によく使うコマンドを説明します。

16.1.10.1. net ユーティリティーの使用

net ユーティリティーを使用すると、複数の管理タスクを Samba サーバーで実行することができます。本セクションでは、net ユーティリティーのサブコマンドで最もよく使うものを説明します。
詳細は man ページの net(8) を参照してください。
16.1.10.1.1. net ads join コマンドおよび net rpc join コマンドの使用
net ユーティリティーの join サブコマンドを使用すると、Samba を AD または NT4 ドメインに参加させることができます。ドメインに参加するには、手動で /etc/samba/smb.conf ファイルを作成する必要があります。また、オプションで PAM などの追加的な設定を更新します。

重要

Red Hat は、ドメインへの参加には realm ユーティリティーの使用を推奨しています。realm ユーティリティーは、関連するすべての設定ファイルを自動的に更新します。詳細は 「ドメインへの参加」 を参照してください。
net コマンドを使用してドメインに参加するには、以下を実行します。

手順16.21 net コマンドを使用したドメインへの参加

  1. 以下の設定で、/etc/samba/smb.conf ファイルを手動で作成します。
    • AD ドメインのメンバーには、以下を実行してください。
      [global]
      workgroup = domain_name
      security = ads
      passdb backend = tdbsam
      realm = AD_REALM
    • NT4 ドメインのメンバーには、以下を実行してください。
      [global]
      workgroup = domain_name
      security = user
      passdb backend = tdbsam
  2. デフォルトドメインの *、および参加するドメインの ID マッピング設定を /etc/samba/smb.conf[global] セクションに追加します。詳細は 「ID マッピングについて」 を参照してください。
  3. /etc/samba/smb.conf ファイルを確認します。
    ~]# testparm
  4. ドメイン管理者としてドメインに参加します。
    • AD ドメインに参加するには、以下を実行してください。
      ~]# net ads join -U "DOMAIN\administrator"
    • NT4 ドメインに参加するには、以下を実行してください。
      ~]# net rpc join -U "DOMAIN\administrator"
  5. winbind ソースを /etc/nsswitch.conf ファイルの passwd および group データベースエントリーに追加します。
    passwd:     files winbind
    group:      files winbind
  6. winbind サービスを有効にし、開始します。
    ~]# systemctl enable winbind
    ~]# systemctl start winbind
  7. オプションで、authconf ユーティリティーを使用して PAM を設定します。
    詳細は Red Hat システムレベルの認証ガイドの『PAM (プラグ可能な認証モジュール) の使用』セクションを参照してください。
  8. AD 環境はオプションで、Kerberos クライアントを設定します。
    詳細は Red Hat システムレベルの認証ガイドの『Kerberos クライアントの設定』セクションを参照してください。
16.1.10.1.2. net rpc rights コマンドの使用
Windows では、アカウントおよびグループに権限を割り当て、特別な操作を実行できます。たとえば、共有に ACL を設定したり、プリンタードライバーをアップロードしたりできます。Samba サーバーでは、net rpc rights コマンドを使用して権限を管理できます。

権限の一覧表示

利用可能な権限およびその所有者の一覧を表示するには、net rpc rights list コマンドを使用します。以下に例を示します。
net rpc rights list -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
     SeMachineAccountPrivilege  Add machines to domain
      SeTakeOwnershipPrivilege  Take ownership of files or other objects
             SeBackupPrivilege  Back up files and directories
            SeRestorePrivilege  Restore files and directories
     SeRemoteShutdownPrivilege  Force shutdown from a remote system
      SePrintOperatorPrivilege  Manage printers
           SeAddUsersPrivilege  Add users and groups to the domain
       SeDiskOperatorPrivilege  Manage disk shares
           SeSecurityPrivilege  System security

権限の付与

アカウントまたはグループに権限を付与するには、net rpc rights grant コマンドを使用します。
たとえば、SePrintOperatorPrivilege 権限を DOMAIN\printadmin グループに付与する場合、以下を実行します。
~]# net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.

権限の取り消し

アカウントまたはグループから権限を取り消すには、net rpc rights revoke を使用します。
たとえば、DOMAIN\printadmin グループから SePrintOperatorPrivilege 権限を取り消すには、以下を実行します。
~]# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.
16.1.10.1.3. net rpc share コマンドの使用
net rpc share コマンドは、ローカルまたはリモートの Samba あるいは Windows のサーバー上にある共有を一覧表示、追加、および取り消す機能を提供します。

共有の一覧表示

SMB サーバーの共有を一覧表示するには、net rpc share list command を使用します。オプションで、-S server_name パラメーターをコマンドに渡して、リモートサーバーの共有を一覧表示します。以下に例を示します。
~]# net rpc share list -U "DOMAIN\administrator" -S example
Enter DOMAIN\administrator's password:
IPC$
share_1
share_2
...

注記

/etc/samba/smb.conf ファイルのセクションに browseable = no が設定された Samba サーバーにホストされた共有は、出力では表示されません。

共有の追加

net rpc share add コマンドを使用すると、SMB サーバーに共有を追加することができます。
たとえば、C:\example\ ディレクトリーを共有するリモートの Windows のサーバー上にある example という名前の共有を追加するには、以下を実行します。
~]# net rpc share add example="C:\example" -U "DOMAIN\administrator" -S server

注記

Windows ディレクトリー名を指定する際、パスの末尾にあるバックスラッシュを省略する必要があります。
Samba サーバーに共有を追加するためにコマンドを使用するには、以下を実行します。
  • -U パラメーターで指定されたユーザーに、SeDiskOperatorPrivilege 権限を付与する必要があります。
  • /etc/samba/smb.conf ファイルに共有のセクションを追加し、Samba を再度読み込むスクリプトを書く必要があります。このスクリプトは、/etc/samba/smb.conf[global] セクションにおける add share command パラメーターに設定されなければなりません。詳細は man ページの smb.conf(5)add share command に関する説明を参照してください。

共有の削除

net rpc share delete コマンドを使用すると、SMB サーバーから共有を削除することができます。
たとえば、リモートの Windows のサーバーから example という名前の共有を削除する場合は、以下を実行します。
~]# net rpc share delete example -U "DOMAIN\administrator" -S server
Samba サーバーから共有を削除するためにコマンドを使用するには、以下を実行します。
  • -U パラメーターで指定されたユーザーに、SeDiskOperatorPrivilege 権限を付与する必要があります。
  • /etc/samba/smb.conf ファイルから共有のセクションを削除し、Samba を再度読み込むスクリプトを書く必要があります。このスクリプトは、/etc/samba/smb.conf[global] セクションにおける delete share command パラメーターに設定されなければなりません。詳細は、man ページの smb.conf(5)delete share command に関する説明を参照してください。
16.1.10.1.4. net user コマンドの使用
net user コマンドを使用すると、AD DC または NT4 PDC 上で、以下の動作を実行できるようになります。
  • すべてのユーザーアカウントの一覧表示
  • ユーザーの追加
  • ユーザーの削除

注記

AD ドメインは ads、NT4 ドメインは rpc など、接続方法を指定することは、ドメインユーザーアカウントを一覧表示した場合のみ必要です。他のユーザー関連のサブコマンドは、接続方法を自動検出できます。
-U user_name パラメーターをコマンドに渡して、要求された動作の実行を許可されたユーザーを指定します。

ドメインユーザーアカウントの一覧表示

AD ドメイン内のすべてのユーザーを一覧表示するには、以下を実行します。
~]# net ads user -U "DOMAIN\administrator"
NT4 ドメイン内のすべてのユーザーを一覧表示するには、以下を実行します。
~]# net rpc user -U "DOMAIN\administrator"

ドメインへのユーザーアカウントの追加

Samba ドメインメンバーでは、net user add コマンドを使用して、ユーザーアカウントをドメインに追加することができます。
たとえば、user アカウントをドメインに追加するには、以下を実行します。

手順16.22 ドメインへのユーザーアカウントの追加

  1. アカウントの追加
    ~]# net user add user password -U "DOMAIN\administrator"
    User user added
  2. オプションで、RPC (Remote Procedure Call) シェルを使用して、AD DC または NT4 PDC 上のアカウントを有効化します。以下に例を示します。
    ~]# net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name
    Talking to domain DOMAIN (S-1-5-21-1424831554-512457234-5642315751)
    
    net rpc> user edit disabled user no
    Set user's disabled flag from [yes] to [no]
    
    net rpc> exit

ユーザーアカウントをドメインから削除

Samba ドメインメンバーでは、net user delete コマンドを使用して、ユーザーアカウントをドメインから削除することができます。
たとえば、user アカウントをドメインから削除するには、以下を実行します。
~]# net user delete user -U "DOMAIN\administrator"
User user deleted
16.1.10.1.5. net usershare コマンドの使用

16.1.10.2. rpcclient ユーティリティーの使用

rpcclient ユーティリティーを使用すると、ローカルまたはリモートの SMB サーバー上で、クライアントサイドの Microsoft Remote Procedure Call (MS-RPC) 機能を手動で実行できるようになります。しかし、ほとんどの機能は Samba が提供する別のユーティリティーに統合されます。MS-PRC 機能をテストする際は、rpcclient のみを使用します。
たとえば、ユーティリティーを使用すると以下が可能となります。
  • プリンター Spool Subsystem (SPOOLSS) の管理。

    例16.9 プリンターへのドライバーの割り当て

    ~]# rpcclient server_name -U "DOMAIN\administrator" \
           -c 'setdriver "printer_name" "driver_name"'
    Enter DOMAIN\administrators password:
    Successfully set printer_name to driver driver_name.
  • SMB サーバーに関する情報の取得。

    例16.10 すべてのファイル共有および共有されたプリンターの一覧表示

    ~]# rpcclient server_name -U "DOMAIN\administrator" -c 'netshareenum'
    Enter DOMAIN\administrators password:
    netname: Example_Share
    	remark:
    	path:   C:\srv\samba\example_share\
    	password:
    netname: Example_Printer
    	remark:
    	path:   C:\var\spool\samba\
    	password:
  • Security Account Manager Remote (SAMR) プロトコルを使用した動作の実行。

    例16.11 SMB サーバー上のユーザーの一覧表示

    ~]# rpcclient server_name -U "DOMAIN\administrator" -c 'enumdomusers'
    Enter DOMAIN\administrators password:
    user:[user1] rid:[0x3e8]
    user:[user2] rid:[0x3e9]
    スタンドアロンサーバーまたはドメインメンバーに対してコマンドを実行すると、ローカルデータベースにユーザーを一覧表示します。AD DC または NT4 PDC に対してコマンドを実行すると、ドメインユーザーを一覧表示します。
サポート対象のサブコマンドの完全な一覧は、man ページの rpcclient(1) の 『COMMANDS』 セクションを参照してください。

16.1.10.3. samba-regedit アプリケーションの使用

プリンター設定などの特定の設定は、Samba サーバーのレジストリーに保存されています。ncurses ベースの samba-regedit アプリケーションを使用して、Samba サーバーのレジストリーを編集できます。
アプリケーションを開始するには、以下を入力します。
~]# samba-regedit
以下のキーを使用します。
  • カーソルを上下に移動: レジストリーツリーと値の全体を移動
  • Enter: キーを開くか、または値を編集します。
  • Tab: KeyValue のペインを切り替えます。
  • Ctrl+C: アプリケーションを閉じます。

16.1.10.4. smbcacls ユーティリティーの使用

16.1.10.5. smbclient ユーティリティーの使用

smbclient ユーティリティーを使用することで、コマンドラインの FTP クライアントと同様に SMB サーバー上のファイル共有へアクセスできるようになります。たとえば、ファイルの共有へのアップロード、または共有からのダウンロードに使用することができます。
たとえば、DOMAIN\user アカウントを使用して server 上にホストされた example 共有に対して認証するには、以下を実行します。
~]# smbclient -U "DOMAIN\user" //server/example
Enter domain\user's password:
Domain=[SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \>
smbclient が正常に共有に接続された後、ユーティリティーはインタラクティブモードに入り、以下のプロンプトを表示します。
smb: \>
インタラクティブシェル内で利用可能なすべてのコマンドを表示するには、以下を入力します。
smb: \> help
特定のコマンドのヘルプを表示するには、以下を入力します。
smb: \> help command_name
インタラクティブシェルで利用可能なコマンドの詳細および説明は、man ページの smbclient(1) を参照してください。
16.1.10.5.1. インタラクティブモードでの smbclient の使用
-c パラメーターなしに smbclient を使用すると、ユーティリティーはインタラクティブモードに入ります。
以下の手順では、SMB 共有へ接続し、サブディレクトリーからファイルをダウンロードする方法を示しています。

手順16.23 smbclient を使用して SMB 共有からファイルをダウンロード

  1. 共有への接続
    ~]# smbclient -U "DOMAIN\user_name" //server_name/share_name
  2. /example/ ディレクトリーに移動します。
    smb: \> cd /example/
  3. ディレクトリーのファイルを表示します。
    smb: \example\> ls
      .                    D         0  Mon Sep 1 10:00:00 2017
      ..                   D         0  Mon Sep 1 10:00:00 2017
      example.txt          N   1048576  Mon Sep 1 10:00:00 2017
    
             9950208 blocks of size 1024. 8247144 blocks available
  4. example.txt ファイルをダウンロードします。
    smb: \example\> get example.txt
    getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0 KiloBytes/sec) (average 170666,7 KiloBytes/sec)
  5. 共有からの接続解除
    smb: \example\> exit
16.1.10.5.2. スクリプトモードでの smbclient の使用
-c commands パラメーターを smbclient へ渡した場合、リモートの SMB 共有上のコマンドを自動的に実行できます。これにより、スクリプトで smbclient を使用できるようになります。
以下のコマンドは、SMB 共有への接続方法およびサブディレクトリーからのファイルのダウンロード方法を表示します。
~]# smbclient -U DOMAIN\user_name //server_name/share_name \
       -c "cd /example/ ; get example.txt ; exit"

16.1.10.6. smbcontrol ユーティリティーの使用

smbcontrol ユーティリティーを使用すると、smbdnmbdwinbindd、またはこれらすべてのサービスへコマンドメッセージを送信できます。これらの制御メッセージは、たとえば、サービスに対して設定を再度読み込むなどの指示を出します。

例16.12 smbdnmbd、および winbindd サービスの設定を再読み込み

たとえば、smbdnmbd、および winbindd の設定を再読み込みするには、reload-config メッセージタイプを all 送信先に送信します。
~]# smbcontrol all reload-config
詳細および利用可能なコマンドメッセージタイプの一覧は、man ページの smbcontrol(1) を参照してください。

16.1.10.7. smbpasswd ユーティリティーの使用

smbpasswd ユーティリティーは、ローカルの Samba データベースのユーザーアカウントおよびパスワードを管理します。
ユーザーとしてコマンドを実行すると、smbpasswd はユーザーの Samba パスワードを変更します。以下に例を示します。
[user@server ~]$ smbpasswd
New SMB password:
Retype new SMB password:
root ユーザーとして smbpasswd を実行した場合は、ユーティリティーを使用して、以下のようなことができます。
  • 新規ユーザーを作成します。
    [root@server ~]# smbpasswd -a user_name
    New SMB password:
    Retype new SMB password:
    Added user user_name.

    注記

    Samba データベースにユーザーを追加する前に、ローカルのオペレーティングシステムにアカウントを作成する必要があります。「新規ユーザーの追加」 を参照してください。
  • Samba ユーザーを有効化します。
    [root@server ~]# smbpasswd -e user_name
    Enabled user user_name.
  • Samba ユーザーを無効化します。
    [root@server ~]# smbpasswd -x user_name
    Disabled user user_name.
  • ユーザーを削除します。
    [root@server ~]# smbpasswd -x user_name
    Deleted user user_name.
詳細は、man ページの smbpasswd(8) を参照してください。

16.1.10.8. smbstatus ユーティリティーの使用

smbstatus ユーティリティーは以下についてレポートします。
  • smbd デーモンの PID ごとの Samba サーバーへの接続。このレポートには、ユーザー名、プライマリーグループ、SMB プロトコルバージョン、暗号化、および署名情報が含まれています。
  • Samba 共有ごとの接続。このレポートには、smbd デーモンの PID、接続するマシンの IP、接続が確立した時間のタイムスタンプ、暗号化、および署名情報が含まれます。
  • ロックされたファイルの一覧。このレポートエントリーには、便宜的ロック (oplock) のタイプなど、さらなる詳細が含まれます。

例16.13 smbstatus ユーティリティーの出力

~]# smbstatus

Samba version 4.6.2
PID  Username              Group                Machine                            Protocol Version  Encryption  Signing
-----------------------------------------------------------------------------------------------------------------------------
963  DOMAIN\administrator  DOMAIN\domain users  client-pc  (ipv4:192.0.2.1:57786)  SMB3_02           -           AES-128-CMAC

Service  pid  Machine    Connected at                  Encryption  Signing:
-------------------------------------------------------------------------------
example  969  192.0.2.1  Mo Sep  1 10:00:00 2017 CEST  -           AES-128-CMAC

Locked files:
Pid  Uid    DenyMode   Access    R/W     Oplock      SharePath           Name      Time
------------------------------------------------------------------------------------------------------------
969  10000  DENY_WRITE 0x120089  RDONLY  LEASE(RWH)  /srv/samba/example  file.txt  Mon Sep  1 10:00:00 2017
詳細は、man ページの smbstatus(1) を参照してください。

16.1.10.9. smbtar ユーティリティーの使用

smbtar ユーティリティーは、SMB 共有のコンテンツまたはそのサブディレクトリーをバックアップし、tar アーカイブにコンテンツを保存します。または、テープデバイスにコンテンツを書き込むことも可能です。
たとえば、//server/example/ 共有上の demo ディレクトリーのコンテンツをバックアップして、/root/example.tar アーカイブにコンテンツを保存するには、以下を実行します。
~]# smbtar -s server -x example -u user_name -p password -t /root/example.tar
詳細は、man ページの smbtar(1) を参照してください。

16.1.10.10. testparm ユーティリティーの使用

16.1.10.11. wbinfo ユーティリティーの使用

wbinfo ユーティリティーはクエリーを実行し、winbindd サービスによって作成され、使用された情報を返します。

注記

winbindd サービスは、wbinfo を使用できるように設定および実行される必要があります。
たとえば、以下のような目的で wbinfo を使用することができます。
  • ドメインユーザーの一覧表示
    ~]# wbinfo -u
    AD\administrator
    AD\guest
    ...
  • ドメイングループの一覧表示
    ~]# wbinfo -g
    AD\domain computers
    AD\domain admins
    AD\domain users
    ...
  • ユーザーの SID の表示
    ~]# wbinfo --name-to-sid="AD\administrator"
    S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
  • ドメインおよび信頼に関する情報の表示
    ~]# wbinfo --trusted-domains --verbose
    Domain Name   DNS Domain            Trust Type  Transitive  In   Out
    BUILTIN                             None        Yes         Yes  Yes
    server                              None        Yes         Yes  Yes
    DOMAIN1       domain1.example.com   None        Yes         Yes  Yes
    DOMAIN2       domain2.example.com   External    No          Yes  Yes
詳細は、man ページの wbinfo(1) を参照してください。

16.1.11. 関連資料

  • Red Hat Samba パッケージには、このパッケージがインストールするすべての Samba コマンドおよび設定ファイルの man ページが含まれます。たとえば、/etc/samba/smb.conf ファイル内に設定可能なすべての設定パラメーターを説明するこのファイルの man ページを表示するには、以下を実行します。
    ~]# man 5 smb.conf
  • /usr/share/docs/samba-version/: Samba プロジェクトが提供する一般的なドキュメント、スクリプトの例、および LDAP スキーマファイルが含まれます。
  • Red Hat Cluster Storage Administration Guide: GlusterFS ボリューム上に保存されたディレクトリーを共有するための Samba および Clustered Trivial Database (CDTB) のセットアップに関する情報を提供します。
  • Red Hat Enterprise Linux High Availability Add-on の管理の『「Red Hat Enterprise Linux High Availability Add-on Administration」』の章では、Samba の高可用性インストールの設定方法を説明します。
  • Red Hat Enterprise Linux 上への SMB 共有のマウントに関する詳細は、『Red Hat ストレージ管理ガイド』の該当するセクションを参照してください。