Product SiteDocumentation Site

11.5. Samba を使った Windows 共有のセットアップ

Samba は Linux 上で SMB プロトコル (「CIFS」としても知られています) を取り扱う一連のツールを指します。Windows はネットワーク共有と共有プリンタを使うために SMB プロトコルを使います。
さらに Samba は Windows ドメインコントローラとして振る舞うことも可能です。Samba は Linux サーバと Windows が実行されているオフィスデスクトップマシンを完璧に統合する卓越したツールです。

11.5.1. Samba サーバ

The samba package contains the main two servers of Samba 3, smbd and nmbd.

11.5.1.1. debconf を使った設定

このパッケージは最初のインストール時に尋ねた数個の Debconf 質問に対する回答に基づいた最低限の設定を行います。dpkg-reconfigure samba-common samba を使えば、後から各設定をやり直す事が可能です。
最初の質問で、Samba サーバが所属するワークグループの名前を尋ねられます (我々の場合、この質問に対する回答は FALCOTNET です)。もう 1 つの質問で、パスワードを暗号化するか否かを尋ねられます。この質問には、暗号化するべきと答えます。なぜなら、最近の Windows クライアントはほとんど暗号化を要求するからです; 加えて、パスワードの暗号化は安全性を高めます。パスワードの暗号化の欠点は、Samba パスワードを Unix パスワードと別に管理する必要がある点です。
次の質問で、DHCP デーモンによって提供される情報を使って WINS サーバを識別するか否かを尋ねられます。Falcot Corp 管理者はこのオプションを拒否しました。なぜなら、管理者は Samba サーバ自体を WINS サーバとして利用する予定だからです。
最後の質問で、サーバを inetd を使って起動するか、独立したデーモンとして運用するかを尋ねられます。inetd を使う選択肢は Samba を滅多に使わない場合を除けば効果的とはいえません; このため Falcot の管理者は独立したデーモンとして運用することを選びました。

11.5.1.2. 手作業による設定

11.5.1.2.1. smb.conf の変更
Falcot の用途に対応させるためには、/etc/samba/smb.conf 設定ファイルに含まれる他のオプションを変更することが必要です。以下の抜粋は [global] セクションに対する変更点を要約したものです。
[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = FALCOTNET

# server string is the equivalent of the NT Description field
   server string = %h server (Samba %v)

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
   wins support = yes 1

[...]

####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html 
# in the samba-doc package for details.
   security = user 2

# You may wish to use password encryption.  See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
   encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
   passdb backend = tdbsam

[...]

########## Printing ##########

# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
   load printers = yes 3

# lpr(ng) printing. You may wish to override the location of the
# printcap file
;   printing = bsd
;   printcap name = /etc/printcap

# CUPS printing.  See also the cupsaddsmb(8) manpage in the
# cups-client package.
   printing = cups 4
   printcap name = cups

1

Samba がローカルネットワークの Netbios ネームサーバ (WINS) として振る舞うことを意味します。

2

これは security パラメータのデフォルト値です; しかしながら、security パラメータは Samba 設定の要ですから、明示的に指定することをお勧めします。各ユーザは、共有の種類に関わらず必ず共有にアクセスする前に認証を必要とします。

3

Samba が CUPS 設定に存在する全てのローカルプリンタを自動的に共有することを意味します。適切なセクションを追加すれば、これらのプリンタへのアクセスを制限することも可能です。

4

使用する印刷システムを指定します; 我々の場合、CUPS です。
11.5.1.2.2. ユーザの追加
各ユーザはサーバにアカウントを必要とします; 管理者は最初に Unix アカウントを作成し、そのアカウントを Samba のデータベースに登録する必要があります。Unix アカウントを作成する段階は通常通り行います (例えば adduser を使います)。
既存のユーザを Samba データベースに追加するには、smbpasswd -a user コマンドを実行します。コマンドは対話的にパスワードを尋ねます。
ユーザを削除するには、smbpasswd -x user コマンドを実行します。Samba アカウントを一時的に利用不可能にしたり (smbpasswd -d user を使います)、再度利用可能にすること (smbpasswd -e user を使います) も可能です。
11.5.1.2.3. ドメインコントローラの切り替え
この節では、Falcot 管理者が更に行った設定について、説明しています。ここで Falcot 管理者は Samba サーバをローミングプロファイルを提供するドメインコントローラとして調整しています (こうすることで、接続したマシンに依存せずユーザは自分のデスクトップを見つけ出すことが可能です)。
最初に管理者は設定ファイルの [global] セクションに数個の追加的指示文を追加しました:
domain logons = yes              1
preferred master = yes           
logon path = \\%L\profiles\%U    2
logon script = scripts/logon.bat 3

1

ドメインコントローラの機能を有効化します。

2

ユーザのホームディレクトリの位置を指定します。ユーザのホームディレクトリは専用の共有に保存されており、特定のオプション (特に Windows 2000、XP、Vista と互換性を保つために必要な profile acls ) を有効化することが可能です。

3

batch (非対話的) スクリプトを指定します。このスクリプトはセッションの開始毎にクライアントの Windows マシンで実行されます。この場合、/var/lib/samba/netlogon/scripts/logon.bat です。このスクリプトは DOS フォーマットにしてください。つまり各行をキャリッジリターン文字とラインフィード文字で分割してください; このスクリプトを Linux で作成した場合、unix2dos を使って変換してください。
このスクリプトの中では、ネットワークドライブを自動作成したり、システム時間を同期するためのコマンドがよく使われます。

例11.27 logon.bat ファイル

net time \\ARRAKIS /set /yes
net use H: /home
net use U: \\ARRAKIS\utils
以下のとおり 2 つの追加的共有および関連するディレクトリを作成しました。
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

[profiles]
comment = Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
全てのユーザのホームディレクトリが (/var/lib/samba/profiles/user に) 作成され、各ホームディレクトリは必ず対応するユーザに所有されていなければいけません。

11.5.2. Samba クライアント

Samba のクライアント機能を使うことで、Linux マシンは Windows 共有と共有プリンタへアクセスすることが可能になります。必要なプログラムは cifs-utilssmbclient パッケージに含まれます。

11.5.2.1. smbclient プログラム

smbclient プログラムは SMB サーバに問い合わせを行います。特定のユーザ識別情報を使ってサーバに接続するには、-U user オプションを使います。smbclient //server/share はコマンドライン FTP クライアントに類似した対話的方法を使って共有にアクセスします。smbclient -L server は対象のサーバで利用可能な (見える) 共有を全部リストします。

11.5.2.2. Windows 共有のマウント

mount コマンドを使うことで、Windows 共有を Linux ファイルシステム階層にマウントすることが可能になります (cifs-utils の提供する mount.cifs の助けを借ります)。

例11.28 Windows 共有をマウントする

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
/etc/smb-credentials ファイルは (ユーザはこのファイルを読み込むことはできません) 以下の書式で書かれています:
username = user
password = password
他のオプションはコマンドラインで指定します; オプションの完全なリストは mount.cifs(1) マニュアルページに書かれています。オプションの中でも特に次の 2 種類は興味深いです; uidgid を使うことで、マウントされたことで利用可能になったファイルの所有者とグループを指定したものに強制することが可能になります。これを指定することで、root 以外のユーザもマウント先にアクセス可能になります。
/etc/fstab の中に設定を書いて、Windows 共有をマウントすることも可能です:
//server/shared /shared cifs credentials=/etc/smb-credentials
SMB/CIFS 共有をアンマウントするには、標準的な umount コマンドを使います。

11.5.2.3. 共有プリンタを用いた印刷

CUPS は Linux ワークステーションから Windows マシンによって共有されているプリンタに印刷を行う洗練された解決策です。smbclient がインストールされている場合、CUPS を使うことで、Windows 共有プリンタを自動的にインストールすることが可能です。
以下に必要な各段階を示します:
  • CUPS 設定インターフェイスにアクセスします: http://localhost:631/admin
  • 「Add Printer」をクリックします。
  • プリンタデバイスを選択し、「Windows Printer via SAMBA」を選んでください。
  • ネットワークプリンタの接続 URI を入力します。URI は以下の書式を使うべきです:
    smb://user:password@server/printer.
  • プリンタを一意に識別する名前を入力してください。その後、プリンタの説明と場所を入力してください。これらは、プリンタの利用者が印刷に使うプリンタを識別できるように、利用者に表示される文字列です。
  • プリンタの製造者/モデルを指示するか、使用するプリンタの説明ファイル (PPD) を直接提供します。
これで、プリンタが利用可能になりました!