Sambaに関する記述

  Last modify 2003/11/13 by Eiji OKANO

   Samba インストールと起動の設定


SambaのインストールからSWATの使い方、ドメインログオンの設定方法、
ログオン失敗の例(ユーザ名を認識できないなど)を記しました。環境はDebian GNU/Linux 3.0です


■今回の環境

 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              (23402inetdPID)

 

もし最初から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/ と指定する。(このIPtenno(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に自動的に追加)
作成できるのはrootswatにログインしたときだけである

(図2:パスワードの設定画面)

 

7.        個人ユーザでswatにログイン
root
sambaユーザを作成したならば、ブラウザでhttp://192.168.128.2:901/ (sambaサーバのIPアドレス:ポート番号)  と指定する。
個人ユーザでswatにログインする。このswatへのログインはUNIXnis で管理されている個人ユーザのアカウントとpasswordを入力する。
(6.
で作成したsambaユーザではない)

 

下記の図はユーザアカウントでログインしたときの画面(root時とは多少異なる)

Logged in as (ユーザ名) と表示されているはず。

(図3:個人ユーザでSWATにログインしたときの画面)

 

root時に作成された個人ユーザのパスワードは、自分で変更することができる。

上記のSever Password Managementsamba( nisではない)のパスワードの変更を行う。

そのパスワードはsamba domainにログインするパスワードとなる。(図4を参照)

この画面でsamba passwordを入力する

(図4:パスワード変更画面)

 

Client/Server Password Managementは何のために???

 

まとめ

Swatへのログインはnisが参照されている

Samba domainへのログインは /etc/samba/smbpasswd が参照されている

 

 

   Sambaの設定

主な設定項目swatGLOBALSSHARESで以下の設定を行う。作成されたファイルは/etc/samba/smb.confに自動的に書き出される)

 

[Global Variables]

Base Options

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 Options

security                     USER # みんなでsambaを利用する場合はUSERに設定すべし

encrypt passwords     YES  # パスワードを暗号化して送る

 

[Shares]

CreateShare                 homes           # なぜかhomesにする必要あり

Base Options

comment                    ユーザ専用領域

path                           /home/%u/profile    # それぞれのプロファイルの置き場

 

Security Options

writeable                Yes        # writeableNoだと本人でも書き込めない

 

Browse Options

Browseable                No          # BrowseableYesだと他の人からファイルが丸見え。

 

[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の各々のパスワードを暗号化して格納されているUNIXuidと同様のIDがある。

 

¨         share/

何に使うのかな?

 

¨         swat/

swatで用いるhtmlファイルや画像ファイルが格納されている。書きかえてオリジナル画面に出来る。

 

¨         var/

logファイル、その他。Accessするたびに書き換えられているようだ

 

 

   ドメインログオンの設定

■サーバー(Linux側の設定)

swat を用いてドメインログオンの設定を行う(sambaWindowsドメインコントローラーにする)

(上記の「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のプロファイルを保存する場所 %Nnisのマシン名 %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とはOSWindows2000のマシン名)

 

参考 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が加わっているはずである。

(図5Windows2000でのドメインログオン設定画面)

 

 

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のユーザを増やしたいのなら、swatPASSWORDServer Password Managementを利用するか、

もしくは、# smbpasswd -a [ユーザ名] で登録を行う。

Sambaマシンを増やしたければ #smbpasswd –a –m [マシン名]$ を行う

詳しくは「2.Samba domainユーザの登録」を参照