第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) プロトコルを実装します。SMB プロトコルは、ファイル共有、共有プリンターなど、サーバーのリソースにアクセスするのに使用されます。また、Samba は、Microsoft Windows が使用する分散コンピューティング環境のリモートプロシージャコール (DCE RPC) のプロトコルを実装します。
Samba は以下のように実行できます。
- Active Directory (AD) または NT4 ドメインメンバー
- スタンドアロンサーバー
NT4 プライマリードメインコントローラー (PDC) またはバックアップドメインコントローラー (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 プロトコルを使用してファイル共有およびプリントサービスを提供します。また、サービスは、リソースのロックと、接続ユーザーの認証を担当します。
smbsystemdサービスが起動し、smbdデーモンが停止します。smbdサービスを使用するには、samba パッケージをインストールします。nmbdこのサービスは、NetBIOS over IPv4 プロトコルを使用してホスト名および IP 解決を提供します。名前解決に加え、
nmbdサービスで SMB ネットワークを参照して、ドメイン、作業グループ、ホスト、ファイル共有、およびプリンターを探すことができます。このため、サービスはこの情報をブロードキャストクライアントに直接報告するか、ローカルまたはマスターのブラウザーに転送します。nmbsystemdサービスは、nmbdデーモンを起動し、停止します。最近の SMB ネットワークは、クライアントおよび IP アドレスの解決に DNS を使用することに注意してください。
nmbdサービスを使用するには、samba パッケージをインストールします。winbinddwinbinddサービスは、Name Service Switch (NSS) のインターフェイスを提供し、ローカルシステムで AD または NT4 ドメインユーザーおよびグループを使用します。これにより、たとえばドメインユーザーを、Samba サーバーにホストされるサービスや他のローカルサービスに認証できます。winbindsystemdサービスは、winbinddデーモンを開始および停止します。Samba をドメインメンバーとして設定する場合は、
smbdサービスの前にwinbinddを起動する必要があります。そうしないと、ドメインユーザーおよびグループはローカルシステムで使用できなくなります。winbinddサービスを使用するには、samba-winbind パッケージをインストールします。重要Red Hat は、ドメインユーザーおよびグループをローカルシステムに提供するために、Samba を、
winbinddサービスを使用するサーバーとして実行することのみをサポートします。Windows アクセス制御リスト (ACL) サポートの欠落や NT LAN マネージャー (NTLM) フォールバックなどの特定の制限のため、Samba でのシステムセキュリティーサービスデーモン (SSSD) の使用は現在これらのユースケースではサポートされていません。詳細は、Red Hat ナレッジベースの記事 What is the support status for Samba file server running on IdM clients or directly enrolled AD clients where SSSD is used as the client daemon を参照してください。
16.1.2. testparm ユーティリティーを使用した smb.conf ファイルの検証
testparm ユーティリティーは、/etc/samba/smb.conf ファイルの Samba 設定が正しいことを確認します。このユーティリティーは、無効なパラメーターおよび値を検出しますが、ID マッピングなどの間違った設定も検出します。testparm が問題を報告しないと、Samba サービスは /etc/samba/smb.conf ファイルを正常に読み込みます。testparm は、設定されたサービスが利用可能であること、または期待通りに機能するかを確認できないことに注意してください。
Red Hat では、このファイルの変更後に毎回 testparm を使用して、/etc/samba/smb.conf ファイルを検証することが推奨されます。
/etc/samba/smb.conf ファイルを確認するには、root ユーザーとして testparm ユーティリティーを実行してください。testparm が設定内の間違ったパラメーター、値、またはその他のエラーを報告する場合は、問題を修正してから再度ユーティリティーを実行してください。
例16.1 testparm の使用
以下の出力は、存在しないパラメーターおよび間違った ID マッピング設定を報告しています。
testparm
~]# 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 をドメインメンバーとしてセットアップ」 を参照してください。
詳細は、smb.conf(5) man ページの security パラメーターに関する説明を参照してください。
16.1.4. Samba をスタンドアロンサーバーとして設定
特定の状況では、管理者はドメインメンバーではない Samba サーバーのセットアップを必要とします。このインストールモードでは、Samba はユーザーを中央 DC ではなくローカルデータベースに認証します。また、ゲストアクセスを有効にして、ユーザーが、認証なしで 1 つまたは複数のサービスに接続できるようにすることもできます。
16.1.4.1. スタンドアロンサーバーのサーバー設定の設定
Samba をスタンドアロンサーバーとしてセットアップ
Samba をスタンドアロンサーバーとして設定
samba パッケージをインストールします。
yum install samba
~]# yum install sambaCopy to Clipboard Copied! /etc/samba/smb.confファイルを編集して、以下のパラメーターを設定します。[global] workgroup = Example-WG netbios name = Server security = user log file = /var/log/samba/%m.log log level = 1
[global] workgroup = Example-WG netbios name = Server security = user log file = /var/log/samba/%m.log log level = 1Copy to Clipboard Copied! この設定では、
Example-WGワークグループに、スタンドアロンサーバー (Server) を定義します。また、この設定により最小レベル (1) でのログ記録が可能になり、ログファイルは/var/log/samba/ディレクトリーに保存されます。Samba は、log fileパラメーターの%mマクロを、接続しているクライアントの NetBIOS 名までデプロイメントします。これにより、クライアントごとに個別のログファイルが有効になります。詳細は、smb.conf (5) man ページのパラメーターの説明を参照してください。
ファイルまたはプリンターの共有を設定します。参照:
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。- 認証が必要な共有を設定する場合は、ユーザーアカウントを作成します。詳細は、「ローカルユーザーアカウントの作成および有効化」 を参照してください。
firewall-cmdユーティリティーを使用して必要なポートを開き、ファイアウォール設定を再読み込みします。firewall-cmd --permanent --add-port={139/tcp,445/tcp} firewall-cmd --reload~]# firewall-cmd --permanent --add-port={139/tcp,445/tcp} ~]# firewall-cmd --reloadCopy to Clipboard Copied! smbサービスを起動します。systemctl start smb
~]# systemctl start smbCopy to Clipboard Copied! 必要に応じて、
smbサービスがシステムの起動時に自動的に起動するようにします。systemctl enable smb
~]# systemctl enable smbCopy to Clipboard Copied!
16.1.4.2. ローカルユーザーアカウントの作成および有効化
共有への接続時にユーザーが認証を行えるようにするには、オペレーティングシステムと Samba データベースの両方で Samba ホストにアカウントを作成する必要があります。Samba では、ファイルシステムオブジェクトでアクセス制御リスト (ACL) を検証するオペレーティングシステムアカウントと、接続ユーザーの認証を行う Samba アカウントが必要です。
passdb backend = tdbsam のデフォルト設定を使用すると、Samba はユーザーアカウントを /var/lib/samba/private/passdb.tdb データベースに保存します。
たとえば、example Samba ユーザーを作成するには、以下を実行します。
Samba ユーザーの作成
オペレーティングシステムアカウントを作成します。
useradd -M -s /sbin/nologin example
~]# useradd -M -s /sbin/nologin exampleCopy to Clipboard Copied! 前述のコマンドは、ホームディレクトリーを作成することなく
exampleアカウントを追加します。アカウントが Samba への認証のみに使用される場合は、/sbin/nologinコマンドをシェルとして割り当て、アカウントがローカルでログインしないようにします。オペレーティングシステムのアカウントにパスワードを設定して、これを有効にします。
passwd example
~]# passwd example Enter new UNIX password: password Retype new UNIX password: password passwd: password updated successfullyCopy to Clipboard Copied! Samba は、オペレーティングシステムのアカウントに設定されたパスワードを使用して認証を行いません。ただし、アカウントを有効にするには、パスワードを設定する必要があります。アカウントが無効になると、そのユーザーが接続した時に Samba がアクセスを拒否します。
Samba データベースにユーザーを追加し、そのアカウントにパスワードを設定します。
smbpasswd -a example
~]# smbpasswd -a example New SMB password: password Retype new SMB password: password Added user example.Copy to Clipboard Copied! このアカウントを使用して Samba 共有に接続する場合に、このパスワードを使用して認証を行います。
Samba アカウントを有効にします。
smbpasswd -e example
~]# smbpasswd -e example Enabled user example.Copy to Clipboard Copied!
16.1.5. Samba をドメインメンバーとしてセットアップ
AD または NT4 ドメインを実行する管理者は多くの場合、ドメインのメンバーとして Red Hat Enterprise Linux サーバーに参加するために Samba を使用したいと考えています。これを使用すると、以下が可能になります。
- その他のドメインメンバーのドメインリソースにアクセスする
-
sshdなどのローカルサービスに対してドメインユーザーを認証する - サーバーにホストされているディレクトリーおよびプリンターを共有して、ファイルサーバーおよびプリントサーバーとして動作する
16.1.5.1. ドメインの参加
Red Hat Enterprise Linux システムをドメインに参加させるには、以下を実行します。
Red Hat Enterprise Linux システムの、ドメインへの参加
以下のパッケージをインストールします。
yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools~]# yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-toolsCopy to Clipboard Copied! ドメインメンバーでディレクトリーまたはプリンターを共有するには、samba パッケージをインストールします。
yum install samba
~]# yum install sambaCopy to Clipboard Copied! AD に参加する場合は、追加で samba-winbind-krb5-locator パッケージをインストールします。
yum install samba-winbind-krb5-locator
~]# yum install samba-winbind-krb5-locatorCopy to Clipboard Copied! このプラグインを使用すると、Kerberos は DNS サービスレコードを使用して、AD サイトに基づいて鍵配布センター (KDC) を探すことができます。
あるいは、既存の
/etc/samba/smb.confSamba 設定ファイルの名前を変更します。mv /etc/samba/smb.conf /etc/samba/smb.conf.old
~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.oldCopy to Clipboard Copied! ドメインに参加します。たとえば、ドメイン
ad.example.comに参加するには、以下のコマンドを実行します。realm join --membership-software=samba --client-software=winbind ad.example.com
~]# realm join --membership-software=samba --client-software=winbind ad.example.comCopy to Clipboard Copied! 上記のコマンドを使用すると、
realmユーティリティーが自動的に以下を実行します。-
ad.example.comドメインのメンバーシップに/etc/samba/smb.confファイルを作成します。 -
ユーザーおよびグループの検索用の
winbindモジュールを、/etc/nsswitch.confファイルに追加します。 -
/etc/pam.d/ディレクトリーの PAM (プラグ可能な認証モジュール) 設定ファイルを更新します。 winbindサービスを起動し、システムの起動時にサービスを起動できるようにします。realmユーティリティーに関する詳細は、realm(8) の man ページと、Red Hat Windows Integration Guideの関連のセクションを参照してください。
-
-
必要に応じて、
/etc/samba/smb.confファイルの別の ID マッピングバックエンド、またはカスタマイズした ID マッピングを設定します。詳細は、「ID マッピングについて」 を参照してください。 - 必要に応じて設定を検証します。「Samba がドメインメンバーとして正しく参加されたことを確認」を参照してください。
winbinddが実行していることを確認します。systemctl status winbind
~]# systemctl status winbindCopy to Clipboard Copied! 重要Samba を有効にして、ドメインユーザーおよびグループ情報をクエリーするには、
smbdを起動する前にwinbinddサービスを起動する必要があります。samba パッケージをインストールしてディレクトリーおよびプリンターを共有する場合は、
smbdサービスを起動します。systemctl start smb
~]# systemctl start smbCopy to Clipboard Copied!
16.1.5.2. Samba がドメインメンバーとして正しく参加されたことを確認
ドメインメンバーとして Red Hat Enterprise Linux に参加した後、様々なテストを実行して正常に参加できたことを確認します。参照:
オペレーティングシステムが、ドメインのユーザーアカウントおよびグループを取得できるかどうかの検証
getent ユーティリティーを使用して、オペレーティングシステムがドメインユーザーおよびグループを取得できることを確認します。以下に例を示します。
ADドメインのadministratorアカウントをクエリーするには、以下を実行します。getent passwd AD\\administrator
~]# getent passwd AD\\administrator AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bashCopy to Clipboard Copied! ADドメイン内のDomain Usersグループのメンバーにクエリーするには、以下を実行します。getent group "AD\\Domain Users"
~]# getent group "AD\\Domain Users" AD\domain users:x:10000:userCopy to Clipboard Copied!
コマンドが正常に機能する場合は、ファイルおよびディレクトリーに権限を設定する際にドメインユーザーとグループを使用できるかを確認してください。たとえば、/srv/samba/example.txt ファイルの所有者を AD\administrator に設定し、グループを AD\Domain Users に設定するには、以下のコマンドを実行します。
chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
~]# chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
AD ドメインユーザーが Kerberos チケットを取得できるかどうかの確認
AD 環境では、DC から Kerberos チケットを取得できます。たとえば、administrator ユーザーが Kerberos チケットを取得できるかどうかを確認するには、以下を実行してください。
kinit ユーティリティーおよび klist ユーティリティーを使用するには、Samba ドメインメンバー上の krb5-workstation パッケージをインストールします。
Kerberos チケットの取得
administrator@AD.EXAMPLE.COMプリンシパルのチケットを取得します。kinit administrator@AD.EXAMPLE.COM
~]# kinit administrator@AD.EXAMPLE.COMCopy to Clipboard Copied! キャッシュされた Kerberos チケットを表示します。
klist
~]# 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:19Copy to Clipboard Copied!
利用可能なドメインのリスト表示
winbindd サービスで利用可能なすべてのドメインをリスト表示するには、以下を入力します。
wbinfo --all-domains
~]# wbinfo --all-domains
Samba がドメインメンバーとして適切に参加すると、このコマンドは組み込みおよびローカルのホスト名を表示し、ドメインの Samba は信頼されるドメインを含むメンバーとなります。
例16.2 利用可能なドメインの表示
wbinfo --all-domains
~]# 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 範囲
以下は、デフォルト (*)、AD-DOM、および TRUST-DOM のドメインの非オーバーランディングの ID マッピング範囲を示しています。
[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
[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 つのドメインに割り当てられるのは 1 つの範囲だけです。したがって、ドメイン範囲間で十分な容量を残しておきます。これにより、ドメインが拡大した場合に、後で範囲を拡張できます。
後で別の範囲をドメインに割り当てると、このユーザーおよびグループが作成したファイルおよびディレクトリーの所有権が失われます。
16.1.5.3.2. * デフォルトドメイン
ドメイン環境では、以下の各 ID マッピング設定を追加します。
- Samba サーバーがメンバーとなっているドメイン
- Samba サーバーにアクセスできる信頼された各ドメイン
ただし、Samba が、その他のすべてのオブジェクトに、デフォルトドメインから ID を割り当てます。これには以下が含まれます。
- ローカルの Samba ユーザーおよびグループ
-
Samba の組み込みアカウントおよびグループ (
BUILTIN\Administratorsなど)
Samba が正常に機能できるようにするには、このセクションで説明されているデフォルトのドメインを設定する必要があります。
割り当てられた ID を永続的に格納するには、デフォルトのドメインバックエンドを書き込み可能にする必要があります。
デフォルトドメインには、以下のいずれかのバックエンドを使用できます。
tdbデフォルトのドメインを、
tdbバックエンドを使用するように設定する場合は、ID 範囲を設定します。この ID 範囲には、将来作成されるオブジェクトや、定義されたドメイン ID マッピング設定には含まれないオブジェクトを追加できます。たとえば、
/etc/samba/smb.confファイルの[global]セクションで以下を設定します。idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999Copy to Clipboard Copied! 詳細は、「
tdbID マッピングバックエンドの使用」 を参照してください。autoridautoridバックエンドを使用するように、デフォルトのドメインを設定する場合、ドメイン用の ID マッピング設定を追加するかどうかは任意になります。たとえば、
/etc/samba/smb.confファイルの[global]セクションで以下を設定します。idmap config * : backend = autorid idmap config * : range = 10000-999999
idmap config * : backend = autorid idmap config * : range = 10000-999999Copy to Clipboard Copied! 詳細は、
autoridバックエンドの設定 を参照してください。
16.1.5.4. 様々な ID マッピングバックエンド
Samba は、特定の設定に対して異なる ID マッピングバックエンドを提供します。最も頻繁に使用されるバックエンドは、以下の通りです。
| バックエンド | ユースケース |
|---|---|
|
|
|
|
| AD ドメインのみ |
|
| AD ドメインおよび NT4 ドメイン |
|
|
AD、NT4、および |
以下のセクションでは、利点、バックエンドを使用する際の推奨シナリオ、および設定方法を説明します。
16.1.5.4.1. tdb ID マッピングバックエンドの使用
winbindd サービスは、デフォルトで書き込み可能な tdb ID マッピングバックエンドを使用して、セキュリティー識別子 (SID)、UID、および GID のマッピングテーブルを格納します。これには、ローカルユーザー、グループ、組み込みプリンシパルが含まれます。
このバックエンドは、* デフォルトドメインにのみ使用してください。以下に例を示します。
idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb
idmap config * : range = 10000-999999
* デフォルトドメインに関する詳細は、「* デフォルトドメイン」 を参照してください。
16.1.5.4.2. ad ID マッピングバックエンドの使用
ad ID マッピングバックエンドは、読み取り専用 API を実装し、AD からアカウントおよびグループの情報を読み取ります。これには、以下の利点があります。
- ユーザーとグループの全設定は、AD に集中的に保存されます。
- ユーザーおよびグループの ID は、このバックエンドを使用するすべての Samba サーバーで一貫しています。
- ID は、破損する可能性のあるローカルデータベースには保存されないため、ファイルの所有権は失われません。
ad バックエンドは、AD から以下の属性を読み込みます。
| AD 属性名 | オブジェクトタイプ | マッピング先 |
|---|---|---|
|
| ユーザーおよびグループ | オブジェクトのユーザー名またはグループ名 |
|
| ユーザー | ユーザー ID (UID) |
|
| グループ | グループ ID (GID) |
|
| ユーザー | ユーザーのシェルのパス |
|
| ユーザー | ユーザーのホームディレクトリーのパス |
|
| ユーザー | プライマリーグループ ID |
[a]
idmap config DOMAIN:unix_nss_info = yes を設定している場合に限り、Samba がこの属性を読み込みます。
[b]
idmap config DOMAIN:unix_primary_group = yes を設定している場合に限り、Samba がこの属性を読み込みます。
| ||
ad バックエンドの前提条件
ad ID マッピングバックエンドを使用する場合:
-
ユーザーおよびグループはいずれも、AD で一意の ID が設定され、ID が、
/etc/samba/smb.confファイルで設定されている範囲内にある。ID が範囲外にあるオブジェクトは、Samba サーバーでは利用できません。 -
ユーザーおよびグループには、AD ですべての必須属性が設定されている。必要な属性がないと、ユーザーまたはグループは Samba サーバーで使用できなくなります。必要な属性は、設定によって異なります。表16.2「
adバックエンドが、ユーザーおよびグループオブジェクトから読み取る属性」を参照してください。
ad バックエンドの設定
ad ID マッピングバックエンドを使用するために Samba AD メンバーを設定するには、以下に該当する必要があります。
ドメインメンバー上での ad バックエンドの設定
/etc/samba/smb.confファイルの[global]セクションを編集します。デフォルトドメイン (
*) に ID マッピング設定が存在しない場合は追加します。以下に例を示します。idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999Copy to Clipboard Copied! デフォルトドメインに関する詳細は 「
*デフォルトドメイン」 を参照してください。AD ドメインの
adID マッピングバックエンドを有効にします。idmap config DOMAIN : backend = ad
idmap config DOMAIN : backend = adCopy to Clipboard Copied! AD ドメインのユーザーおよびグループに割り当てられている ID の範囲を設定します。以下に例を示します。
idmap config DOMAIN : range = 2000000-2999999
idmap config DOMAIN : range = 2000000-2999999Copy to Clipboard Copied! 重要この範囲は、このサーバーの他のドメイン設定と重複させることはできません。また、この範囲には、今後割り当てられる ID がすべて収まる大きさを設定する必要があります。詳細は、「ID の範囲の計画」 を参照してください。
Samba が AD から属性を読み取る際に RFC 2307 スキーマを使用するように設定します。
idmap config DOMAIN : schema_mode = rfc2307
idmap config DOMAIN : schema_mode = rfc2307Copy to Clipboard Copied! Samba が、対応する AD 属性からログインシェルおよびユーザーホームディレクトリーのパスを読み取るようにする場合は、以下を設定します。
idmap config DOMAIN : unix_nss_info = yes
idmap config DOMAIN : unix_nss_info = yesCopy to Clipboard Copied! または、すべてのユーザーに適用される、ドメイン全体のホームディレクトリーのパスおよびログインシェルを統一して設定できます。以下に例を示します。
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%UCopy to Clipboard Copied! 変数の置換の詳細は、smb.conf(5) man ページの VARIABLE SUBSTITUTIONS セクションを参照してください。
デフォルトでは、Samba は、ユーザーオブジェクトの
primaryGroupID属性を、Linux のユーザーのプライマリーグループとして使用します。または、代わりにgidNumber属性に設定されている値を使用するように Samba を設定できます。idmap config DOMAIN : unix_primary_group = yes
idmap config DOMAIN : unix_primary_group = yesCopy to Clipboard Copied!
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。Samba 設定を再読み込みします。
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! - 設定が期待どおりに機能することを確認します。「オペレーティングシステムが、ドメインのユーザーアカウントおよびグループを取得できるかどうかの検証」を参照してください。
詳細は、smb.conf(5) と idmap_ad(8) の man ページを参照してください。
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 の算出方法は、idmap_rid(8) man ページを参照してください。
rid ID マッピングバックエンドは、AD ドメインおよび NT4 ドメインのアルゴリズムマッピングスキームに基づいてアカウントおよびグループの情報を計算する読み取り専用 API を実装します。バックエンドを設定する場合は、idmap config DOMAIN: range パラメーターで、RID の最小値および最大値を設定する必要があります。Samba は、このパラメーターで設定される RID の最小値および最大値を超えるユーザーまたはグループをマッピングしません。
読み取り専用のバックエンドとして、rid は、BUILTIN グループなど、新しい ID を割り当てることができません。したがって、* デフォルトドメインにはこのバックエンドを使用しないでください。
利点
- 設定された範囲内の RID があるドメインユーザーとグループはすべて、自動的にドメインメンバーで利用可能になります。
- ID、ホームディレクトリー、およびログインシェルを手動で割り当てる必要はありません。
短所
- すべてのドメインユーザーは、割り当てられた同じログインシェルとホームディレクトリーを取得します。ただし、変数を使用できます。
-
同じ ID 範囲設定で
ridバックエンドを使用している Samba ドメインメンバーでは、ユーザー ID とグループ ID が同じになります。 - ドメインメンバーで個々のユーザーまたはグループを除外して、利用できないようにすることはできません。設定されている範囲外にあるユーザーとグループのみが除外されます。
-
異なるドメインのオブジェクトの RID が同じ場合は、
winbinddサービスが ID の計算に使用する式に基づき、複数ドメインの環境で重複する ID が発生する場合があります。
rid バックエンドの設定
Samba ドメインメンバーが rid ID マッピングバックエンドを使用するように設定するには、以下が必要です。
ドメインメンバー上での rid バックエンドの設定
/etc/samba/smb.confファイルの[global]セクションを編集します。デフォルトドメイン (
*) に ID マッピング設定が存在しない場合は追加します。以下に例を示します。idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999Copy to Clipboard Copied! デフォルトドメインに関する詳細は 「
*デフォルトドメイン」 を参照してください。ドメインの
ridID マッピングバックエンドを有効にします。idmap config DOMAIN : backend = rid
idmap config DOMAIN : backend = ridCopy to Clipboard Copied! 今後割り当てられるすべての RID が収まる大きさの範囲を設定します。以下に例を示します。
idmap config DOMAIN : range = 2000000-2999999
idmap config DOMAIN : range = 2000000-2999999Copy to Clipboard Copied! Samba は、そのドメインの RID がその範囲内にないユーザーおよびグループを無視します。
重要この範囲は、このサーバーの他のドメイン設定と重複させることはできません。詳細は、「ID の範囲の計画」 を参照してください。
すべてのマッピングユーザーに割り当てられるシェルおよびホームディレクトリーのパスを設定します。以下に例を示します。
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%UCopy to Clipboard Copied! 変数の置換の詳細は、smb.conf(5) man ページの VARIABLE SUBSTITUTIONS セクションを参照してください。
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。Samba 設定を再読み込みします。
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! - 設定が期待どおりに機能することを確認します。「オペレーティングシステムが、ドメインのユーザーアカウントおよびグループを取得できるかどうかの検証」を参照してください。
16.1.5.4.4. autorid ID マッピングバックエンドの使用
autorid バックエンドは、rid ID マッピングバックエンドと同様の動作をしますが、異なるドメインに対して自動的に ID を割り当てることができます。これにより、以下の状況で autorid バックエンドを使用できます。
-
*デフォルトドメインのみ -
*デフォルトドメインと追加のドメインでは、追加のドメインごとに ID マッピング設定を作成する必要はありません。 - 特定のドメインのみ
利点
- 設定された範囲内に計算した UID と GID があるすべてのドメインユーザーおよびグループは、ドメインメンバーで自動的に利用可能になります。
- ID、ホームディレクトリー、およびログインシェルを手動で割り当てる必要はありません。
- 複数ドメイン環境内の複数のオブジェクトが同じ RID を持つ場合でも、重複する ID はありません。
短所
- Samba ドメインメンバー間では、ユーザー ID とグループ ID は同じではありません。
- すべてのドメインユーザーは、割り当てられた同じログインシェルとホームディレクトリーを取得します。ただし、変数を使用できます。
- ドメインメンバーで個々のユーザーまたはグループを除外して、利用できないようにすることはできません。計算された UID または GID が、設定された範囲外にあるユーザーとグループのみが除外されます。
autorid バックエンドの設定
* デフォルトドメイン向けに autorid ID マッピングバックエンドを使用するために Samba ドメインメンバーを設定するには、以下を実行します。
デフォルトドメインに autorid を使用する場合は、ドメイン用の ID マッピング設定を追加するかどうかは任意です。
ドメインメンバー上での autorid バックエンドの設定
/etc/samba/smb.confファイルの[global]セクションを編集します。*デフォルトドメインのautoridID マッピングバックエンドを有効にします。idmap config * : backend = autorid
idmap config * : backend = autoridCopy to Clipboard Copied! 既存および将来の全オブジェクトに ID を割り当てられる大きさの範囲を設定します。以下に例を示します。
idmap config * : range = 10000-999999
idmap config * : range = 10000-999999Copy to Clipboard Copied! Samba は、このドメインで計算した ID が範囲内にないユーザーおよびグループを無視します。バックエンドの計算された ID の詳細は、idmap_autorid(8) man ページの THE MAPPING FORMULAS セクションを参照してください。
警告範囲を設定し、Samba がそれを使用して開始してからは、範囲の上限を小さくすることはできません。これ以外の範囲への変更は、新しい ID の割り当てとなり、その結果ファイルの所有権を失うことになります。
必要に応じて、範囲サイズを設定します。以下に例を示します。
idmap config * : rangesize = 200000
idmap config * : rangesize = 200000Copy to Clipboard Copied! Samba は、
idmap config * : rangeパラメーターに設定されている範囲からすべての ID を取得するまで、各ドメインのオブジェクトにこの数の連続 ID を割り当てます。詳細は、idmap_autorid(8) man ページのrangesizeパラメーターの説明を参照してください。すべてのマッピングユーザーに割り当てられるシェルおよびホームディレクトリーのパスを設定します。以下に例を示します。
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%UCopy to Clipboard Copied! 変数の置換の詳細は、smb.conf(5) man ページの VARIABLE SUBSTITUTIONS セクションを参照してください。
必要に応じて、ドメイン用の ID マッピング設定を追加します。個別のドメインの設定が利用できない場合、Samba は以前に設定した
*デフォルトドメインのautoridバックエンド設定を使用して ID を計算します。重要各ドメインに追加のバックエンドを設定する場合は、すべての ID マッピング設定の範囲がオーバーラップしないようにしてください。詳細は、「ID の範囲の計画」 を参照してください。
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。Samba 設定を再読み込みします。
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! - 設定が期待どおりに機能することを確認します。「オペレーティングシステムが、ドメインのユーザーアカウントおよびグループを取得できるかどうかの検証」を参照してください。
16.1.7. Samba プリントサーバーの設定
Samba をプリントサーバーとして設定すると、ネットワーク上のクライアントが Samba を使用して印刷できます。さらに、Windows クライアントは、(Samba サーバーが設定されている場合は) Samba サーバーからドライバーをダウンロードすることもできます。
プリンターを共有する前に、Samba をセットアップします。
16.1.7.1. Samba の spoolssd サービス
Samba の spoolssd は、smbd サービスに統合されるサービスです。Samba 設定の spoolssd を有効にすると、大量のジョブまたはプリンターがあるプリントサーバーのパフォーマンスが大幅に向上します。
spoolssd がないと、Samba は smbd プロセスをフォークし、各プリントジョブの printcap キャッシュを初期化します。プリンターが多数あると、キャッシュの初期化中に smbd サービスが数秒間応答しなくなることがあります。spoolssd サービスを使用すると、遅延なしでプリントジョブを処理している、プレフォークされた smbd プロセスを開始することができます。主な spoolssd smbd プロセスは、少ないメモリーを使用し、子プロセスをフォークして終了します。
spoolssd サービスを有効にするには、以下を実行します。
spoolssd サービスの有効化
/etc/samba/smb.confファイルの[global]セクションを編集します。以下のパラメーターを追加します。
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
rpc_server:spoolss = external rpc_daemon:spoolssd = forkCopy to Clipboard Copied! 必要に応じて、以下のパラメーターを設定できます。
パラメーター デフォルト 詳細 spoolssd:prefork_min_children
5
子プロセスの最小数
spoolssd:prefork_max_children
25
子プロセスの最大数
spoolssd:prefork_spawn_rate
5
新しい接続が確立されると、Samba は、このパラメーターに設定した新しい子プロセスの数を、
spoolssd:prefork_max_childrenに設定された値までフォークします。spoolssd:prefork_max_allowed_clients
100
子プロセスが処理するクライアントの数
spoolssd:prefork_child_min_life
60
子プロセスの最小有効期間 (秒単位)。最小は 60 秒です。
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。smbサービスを再起動します。systemctl restart smb
~]# systemctl restart smbCopy to Clipboard Copied!
サービスを再起動すると、Samba が自動的に smbd 子プロセスを開始します。
ps axf
~]# ps axf
...
30903 smbd
30912 \_ smbd
30913 \_ smbd
30914 \_ smbd
30915 \_ smbd
...
16.1.7.2. Samba でのプリントサーバーのサポートの有効化
プリントサーバーサポートを有効化するには、以下を実行します。
Samba でのプリントサーバーのサポートの有効化
Samba サーバーで CUPS を設定し、そのプリンターを CUPS バックエンドに追加します。詳細は、「印刷設定」 を参照してください。
注記Samba は、CUPS が Samba プリントサーバーにローカルにインストールされている場合に限り、CUPS に印刷ジョブを転送できます。
/etc/samba/smb.confファイルを編集します。spoolssdサービスを有効にする場合は、以下のパラメーターを[global]セクションに追加します。rpc_server:spoolss = external rpc_daemon:spoolssd = fork
rpc_server:spoolss = external rpc_daemon:spoolssd = forkCopy to Clipboard Copied! 詳細は、「Samba の
spoolssdサービス」 を参照してください。印刷バックエンドを設定するには、
[printers]セクションを追加します。[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600
[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600Copy to Clipboard Copied! 重要printers共有名はハードコーディングされており、変更はできません。
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。firewall-cmdユーティリティーを使用して必要なポートを開き、ファイアウォール設定を再読み込みします。firewall-cmd --permanent --add-service=samba firewall-cmd --reload
~]# firewall-cmd --permanent --add-service=samba ~]# firewall-cmd --reloadCopy to Clipboard Copied! smbサービスを再起動します。systemctl restart smb
~]# systemctl restart smbCopy to Clipboard Copied!
サービスを再起動すると、Samba は CUPS バックエンドに設定したすべてのプリンターを自動的に共有します。特定のプリンターのみを手動で共有する場合は、「特定のプリンターの手動共有」 を参照してください。
16.1.7.3. 特定のプリンターの手動共有
Samba をプリントサーバーとして設定している場合、Samba は、デフォルトで CUPS バックエンドで設定されたプリンターをすべて共有します。特定のプリンターのみを共有する場合は、以下を実行します。
特定のプリンターを手動で共有
/etc/samba/smb.confファイルを編集します。[global]セクションで、以下の設定で自動プリンター共有を無効にします。load printers = no
load printers = noCopy to Clipboard Copied! 共有するプリンターごとにセクションを追加します。たとえば、Samba で CUPS バックエンドで
exampleという名前のプリンターをExample-Printerとして共有するには、以下のセクションを追加します。[Example-Printer] path = /var/tmp/ printable = yes printer name = example
[Example-Printer] path = /var/tmp/ printable = yes printer name = exampleCopy to Clipboard Copied! 各プリンターに個別のスプールディレクトリーは必要ありません。
[printers]セクションに設定したのと同じ spool ディレクトリーを、プリンターのpathパラメーターに設定できます。
/etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。Samba 設定を再読み込みします。
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied!
16.1.7.4. Windows クライアント用の自動プリンタードライバーダウンロードの設定
Windows クライアント用に Samba プリントサーバーを実行している場合は、ドライバーをアップロードし、プリンターを事前設定できます。ユーザーがプリンターに接続すると、Windows により、ドライバーが自動的にクライアントにダウンロードされ、インストールされます。ユーザーがインストールするのに、ローカル管理者の権限を必要としません。また、Windows は、トレイの数などの事前設定済みのドライバー設定を適用します。
自動プリンタードライバーダウンロードをセットアップする前に、Samba をプリントサーバーとして設定し、プリンターを共有する必要があります。詳細は、「Samba プリントサーバーの設定」 を参照してください。
16.1.7.4.1. プリンタードライバーに関する基本情報
本セクションでは、プリンタードライバーに関する一般的な情報を説明します。
対応しているドライバーモデルのバージョン
Samba は、Windows 2000 以降および Windows Server 2000 以降でサポートされているプリンタードライバーのモデルバージョン 3 のみに対応します。Samba は、Windows 8 および Windows Server 2012 で導入されたドライバーモデルのバージョン 4 には対応していません。ただし、これ以降の Windows バージョンは、バージョン 3 のドライバーにも対応しています。
パッケージ対応ドライバー
Samba は、パッケージ対応ドライバーに対応していません。
アップロードするプリンタードライバーの準備
Samba プリントサーバーにドライバーをアップロードする場合は、以下を行います。
- ドライバーが圧縮形式で提供されている場合は、ドライバーをデプロイメントします。
一部のドライバーでは、Windows ホストにドライバーをローカルにインストールするセットアップアプリケーションを起動する必要があります。特定の状況では、インストーラーはセットアップの実行中にオペレーティングシステムの一時フォルダーに個別のファイルを抽出します。アップロードにドライバーファイルを使用するには、以下のコマンドを実行します。
- インストーラーを起動します。
- 一時フォルダーから新しい場所にファイルをコピーします。
- インストールをキャンセルします。
プリントサーバーへのアップロードをサポートするドライバーは、プリンターの製造元にお問い合わせください。
クライアントに 32 ビットおよび 64 ビットのプリンター用ドライバーを提供
32 ビットと 64 ビットの両方の Windows クライアントのプリンターにドライバーを提供するには、両方のアーキテクチャーに対して、同じ名前のドライバーをアップロードする必要があります。たとえば、32 ビットのドライバー Example PostScript および 64 ビットのドライバー Example PostScript (v1.0) をアップロードする場合は、その名前が一致しません。その結果、ドライバーのいずれかをプリンターに割り当てることしかできなくなり、両方のアーキテクチャーでそのドライバーが使用できなくなります。
16.1.7.4.2. ユーザーがドライバーをアップロードおよび事前設定できるようにする
プリンタードライバーをアップロードおよび事前設定できるようにするには、ユーザーまたはグループに SePrintOperatorPrivilege 特権が付与されている必要があります。printadmin グループにユーザーを追加する必要があります。Red Hat Enterprise Linux では、samba パッケージをインストールする際に、このグループが自動的に作成されます。printadmin グループには、1000 未満で利用可能な一番小さい動的システムの GID が割り当てられます。
SePrintOperatorPrivilege 権限を printadmin グループに付与するには、次のコマンドを実行します。
net rpc rights grant "printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
~]# 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"
~]# net rpc rights list privileges SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
Enter administrator's password:
SePrintOperatorPrivilege:
BUILTIN\Administrators
DOMAIN\printadmin
16.1.7.4.4. クライアントが Samba プリントサーバーを信頼できるようにする GPO の作成
セキュリティー上の理由から、最新の Windows オペレーティングシステムでは、クライアントが、信頼できないサーバーから、パッケージ対応ではないプリンタードライバーをダウンロードできないようにします。プリントサーバーが AD のメンバーである場合は、Samba サーバーを信頼するために、ドメインに Group Policy Object (GPO) を作成できます。
GPO を作成するには、お使いの Windows コンピューターに Windows Remote Server Administration Tools (RSAT) がインストールされていなければなりません。詳細は Windows ドキュメントを参照してください。
クライアントが Samba プリントサーバーを信頼できるようにする GPO の作成
-
AD ドメインの
管理者ユーザーなど、グループポリシーの編集が可能なアカウントを使用して、Windows コンピューターにログインします。 - Group Policy Management を開きます。
AD ドメインを右クリックし、
Create a GPO in this domain, and Link it hereを選択します。-
Legacy Printer Driver Policyなどの GPO の名前を入力して、 をクリックします。新しい GPO がドメインエントリーの下に表示されます。 -
新たに作成した GPO を右クリックして
Editを選択し、Group Policy Management Editor を開きます。 の順にクリックします。 ウィンドウの右側で、
Point and Print Restrictionをダブルクリックして、ポリシーを編集します。ポリシーを有効にし、以下のオプションを設定します。
-
Users can only point and print to these serversを選択し、このオプションの横にあるフィールドに、Samba プリントサーバーの完全修飾ドメイン名 (FQDN) を入力します。 Security Promptsの両チェックボックスで、Do not show warning or elevation promptを選択します。
-
- をクリックします。
Package Point and Print - Approved serversをダブルクリックして、ポリシーを編集します。- ポリシーを有効にして、 ボタンをクリックします。
Samba プリントサーバーの FQDN を入力します。
-
OKをクリックして、 とポリシープロパティーウィンドウの両方を閉じます。
- Group Policy Management Editor を閉じます。
- Group Policy Management を閉じます。
Windows ドメインメンバーがこのグループポリシーを適用すると、ユーザーがプリンターに接続する際に、プリンタードライバーが Samba サーバーから自動的にダウンロードされます。
グループポリシーの使用に関する詳細は、Windows ドキュメントを参照してください。
16.1.7.4.5. ドライバーのアップロードおよびプリンターの事前設定
Windows クライアントで Print Management アプリケーションを使用してドライバーをアップロードし、Samba プリントサーバーでホストされるプリンターを事前設定します。詳細は Windows ドキュメントを参照してください。
16.1.8. Samba サーバーのパフォーマンスチューニング
本セクションでは、特定の状況における Samba のパフォーマンスを向上させる設定、そしてパフォーマンスを低下させる設定を説明します。
16.1.8.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.8.3. パフォーマンスが低下する可能性のある設定
デフォルトでは、Red Hat Enterprise Linux のカーネルは、ネットワークパフォーマンスが高くなるように調整されています。たとえば、カーネルはバッファーサイズに自動チューニングメカニズムを使用しています。/etc/samba/smb.conf ファイルに socket options パラメーターを設定すると、このカーネル設定が上書きされます。その結果、このパラメーターの設定により、ほとんどの場合は、Samba ネットワークのパフォーマンスが低下します。
カーネルの最適化された設定を使用するには、/etc/samba/smb.conf の [global] セクションから socket options パラメーターを削除します。
16.1.9. 頻繁に使用される Samba コマンドラインユーティリティー
本セクションでは、Samba サーバーを使用する際によく使うコマンドを説明します。
16.1.9.1. net ユーティリティーの使用
net ユーティリティーを使用すると、Samba サーバーで複数の管理タスクを実行できます。本セクションでは、net ユーティリティーで最も頻繁に使用されるサブコマンドを説明します。
詳細は、net(8) man ページを参照してください。
16.1.9.1.1. net ads join コマンドおよび net rpc join コマンドの使用
net ユーティリティーの join サブコマンドを使用すると、Samba を AD ドメインまたは NT4 ドメインに参加させることができます。ドメインに参加するには、/etc/samba/smb.conf ファイルを手動で作成し、必要に応じて PAM などの追加設定を更新する必要があります。
Red Hat は、realm ユーティリティーを使用してドメインに参加させることを推奨します。realm ユーティリティーは、関連するすべての設定ファイルを自動的に更新します。詳細は、「ドメインの参加」 を参照してください。
net コマンドを使用してドメインに参加するには、以下を実行します。
net コマンドを使用したドメインへの参加
以下の設定で
/etc/samba/smb.confファイルを手動で作成します。AD ドメインメンバーの場合:
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALMCopy to Clipboard Copied! NT4 ドメインメンバーの場合:
[global] workgroup = domain_name security = user passdb backend = tdbsam
[global] workgroup = domain_name security = user passdb backend = tdbsamCopy to Clipboard Copied!
-
デフォルトドメインの
*、および参加するドメインの ID マッピング設定を/etc/samba/smb.confの[global]セクションに追加します。詳細は、「ID マッピングについて」 を参照してください。 /etc/samba/smb.confファイルを検証します。testparm
~]# testparmCopy to Clipboard Copied! 詳細は、「
testparmユーティリティーを使用したsmb.confファイルの検証」 を参照してください。ドメイン管理者としてドメインに参加します。
AD ドメインに参加するには、以下のコマンドを実行します。
net ads join -U "DOMAINpass:quotes[administrator]"
~]# net ads join -U "DOMAINpass:quotes[administrator]"Copy to Clipboard Copied! NT4 ドメインに参加するには、以下のコマンドを実行します。
net rpc join -U "DOMAINpass:quotes[administrator]"
~]# net rpc join -U "DOMAINpass:quotes[administrator]"Copy to Clipboard Copied!
/etc/nsswitch.confファイルのデータベースエントリーpasswdおよびgroupにwinbindソースを追加します。passwd: files winbind group: files winbind
passwd: files winbind group: files winbindCopy to Clipboard Copied! winbindサービスを有効にして起動します。systemctl enable winbind systemctl start winbind
~]# systemctl enable winbind ~]# systemctl start winbindCopy to Clipboard Copied! オプションで、
authconfユーティリティーを使用して PAM を設定します。詳細は、Red Hat System-Level Authentication Guide の PAM (プラグ可能な認証モジュール) の使用セクションを参照してください。
AD 環境では、必要に応じて Kerberos クライアントを設定します。
詳細は Red Hat システムレベルの認証ガイド の Configuring a Kerberos Client セクションを参照してください。
16.1.9.1.2. net rpc rights コマンドの使用
Windows では、アカウントおよびグループに特権を割り当て、共有での ACL の設定やプリンタードライバーのアップロードなどの特別な操作を実行できます。Samba サーバーでは、net rpc rights コマンドを使用して権限を管理できます。
権限のリスト表示
利用可能な特権とその所有者をすべて表示するには、net rpc rights list コマンドを使用します。以下に例を示します。
net rpc rights list -U "DOMAINpass:attributes[{blank}]administrator"
Enter DOMAINpass:attributes[{blank}]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 list -U "DOMAINpass:attributes[{blank}]administrator"
Enter DOMAINpass:attributes[{blank}]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"
~]# 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"
~]# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.
16.1.9.1.4. net user コマンドの使用
net user コマンドを使用すると、AD DC または NT4 PDC で以下の操作を実行できます。
- すべてのユーザーアカウントのリストを表示
- ユーザーの追加
- ユーザーの削除
AD ドメイン用の ads、NT4 ドメイン用の rpc などの接続方法の指定は、ドメインユーザーアカウントをリスト表示する場合にのみ必要です。その他のユーザー関連のサブコマンドは、接続メソッドを自動検出できます。
-U user_name パラメーターをコマンドに渡して、要求されたアクションを実行できるユーザーを指定します。
ドメインユーザーアカウントのリスト表示
AD ドメイン内のユーザーをリスト表示するには、以下を実行します。
net ads user -U "DOMAIN\administrator"
~]# net ads user -U "DOMAIN\administrator"
NT4 ドメインのユーザーをリスト表示するには、以下を実行します。
net rpc user -U "DOMAIN\administrator"
~]# net rpc user -U "DOMAIN\administrator"
ユーザーアカウントのドメインへの追加
Samba ドメインメンバーの場合は、net user add コマンドを使用して、ユーザーアカウントをドメインに追加できます。
たとえば、user アカウントをドメインに追加します。
ユーザーアカウントのドメインへの追加
以下のアカウントを追加します。
net user add user password -U "DOMAIN\administrator"
~]# net user add user password -U "DOMAIN\administrator" User user addedCopy to Clipboard Copied! 必要に応じて、リモートプロシージャコール (RPC) シェルを使用して、AD DC または NT4 PDC でアカウントを有効にします。以下に例を示します。
net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name
~]# 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> exitCopy to Clipboard Copied!
ドメインからのユーザーアカウントの削除
Samba ドメインメンバーの場合は、net user delete コマンドを使用して、ドメインからユーザーアカウントを削除できます。
たとえば、ドメインから user アカウントを削除するには、以下のコマンドを実行します。
net user delete user -U "DOMAIN\administrator"
~]# net user delete user -U "DOMAIN\administrator"
User user deleted
16.1.9.2. rpcclient ユーティリティーの使用
rpcclient ユーティリティーを使用すると、ローカルまたはリモートの SMB サーバーでクライアント側の Microsoft Remote Procedure Call (MS-RPC) 機能を手動で実行できます。ただし、ほとんどの機能は、Samba が提供する個別のユーティリティーに統合されています。rpcclient は、MS-PRC 関数のテストにのみ使用します。
たとえば、ユーティリティーを使用すると以下が可能となります。
プリンターのスプールサブシステム (SPOOLSS) を管理します。
例16.9 プリンターへのドライバーの割り当て
rpcclient server_name -U "DOMAINpass:quotes[administrator]" \ -c 'setdriver "printer_name" "driver_name"'~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" \ -c 'setdriver "printer_name" "driver_name"' Enter DOMAINpass:quotes[administrator]s password: Successfully set printer_name to driver driver_name.Copy to Clipboard Copied! SMB サーバーに関する情報を取得します。
例16.10 すべてのファイル共有および共有プリンターのリスト表示
rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'netshareenum'
~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'netshareenum' Enter DOMAINpass:quotes[administrator]s password: netname: Example_Share remark: path: C:\srv\samba\example_share\ password: netname: Example_Printer remark: path: C:\var\spool\samba\ password:Copy to Clipboard Copied! Security Account Manager Remote (SAMR) プロトコルを使用して操作を実行します。
例16.11 SMB サーバー上のユーザーのリスト表示
rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'enumdomusers'
~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'enumdomusers' Enter DOMAINpass:quotes[administrator]s password: user:[user1] rid:[0x3e8] user:[user2] rid:[0x3e9]Copy to Clipboard Copied! スタンドアロンサーバーまたはドメインメンバーに対してコマンドを実行すると、ローカルデータベースのユーザーのリストが表示されます。ADDC または NT4 PDC に対してコマンドを実行すると、ドメインユーザーのリストが表示されます。
サポートされるサブコマンドのリストは、man ページの rpcclient(1) の COMMANDS セクションを参照してください。
16.1.9.3. samba-regedit アプリケーションの使用
プリンター設定などの特定の設定は、Samba サーバーのレジストリーに保存されます。ncurses ベースの samba-regedit アプリケーションを使用して、Samba サーバーのレジストリーを編集できます。
アプリケーションを起動するには、次のコマンドを入力します。
samba-regedit
~]# samba-regedit
次のキーを使用します。
- カーソルを上下に動かして、レジストリーツリーと値の間を移動します。
- Enter - キーを開くか、値を編集します。
-
Tab -
KeyペインとValueペインを切り替えます。 - Ctrl+C: アプリケーションを閉じます。
16.1.9.4. smbcacls ユーティリティーの使用
「smbcacls で SMB 共有上の ACL の管理」を参照してください。
16.1.9.5. smbclient ユーティリティーの使用
smbclient ユーティリティーを使用すると、コマンドラインの FTP クライアントと同様に、SMB サーバーのファイル共有にアクセスできます。たとえば、ファイルを共有にアップロードしたり、共有からダウンロードしたりできます。
たとえば、DOMAIN\user アカウントを使用して server でホストされる example 共有に認証するには、以下のコマンドを実行します。
smbclient -U "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: \>
対話式シェルで利用可能なすべてのコマンドを表示するには、以下のコマンドを実行します。
smb: \> help
smb: \> help
特定のコマンドのヘルプを表示するには、以下のコマンドを実行します。
smb: \> help command_name
smb: \> help command_name
インタラクティブシェルで利用可能なコマンドの詳細と説明は、man ページの smbclient(1) を参照してください。
16.1.9.5.1. 対話モードでの smbclient の使用
-c パラメーターを指定せずに smbclient を使用すると、ユーティリティーは対話モードを開始します。
以下の手順では、SMB 共有に接続し、サブディレクトリーからファイルをダウンロードする方法を説明します。
smbclient を使用して SMB 共有からファイルをダウンロード
共有に接続します。
smbclient -U "DOMAINpass:quotes[user_name]" //server_name/share_name
~]# smbclient -U "DOMAINpass:quotes[user_name]" //server_name/share_nameCopy to Clipboard Copied! /example/ディレクトリーに移動します。smb: \> cd /example/
smb: \> cd /example/Copy to Clipboard Copied! ディレクトリー内のファイルをリスト表示します。
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 availablesmb: \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 availableCopy to Clipboard Copied! 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)
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)Copy to Clipboard Copied! 共有から切断します。
smb: \example\> exit
smb: \example\> exitCopy to Clipboard Copied!
16.1.9.5.2. スクリプトモードでの smbclient の使用
-c commands パラメーターを smbclient へ渡した場合、リモートの SMB 共有上のコマンドを自動的に実行できます。これにより、スクリプトで smbclient を使用できます。
以下のコマンドは、SMB 共有への接続方法およびサブディレクトリーからのファイルのダウンロード方法を表示します。
smbclient -U DOMAINpass:quotes[user_name] //server_name/share_name \
-c "cd /example/ ; get example.txt ; exit"
~]# smbclient -U DOMAINpass:quotes[user_name] //server_name/share_name \
-c "cd /example/ ; get example.txt ; exit"
16.1.9.6. smbcontrol ユーティリティーの使用
smbcontrol ユーティリティーを使用すると、smbd、nmbd、winbindd、またはこのすべてのサービスにコマンドメッセージを送信できます。この制御メッセージは、設定の再読み込みなどのサービスを指示します。
例16.12 smbd、nmbd、および winbindd サービスの設定を再読み込み
たとえば、smbd、nmbd、および winbindd の設定を再読み込みするには、reload-config メッセージタイプを all 送信先に送信します。
smbcontrol all reload-config
~]# smbcontrol all reload-config
詳細情報および利用可能なコマンドメッセージタイプのリストは、smbcontrol(1) man ページを参照してください。
16.1.9.7. smbpasswd ユーティリティーの使用
smbpasswd ユーティリティーは、ローカルの Samba データベースでユーザーアカウントおよびパスワードを管理します。
ユーザーとしてコマンドを実行すると、smbpasswd はユーザーの Samba パスワードを変更します。以下に例を示します。
smbpasswd
[user@server ~]$ smbpasswd
New SMB password:
Retype new SMB password:
root で smbpasswd を実行すると、たとえば以下のようにユーティリティーを使用できます。
新しいユーザーを作成します。
smbpasswd -a user_name
[root@server ~]# smbpasswd -a user_name New SMB password: Retype new SMB password: Added user user_name.Copy to Clipboard Copied! 注記Samba データベースにユーザーを追加する前に、ローカルのオペレーティングシステムにアカウントを作成する必要があります。「新規ユーザーの追加」 を参照してください。
Samba ユーザーを有効にします。
smbpasswd -e user_name
[root@server ~]# smbpasswd -e user_name Enabled user user_name.Copy to Clipboard Copied! Samba ユーザーを無効にします。
smbpasswd -x user_name
[root@server ~]# smbpasswd -x user_name Disabled user user_name.Copy to Clipboard Copied! ユーザーを削除します。
smbpasswd -x user_name
[root@server ~]# smbpasswd -x user_name Deleted user user_name.Copy to Clipboard Copied!
詳細は、smbpasswd(8) man ページを参照してください。
16.1.9.8. smbstatus ユーティリティーの使用
smbstatus ユーティリティーは以下について報告します。
-
各
smbdデーモンの PID ごとの接続を Samba サーバーに接続します。このレポートには、ユーザー名、プライマリーグループ、SMB プロトコルのバージョン、暗号、および署名の情報が含まれます。 -
Samba 共有ごとの接続このレポートには、
smbdデーモンの PID、接続しているマシンの IP、接続が確立された時点のタイムスタンプ、暗号、および署名情報が含まれます。 - ロックされたファイルのリスト。レポートエントリーには、日和見ロック (oplock) タイプなどの詳細が含まれます。
例16.13 smbstatus ユーティリティーの出力
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
詳細は、smbstatus(1) man ページを参照してください。
16.1.9.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
~]# smbtar -s server -x example -u user_name -p password -t /root/example.tar
詳細は、smbtar(1) man ページを参照してください。
16.1.9.10. testparm ユーティリティーの使用
16.1.9.11. wbinfo ユーティリティーの使用
wbinfo ユーティリティーは、winbindd サービスが作成および使用する情報をクエリーし、返します。
winbindd サービスは、wbinfo を使用できるように設定および実行される必要があります。
たとえば、以下のように、wbinfo を使用できます。
ドメインユーザーのリストを表示します。
wbinfo -u
~]# wbinfo -u AD\administrator AD\guest ...Copy to Clipboard Copied! ドメイングループのリストを表示します。
wbinfo -g
~]# wbinfo -g AD\domain computers AD\domain admins AD\domain users ...Copy to Clipboard Copied! ユーザーの SID を表示します。
wbinfo --name-to-sid="AD\administrator"
~]# wbinfo --name-to-sid="AD\administrator" S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)Copy to Clipboard Copied! ドメインおよび信頼に関する情報を表示します。
wbinfo --trusted-domains --verbose
~]# 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 YesCopy to Clipboard Copied!
詳細は、wbinfo(1) man ページを参照してください。
16.1.10. 関連情報
Red Hat Samba パッケージには、パッケージがインストールするすべての Samba コマンドおよび設定ファイルの man ページが含まれています。たとえば、
/etc/samba/smb.confファイルの man ページを表示して、このファイルに設定できる設定パラメーターをすべて説明します。man 5 smb.conf
~]# man 5 smb.confCopy to Clipboard Copied! -
/usr/share/docs/samba-version/: Samba プロジェクトが提供する一般的なドキュメント、スクリプトの例、および LDAP スキーマファイルが含まれます。 - Red Hat Cluster Storage Administration Guide: Samba と Clustered Trivial Database (CDTB) の設定に関する情報を提供し、GlusterFS ボリュームに保存されているディレクトリーを共有します。
- Red Hat Enterprise Linux High Availability Add-on Administration の An active/active Samba Server in a Red Hat High Availability Cluster の章では、Samba の高可用性インストールの設定方法を説明します。
- Red Hat Enterprise Linux 上への SMB 共有のマウントに関する詳細は、Red Hat ストレージ管理ガイド の該当するセクションを参照してください。