Sambaに関する記述
Last modify 2003/11/13
by Eiji OKANO
○ Samba
インストールと起動の設定
■今回の環境
tenno ← sambaサーバのマシン名のこと。 Debian GNU/Linux 3.0 kernel2.4.17 IPaddres = 192.168.128.2(DHCP)
DBLABSAMBA ← 今回のsambaのワークグループ名(?)
■コンパイル&インストール
root で作業すること
# su -
# mv /tmp/samba-2.0.7-ja-2.1.tar.gz
/usr/local/src/
# cd /usr/local/src/
# tar zxf samba-2.0.7-ja-2.1.tar.gz
# cd samba-2.0.7-ja-2.1/source/
# ./configure --with-i18n-swat
# make
# make install
以上で、/usr/local/samba 以下に必要ファイルがインストールされて完了。
configure で指定している --with-i18n-swat は、
SWAT という Samba の設定をブラウザ上からできるようにするための
ソフトウェアで日本語が使えるようにするための指定。
■設定の基礎
Samba の設定ファイルは、デフォルトで /usr/local/samba/etc/smb.conf を参照するようになっている。
インストールした段階では、設定ファイルは作成されてないので、ソースアーカイブに含まれている
サンプルの設定をコピーする。
# cp /usr/local/src/samba-2.0.7-ja-2.1/examples/smb.conf.default.jp /usr/local/samba/etc/smb.conf
内容は Windows の INI ファイルに似た構造のテキストファイルになっている。
このテキストファイルを直接編集することで設定の変更が可能。
また、SWAT という仕組みを利用する方法もある。
SWAT を使えるようにするためにはいくつかの準備が必要となる。
・ inetd の設定
・ PAM の設定
RedHat 6.2J では、inetd の設定が不十分なため、変更が必要である。
/etc/inetd.conf の SWAT の行を下記のように追加する。
Debianでも同様。
swat stream tcp nowait.400 root
/usr/local/samba/bin/swat swat
PAM (Pluggable Authentication Modules)の設定ができているかどうかは、
/etc/pam.d/samba ファイルがあるかどうかで分かる。
無い場合は下記内容で作成する。
auth required
/lib/security/pam_pwdb.so nullok shadow
account required /lib/security/pam_pwdb.so
Debianはデフォルトでファイルが存在する。(従って設定は無用)
設定を行ったら
# ps axwu | grep inetd
root 23402 0.0 0.0 S 0:00 inetd
inetdを再起動する。
# kill -HUP 23402
(23402はinetdのPID)
もし最初からinetdが起動していなければ、普通に起動させる。
# /usr/sbin/inetd
apt-getでインストールしたのなら
# /ete/init.d/inetd restart
でよい
以上で準備は完了となる。
・ smbd,nmbdの電源入力時の自動起動設定
/etc/init.d/sambaをカスタマイズして書き換える
/etc/rc2.d/S20samba → /etc/init.d/sambaのシンボリックリンクを作成
※apt-getでインストールした場合は設定する必要はない
参考ページ
http://itb-tech.itboost.co.jp/inst/inst_13.php
○ Samba
domainユーザの登録
世の中ずいぶんと便利になったものでして、sambaの設定からユーザの登録、daemonの起動までぜーんぶWeb(swat)で設定できます。
1.
sambaが動いているマシンのIPを調べる。
2.
ブラウザで http://192.168.128.2:901/ と指定する。(このIPはtenno(samba server)のDHCPアドレス)
3.
パスワードを要求されるので アカウント[root] パスワード[rootのパスワード]を入力。
このrootとはsambaが起動しているLinuxコンピュータのrootのこと。
※もし要求されなかったら、/etc/services
でswatのポートが901となっているかどうかを確認!!
※それでも起動しなければ、inetdが動いていない可能性がある。上記に戻って確認!!
4.
認証が成功するとswatというsambaをグラフィカルで設定する画面に遷移する。
5. rootでログインしたときは、すべての項目を利用可能になっているので確認する。

(図1:rootでログインしたときの画面)
6.
PASSWORDのタブをクリックする。そうすると図2の画面が表れる。
上段のServer Password
Managementという項目で個人ユーザを追加できる。
ここで追加できるユーザはsambaの個人ユーザである。
追加されたユーザは新たにパスワードが作成される。(/etc/samba/smbpasswdに自動的に追加)
作成できるのはrootでswatにログインしたときだけである

(図2:パスワードの設定画面)
7.
個人ユーザでswatにログイン
rootでsambaユーザを作成したならば、ブラウザでhttp://192.168.128.2:901/ (sambaサーバのIPアドレス:ポート番号)
と指定する。
個人ユーザでswatにログインする。このswatへのログインはUNIXのnis で管理されている個人ユーザのアカウントとpasswordを入力する。
(6.で作成したsambaユーザではない)
下記の図はユーザアカウントでログインしたときの画面(root時とは多少異なる)
Logged in as (ユーザ名) と表示されているはず。

(図3:個人ユーザでSWATにログインしたときの画面)
root時に作成された個人ユーザのパスワードは、自分で変更することができる。
上記のSever Password Managementでsamba(※ nisではない)のパスワードの変更を行う。
そのパスワードはsamba domainにログインするパスワードとなる。(図4を参照)
この画面でsamba passwordを入力する

(図4:パスワード変更画面)
Client/Server Password Managementは何のために???
まとめ
Swatへのログインはnisが参照されている
Samba domainへのログインは /etc/samba/smbpasswd が参照されている
○ Sambaの設定
主な設定項目(swatのGLOBALS、SHARESで以下の設定を行う。作成されたファイルは/etc/samba/smb.confに自動的に書き出される)
[Global Variables]
coding system euc # UNIXで見える漢字コード
client code page 932
workgroup DBLABSAMBA # ワークグループ名(ドメイン名)
netbios name TENNO # sambaが動いているNETBIOS名
server string Samba 2.2.4-ja-1.0 # sambaのバージョン(何でも良い)
security USER # みんなでsambaを利用する場合はUSERに設定すべし
encrypt passwords YES # パスワードを暗号化して送る
[Shares]
comment ユーザ専用領域
path /home/%u/profile # それぞれのプロファイルの置き場
writeable Yes # writeableがNoだと本人でも書き込めない
Browseable No # BrowseableがYesだと他の人からファイルが丸見え。
[STATUS]
smbd → start smbd
nmbd → start nmbd
Auto reflesh
設定内容の反映には約30分ほどの時間がかかる(結構長い)
また、反映内容は/usr/local/samba/lib/smb.confに記されている。/usr/local/samba/etc/smb.confではない。
apt-getでインストールした場合は/ete/samba/smb.conf に記されている
参考ページ http://www.itoshima-ah.ed.jp/linux/samba.htm
○ /usr/local/samba/下のファイルの説明(ソースからのインストール時のみ)
¨ bin/
sambaのコマンド群を保持している。全てバイナリ-ファイル
¨ etc/
インストール時に自分で作った。smb.comfを保持(ここに必要かどうかは不明)
¨ lib/
smb.confを保持。Swatによって書きかえた内容はこのファイルに反映されている。
¨ man/
マニュアルのページ。
¨ private/
secrets.tdb マシン/ドメインの SIDをバイナリで格納したデータベース(多分)
smbpasswd sambaの各々のパスワードを暗号化して格納されているUNIXのuidと同様のIDがある。
¨ share/
何に使うのかな?
¨ swat/
swatで用いるhtmlファイルや画像ファイルが格納されている。書きかえてオリジナル画面に出来る。
¨ var/
logファイル、その他。Accessするたびに書き換えられているようだ
○ ドメインログオンの設定
■サーバー(Linux側の設定)
swat を用いてドメインログオンの設定を行う(sambaをWindowsドメインコントローラーにする)
(上記の「Sambaの設定」と説明が重複していますが。。。)
# Global parameters
[global]
coding system = euc
client code page = 932
workgroup = DBLABSAMBA
netbios name = TENNO
server string = %h server (Samba %v)
encrypt passwords = Yes
obey pam restrictions = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
syslog = 0
max log size = 1000
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096
logon script = login.bat # ログオンスクリプトのある場所 ドライブを指定すれば使わなくても良いかも。
logon path = \\%N\%U\.profiles # Windowsのプロファイルを保存する場所 %Nはnisのマシン名 %Uはユーザ名
# この例だと tenno:/home/okano/.profiles がプロファイルの保存場所となる
logon drive = Z:
# ドライブの名前 この場合、マイコンピュータの下に[’tenno’のokano(z:)]が作られる
domain logons = Yes # ドメインログオンを有効にするかどうか
os level = 65 # OSレベルの設定 この値が高いほど、このドメインが優先される
preferred master = True
domain master = True
dns proxy = No
wins support = Yes
[homes] # ドメインログオンではなく、共有フォルダとしてのsamba利用時には、ここの設定だけでよい
comment = OUR Home Directories
read only = No
create mask = 0700
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /tmp
create mask = 0700
printable = Yes
browseable = No
[netlogon]
comment = samba test
path = /etc/samba/netlogon # ログオンスクリプトの配置場所。読み込み可能ならばどこでも良い。
guest ok = Yes
browseable = No
要注意!!
[global]の設定にinvalid users = rootとなっていたら、それを削除する。
Domainへの参加をrootで行っているので、これがあるとドメインログオンが出来なくなる
logon path = \\%N\%U\.profilesについて
この場合、sambaマシンの%U\.profilesに、環境プロファイルやMy Documentsの内容を書き込むことになることを意味している
もしかするとSHARES(homes & netlogon)の設定は必要ないかもしれない。
tenno:# cd /ete/samba/
# mkdir netlogon
# chmod 777 netlogon
--------------------- ログオンスクリプトの例 ---------------------
echo Setting Current Time…
net use time \\tenno /set /yes
echo Mapping Network Drives to Samba Server Delta…
net use z: /home/%u
------------------------------------------------------------------------
このスクリプトファイルをlogin.batというファイル名で/etc/samba/netlogon/の下に保存
■マシンアカウントの作成
以下のコマンドをPDCマシン上のrootで行う
# smbpasswd –a root
# useradd administrator
# smbpasswd –a administrator
# useradd delta$
# smbpasswd –a –m delta$
(deltaとはOSがWindows2000のマシン名)
参考 http://www.samba.gr.jp/doc/samba2.2_and_linux2.4/advanced_tech.html
■Windows2000側の設定
[スタート] → [設定] → [コントロールパネル] → [システム] → [ネットワークID] → [プロパティ] → [ドメイン]
にドメイン名を入力する。例:DBLABSAMBA このドメイン名はSWATの[Globals] workgroupで設定した名前となる。
そうするとパスワードを聞かれるので、
ユーザ名:root パスワード:sambaのルートパスワードor sambaserverのマシンのパスワード(ドメインに加入するマシンpasswdではない)
成功すると、「DBLABSAMBAへようこそ」というメッセージが表示される
後は再起動すると、Windows2000のログイン画面でログイン対象にDBLABSAMBAが加わっているはずである。
(図5:Windows2000でのドメインログオン設定画面)
■WindowsXP側の設定
Windows2000の設定に加えて、
「コントロールパネル」の「管理ツール」から「ローカル セキュリティポリシー」を起動し、「ローカル ポリシー」の「セキュリティ」オプションにおいて、「ドメインメンバ:常にセキュリティチャネルのデータをデジタル的に暗号化または署名する」を「無効」にする。
エラー例1:
ログオン失敗:ユーザ名を認識できないか、またはパスワードが間違っています。
→ そのユーザがsambaのユーザとして存在していない(rootが作られていない # smbpasswd –aを実行)か、本当にパスワードが間違っているか。
エラー例2:
ログオン失敗:既存の資格情報のセットと一致しませんでした
→ [global]のinvalid users = rootの設定を削除したら動いたそうです。おそらくrootが差し止めになっているのでは。
エラー例3:
ログオン失敗:使用されているアカウントはコンピュータアカウントです。このサーバーにアクセスするには、グローバルユーザアカウントまたはローカルユーザアカウントを使用してください。
→ [マシン名$]というユーザがUNIX(/etc/passwd)とsamba(/etc/samba/smbpasswd)に存在しない
# useradd マシン名$ (例えば #useradd delta$)
# smbpasswd –a –m マシン名$
というコマンドを実行すること
エラー例4:
sambaに加入できたが、ユーザ名・パスワードを入力しても「このドメインにログインできません。プライマリドメインのシステムにコンピュータアカウントがないか、アカウントのパスワードに誤りがあります」というエラーが出る。
→ /etc/passwd、/etc/samba/smbpasswdをもう一度チェックする。重複していないか、UIDがお互いに一致しているかどうかなど。
また、一度成功したドメインをWORKGROUPに切り替えて、もう一度ドメインに参加し直すとうまくいくことがある。
以上で完了。
Sambaのユーザを増やしたいのなら、swatのPASSWORDでServer Password Managementを利用するか、
もしくは、# smbpasswd -a [ユーザ名] で登録を行う。
Sambaマシンを増やしたければ #smbpasswd –a –m [マシン名]$ を行う
詳しくは「2.Samba domainユーザの登録」を参照