Google

Samba 2.2とLinux (Kernel 2.4) による
Windowsネットワーク構築ガイド

2001/12/04 改定

ミラクル・リナックス(株) 
小田切 耕司

<基本設定編>

Samba(「サンバ」と読む)は、UNIXやLinuxマシンをWindows NT互換のファイルサーバ/プリント・サーバにするオープン・ソース・ソフトウェアだ。
GPL (GNU General Public License) の元に無償で利用することができる。

ここではLinuxベースのSamba設定方法を解説し、Sambaサーバを構築していく。

構築手順は以下の通りだ。

(1) Linuxのインストール
(2) Samba 2.2日本語版のインストール
(3) SWATの起動
(4) smb.confの設定
(5) Sambaの起動
(6) Linuxユーザの登録
(7) Sambaユーザの登録
(8) Windowsクライアントの設定
(9) 動作確認
(10) Linuxプリンタを登録
(11) Samba共有プリンタを登録
(12) Windows側のプリンタ設定


(1) Linuxのインストール

Samba 2.2はLinuxカーネル2.4の上で開発され、いくつかの機能はLinuxカーネル2.4に依存している。

もちろん、Linuxカーネル2.2やFreeBSD、商用UNIXの上でも使用することは可能だが、本記事では以下のカーネル2.4のLinuxディストリビューションを前提に解説する。

●MIRACLE LINUX V2.0
●Red Hat Linux 7.1 / 7.2
●Turbolinux 7 Workstation / Server

それぞれのOSインストールの仕方はここでは述べないが、Sambaを利用するための条件としてインストール後以下のチェックを行いLinuxマシン(サーバ側)とWindowsマシン(クライアント側)でネットワーク設定が正しく行われていることを最低限確認して欲しい。

(i) Linuxマシン上で自分自身のIPアドレスに対し、pingを実行する。
自分のマシンのIPアドレスはifconfigコマンドで確認すること。もし、pingができない場合は、ネットワークの設定を確認して欲しい。

(ii) 自分自身にホスト名でping
hostnameコマンドで自分のホスト名を確認し、pingを実行して欲しい。
自分のホストのIPアドレスが先に確認したものでない場合は、DNSなどの設定を確認して欲しい。また、自分のホスト名のIPアドレスが127.0.0.1になる場合は、/etc/hostsの設定が誤っているので図1のように修正する。

図1

ホスト名がstyrax、IPアドレスが10.1.0.123、ドメイン名がsample.comの場合

<誤った/etc/hosts設定例>
127.0.0.1 styrax localhost.localdomain localhost

<正しい/etc/hosts設定例>
127.0.0.1 localhost.localdomain localhost
10.1.0.123 styrax styrax.sample.com

上記のようにホスト名と外部と通信可能なIPアドレスをマッピングさせる。
ドメイン名(sample.comなど)をつけたFQDNも必要に応じて指定する。

(iii) WindowsクライアントへIPアドレスでping
LinuxマシンからWindowsクライアントへIPアドレスでpingする。
これがエラーになる場合は、Windowsの設定が正しくできていないことなどが考えられる。

(iv) Windowsマシンへ名前でping
LinuxマシンからWindowsクライアントへホスト名でpingする。
これがエラーになる場合は、DNSの設定などが正しくされていないことなどが考えられる。
上記にあげた4つのpingコマンドをWindowsマシン上のコマンドプロンプトでも同様に実行してネットワークが接続されていることと名前解決のための設定が正しくされていることを確認して欲しい。


(2) Samba 2.2日本語版のインストール

ここではSamba 2.2日本語版のインストール方法について述べる。

先にあげたLinuxディストリビューションはすべて製品パッケージ管理機能としてRPM(Redhat Pakage Manager)を採用している。
そのためインストールは以下図2の手順で簡単に行える。(必ずrootになっておこなうこと)
他のディストリビューションでも以下の条件を満たしていればインストール可能かもしれない。

  • Linux Kernelが2.4(もしくは2.2)
  • glibcのバージョンが2.2以降
  • rpmのバージョンが4以降
  • (inetdでなく)xinetdがインストールされている。
  • pamが採用されている

図2
自分のディストリビューション用のRPMを ftp://ftp.samba.gr.jp/pub/samba-jp/ からダウンロードする。

Red Hat 7.1の場合は Red Hat 7.2のものは使用できないので、Red Hat 7.1と互換性のあるMIRACLE LINUX V2.0のものを使用すると良い。

$ su -
Password: ********** <-----rootのパスワードを入力
# rpm -Uvh samba-2.2*.rpm

もし、エラーが出てしまったら、図3のようにすべてのSambaモジュールを削除してからインストールしてみて欲しい。

日本Sambaユーザ会で配布しているRPMは1つですべてのSambaモジュールが入るようになっている。
Sambaを削除する時は、/etcにあるsmb.conf , smbpasswd , smbusers , printerdefなどをバックアップしておこう。

図3

インストールされているSambaのパッケージをリストする

# rpm -qa | grep samba

表示されたものをすべて削除する
ディストリビューションによって異なるが、以下はRed Hatの例である

# rpm -e samba-swat
# rpm -e samba-client
# rpm -e samba
# rpm -e samba-common

Turbolinuxの場合は上記に加えて以下もsamba-commonの前に削除する必要がある。

# rpm -e samba-debugtools
# rpm -e smbfs

もし、先にあげたディストリビューション以外でRPM4ベースのもの場合はSRPMを再ビルドすることでインストール可能なRPMを作成することができる。

図4

# rpm --rebuild samba*.src.rpm

新しいRPMが作成される場所もまたディストリビューンによって異なるのでメッセージをよく見てどこに作成されるか確認してから図2のコマンドを実行して欲しい。

例えば、Red Hat Linux 7.0の場合は、/usr/src/redhat/RPMS/i386/に作成される。
今回RPM3ベースのディストリビューン用のSRPMやRPMS用意していない。

これらやRPMに対応していないディストリビューンの場合、自分でSambaをソースからコンパイルすることで対応することは可能であるが、初心者には難しい上、解説にはかなりのページを費やすため今回は省略させて頂く。


(3) SWATを起動

Sambaの設定はsmb.confファイルに設定パラメータを記述することで行う。
このファイルは、/etc/samba/ディレクトリにある(Turbolinux 7のオリジナルSambaでは/etc/ ディレクトリにある。)
このファイルはviエディタやemacsで編集すればいいが、初心者にはかなり難解であり、経験者でもパラメータのスペルを忘れがちだ。

そうした人のためにSambaには標準でSWATというSamba Web管理ツールが同梱されている。これを使うとWebブラウザからSambaの設定や管理が可能になる。
SWATはhttpプロトコルでアクセスするが、SWAT単体ではサーバとして動かすことはできない。
かといってApacheなどのhttpdサーバにアドオンするものでもない。

SWATにはいくつかの起動方法があり、一般的な方法は以下である。

  • inetd経由で起動
  • xinetd経由で起動
  • webmin経由で起動
  • stunnel経由で起動

かつてはinetd経由の起動が多かったが、最近のディストリビューンではinetdの替わりにxinetdを採用するようになったため、Red Hat Linux 7.xやTurbolinux 7.0ではxinetd経由で起動する。

Mirale Linux V2.0もxinetd経由で起動可能であるが、セキュリティの観点から暗号化通信可能なwebmin経由の起動を標準設定・推奨している。

inetd,xinetd経由で使用する場合は、通信が暗号化されずrootのパスワードなどが他者から盗聴可能なのでファイアフォール内のイントラネット以外で使用することは推奨しない。

MIRACLE LINUX V2.0は標準でwebminからSWATを利用可能にしてあるが、Red Hat Linux / Turbolinux では標準で利用できないようになっている。

使用できるようにするには以下の2つのコマンドをrootで実行する。

# chkconfig swat on
# service xinetd restart

Turbolinuxはこれだけで使用できるようになるが、Red HatのオリジナルSambaの場合はリモートからのSWAT接続はできないので、/etc/xinetd.d/swatファイルの以下の行を削除することも推奨する。

only_host=localhost

SWATの起動方法はWebブラウザから、Red Hat / Turbolinuxの場合 http://Sambaサーバ名:901/ でアクセスし、MIRACLE LINUX V2.0の場合は、https://Sambaサーバ名:10000/ で一旦Webminにログインしてからサーバメニューの中からSambaを探してSWATのアイコンからログインする。

xinetd経由もwebmin経由でも起動時に認証が必要なので、ユーザ名としてrootを、パスワードとしてrootのものを入力する。


図5

しかし、SWATはWindows版のMSIEかNetscapeで使用するようにして欲しい。

Linux版のNetscape 4.xなどを使用してはいけない。

理由はNetscape 4.x以前にはバグがあって、入力データをSWATに正確に送らないため、設定を変更するとsmb.confが壊れてしまうことがあるからだ。
Linuxのnetscape4.xからの場合では参照だけにして欲しい。
(Netscape6.xやMozillaでは修正されているようだ)


(4) smb.confの設定

SWATを使えばディストリビューンやインストール方法によるsmb.confの場所の違いを意識せずにSambaの設定を行うことができる。
具体的な操作方法としては画面の上部にある以下のアイコンをクリックして行う。

●ホーム(HOME)

SWATの表紙を表示する。
日本語の説明や技術資料を簡単に見ることができる。

図6

●全体設定(GLOBALS)

Samba全体の設定を行う[GLOBAL]セクションの設定ができる。
セキュリティ モードもこの中で設定する。 

図7

●共有設定(SHARES)

共有フォルダ毎の設定ができる。
ユーザホーム機能を提供する[homes]セクションもここで設定する。 

図8

●プリンタ(PRINTERS)

プリンタ共有の設定をする。
プリンタ共有全体を提供する[printers]セクションもここで設定する。 

図9

●動作状況(STATUS)

Sambaデーモンの起動・終了ができる。加えて、誰が共有ファイルをアクセスしているか表示される。
ユーザのセッションを強制切断することも可能だ。 

図10

●設定表示(VIEW)

smb.confの内容を表示する。
しかし、これはSWATが認識できたものであり、smb.confの内容そのままではない。トラブル時は実際のファイルも確認して欲しい。 

図11

●パスワード(PASSWORD)

ユーザの追加・削除、パスワードの変更などを行える。 
該当マシンのSambaユーザの追加・削除・パスワード変更に加え、リモート(別マシン)のWindows NT/2000 Server およびSambaユーザのパスワード変更も可能だ。Security=domainおよびserverを使っている場合はこの機能を使ってパスワード変更する。

図12

Sambaを使用するにあたってはSWATの表紙にある「導入編」にあるドキュメントは、必ず目を通しておこう。


◎セキュリティ・モードの決定

Sambaの設定に先だってまず以下の4つのセキュリティ・モードから1つを選ぶ必要がある。 

●security = user (ユーザ認証モード)

共有(ファイル/プリンタ)を個別のユーザを使ってアクセスする。
必ずUNIXアカウントが必要なので、新規ユーザのためには新しくアカウントを作成する必要がある。
SambaだけでWindowsドメインやWindowsワークグループを作成する場合に適しているが、パスワードはLinux用とは別にSamba専用のものを別に管理する必要がある。これがデフォルトの値である。

●security = domain (ドメイン認証モード)

共有(ファイル/プリンタ)を個別のユーザを使ってアクセスする。
必ずUNIXアカウントが必要なので、新規ユーザのためには新しくアカウントを作成する必要がある。
しかし、ユーザ認証はWindowsドメインにしてもらうため、Samba専用のパスワード管理は不要である。
すでに、Windowsドメインが構築されていて、そこにSambaマシンを追加する場合に適している。
また、Samba 2.2.2からサポートされたwinbindを使用する場合もこのモードを使用する。

Samba 2.0/2.2では上記security=userまたはdomainでシステム運用することを推奨する。以下に述べる2つのセキュリティ・モードも存在するがセキュリティ強度の問題からあまり推奨しない。

●security = share (共有認証モード)

共有(ファイル/プリンタ)を決まった固定ユーザを使ってアクセスする。
(認証ユーザを共有する)
パスワードだけで、アクセス制御できるため、新規ユーザのために新しくアカウントを作成する必要がない。
小規模な部門サーバやSOHO用に適しているが、不特定多数が使用する(個別にアカウントが作成できない)場合にも対応できる。

●security = server (サーバ認証モード)

共有(ファイル/プリンタ)を個別のユーザを使ってアクセスする。
必ずUNIXアカウントが必要なので、新規ユーザのためには新しくアカウントを作成する必要がある。
しかし、ユーザ認証は他のWindowsサーバやSambaサーバにしてもらうため、Samba専用のパスワード管理は不要である。
すでに、SambaやWindowsによるWindowsワークグループが構築されていて、そこにSambaマシンを追加する場合に適している。


では、「全体設定 [GLOBALS] 」アイコンをクリックして、設定を開始する。パラメータはたくさんでてくるが、重要なパラメータだけを解説する。

SWATは、最初重要なパラメータまたはデフォルト以外を設定しているパラメータを表示する。
「詳細表示」ボタンを押すことですべての設定可能パラメータを表示させることができる。

もし、「coding system」と「client code page」の2つのパラメータが設定されていなければ「詳細表示」のボタンを押して忘れずに設定する。この2つを指定していないと日本語ファイル名は使用できない。

●coding system

Linuxマシン側で扱う日本語ファイル名のコーディングシステムを指定。
eucを推奨するが、sjis,hex,capなども選べる。詳細は機能編を参照して欲しい。

●client code page

クライアントに日本語Windowsを使用する時は、932を必ず指定する。

●workgroup 

Sambaの所属する(あるいはクライアントへ応答する)Windowsワークグループ名/Windowsドメイン名を指定する。
Windowsクライアントで指定するものと同じワークグループ名/ドメイン名を指定すると良い。

●server string 

「ネットワークコンピュータ一覧」で詳細表示した時、「サーバの説明」と「プリンタの説明」に表示する文字列を指定する。
文字列の中の%v は Samba バージョン番号と置換され、%h は ホスト名に置換される。

既定値: server string = Samba %v 

例: server string = Samba %v on %h Linux

●security 

先に説明したセキュリティ・モードを指定する。

●map to guest 

UNIXにユーザアカウントがない場合、guest接続を許すかどうか指定する。設定は下記の3 種類がある。

  • "Never"
    guest接続を許さない。既定値。 
  • "Bad User"
    ユーザ名が無かった場合、ゲストログインとして扱い、 "guest account" で接続する。 
  • "Bad Password"
    不正なパスワードの場合、ゲストログインとして扱い、 "guest account" で接続する。
    これは、任意のユーザがパスワードをタイプミスしたり、暗号化パスワードを設定し忘れていても、なにも言われずに "guest" としてログインしてしまうことに注意。 

●encrypt passwords 

暗号化されたパスワードを使用するかどうか、指定する。
最近のWindowsでは暗号化パスワードが必須なので必ずyesとする。
暗号化パスワードは/usr/bin/smbpasswdコマンドによって/etc/samba/smbpasswdに格納される。

●socket options 

以下を指定することを推奨。
(TCPネットワークに詳しくない方は変更しないこと)

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192


SWATの入力項目に必要なパラメータを入力したら、「設定」ボタンを押して確定する。

以下に設定例をあげる。
解説しなかったパラメータについてはSWATのヘルプで機能を確認して欲しい。

図13


[global]

	coding system = euc

	client code page = 932

	server string = %h : Samba %v

	encrypt passwords = Yes

	map to guest = Bad User

	passwd program = /usr/bin/passwd %u

	passwd chat = *New*password* %n\n *Re*new*password* %n\n *success*

	unix password sync = Yes

	log file = /var/log/samba/log.%m

	max log size = 50

	deadtime = 15

	read size = 65536

	socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

	lm announce = False

	dns proxy = No

	level2 oplocks = Yes

	dos filetimes = Yes

	dos filetime resolution = Yes



[printers]

	comment = All Printers

	path = /var/spool/samba

	printable = Yes

	browseable = No



[homes]

	comment = %S's Home Directories

	writeable = Yes

	browseable = No



[PUBLIC]

	comment = Public Space for Everyone

	path = /home/samba/public

	writeable = Yes

	force create mode = 0664

	force directory mode = 0775

	guest only = Yes

	guest ok = Yes



[NETLOGON]

	comment = Script for Domain Logon

	path = /home/samba/netlogon

    admin users = administrator

    write list = administrator

	guest ok = Yes

    

◎共有フォルダの設定方法

続いてファイル共有の設定をしてみる。ここでは、全体設定で「security = user (または、domain , server)」を選択したことを前提に解説する。( 「security = share (共有認証モード)」 では、動きが異なる)

SWATの「共有設定」のアイコンを押す。次に新規の共有名を入力し、「新規共有作成」のボタンを押すとパラメータの入力画面が出てくる。

ここでは、例として共有名を「企画」として説明する。

●共有名

SWATで設定する場合は自動変換するので意識する必要はないが、smb.confの中に指定する文字(共有名やコメント)はcoding systemに合わせた日本語コードで記述する必要がある。
Samba日本語版では、日本語の取り扱いについてオリジナルより改良されているが機種依存文字や外字を使用するのは止めた方が良い。

●comment

共有名のコメント(説明)を記述する。40バイト以下にすること。

例: comment = 企画の共有フォルダ

●path 

このパラメータは、共有するLinux上のディレクトリを指定する。

例: path = /home/kikaku

●read only またはwriteable

更新のある共有は、read only = No またはwriteable = yesとする。

●create mask

Samba によって作成されるファイルに設定されるUNIX のモード・ビットのパーミッションを4桁の8進数で指定する。

●directory mask

Samba によって作成されるディレクトリに設定されるUNIX のモード・ビットのパーミッションを4桁の8進数で指定する。

●force user 

クライアントが接続したときのユーザ名は無視され、全てのファイル操作は「強制されたユーザ forced user」によって実行されたことになる。

●guest only

guest ok = yes の時、全てのファイル操作は guest によって実行されたことになる。

●guest ok

接続するときにパスワードが不要になり、guestでアクセス可能となる。

●browseable 

net view コマンドの出力や「ネットワーク コンピュータ」の共有一覧にこの共有を見せるかどうか指定する。
ただし、ユーザホーム機能を提供する[homes]の場合は、browseable = Noとする。

既定値: browseable = Yes 


これらの入力が終わったら、「設定変更」のボタンを押す。これで、Linux側の ディレクトリ が Windows 側に共有されることになる。

今回は、公開範囲を3レベル想定し、以下に3つの例をあげる。

例1)決まったユーザ(グループ)だけが、アクセス可能な共有の設定

/home/kikaku の属性を 775(rwxrwxr-x)とし、同一のUNIXグループだけが更新でき、他のUNIXグループは参照が可能な共有を作成する。(valid usersとinvalid usersで、更にグループ内のユーザを制限可能)
UNIXにアカウントとパスワードの設定のないものはアクセスできない。

[企画]
comment = 企画の共有フォルダ
path = /home/kikaku
read only = No
create mode = 0664
directory mode = 0775 

例2)UNIXにアカウントを持つユーザは誰でもアクセス可能な共有の設定

/home/kikaku の属性を 755(rwxr-xr-x)とし、ディレクトリの所有者をkikauというUNIXユーザとする。
UNIXにアカウントとパスワードの設定のあるものは、この共有に誰でもアクセス(更新・参照)できる。
しかし、UNIXにアカウントのないものはアクセスできない。

[企画]
comment = 企画の共有フォルダ
path = /home/kikaku
read only = No
force user = kikaku         # 全員が、kikakuというUNIXユーザでアクセスする。 

例3)誰でもアクセス可能な共有の設定

/home/kikaku の属性を 755(rwxr-xr-x)とし、ディレクトリの所有者をnobodyというUNIXユーザとする。
UNIXにアカウントがあっても、なくても誰でもアクセス(更新・参照)できる。

[global]
map to guest = bad user                  # UNIXにアカウントがない場合は、guestでアクセス可能とします

[企画]
comment = 企画の共有フォルダ
path = /home/kikaku
read only = No
guest only = Yes        # アカウントのあるユーザもguestでアクセスさせます。
guest ok = Yes 

(5) Sambaの起動

SWATを使って設定がうまくいったら、以下のいずれかの方法でSambaを起動する。

●SWATで起動

SWATの状態表示(STATUS)ページを開いて、smbd (ファイル共有デーモン) と nmbd (ネームサービスデーモン) を開始させる。

●コマンドで起動

rootになって以下のコマンドを実行する。

service smb start

●システム起動時に起動

OS起動時にSambaが自動的に起動するように以下のコマンドをrootで実行する。

chkconfig smb on

システムをリブートすると起動する。


(6) Linuxユーザーの登録

新しくSambaユーザを登録するには、まずLinuxのユーザーを登録する必要がある。

以下はSambaに限った方法ではなく、一般的なユーザーの登録方法だ。

# useradd ユーザ名

実行例)

# useradd odagiri

MIRACLE LINUX V2.0で標準インストールされるWebminを使用する場合は、「UnixとSambaユーザの自動同期」機能を使用すると、Linuxユーザのアカウント、パスワードを作成するときに自動でSambaユーザの設定をすることが可能だ。
(smb.confのunix password sync と異なるが併用すると良い)

使用方法は、各種サーバ設定画面の「Samba Windowsファイル共有」をクリックするとSambaの設定画面となるので「UnixとSambaユーザの同期の自動化を設定」をクリックし、以下を設定する。

● Unixのユーザが追加されたときに Samba ユーザを追加
● Unixのユーザが変更されたときに Samba ユーザを変更
● Unixのユーザが削除されたときに Samba ユーザを削除

GUIのツール(linuxconfなど)もしくはLinuxユーザの設定情報は/etc/passwdなどに格納される。


(7) Sambaユーザの作成

Sambaのユーザーは、Linuxのユーザー設定に加えSamba独自の設定が必要となる。

以下のようにSambaユーザを登録する。

# smbpasswd -a odagiri
New SMB password:        <-----パスワードを入力
Retype new SMB password: <-----再度パスワードを入力

(8) Windowsクライアントの設定

次に Windows95/98/NT クライアント側の設定について解説する。

基本的に何ら設定を変更することはないと思うが、もしうまく接続できない場合は以下を確認して欲しい。

  • クライアントとして、「Microsoftネットワーク クライアント」を組み込む。
    「Windowsファミリ」は組み込まないこと。
  • 「優先的にログオンする」は「Microsoftネットワーク クライアント」とする。
    「Windowsファミリログオン」や「Windowsログオン」にしないこと。
  • プロトコルとして、TCP/IP以外を削除する。
    特にNetBEUIはトラブルの元である。

図14にWindows2000の設定例をあげる。


図14.Windows 2000の設定

◎ワークグループ名の確認

Samba サーバの設定で新規にワークグループを構築した場合は、ワークグループ名をサーバで設定したものにあわせると良い。

(注1)
Samba サーバを既存のワークグループに参加させた場合は、クライアント側では何も設定する必要はない。

(注2)
実際には Samba サーバにアクセスするためには、必ずしもワークグループ名が同一である必要はない。
例えば WINS 等で名前解決が出来ていれば UNC名(\\サーバ名\共有名)を直接指定してアクセスしても構わない。


(9) 動作確認

Windowsの「スタート」ボタンをクリックし、「ファイル名を指定して実行」を開き、名前入力の中へ「\\サーバ名」もしくは「\\サーバ名\共有名」を直接指定して実行してみて欲しい。コンピュータの共有一覧やファイル一覧が表示されれば問題ない。

もし、うまくアクセスできなければ以下を参考に調査して欲しい。

Sambaの診断方法


(10) Linuxプリンタを登録

Sambaサーバで共有プリンタを使うには、まずLinux上でプリンタを使用できるようにする必要がある。

今回はRedHat 7.1系でよく使われるプリンタ設定ツール(printconf-gui)を使った方法を紹介する。
Miracle Linux V2.0 / Red Hat Linux 7.xの場合、GNOMEの「プログラム」−「システム」−「プリンタ設定」から移動する。


図15.printconf-gui

「新規」ボタンを押してプリンタを作成する。


図16.プリンタを新規作成

Sambaのプリンタでは、「プリンタ・ドライバ」で「Rawプリントキュー」を指定し、プリントフィルタが動作しないようにする。


図17

プリンタが定義できたら適用ボタンを押して、lpdを再起動する。


図18


(11) Samba共有プリンタを登録

Sambaの場合は、プリンタ毎の設定は通常必要ない。きめ細かな設定が必要な時のみプリンタ毎に設定する。

なぜなら、OS(の/etc/printcap)に設定してあるすべてのプリンタを、Sambaで公開する設定の「load printers = yes」はデフォルトなので通常指定する必要はないからだ。

最低限SWATの「プリンタ設定」で以下をデフォルト設定がしてあればすぐにプリンタが使用できる。

[printers] 
path = /var/spool/samba
writeable = no
guest ok = yes 
printable = yes 

(12) Windows側のプリンタの設定

Sambaのプリンタをクライアントから使用するには、(Linux側にプリンタドライバは必要なく)クライアント側にプリンタドライバが必要だ。

プリンタを設定するには、「ネットワークコンピュータ」からSambaマシンをクリックして、現れるプリンタアイコンをダブルクリックするだけでインストールが開始される。
プリンタドライバの場所を聞いてきますので、プリンタに付属していたものやインターネットで最新のWindows用のものをダウンロードして使用する。


<Samba使いこなしテクニック(応用編)>

◎ユーザホーム機能の使い方

共有の表示時に、クライアントのユーザ名を共有名としてマッピングして表示する機能だ。 

たとえば、yamadaというアカウントでSambaマシンをアクセス(ネットワーク・コンピュータをクリック)した場合、UNIX上の/home/yamadaが共有名yamadaとして表示され、また、suzukiというアカウントでSambaマシンをアクセス(ネットワーク・コンピュータをクリック)した場合はUNIX上の/home/suzukiが共有名suzukiとして表示される。

これによってユーザごとの専用のディレクトリを提供し、他人のディレクトリをアクセスするのが防げる。

●smb.conf設定例

SWATの「全体設定」で[global]を設定し、「共有設定」でhomesという共有を作成する。

[global]
security = USER
encrypt passwords = Yes
[homes]
comment = %Sさん専用の共有です
valid users = %S     
read only = No
browseable = No

◎SambaをWinodwsドメインに加える

Windows ドメインがすでに存在する場合、Samba は,Windows NT / 2000 Workstation のようにWindowsドメインに参加することが可能だ。
ドメインに参加することで、認証を Windows ドメインに統合して、よりシームレスな運用が可能になる。

●Windowsドメインへの参加方法

まず準備として Windows NT/2000 Serverの "サーバマネージャ"(svrmgr.exe) を使ってSambaマシンをWindows NT WorkstatonとしてWindowsドメインに追加する。

その後 Samba マシン上でドメイン参加の手続きを行なう。

参加するWindowsドメインの名前が DOMNAME , PDC(プライマリ・ドメイン・コントローラ) のコンピュータ名が DOMPDC の場合の方法は以下の通りだ。

# service smb stop <-- Samba サーバの停止
# smbpasswd -j DOMNAME -r DOMPDC
smbpasswd: Joined domain DOMAIN. <-- 成功したときに表示されるメッセージ 

事前に忘れずに Samba サーバを停止させること。

また、-r オプションでは、必ず PDC のコンピュータ名(上記の例では DOMPDC)で PDC を指定する必要がある。
エラーになる場合は、PDC のコンピュータ名と IP アドレスを /etc/hosts に記述しておく。

これを確認したら、以下のように security パラメータを DOMAIN にして、Samba サーバを起動する。

●SWATで設定するsmb.confの内容

[global]
security = DOMAIN
encrypt passwords = Yes
workgroup=DOMNAME                             # ドメイン名を指定します
password server = DOMPDC                          # ここは、* も指定可能。 

●add user script と del user script を設定する

Samba サーバをWindowsドメインのメンバにしたことで、Windowsドメインにログオンしたユーザであれば Samba サーバにもシームレスにアクセスできるようになる。

そこで更に一歩進んで、Samba サーバ上でのアカウントのメンテナンスを自動化する方法を解説する。
まず、一例として以下のようなスクリプトを /usr/local/sbin に作成する。

スクリプト( /usr/local/sbin/smb-useradd.sh ) の例

#!/bin/sh
/usr/sbin/useradd -m $1
mkdir ~$1/public_html                          # これは、ApacheのためのWebホームディレクトリ 

スクリプト( /usr/local/sbin/smb-userdel.sh ) の例

#!/bin/sh
/usr/sbin/userdel -r $1 

次にSWATでsmb.confに、以下の、add user script と del user script パラメータを設定する。

smb.confの設定

[global]
add user script = /usr/local/sbin/smb-useradd.sh %u
delete user script = /usr/local/sbin/smb-userdel.sh %u 

これで、Windows ドメインにアカウントがあるが、Samba サーバにはアカウントがないユーザで Windows ドメインにログオン後、Samba サーバにアクセスすると、自動的ユーザが登録されホームディレクトリが表示される。

add user script を設定すると、Windowsドメインで認証されているにも関わらず、Samba サーバに存在しないユーザでアクセスがあったときに、add user script で指定したスクリプトを実行してユーザを自動的に作成することが出来るのだ。

del user script は、同様にユーザがWindowsドメインに存在しなくなったときに自動的に消去するためのスクリプトだ。

これらを活用することで、Windowsドメイン上でのユーザの追加/ 削除のみで、Samba サーバ上に自動でユーザの作成/ 削除を行なうが可能になり、管理コストが大幅に削減される。


◎SambaによるWindowsドメインコントローラの構築

Samba 2.2はWinodwsドメインコントローラとして機能することが可能になっている。

●SambaをWinodwsドメインコントローラとして設定する

まず、SWATの「全体設定」で smb.conf を設定して下さい。

[global]
security = USER
encrypt passwords = Yes
domain logons = Yes
domain master = yes
wins support = yes
local master = yes
preferred master = yes
os level = 65
workgroup=ドメイン名
logon script=%U.bat 

次に「共有設定」で[netlogon]共有を作成し、以下のように設定する。

[netlogon]
path = /home/samba/netlogon
writeable = no
guest ok = yes

動作確認のために、Windows クライアント上で 以下のようなログオンスクリプトを記述し,Samba サーバの [netlogon] 共有にユーザ名.batという名前で配置しておく。

net use * \\サーバ名\ユーザ名 
pause                            #動作確認したらこの行は削除しよう

●Windows 95 / 98 / Me クライアントの設定

Windows 9x / Meクライアントの側では,[コントロールパネル] - [ネットワーク]- [Microsoft ネットワーククライアント] のプロパティを以下のように設定する。


図19

また Windowsドメインでの設定と同様に、[コントロールパネル] -[パスワード] の"ユーザ別の設定" タブで,以下のように,ユーザ別の設定" をチェックしておくことで、ユーザプロファイルの利用も可能になる。


図20

●Windows NT / 2000 / XPの設定

Windows 9x / Meはドメイン・ログオンするのにSamba PDC上で何も設定が必要ないが、SambaとWindows NT/2000/XPをドメイン・メンバに加える場合は、PDCマシンの上でドメイン・メンバ・マシンのマシンアカウントを作成する必要がある。

PDCマシン上でrootになり、以下を実行する必要がある。
(#の後が入力内容)

# smbpasswd -a root 

上記は、1度だけ実行し、rootのパスワードを設定する。

Windowsのadministratorから管理をしたい場合は、このユーザも以下のように追加した方が良いだろう。

# useradd administrator
# smbpasswd -a administrator

Sambaのユーザ・アカウントは英大文字は使用せず、英子文字、数字のみで15バイト以下とすること。(日本語も使用不可)

そして、マシン・アカウント用のグループも作成した方がいいだろう。

# groupadd machines

以下はドメイン・メンバのマシン分実行する。

# useradd -g machines -d /dev/null -s /bin/false マシン名$
# smbpasswd -a -m マシン名

useraddの時、マシン名の後に$をつけたものをLinuxユーザとして登録する必要があるので気をつけて欲しい。
(マシン名は英大文字は使用せず、英子文字、数字のみで15バイト以下とすること。日本語も使用不可)

Windows NT/2000/XP上では以下の作業を行う。

(1) Administratorとしてログオンする。

(2) コントロールパネルの「システム」のプロパティを起動し、「ネットワークID」タブの「ネットワークID」のボタンを押す。


図21

(3) 「ユーザアカウントとドメイン情報」の入力で、Samba PDCで設定したrootユーザとrootのパスワード、ドメイン名を入力する。


図22 

(4)  「ドメインへようこそ」というダイアログが表示されることを確認する。

(5) Windows XP Professionalの場合、以下の設定を変更しないとドメインログオンできない。

「コントロールパネル」の「管理ツール」から「ローカル セキュリティ ポリシー」を起動し、「ローカル ポリシー」の「セキュリティ」オプションにおいて、「ドメイン メンバ:常にセキュリティ チャネルのデータをデジタル的に暗号化または署名する」を「無効」にする。


図23

これでWindows 2000と同等のレベルになり、問題なくSambaドメインログインできる。

●ドメインログオン

設定を行なったら、Windows クライアントをリブートし、設定したWindowsドメインにログオンする。
ログオンスクリプトが動作すれば、設定は正しく動いている。

Samba サーバが複数台ある時は、一台のサーバをWindowsドメインコントローラとして設定し、残りのサーバは security パラメータを domain にして、認証サーバとしてドメインコントローラの Samba サーバを指定すれば、Windows ドメイン環境のように、一度認証を受ければ、すべての Samba サーバにアクセスできるようになる。


◎LinuxからWindowsファイルシステムを使用する(smbmount機能)

Sambaを使ってWindowsの共有フォルダをLinuxのファイルシステムとしてマウントすることが出来る。
iocharsetパラメータで表示の漢字コードも指定できる。LinuxのktermなどはEUCが標準なのでeuc-jpを指定しよう。

使用方法)

# mount -t smbfs -o username=Windowsユーザ名,password=Windowsパスワード,codepage=cp932,iocharset=euc-jp //サーバ名/共有名 マウント先

例)Windows共有 \\odagirixp01\shareddocs にユーザ名Administrator パスワードmiracle で接続し、Linuxの/mnt/smb1 にマウントする。

# mount -t smbfs -o username=administrator,password=admin12,codepage=cp932,iocharset=euc-jp //server1/share1 /mnt/smb1

これで、マウントの設定は終わりだ。

実際にマウントされているかどうかを df コマンドを使って確かめると良い。
マウントされた共有は、通常のファイルシステム同様に cd や ls などのコマンドを使って操作することができる。


図24

しかし、Windows のTCP/IPフィルタリング機能やファイアウォールソフトを使っている場合は接続できないことがあるので気を付けて欲しい。


図25

外部からのファイル共有を受け付けるにはポート139番のTCPポートを受け付けるようにすればよい。

ブラウジングや名前解決で問題が出る場合は、137番のUDPポートと138番のTCPポートを通すようにすると良い。


小田切 耕司