第21章 ファイルとプリントサーバー
21.1. Samba
Samba は、Linux 向けプログラムの標準的なオープンソース Windows 相互運用性スイートです。サーバーメッセージブロック (
SMB
)プロトコルを実装します。このプロトコルの最新版は、一般的なインターネットファイルシステム (CIFS
)プロトコルとしても知られています。Microsoft Windows®、Linux、UNIX、およびその他のオペレーティングシステムのネットワークを有効にし、Windows ベースのファイルおよびプリンター共有へのアクセスを可能にします。Samba の SMB
を使用すると、Windows クライアントへの Windows サーバーとして表示できます。
samba パッケージのインストール
Samba を使用するには、最初に
root
で以下のコマンドを実行して、samba パッケージがシステムにインストールされていることを確認します。
~]# yum install samba
yum を使用したパッケージのインストールは 「パッケージのインストール」 を参照してください。
21.1.1. Samba の概要
Samba は、Linux Server と Warehouse を Active Directory(AD)環境にシームレスに統合する重要なコンポーネントです。ドメインコントローラー(NT4-style)または通常のドメインメンバー(AD または NT4-style)として機能できます。
Samba の機能:
- Linux、UNIX、Windows クライアントにディレクトリーツリーとプリンターを提供する
- ネットワークブラウズの支援(NetBIOS を使用)
- Windows ドメインログインの認証
- Windows Internet Name Service (
WINS
)ネームサーバー解決の提供 - Windows の NT®スタイルの プライマリードメインコントローラー (PDC)として機能します。
- Samba ベースの P DC のバックアップドメインコントローラー (BDC)として機能します。
- Active Directory ドメインメンバーサーバーとして機能
- Join a Windows NT/2000/2003/2008 PDC
Samba が実行できる内容:
- Windows PDC の BDC として機能します(その逆も同様です)。
- Active Directory ドメインコントローラーとして動作する
21.1.2. Samba デーモンと関連サービス
Samba は、3 つのデーモン(
smbd
、nmbd
、および winbindd
)で構成されています。3 つのサービス(smb
、nb
、および winbind
)は、デーモンの開始、停止、およびその他のサービス関連の機能を制御します。これらのサービスは、異なる init スクリプトとして機能します。各デーモンは、以下に詳細と、どの特定のサービスがこれを制御するかを示しています。
smbd
smbd
サーバーデーモンは、Windows クライアントにファイル共有および印刷サービスを提供します。また、SMB
プロトコルを介してユーザー認証、リソースロック、およびデータ共有を行います。サーバーが SMB
トラフィックをリッスンするデフォルトのポートは TCP
ポート 139
および 445
です。
smbd
デーモンは、smb
サービスにより制御されます。
nmbd
nmbd
サーバーデーモンは、Windows ベースのシステムで SMB/CIFS が生成するなど、NetBIOS ネームサービス要求を理解し、応答します。このシステムには、Windows 95/98/ME、Windows NT、Windows 2000、Windows XP、および LanManager クライアントが含まれます。また、Windows Network Neighborhood ビューを構成する参照プロトコルにも参加します。サーバーが NMB
トラフィックをリッスンするデフォルトのポートは UDP
ポート 137
です。
nmbd
デーモンは nmb
サービスによって制御されます。
winbindd
winbind
サービスは、Windows NT、Vagrant、Windows Server 2008、または Windows Server 2012 を実行しているサーバーから受け取ったユーザーおよびグループの情報を解決します。これにより、UNIX プラットフォームで Windows ユーザーおよびグループの情報を理解できるようになります。これは、Microsoft RPC 呼び出し、Pluggable Authentication Modules (PAM)、および Name Service Switch (NSS)を使用して実現されます。これにより、Windows NT ドメインおよび Active Directory ユーザーを表示し、UNIX マシンで UNIX ユーザーとして操作できます。Samba ディストリビューションにバンドルされていますが、winbind
サービスは smb
サービスとは別に制御されます。
winbind
デーモンは winbind
サービスによって制御され、動作のために smb
サービスを起動する必要はありません。Samba が Active Directory メンバーである場合にも winbind
を使用し、Samba ドメインコントローラーでも使用できます(ネスト化されたグループとドメイン間の信頼を実装するため)。winbind
は Windows NT ベースのサーバーへの接続に使用されるクライアント側のサービスであるため、winbind
の詳細な説明は本章の対象外となります。
認証に
winbind
を設定する方法は、「Winbind 認証の設定」 を参照してください。
Samba に含まれるユーティリティーの一覧の取得
Samba ディストリビューションに含まれるユーティリティーの一覧については、「Samba ディストリビューションプログラム」 を参照してください。
21.1.4. Samba サーバーの設定
デフォルトの設定ファイル(
/etc/samba/smb.conf
)を使用すると、ユーザーはホームディレクトリーを Samba 共有として表示できます。また、システムに設定されたすべてのプリンターを Samba 共有プリンターとして共有します。システムにプリンターを割り当てて、ネットワーク上の Windows マシンからプリンターを印刷できます。
21.1.4.1. グラフィカル設定
グラフィカルインターフェースを使用して Samba を設定するには、利用可能な Samba グラフィカルユーザーインターフェースのいずれかを使用します。利用可能な GUI の一覧は、http://www.samba.org/samba/GUI/ を参照してください。
21.1.4.2. コマンドライン設定
Samba は、
/etc/samba/smb.conf
を設定ファイルとして使用します。この設定ファイルを変更すると、root
で次のコマンドを実行して Samba デーモンを再起動するまで変更は反映されません。
~]# service smb restart
Windows のワークグループと Samba サーバーの簡単な説明を指定するには、
/etc/samba/smb.conf
ファイルで次の行を編集します。
workgroup = WORKGROUPNAME server string = BRIEF COMMENT ABOUT SERVER
WORKGROUPNAME は、このマシンが属する Windows ワークグループ名に置き換えます。BRIEF COMMENT ABOUT SERVER はオプションで、Samba システムに関する Windows コメントとして使用されます。
Linux システムに Samba 共有ディレクトリーを作成するには、
/etc/samba/smb.conf
ファイルに以下のセクションを追加します(必要に応じて変更を反映するように修正します)。
例21.1 Samba サーバーの設定例
[sharename] comment = Insert a comment here path = /home/share/ valid users = tfox carole writable = yes create mask = 0765
上記の例では、Samba クライアントから、Samba サーバーの
/home/share/
ディレクトリーに対する tfox および carole ユーザーが読み書きできるようになります。
21.1.4.3. 暗号化パスワード
暗号化パスワードは、より安全に使用できるため、デフォルトで有効になっています。暗号化されたパスワードでユーザーを作成するには、
smbpasswd
ユーティリティーを使用します。
smbpasswd -a username
21.1.5. Samba の起動および停止
Samba サーバーを起動するには、
root
で次のコマンドを実行します。
~]# service smb start
ドメインメンバーサーバーの設定
ドメインメンバーサーバーを設定するには、
smb
サービスを起動する 前 に net join コマンドを使用してドメインまたは Active Directory に参加する必要があります。また、smbd
の前に winbind
を実行することが推奨されます。
サーバーを停止するには、
root
で次のコマンドを実行します。
~]# service smb stop
restart
オプションは、Samba を停止して起動する簡単な方法です。これは、Samba の設定ファイルを編集した後に設定変更を行う最も信頼性の高い方法です。restart オプションは、最初に実行していない場合でもデーモンを起動することに注意してください。
サーバーを再起動するには、
root
で次のコマンドを実行します。
~]# service smb restart
condrestart
(conditional restart)オプションは、現在実行している条件で smb
のみを停止し、開始します。このオプションは、デーモンが実行されていない場合はデーモンを起動しないため、スクリプトに便利です。
設定への変更の適用
/etc/samba/smb.conf
ファイルを変更すると、Samba は数分後に自動的に再読み込みされます。手動での 再起動 または リロード の発行は効果的です。
サーバーを条件付きで再起動するには、
root
で以下のコマンドを入力します。
~]# service smb condrestart
/etc/samba/smb.conf
ファイルの手動によるリロードは、smb
サービスが自動再読み込みに失敗した場合に役に立ちます。サービスを再起動せずに Samba サーバー設定ファイルが再読み込みされるようにするには、root
で以下のコマンドを入力します。
~]# service smb reload
デフォルトでは、
smb
サービスは、システムの起動時に自動的に起動し ません。Samba が起動時に開始するように設定するには、/sbin/chkconfig
、/usr/sbin/ntsysv
、または Services Configuration Tool プログラムなどの initscript ユーティリティーを使用します。これらのツールの詳細は、12章サービスおよびデーモン を参照してください。
21.1.6. Samba サーバータイプおよび smb.conf
ファイル
Samba の設定が簡単です。Samba へのすべての変更は、
/etc/samba/smb.conf
設定ファイルで行います。デフォルトの smb.conf
ファイルは十分に文書化されていますが、LDAP、Active Directory、多くのドメインコントローラー実装などの複雑なトピックには対応しません。
以下のセクションでは、Samba サーバーを設定するさまざまな方法を説明します。設定を成功させるには、ニーズと
/etc/samba/smb.conf
ファイルに必要な変更に注意してください。
21.1.6.1. スタンドアロンサーバー
スタンドアロンサーバーは、ワークグループサーバーまたはワークグループ環境のメンバーになります。スタンドアロンサーバーはドメインコントローラーではなく、ドメインに参加しません。以下の例には、ユーザーレベルのセキュリティー設定が複数含まれています。セキュリティーモードの詳細は、「Samba セキュリティーモード」 を参照してください。
Anonymous Read-Only
以下の
/etc/samba/smb.conf
ファイルは、匿名の読み取り専用ファイル共有の実装に必要な設定例を示しています。匿名アクセスの設定には、map to guest = Bad user
および guest account = nobody
の 2 つのディレクティブが使用されます。
例21.2 Anonymous Read-Only Samba サーバーの設定例
[global] workgroup = DOCS netbios name = DOCS_SRV security = user guest account = nobody # default value map to guest = Bad user [data] comment = Documentation Samba Server path = /export read only = yes guest ok = yes
Anonymous Read/Write
以下の
/etc/samba/smb.conf
ファイルは、匿名の読み取り/書き込みファイル共有の実装に必要な設定例を示しています。匿名の読み取り/書き込みファイル共有を有効にするには、read only
ディレクティブを no
に設定します。force user
ディレクティブおよび force group
ディレクティブも追加され、共有で指定した新たに配置されたファイルの所有権を強制します。
匿名の読み取り/書き込みサーバーは使用しないでください。
匿名の読み取り/書き込みサーバーの使用は可能ですが、推奨されません。ユーザーに関係なく、共有スペースに置かれたファイルはすべて、
/etc/samba/smb.conf
ファイルの汎用ユーザー(force user
)およびグループ(force group
)で指定されたユーザー/グループの組み合わせが割り当てられます。
例21.3 Anonymous Read/Write Samba サーバーの設定例
[global] workgroup = DOCS security = user guest account = nobody # default value map to guest = Bad user [data] comment = Data path = /export guest ok = yes writeable = yes force user = user force group = group
Anonymous Print Server
以下の
/etc/samba/smb.conf
ファイルは、匿名プリントサーバーの実装に必要な設定例を示しています。上記のように browseable
を no
に設定しても、Windows Network Neighborhood にプリンターは表示されません。参照を外すことはできませんが、プリンターを明示的に設定することはできません。NetBIOS を使用して DOCS_SRV
に接続すると、クライアントが DOCS
ワークグループに含まれる場合に、クライアントがプリンターにアクセスできます。また、use client driver
ディレクティブは yes
に設定されているため、クライアントに正しいローカルプリンタードライバーがインストールされていることを前提とします。この場合、Samba サーバーはプリンタードライバーをクライアントと共有する責任はありません。
例21.4 Anonymous Print Samba サーバーの設定例
[global] workgroup = DOCS netbios name = DOCS_SRV security = user map to guest = Bad user printing = cups [printers] comment = All Printers path = /var/spool/samba guest ok = yes printable = yes use client driver = yes browseable = yes
読み取り/書き込みファイルおよびプリントサーバーの保護
以下の
/etc/samba/smb.conf
ファイルは、セキュアな読み取り/書き込みファイルおよびプリントサーバーの実装に必要な設定例を示しています。security
ディレクティブを user
に設定すると、Samba がクライアント接続を認証するように強制します。[homes]
共有には [public]
共有が行われるため、force user
または force group
ディレクティブがないことに注意してください。[homes]
共有は、[public]
の force user
および force group
ではなく、作成されたすべてのファイルに認証されたユーザーの詳細を使用します。
例21.5 セキュアな読み取り/書き込みファイルの設定例および Samba サーバーの印刷
[global] workgroup = DOCS netbios name = DOCS_SRV security = user printcap name = cups disable spools = yes show add printer wizard = no printing = cups [homes] comment = Home Directories valid users = %S read only = no browseable = no [public] comment = Data path = /export force user = docsbot force group = users guest ok = yes [printers] comment = All Printers path = /var/spool/samba printer admin = john, ed, @admins create mask = 0600 guest ok = yes printable = yes use client driver = yes browseable = yes
21.1.6.2. ドメインメンバーサーバー
スタンドアロンサーバーと同様に、ドメインメンバーはドメインコントローラー(Windows または Samba のいずれか)にログインし、ドメインのセキュリティールールの対象となります。ドメインメンバーサーバーの例として、Samba を実行する部門サーバーがあり、プライマリードメインコントローラー(PDC)上のマシンアカウントがあります。すべての部署のクライアントは、引き続き PDC で認証され、デスクトッププロファイルとすべてのネットワークポリシーファイルが含まれます。相違点は、部署サーバーがプリンターとネットワーク共有を制御できることです。
Active Directory ドメインメンバーサーバー
Active Directory ドメインメンバーサーバーを実装するには、以下の手順に従います。
手順21.3 Active Directory ドメインへのメンバーサーバーの追加
- Active Directory ドメインに追加するメンバーサーバーに
/etc/samba/smb.conf
設定ファイルを作成します。以下の行を設定ファイルに追加します。[global] realm = EXAMPLE.COM security = ADS encrypt passwords = yes # Optional. Use only if Samba cannot determine the Kerberos server automatically. password server = kerberos.example.com
上記の設定では、Samba はローカルで実行するサービスのユーザーを認証しますが、Active Directory のクライアントでもあります。kerberos のrealm
パラメーターがすべての上限(例:realm = EXAMPLE.COM
)に表示されていることを確認します。Windows 2000/2003/2008 では Active Directory 認証に Kerberos が必要であるため、realm
ディレクティブが必要です。Active Directory と Kerberos が異なるサーバーで実行している場合は、区別に役立つpassword server
ディレクティブが必要です。 - メンバーサーバーで Kerberos を設定します。以下の内容で
/etc/krb5.conf
設定ファイルを作成します。[logging] default = FILE:/var/log/krb5libs.log [libdefaults] default_realm = AD.EXAMPLE.COM dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h renew_lifetime = 7d rdns = false forwardable = false [realms] # Define only if DNS lookups are not working # AD.EXAMPLE.COM = { # kdc = server.ad.example.com # admin_server = server.ad.example.com # master_kdc = server.ad.example.com # } [domain_realm] # Define only if DNS lookups are not working # .ad.example.com = AD.EXAMPLE.COM # ad.example.com = AD.EXAMPLE.COM
DNS ルックアップが機能しない場合は、[realms]
セクションおよび[domain_realm]
セクションのコメントを解除します。Kerberos および /etc/krb5.conf ファイルの詳細は、Red Hat Enterprise Linux 6nbsp;Hat Enterprise Red Hat Enterprise Linux 6nbsp;Linux Red Hat Enterprise Linux 6nbsp;6 『Managing Single Sign-On および Smart Cards』 の 『Kerberos の使用』 セクションを参照してください。 - Active Directory サーバーに参加するには、メンバーサーバーで
root
として以下のコマンドを入力します。~]# net ads join -U administrator%password
net コマンドは、NT LAN Manager(NTLM)プロトコルを使用して管理者
として認証し、マシンアカウントを作成します。次に、net はマシンアカウントの認証情報を使用して Kerberos で認証します。セキュリティーオプションsecurity = ads
ではなくsecurity = user
が使用されるため、smbpasswd
などのローカルパスワードバックエンドは必要ありません。security = ads
をサポートしない古いクライアントは、security = domain
が設定されているかのように認証されます。この変更は機能に影響を与えず、ドメインに提供していないローカルユーザーを許可します。
Windows NT4 ベースドメインメンバー Server
以下の
/etc/samba/smb.conf
ファイルは、Windows NT4- ベースのドメインメンバーサーバーの実装に必要な設定例を示しています。NT4 ベースのドメインのメンバーサーバーになるのは、Active Directory への接続に似ています。主な違いは、NT4 ベースのドメインは認証方法で Kerberos を使用しないため、/etc/samba/smb.conf
ファイルを簡素化します。この場合、Samba メンバーサーバーは NT4 ベースのドメインサーバーへパススルーします。
例21.6 Samba Windows NT4 ベースのドメインメンバーサーバーの設定例
[global] workgroup = DOCS netbios name = DOCS_SRV security = domain [homes] comment = Home Directories valid users = %S read only = no browseable = no [public] comment = Data path = /export force user = docsbot force group = users guest ok = yes
Samba をドメインメンバーサーバーとして設定することは、多くの状況で役に立ちます。Samba サーバーが、ファイルやプリンター共有以外の使用が可能であった場合もあります。ドメイン環境で使用するために Linux のみのアプリケーションが必要なインスタンスで Samba をドメインメンバーサーバーにすると便利です。管理者は、Windows ベースでなくても、ドメイン内のすべてのマシンを追跡します。Windows ベースのサーバーハードウェアが非推奨になると、
/etc/samba/smb.conf
ファイルを変更してサーバーを Samba ベースの PDC に変換する非常に簡単です。Windows NT ベースのサーバーが Windows 2000/2003/2008 にアップグレードされた場合、/etc/samba/smb.conf
ファイルは、必要に応じてインフラストラクチャーの変更を Active Directory に組み込むのを簡単に変更できます。
Samba を起動する前にドメインに参加するようにしてください。
/etc/samba/smb.conf
ファイルを設定したら、root
で以下のコマンドを入力して Samba を起動 する前 にドメインに参加します。
~]# net rpc join -U administrator%password
ドメインサーバーのホスト名を指定する
-S
オプションは、net rpc join コマンドに指定する必要はありません。Samba は、明示的に指定する代わりに、/etc/samba/smb.conf
ファイルの workgroup
ディレクティブで指定されたホスト名を使用します。
21.1.6.3. ドメインコントローラー
Windows NT のドメインコントローラーは、Linux 環境の Network Information Service(NIS)サーバーと機能的に類似しています。ドメインコントローラーと NIS サーバーには、ユーザーおよびグループの情報データベースと関連サービスの両方をホストします。ドメインコントローラーは、主にドメインリソースにアクセスするユーザーの認証を含む、セキュリティーに使用されます。ユーザーおよびグループデータベースの整合性を維持するサービスは、Security Account Manager (SAM)と呼ばれます。SAM データベースは Windows と Linux の Samba ベースのシステムによって異なる方法で保存されるため、SAM レプリケーションは実現できず、PDC/BDC 環境ではプラットフォームを組み合わせることはできません。
Samba 環境では、PDC とゼロ以上の BDC のみを使用できます。
混合 Samba/Windows ドメインコントローラー環境
Samba は、複数の Samba/Windows ドメインコントローラー環境に置くことはできません(Samba は Windows PDC の BDC にすることはできず、その逆も同様です)。または、Samba PDC と BDC を共存させること もでき ます。
tdbsam
を使用したプライマリードメインコントローラー(PDC)
Samba PDC の最も簡単な実装および最も一般的な実装は、新しいデフォルトの
tdbsam
パスワードデータベースバックエンドを使用します。古い smbpasswd
バックエンドを置き換えると、tdbsam
には、「Samba アカウント情報データベース」 で説明されている多くの改良点があります。passdb backend
ディレクティブは、PDC に使用するバックエンドを制御します。
以下の
/etc/samba/smb.conf
ファイルは、tdbsam
パスワードデータベースバックエンドの実装に必要な設定例を示しています。
例21.7 tdbsam
を使用した プライマリードメインコントローラー(PDC)の設定例
[global] workgroup = DOCS netbios name = DOCS_SRV passdb backend = tdbsam security = user add user script = /usr/sbin/useradd -m "%u" delete user script = /usr/sbin/userdel -r "%u" add group script = /usr/sbin/groupadd "%g" delete group script = /usr/sbin/groupdel "%g" add user to group script = /usr/sbin/usermod -G "%g" "%u" add machine script = /usr/sbin/useradd -s /bin/false -d /dev/null -g machines "%u" # The following specifies the default logon script # Per user logon scripts can be specified in the user # account using pdbedit logon script = logon.bat # This sets the default profile path. # Set per user paths with pdbedit logon drive = H: domain logons = yes os level = 35 preferred master = yes domain master = yes [homes] comment = Home Directories valid users = %S read only = no [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon/scripts browseable = no read only = no # For profiles to work, create a user directory under the # path shown. # mkdir -p /var/lib/samba/profiles/john [Profiles] comment = Roaming Profile Share path = /var/lib/samba/profiles read only = no browseable = no guest ok = yes profile acls = yes # Other resource shares ... ...
tdbsam
を使用する機能 PDC システムを提供するには、以下の手順に従います。
- 例21.7「
tdbsam
を使用した プライマリードメインコントローラー(PDC)の設定例」 に従って、smb.conf
設定ファイルを調整します。 root
ユーザーを Samba パスワードデータベースに追加します。root
ユーザーの新しい Samba パスワードを提供するように求められます。~]# smbpasswd -a root New SMB password:
smb
サービスを起動します。~]# service smb start
- すべてのプロファイル、ユーザー、および netlogon ディレクトリーが作成されていることを確認します。
- ユーザーをメンバーにできるグループを追加します。
~]# groupadd -f users ~]# groupadd -f nobody ~]# groupadd -f ntadmins
- UNIX グループをそれぞれの Windows グループに関連付けます。
~]# net groupmap add ntgroup="Domain Users" unixgroup=users ~]# net groupmap add ntgroup="Domain Guests" unixgroup=nobody ~]# net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins
- ユーザーまたはグループへのアクセス権限を付与します。たとえば、Samba ドメインコントローラーのドメインにクライアントマシンを追加するパーミッションをドメイン管理グループのメンバーに付与するには、以下のコマンドを実行します。
~]# net rpc rights grant 'DOCS\Domain Admins' SetMachineAccountPrivilege -S PDC -U root
Windows システムは、Domain Users などのドメイングループにマッピングされたプライマリーグループを使用することが推奨されます。
Windows グループとユーザーは同じ名前空間を使用するため、UNIX のような同じ名前のグループとユーザーが存在することはありません。
tdbsam 認証バックエンドの制限
複数のドメインコントローラーが必要な場合や、250 ユーザーが複数ある場合は、
tdbsam
認証バックエンドを使用し ない でください。このような場合には、LDAP が推奨されます。
Active Directory を使用するプライマリードメインコントローラー(PDC)
Samba を Active Directory のメンバーであることは可能ですが、Samba が Active Directory ドメインコントローラーとして動作することはできません。
21.1.7. Samba セキュリティーモード
Samba には、共有レベル と ユーザー レベルの 2 つのタイプのみがあります。これらは、セキュリティーレベルと全く知られています。共有レベルのセキュリティーは非推奨となり、Red Hat は代わりにユーザーレベルのセキュリティーを使用することを推奨します。ユーザーレベルのセキュリティーは、3 つの異なる方法で実装できます。セキュリティーレベルを実装するさまざまな方法は、セキュリティーモードと呼ばれ ます。
21.1.7.1. ユーザーレベルのセキュリティー
ユーザーレベルのセキュリティーはデフォルトであり、Samba に推奨される設定です。
security = user
ディレクティブが /etc/samba/smb.conf
ファイルに一覧表示されていない場合でも、Samba によって使用されます。サーバーがクライアントのユーザー名とパスワードを受け入れると、クライアントはインスタンスごとにパスワードを指定せずに複数の共有をマウントできます。Samba はセッションベースのユーザー名およびパスワード要求を受け入れることもできます。クライアントは、ログオンごとに一意の UID を使用して複数の認証コンテキストを維持します。
/etc/samba/smb.conf
ファイルでは、ユーザーレベルのセキュリティーを設定する security = user
ディレクティブは次のとおりです。
[GLOBAL] ... security = user ...
Samba ゲスト共有
上記のように、共有レベルのセキュリティーモードは非推奨となり、使用しないことを強く推奨します。
security = share
パラメーターを使用せずに Samba ゲスト共有を設定するには、以下の手順に従います。
以下のセクションでは、ユーザーレベルのセキュリティーのその他の実装について説明します。
ドメインセキュリティーモード(ユーザーレベルのセキュリティー)
ドメインセキュリティーモードでは、Samba サーバーにマシンアカウント(ドメインセキュリティー信頼アカウント)があり、すべての認証要求がドメインコントローラーに渡されます。
/etc/samba/smb.conf
ファイルの以下のディレクティブを使用して、Samba サーバーがドメインメンバーサーバーに確立されます。
[GLOBAL] ... security = domain workgroup = MARKETING ...
Active Directory セキュリティーモード(ユーザーレベルのセキュリティー)
Active Directory 環境をお持ちの場合は、ドメインをネイティブの Active Directory メンバーとして参加させることができます。セキュリティーポリシーが NT 互換認証プロトコルの使用を制限する場合でも、Samba サーバーは Kerberos を使用して ADS に参加できます。Active Directory メンバーモードの Samba は、Kerberos チケットを許可できます。
/etc/samba/smb.conf
ファイルで、以下のディレクティブで Samba に Active Directory メンバーサーバーが作成されます。
[GLOBAL] ... security = ADS realm = EXAMPLE.COM password server = kerberos.example.com ...
21.1.8. Samba アカウント情報データベース
以下は、Samba で使用できる異なるバックエンドの一覧です。ここに記載の他のバックエンドも利用できる場合があります。
- プレインテキスト
- プレーンテキストのバックエンドは、
/etc/passwd
タイプのバックエンドにはありません。プレーンテキストのバックエンドでは、クライアントとサーバーはすべて、クライアントとサーバー間で暗号化されずに送信されます。この方法は安全ではないため、どのような手段でも使用することは推奨されません。プレーンテキストのパスワードで Samba サーバーに接続する別の Windows クライアントは、このような認証方法に対応できません。 smbpasswd
smbpasswd
バックエンドは、MS Windows Lan アカウントおよび NT アカウント、暗号化されたパスワード情報が含まれるプレーンテキストの ASCII テキストレイアウトを使用します。smbpasswd
バックエンドには、Windows NT/2000/2003 SAM 拡張コントロールのストレージがありません。smbpasswd
バックエンドは、NT ベースのグループの RID などの Windows 情報をスケーリングしたり、保持したりしないため、推奨されません。tdbsam
バックエンドはこれらの問題を解決し、小規模なデータベース(250 ユーザー)で使用する問題を解決しますが、エンタープライズレベルのソリューションではありません。ldapsam_compat
ldapsam_compat
バックエンドを使用すると、Samba のアップグレードバージョンと引き続き OpenLDAP サポートを使用できます。tdbsam
- デフォルトの
tdbsam
パスワードバックエンドは、ローカルサーバーのデータベースバックエンド、組み込みデータベースレプリケーションを必要としないサーバー、および LDAP のスケーラビリティーや複雑さを必要としないサーバーを提供します。tdbsam
バックエンドには、smbpasswd
データベース情報と、以前に除外された SAM 情報が含まれます。拡張 SAM データを含めることで、Samba は Windows NT/2000/2003/2008 ベースのシステムと同じアカウントおよびシステムアクセス制御を実装できます。最大 250 ユーザーには、tdbsam
バックエンドが推奨されます。大規模な組織では、スケーラビリティーやネットワークインフラストラクチャーの潜在的な問題により、Active Directory または LDAP 統合が必要になります。 ldapsam
ldapsam
バックエンドは、Samba に最適な分散アカウントのインストール方法を提供します。LDAP は、Red Hat Directory Server や OpenLDAP Server などの任意の数のサーバーにデータベースを複製する機能が原因で最適です。LDAP データベースは軽量でスケーラブルなため、大規模な企業から推奨されます。ディレクトリーサーバーのインストールと設定については、本章の対象外となります。Red Hat Directory Server の詳細は、『 Red Hat Directory Server 『9.0 デプロイメントガイド』』 を参照してください。LDAP の詳細は、「OpenLDAP」 を参照してください。以前のバージョンの Samba から 3.0 にアップグレードする場合は、OpenLDAP スキーマファイル(/usr/share/doc/samba-バージョン/LDAP/samba.schema
)および Red Hat Directory Server スキーマファイル(/usr/share/doc/samba-version/LDAP/samba-schema-FDS.ldif
)が変更されたことに注意してください。これらのファイルには、ldapsam
バックエンドが適切に機能するために必要な 属性構文の 定義 と objectclass 定義 が含まれます。そのため、Samba サーバーにldapsam
バックエンドを使用している場合は、このスキーマファイルのいずれかを含めるようにslapd
を設定する必要があります。これを行う方法については、「スキーマの拡張」 を参照してください。openldap-servers パッケージがインストールされていることを確認します。ldapsam
バックエンドを使用する場合は、openldap-servers パッケージがインストールされている必要があります。パッケージがインストールされていることを確認するには、root で以下の
コマンドを実行します。~]# yum install openldap-servers
21.1.9. Samba Network Browsing
ネットワーク参照に より、Windows サーバーおよび Samba サーバーが Windows Network Neighborhood に表示されます。Network Neighborhood 内でアイコンはサーバーとして表され、開いている場合は利用可能なサーバーの共有とプリンターが表示されます。
ネットワーク参照機能には、
TCP
/IP
を介した NetBIOS が必要です。NetBIOS ベースのネットワークはブロードキャスト(UDP
)メッセージングを使用して、参照リスト管理を行います。TCP
/IP
ホスト名の解決の主な方法として NetBIOS および WINS を使用しないと、静的ファイル(/etc/hosts
)や DNS
などの他のメソッドを使用する必要があります。
ドメインマスターブラウザーは、ワークグループとサブネット間で参照ができるように、すべてのサブネットのローカルのマスターブラウザーから参照一覧を照合します。また、ドメインマスターブラウザーは、独自のサブネットのローカルマスターブラウザーを使用することが推奨されます。
21.1.9.1. ドメインの参照
デフォルトでは、ドメインの Windows サーバーの PDC は、そのドメインのドメインマスターブラウザーでもあります。このような状況では、Samba サーバーをドメインマスターサーバーとして設定することはでき ませ ん。
Windows サーバーの PDC を含まないサブネットの場合、Samba サーバーをローカルのマスターブラウザーとして実装できます。ドメインコントローラー環境内のローカルのマスターブラウザー(または参照なし)に
/etc/samba/smb.conf
ファイルを設定することは、ワークグループの設定と同じです( 「Samba サーバーの設定」を参照)。
21.1.9.2. WINS(Windows インターネットネームサーバー)
Samba サーバーまたは Windows NT サーバーのいずれかが WINS サーバーとして機能します。WINS サーバーを NetBIOS を有効にして使用する場合は、UDP ユニキャストをルーティングでき、ネットワーク全体で名前解決が可能になります。WINS サーバーを使用しないと、UDP ブロードキャストはローカルサブネットに制限されるため、他のサブネット、ワークグループ、またはドメインにはルーティングできません。WINS レプリケーションが必要な場合は、Samba は現在 WINS レプリケーションをサポートしないため、Samba をプライマリー WINS サーバーとして使用しないでください。
NT/2000/2003/2008 サーバーと Samba 環境では、Microsoft WINS 機能を使用することが推奨されます。Samba のみの環境では、WINS には Samba サーバーを 1 つだけ 使用することが推奨されます。
以下は、Samba サーバーが WINS サーバーとして機能する
/etc/samba/smb.conf
ファイルの例です。
例21.8 WINS サーバーの設定例
[global] wins support = yes
WINS の使用
すべてのサーバー(Samba を含む)は、NetBIOS 名を解決するために WINS サーバーに接続する必要があります。WINS がないと、参照はローカルサブネットでのみ実行されます。さらに、ドメイン全体のリストが取得された方法であっても、WINS なしでクライアントに対してホストを解決できません。
21.1.10. Samba と CUPS 印刷サポート
Samba により、クライアントマシンは Samba サーバーに接続されているプリンターを共有できます。また、Samba により、クライアントマシンは Linux に組み込まれたドキュメントを Windows プリンター共有に送信できます。Red Hat Enterprise Linuxnbsp;Hat Enterprise Red Hat Enterprise Linuxnbsp;Linux で動作する他の印刷システムもありますが、Samba と密接に統合するため、CUPS(Common UNIX Print System)が推奨される印刷システムです。
21.1.10.1. 簡易 smb.conf
の設定
以下の例は、CUPS サポートの基本的な
/etc/samba/smb.conf
設定を示しています。
例21.9 CUPS サポートを使用した Samba の設定例
[global] load printers = yes printing = cups printcap name = cups [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = yes writable = no printable = yes printer admin = @ntadmins [print$] comment = Printer Drivers Share path = /var/lib/samba/drivers write list = ed, john printer admin = ed, john
その他の印刷設定も可能です。機密ドキュメントを出力するセキュリティーおよびプライバシーを追加して、ユーザーは公開パスに独自の印刷スプールを配置できます。ジョブが失敗すると、他のユーザーはファイルにアクセスできません。
print$
ディレクティブには、ローカルで利用できない場合にクライアントがアクセスするプリンタードライバーが含まれます。print$
ディレクティブは任意で、組織によっては必要でないことがあります。
Samba サーバーがドメインまたはワークグループに適切に設定されている場合、
browseable
を yes
に設定すると、Windows Network Neighborhood でプリンターを表示できます。
21.1.11. Samba ディストリビューションプログラム
findsmb
findsmb <subnet_broadcast_address>
findsmb
プログラムは、特定のサブネットの SMB
対応システムに関する情報を報告する Perl スクリプトです。サブネットが指定されていない場合には、ローカルサブネットが使用されます。表示される項目には、IP
アドレス、NetBIOS 名、ワークグループまたはドメイン名、オペレーティングシステム、およびバージョンが含まれます。findsmb コマンドは、以下の形式で使用されます。
以下の例は、システムで有効なユーザーとして findsmb を実行する出力を示しています。
~]$ findsmb
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
------------------------------------------------------------------
10.1.59.25 VERVE [MYGROUP] [Unix] [Samba 3.0.0-15]
10.1.59.26 STATION22 [MYGROUP] [Unix] [Samba 3.0.2-7.FC1]
10.1.56.45 TREK +[WORKGROUP] [Windows 5.0] [Windows 2000 LAN Manager]
10.1.57.94 PIXEL [MYGROUP] [Unix] [Samba 3.0.0-15]
10.1.57.137 MOBILE001 [WORKGROUP] [Windows 5.0] [Windows 2000 LAN Manager]
10.1.57.141 JAWS +[KWIKIMART] [Unix] [Samba 2.2.7a-security-rollup-fix]
10.1.56.159 FRED +[MYGROUP] [Unix] [Samba 3.0.0-14.3E]
10.1.59.192 LEGION *[MYGROUP] [Unix] [Samba 2.2.7-security-rollup-fix]
10.1.56.205 NANCYN +[MYGROUP] [Unix] [Samba 2.2.7a-security-rollup-fix]
net
net <protocol> <function> <misc_options> <target_options>
net
ユーティリティーは、Windows および MS-DOS に使用される net
ユーティリティーと似ています。最初の引数は、コマンドの実行時に使用するプロトコルを指定するために使用されます。protocol
オプションは、サーバー接続のタイプを指定するために ads
、rap
、または rpc
です。Active Directory は ads
を使用し、Win9x/NT3 は rap
を使用し、Windows NT4/2000/2003/2008 は rpc
を使用します。プロトコルを省略すると、net
は自動的に判断を試行します。
以下の例は、
wakko
という名前のホストで利用可能な共有の一覧を表示します。
~]$ net -l share -S wakko
Password:
Enumerating shared resources (exports) on remote server:
Share name Type Description
---------- ---- -----------
data Disk Wakko data share
tmp Disk Wakko tmp share
IPC$ IPC IPC Service (Samba Server)
ADMIN$ IPC IPC Service (Samba Server)
以下の例は、
wakko
という名前のホストの Samba ユーザーの一覧を表示します。
~]$ net -l user -S wakko
root password:
User name Comment
-----------------------------
andriusb Documentation
joe Marketing
lisa Sales
nmblookup
nmblookup <options> <netbios_name>
nmblookup
プログラムは、NetBIOS 名を IP
アドレスに解決します。プログラムは、ターゲットマシンが応答するまでローカルサブネットのクエリーをブロードキャストします。
以下の例では、NetBIOS 名
trek
の IP
アドレスを表示します。
~]$ nmblookup trek
querying trek on 10.1.59.255
10.1.56.45 trek<00>
pdbedit
pdbedit <options>
pdbedit
プログラムは、SAM データベースにあるアカウントを管理します。すべてのバックエンドには、smbpasswd
、LDAP、および tdb データベースライブラリーが含まれます。
以下は、ユーザーの追加、削除、および一覧表示の例です。
~]$ pdbedit -a kristin new password: retype new password: Unix username: kristin NT username: Account Flags: [U ] User SID: S-1-5-21-1210235352-3804200048-1474496110-2012 Primary Group SID: S-1-5-21-1210235352-3804200048-1474496110-2077 Full Name: Home Directory: \\wakko\kristin HomeDir Drive: Logon Script: Profile Path: \\wakko\kristin\profile Domain: WAKKO Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Mon, 18 Jan 2038 22:14:07 GMT Kickoff time: Mon, 18 Jan 2038 22:14:07 GMT Password last set: Thu, 29 Jan 2004 08:29:28 GMT Password can change: Thu, 29 Jan 2004 08:29:28 GMT Password must change: Mon, 18 Jan 2038 22:14:07 GMT ~]$ pdbedit -v -L kristin Unix username: kristin NT username: Account Flags: [U ] User SID: S-1-5-21-1210235352-3804200048-1474496110-2012 Primary Group SID: S-1-5-21-1210235352-3804200048-1474496110-2077 Full Name: Home Directory: \\wakko\kristin HomeDir Drive: Logon Script: Profile Path: \\wakko\kristin\profile Domain: WAKKO Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Mon, 18 Jan 2038 22:14:07 GMT Kickoff time: Mon, 18 Jan 2038 22:14:07 GMT Password last set: Thu, 29 Jan 2004 08:29:28 GMT Password can change: Thu, 29 Jan 2004 08:29:28 GMT Password must change: Mon, 18 Jan 2038 22:14:07 GMT ~]$ pdbedit -L andriusb:505: joe:503: lisa:504: kristin:506: ~]$ pdbedit -x joe ~]$ pdbedit -L andriusb:505: lisa:504: kristin:506:
rpcclient
rpcclient <server> <options>
rpcclient
プログラムは、システム管理用の Windows 管理グラフィカルユーザーインターフェース(GUI)へのアクセスを提供する Microsoft RPC を使用して管理コマンドを実行します。これは、Microsoft RPC の完全な複雑さを理解する上級ユーザーによりよく使用されます。
smbcacls
smbcacls <//server/share> <filename> <options>
smbcacls
プログラムは、Samba サーバーまたは Windows サーバーで共有されるファイルおよびディレクトリーの Windows ACL を変更します。
smbclient
smbclient <//server/share> <password> <options>
smbclient
プログラムは、ftp
ユーティリティーと同様の機能を提供する汎用 UNIX クライアントです。
smbcontrol
smbcontrol -i <options>
smbcontrol <options> <destination> <messagetype> <parameters>
smbcontrol
プログラムは、smbd
デーモン、nmbd
デーモン、または winbindd
デーモンの実行に制御メッセージを送信します。smbcontrol -i を実行すると、空の行または 'q'
が入力されるまでコマンドを対話的に実行します。
smbpasswd
smbpasswd <options> <username> <password>
smbpasswd
プログラムは、暗号化されたパスワードを管理します。このプログラムは、スーパーユーザーが実行して、ユーザーのパスワードを変更し、通常のユーザーが独自の Samba パスワードを変更することもできます。
smbspool
smbspool <job> <user> <title> <copies> <options> <filename>
smbspool
プログラムは、Samba への CUPS 互換印刷インターフェースです。CUPS プリンターで使用するように設計されていますが、smbspool は CUPS 以外のプリンターでも機能します。
smbstatus
smbstatus <options>
smbstatus
プログラムは、Samba サーバーへの現在の接続のステータスを表示します。
smbtar
smbtar <options>
smbtar
プログラムは、Windows ベースの共有ファイルおよびディレクトリーのバックアップおよび復元をローカルテープアーカイブに対して実行します。tar
ユーティリティーと同様に、これら 2 つのユーティリティーは互換性がありません。
testparm
testparm <options> <filename> <hostname IP_address>
testparm
プログラムは、/etc/samba/smb.conf
ファイルの構文をチェックします。smb.conf
ファイルがデフォルトの場所(/etc/samba/smb.conf
)にある場合は、場所を指定する必要はありません。testparm
プログラムにホスト名および IP
アドレスを指定すると、hosts.allow
ファイルおよび host.deny
ファイルが正しく設定されていることを確認します。testparm
プログラムは、テスト後に smb.conf
ファイルとサーバーのロール(stand-alone、domain など)の概要も表示します。これは、コメントを除外し、経験のある管理者が読み取る情報を簡潔に提示する時に、デバッグを行う場合に便利です。以下に例を示します。
~]$ testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Processing section "[html]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
<enter>
# Global parameters
[global]
workgroup = MYGROUP
server string = Samba Server
security = SHARE
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
[homes]
comment = Home Directories
read only = no
browseable = no
[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
browseable = no
[tmp]
comment = Wakko tmp
path = /tmp
guest only = yes
[html]
comment = Wakko www
path = /var/www/html
force user = andriusb
force group = users
read only = no
guest only = yes
wbinfo
wbinfo <options>
wbinfo
プログラムは、winbindd
デーモンからの情報を表示します。wbinfo
を機能させるには、winbindd
デーモンが実行している必要があります。
21.1.12. その他のリソース
以下のセクションでは、Samba をより詳細に調べる方法を説明します。
インストールされているドキュメント
/usr/share/doc/samba-<version-number&
gt;/: Samba ディストリビューションに含まれる追加ファイルすべて。これには、ヘルパースクリプト、設定ファイルのサンプル、およびドキュメントが含まれます。- 特定の Samba 機能の詳細は、以下の man ページを参照してください。
- smb.conf(5)
- samba(7)
- smbd(8)
- nmbd(8)
- winbindd(8)
関連書籍
- 『Official Samba-3 HOWTO-Collection』 by John H. Terpstra and Jelmer R. Vernooij; Prentice Hall - Samba 開発チームが発行した公式の Samba-3 ドキュメントこれは、ステップバイステップのガイドよりも多くのリファレンスガイドです。
- 『Samba-3 by John H. Terpstra; Prentice Hall: これは、OpenLDAP、DNS、DHCP、および print 設定ファイルの詳細例』 を説明する Samba 開発チームが発行する別の公式リリースです。これには、実際の実装に役立つステップバイステップの関連情報があります。
- 『Samba、2nd Edition(Jan Ts による 2nd Edition、Robert Eckstein、および David Collier-Brown)の使用』。O'Reilly - O'Revice to novice to novice to novice which includes comprehensive reference material.
便利な Web サイト
- http://www.samba.org/: Samba ディストリビューションのホームページと、Samba 開発チームが作成したすべての公式ドキュメント多くのリソースは HTML および PDF 形式で利用できますが、その他は購入でのみ利用できます。これらのリンクの多くは Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux 固有のものではなく、一部の概念が適用される場合があります。
- http://samba.org/samba/archives.html : Samba コミュニティーの有効なメール一覧。一覧アクティビティーのレベルが高くなるため、ダイジェストモードを有効にすることが推奨されます。
- Samba newsgroups -
NNTP
プロトコルを使用する Samba スレッドの newsgroups( www.gmane.org など)も利用可能です。これは、メーリングリストのメールを受信する代わりになります。