Red Hat Training

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

第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.3. Samba 共有への接続

nautilus またはコマンドラインのいずれ を使用して、利用可能な Samba 共有に接続できます。

手順21.1 nautilus を使用した Samba 共有への接続

  1. ネットワーク上の Samba ワークグループおよびドメインの一覧を表示するには、GNOME パネルから PlacesNetwork を選択し、必要なネットワークを選択します。または、NautilusFileOpen Location バーに smb: と入力します。
    図21.1「nautilus の SMB Workgroups」 に示されているように、ネットワーク上の利用可能な SMB ワークグループまたはドメインごとにアイコンが表示されます。

    図21.1 nautilus の SMB Workgroups

    nautilus の SMB Workgroups
  2. ワークグループまたはドメインアイコンのいずれかをダブルクリックして、ワークグループまたはドメイン内のコンピューターの一覧を表示します。

    図21.2 nautilus の SMB マシン

    nautilus の SMB マシン
  3. 図21.2「nautilus の SMB マシン」 に表示されているように、ワークグループ内の各マシンにはアイコンが存在します。アイコンをダブルクリックして、マシン上で Samba 共有を表示します。ユーザー名とパスワードの組み合わせが必要な場合は、そのユーザー名とパスワードの入力が求められます。
    または、次の構文を使用して、NautilusLocation: bar に Samba サーバーおよび sharename を指定することもできます( servernamesharename を適切な値に置き換えます)。
    smb://servername/sharename

手順21.2 コマンドラインを使用した Samba 共有への接続

  1. Samba サーバーのネットワークをクエリーするには、findsmb コマンドを使用します。見つかった各サーバーに対して、IP アドレス、NetBIOS 名、ワークグループ名、オペレーティングシステム、および SMB サーバーバージョンが表示されます。
    findsmb
  2. シェルプロンプトから Samba 共有に接続するには、以下のコマンドを入力します。
    smbclient //hostname/sharename -U username
    hostname を、接続する Samba サーバーのホスト名または IP アドレスに置き換え、sharename は参照する共有ディレクトリーの名前に、username は、システムの Samba ユーザー名に置き換えます。正しいパスワードを入力するか、ユーザーにパスワードが必要ない場合は Enter を押します。
    smb:\> プロンプトが表示された場合には、正常にログインしています。ログインしたら、コマンドのリストとして help と入力します。ホームディレクトリーの内容を参照する場合は、sharename をユーザー名に置き換えます。-U スイッチを使用しない場合、現行ユーザーのユーザー名が Samba サーバーに渡されます。
  3. smbclient を終了するには、exit プロンプトで smb:\> と入力します。

21.1.3.1. 共有のマウント

Samba 共有をディレクトリーにマウントして、ディレクトリー内のファイルをローカルファイルシステムの一部であるかのように処理できるように、Samba 共有をマウントすると便利な場合があります。
Samba 共有をディレクトリーにマウントするには、それをマウントするディレクトリーを作成し(存在しない場合)、root で以下のコマンドを実行します。
mount -t cifs //servername/sharename /mnt/point/ -o username=username,password=password
このコマンドは、/mnt/point/servername から sharename をマウントします。
samba 共有のマウントの詳細は、mount.cifs(8) man ページを参照してください。
cifs-utils パッケージのインストール
mount.cifs ユーティリティーは別の RPM(Samba に依存しない)です。mount.cifs を使用するには、最初に root で以下のコマンドを実行して、cifs-utils パッケージがインストールされていることを確認します。
~]# yum install cifs-utils
yum を使用したパッケージのインストールは 「パッケージのインストール」 を参照してください。
cifs-utils パッケージには、kerberized CIFS マウントを実行するためにカーネルが呼び出される cifs.upcall バイナリーが含まれることに注意してください。cifs.upcall の詳細は、cifs.upcall(8) の man ページを参照してください。
プレーンテキストのパスワードを必要とする CIFS サーバー
一部の CIFS サーバーでは、認証にプレーンテキストのパスワードが必要です。プレーンテキストのパスワード認証のサポートは、root で以下のコマンドを使用して有効にできます。
~]# echo 0x37 > /proc/fs/cifs/SecurityFlags
警告: この操作は、パスワード暗号化を削除してパスワードを公開できます。

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 ファイルは、匿名プリントサーバーの実装に必要な設定例を示しています。上記のように browseableno に設定しても、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 ドメインへのメンバーサーバーの追加

  1. 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 ディレクティブが必要です。
  2. メンバーサーバーで 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 の使用』 セクションを参照してください。
  3. 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 システムを提供するには、以下の手順に従います。
  1. root ユーザーを Samba パスワードデータベースに追加します。root ユーザーの新しい Samba パスワードを提供するように求められます。
    ~]# smbpasswd -a root
    New SMB password:
  2. smb サービスを起動します。
    ~]# service smb start
  3. すべてのプロファイル、ユーザー、および netlogon ディレクトリーが作成されていることを確認します。
  4. ユーザーをメンバーにできるグループを追加します。
    ~]# groupadd -f users
    ~]# groupadd -f nobody
    ~]# groupadd -f ntadmins
  5. 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
  6. ユーザーまたはグループへのアクセス権限を付与します。たとえば、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 ゲスト共有を設定するには、以下の手順に従います。

手順21.4 Samba ゲスト共有の設定

  1. この例では、/etc/samba/smbusers にユーザー名マップファイルを作成し、以下の行を追加します。
    nobody = guest
  2. /etc/samba/smb.conf ファイルの main セクションに、以下のディレクティブを追加します。また、valid users ディレクティブも使用しないでください。
    [GLOBAL]
    ...
    security = user
    map to guest = Bad User
    username map = /etc/samba/smbusers
    ...
    username map ディレクティブは、前のステップで指定したユーザー名マップファイルへのパスを提供します。
  3. 以下のディレクティブを、/ect/samba/smb.conf ファイルの share セクションに追加します。valid users ディレクティブは使用しないでください。
    [SHARE]
    ...
    guest ok = yes
    ...
以下のセクションでは、ユーザーレベルのセキュリティーのその他の実装について説明します。

ドメインセキュリティーモード(ユーザーレベルのセキュリティー)

ドメインセキュリティーモードでは、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.7.2. 共有レベルのセキュリティー

共有レベルのセキュリティーでは、サーバーはクライアントからの明示的なユーザー名のないパスワードのみを受け入れます。サーバーは、ユーザー名とは関係なく、共有ごとにパスワードが必要です。Microsoft Windows クライアントが共有レベルのセキュリティーサーバーとの互換性の問題があることを示す最近のレポートがあります。このモードは非推奨になっており、Red Hat は共有レベルのセキュリティーの使用を強くお勧めします。手順21.4「Samba ゲスト共有の設定」 ディレクティブを使用する代わりに、security = share に記載の手順に従います。

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 ServerOpenLDAP Server などの任意の数のサーバーにデータベースを複製する機能が原因で最適です。LDAP データベースは軽量でスケーラブルなため、大規模な企業から推奨されます。ディレクトリーサーバーのインストールと設定については、本章の対象外となります。Red Hat Directory Server の詳細は、『 Red Hat Directory Server9.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 サーバーがドメインまたはワークグループに適切に設定されている場合、browseableyes に設定すると、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 オプションは、サーバー接続のタイプを指定するために adsrap、または 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 名 trekIP アドレスを表示します。
~]$ 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 など)も利用可能です。これは、メーリングリストのメールを受信する代わりになります。