Product SiteDocumentation Site

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

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

11.5.1. Samba サーバ

samba パッケージには、Samba 4 の主要な 2 種類のサーバ smbdnmbd が含まれます。

11.5.1.1. debconf を使った設定

samba パッケージは初回インストール時に最低限の設定を行いますが、設定を適用するには実際に dpkg-reconfigure samba-common を実行するべきです。
最初の質問で、Samba サーバが所属するワークグループの名前を尋ねられます (Falcot Corp の場合、この質問に対する回答は FALCOTNET です)。
次の質問で、DHCP デーモンによって提供される情報を使って WINS サーバを識別するか否かを尋ねられます。Falcot Corp の管理者はこのオプションを拒否しました。なぜなら、管理者は Samba サーバ自体を WINS サーバとして利用する予定だからです。

11.5.1.2. 手作業による設定

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

## 閲覧および身元確認 ###

# Samba サーバが所属するワークグループおよび NT ドメイン名に変更してください。
   workgroup = FALCOTNET

# 以下は Windows Internet Name Serving サポートを設定します。WINS Support
# オプションを yes に設定すると Samba の NMBD が WINS サーバとして機能します。
   wins support = yes 1

[...]

####### 認証 #######

# Server role オプションは Samba の動作モードを設定します。
# 設定できる値は "standalone server"、"member server"、"classic primary
# domain controller"、"classic backup domain controller"、"active
# directory domain controller" のうちどれか 1 つです。
#
# 多くの場合 "standalone sever" または "member server" を設定すると
# 良いでしょう。"active directory domain controller" を設定する場合、
# 事前に "samba-tool domain provision" を実行し、
# データベースを消去して新しいドメインを作成する必要があります。
   server role = standalone server

# security オプションの推奨設定は "security = user" です。この場合、Samba サーバ
# にアクセスするユーザはこのサーバの Unix アカウントを持っていなければいけません。
   security = user 2

[...]

1

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

2

これは security パラメータのデフォルト値です。しかしながら、security パラメータは Samba 設定の要ですから、明示的に指定することをお勧めします。各ユーザは、共有の種類に関わらず必ず共有にアクセスする前に認証を必要とします。
11.5.1.2.2. ユーザの追加
各 Samba ユーザはサーバにアカウントを持っていなければいけません。このため管理者は最初に Unix アカウントを作成し、そのアカウントを Samba のデータベースに登録する必要があります。Unix アカウントを作成する段階は通常通り行います (たとえば adduser を使います)。
既存のユーザを Samba データベースに追加するには、smbpasswd -a user コマンドを実行します。コマンドは対話的にパスワードを尋ねます。
ユーザを削除するには、smbpasswd -x user コマンドを実行します。Samba アカウントを一時的に利用できなくしたり (smbpasswd -d user を使います)、もう一度利用できるようにしたり (smbpasswd -e 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.24 Windows 共有をマウントする

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
/etc/smb-credentials ファイル (ユーザはこのファイルを読み込むことはできません) は以下の書式で書かれています。
username = user
password = password
コマンドラインで指定できるオプションは他にも存在します。オプションの完全なリストは mount.cifs(8) マニュアルページに書かれています。オプションの中でも特に次の 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) を直接提供します。
これで、プリンタが利用できるようになりました!