samba
※UNIX環境にSMBファイルアクセスをもたらします。
要するに、Windowsマシンなどから直接、Linuxマシンの
ファイルのやりとりができるようになるわけです。
(もちろん、その逆も可能です)
UNIXでファイル共有といえば、NFSやNISが有名ですが、
これだけWindowsが普及すると、SMBプロトコルは
やはり便利です。Linuxマシンが、あたかもWindows
マシンであるかのように見えますので、都合がいいです。
ファイルのやりとりには「文字コード」の問題が大きく
のしかかりますので、なるべくSambaは「日本語版」を
使うようにしましょう。
※今までSamba-2.0.10-jaを利用してきましたが、
今後は最新の2.2.xを利用するようにしました。
最適のパフォーマンスを得るには、カーネルを
2.4系にした方が良いみたいですが、とりあえず
カーネルは2.2系のままSambaを新しくします。
【ダウンロード】
http://www.samba.gr.jp/
※上記サイトより、Samba日本語版「samba-2.2.11-ja-1.0.tar.bz2」を
ダウンロードしてください。
※sambaはLinux(Unix)上で動作するわけですが、
UnixとWindowsとでは、パスワードの暗号化方法が
異なり、そのままでは比較できないのです。
そのため、以下を選択しなくてはなりません。
1.Windowsで暗号化をやめる
2.sambaにWindowsのパスワードをおぼえさせる
1.はいまどきネットワーク上を平文でパスワードを流すなんて
時代錯誤もいいところですから、是非2.を選択してください。
また、困ったことに、Windows95(OSR2以降を除く)、
WindowsNTSP3より前のマシンは、デフォルトでは
平文パスワードを使用しています。
それ以後のWindowsは暗号パスワードが標準になっています。
ですから、2.を選択した場合、暗号化が必要なWindowsの場合は、
パッチをあててください。これにより、デフォルトが暗号化パスワード
になります。
Windows95で暗号パスワードをデフォルトとするパッチはこちらです。
(OSR2も修正パッチがでていますが)
【展開】
(以下の作業はrootで行ってください)
# cd /usr/src
# bzip2 -cd samba-2.2.11-ja-1.0.tar.bz2 | tar xvf -
すでにsamba が起動していたら停止させます。
# /etc/rc.d/init.d/smb stop
【コンパイル】
# cd /usr/src/samba-2.2.11-ja-1.0
# cd source
# ./configure --with-i18n-swat
# make clean
# make
【インストール】
# make install
※実行ファイルをコピー
# cd /usr/local/samba/bin
# cp smbd /usr/sbin/.
# cp nmbd /usr/sbin/.
# cp swat /usr/sbin/.
# cp winbindd /usr/sbin/.
# cp addtosmbpass /usr/bin/.
# cp convert_smbpasswd /usr/bin/.
# cp make_printerdef /usr/bin/.
# cp findsmb /usr/bin/.
# cp make_nftable /usr/bin/.
# cp make_smbcodepage /usr/bin/.
# cp make_unicodemap /usr/bin/.
# cp nmblookup /usr/bin/.
# cp rpcclient /usr/bin/.
# cp smbcacls /usr/bin/.
# cp smbclient /usr/bin/.
# cp smbpasswd /usr/bin/.
# cp smbspool /usr/bin/.
# cp smbstatus /usr/bin/.
# cp smbtar /usr/bin/.
# cp tdbbackup /usr/bin/.
# cp testparm /usr/bin/.
# cp testprns /usr/bin/.
# cp wbinfo /usr/bin/.
(面倒なので、後でバッチスクリプトをご紹介いたします)
【設定】
# cd /usr/local/samba/lib
# mv smb.conf smb.conf.org
(「/etc/smb.conf」がない場合は、「touch /etc/smb.conf」と入力してください)
# ln -s /etc/smb.conf smb.conf
# mv lmhosts lmhosts.org
# ln -s /etc/lmhosts lmhosts
※この後、sambaの設定ファイルを編集するのですが、
「swat」という大変便利なツールを使うと、簡単に
設定できます。でも、最初は勉強のため手動で
設定するのもよいかと思います。
----------------------------------------
<NT/2000-Serverあり:smb.confの例はこちら>
----------------------------------------
----------------------------------------
<NT/2000-Serverなし:smb.confの例はこちら>
----------------------------------------
vi lmhosts (例:皆さんの環境に合わせて作成してください)
----------------------------------------
127.0.0.1 localhost
192.168.1.2 xa200-1
192.168.1.3 nx-1
192.168.1.4 versa
192.168.1.5 v200-1
192.168.1.6 v166-1
192.168.1.7 dell-1
192.168.1.8 v13-2
192.168.1.9 v13-1
192.168.1.10 ebara-1
192.168.1.11 pv3000-3
192.168.1.12 lavie-1
192.168.1.13 gp7-1
192.168.1.14 nori-1
192.168.1.15 miura-1
192.168.1.100 linux
192.168.1.101 linsvr
192.168.1.102 linfw
192.168.1.103 freebsd
192.168.1.104 plamo
192.168.1.105 mvp3e
192.168.1.106 ntsvr
192.168.1.107 xa7e
192.168.1.90 lbp740
192.168.1.91 rnp638c6f
192.168.1.92 rnp62b5fd
192.168.1.93 lp8200
----------------------------------------
「:wq!」で保存終了します。
【起動準備】
# testparm | more で「smb.conf」に設定エラーがないか確認します
# cd /usr/local/samba/bin
# mkdir old
# mv *.old old/.
実行ファイルをコピーするバッチファイルを作成
# vi sambacp
----------------------------------------
#!/bin/sh
#copy to /usr/sbin
cp smbd /usr/sbin/.
cp nmbd /usr/sbin/.
cp swat /usr/sbin/.
cp winbindd /usr/sbin/.
#copy to /usr/bin
cp addtosmbpass /usr/bin/.
cp convert_smbpasswd /usr/bin/.
cp make_printerdef /usr/bin/.
cp findsmb /usr/bin/.
cp make_nftable /usr/bin/.
cp make_smbcodepage /usr/bin/.
cp make_unicodemap /usr/bin/.
cp nmblookup /usr/bin/.
cp rpcclient /usr/bin/.
cp smbcacls /usr/bin/.
cp smbclient /usr/bin/.
cp smbpasswd /usr/bin/.
cp smbspool /usr/bin/.
cp smbstatus /usr/bin/.
cp smbtar /usr/bin/.
cp tdbbackup /usr/bin/.
cp testparm /usr/bin/.
cp testprns /usr/bin/.
cp wbinfo /usr/bin/.
----------------------------------------
「:wq!」で保存終了します。
# chmod 700 sambacp
こうしておくと、
# ./sambacp
で実行ファイルのバッチコピーができます。
# cd /etc/rc.d/init.d
# vi smb
----------------------------------------
</etc/rc.d/init.d/smbの例はこちら>
----------------------------------------
「:wq!」で保存終了します。
# chmod 750 smb
# chown root.root smb
# chkconfig --add smb
# chkconfig --level 1 smb off
# chkconfig --level 2 smb off
# chkconfig --level 4 smb off
# chkconfig --level 6 smb off
# chkconfig --level 3 smb on
# chkconfig --level 5 smb on
# chkconfig --list | grep smb
※念のため「/etc/hosts.allow」で、LANネットワークでのアクセスが
許可されているかを確認しておいてください。
# cat /etc/hosts.allow
(sambaはこのファイルを参照していませんが、念のためです。)
【起動】
# /etc/rc.d/init.d/smb start
または
# /usr/local/samba/bin/smbd -D -s /etc/smb.conf
# /usr/local/samba/bin/nmbd -D -H /etc/lmhosts -s /etc/smb.conf
【バージョンの確認】
# /usr/local/samba/bin/smbstatus
※エラーがでたら、以下を試してください。
# mkdir /usr/local/samba/var/locks
# chmod 700 /usr/local/samba/var/locks
# touch /usr/local/samba/var/locks/STATUS.LCK
この後、smbstatus を実行してみてください。
【停止】
# /etc/rc.d/init.d/smb stop
【再起動】
# /etc/rc.d/init.d/smb restart
【samba専用パスワードの設定】
まず、sambaを停止します。
# /etc/rc.d/init.d/smb stop
# smbpasswd -a (ユーザID名) ←新規登録
# smbpasswd -e (ユーザID名) ←samba使用許可
※エラーが起きる場合は、以下を試してみてください。
---------------------------------------------------------------
# touch /etc/smbpasswd
# mkdir /usr/local/samba/private
# chmod 700 /usr/local/samba/private
# ln -s /etc/smbpasswd /usr/local/samba/private/smbpasswd
# mkdir /usr/local/samba/var/locks
# chmod 700 /usr/local/samba/var/locks
# touch /usr/local/samba/var/locks/STATUS.LCK
この後、smbpasswd を実行してみてください。
---------------------------------------------------------------
一人一人の設定では面倒という方は、以下をお試しあれ。
# mksmbpasswd.sh < /etc/passwd > /etc/smbpasswd
※この操作をした場合、上のsamba使用許可をする必要があります。
属性を変更します。
# chmod 600 /etc/smbpasswd
sambaを起動します。
# /etc/rc.d/init.d/smb start
また、smbpasswd でパスワードを変更したら、自動的に
/etc/passwdも変更してくれるオプションを「smb.conf」の
[global]領域に指定することもできます。
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password*
%n\n *passwd:*all*authentication*tokens*updated*successfully*
(passwd chatの文は長いですが1行です)
ただし、以下の場合は同期されません。
ちなみにわたしは、面倒ですが いつもそれぞれ個別に設定しています。
つまり同期の機能は利用してはいません。設定自体は行っているのですが、
結局useraddでユーザを新規登録したり、メールのAPOP認証のユーザを
追加したりするので、各ソフトごとに、いちいちパスワードを設定するように
しています。スクリプトで自動化する手もありますが、わたしの場合、
ユーザの人数がせいぜい20人くらいなので、これで十分です。
必要が生じたときに、すべてのソフトのパスワードを変更します。
APOPなどは、rootでないと変更できないのですが、パスワード
入力のときだけキーボードをわたして当人に入力させる、という
原始的な方法でやっています。(笑)
※swatの利用
クライアントマシンのWEBブラウザから、Linuxのsambaの設定が
行える便利なツールです。ヘルプも充実していますので、これを
使うと理解が深まると思います。
ただし、swatで設定した場合、コメント部分が削除される
ことがあります。一度手動で設定ファイル(smb.conf)を
作成した方は、念のためバックアップをとっておくと
よいでしょう。
1.コンパイルするときに「--with-i18n-swat」をつける
2.「/etc/services」にポート901としてswatを登録
3.「/etc/inetd.conf」に901としてswatを登録
4.「inetd」を再起動
1.については、すでに説明済みです。
2.「/etc/services」の最後にでも、以下を追加します。
(すでに追加されていれば、この処理は不要です)
swat 901/tcp
3.「/etc/inetd.conf」の最後にでも、以下を追加します。
(すでに追加されていれば、この処理は不要です)
swat stream tcp nowait.400 root /usr/local/samba/bin/swat
swat
4.「inetd」を再起動します。
# kill -HUP (inetdのプロセス番号)
(inetdのプロセス番号は「ps aux | grep inetd」でわかります)
以上の設定をしますと、クライアントマシンから、以下のように
アドレスを入力すると、Linuxのsambaを設定できます。
【アドレス】http://(LinuxのsambaサーバのIPアドレス):901/
ログインのダイアログウィンドウがでますので、ユーザ名に
「root」を指定し、rootのパスワードも入力してEnterキーを
押してください。
【LinuxからWindowsの共有フォルダにアクセスする】
この場合、Windowsマシンがファイルサーバとして機能します。
$ smbclient //(サーバ名)/(共有フォルダ名)
パスワードを聞いてきたりしますので、入力してください。
接続が成功すると、「smb: \>」というプロンプトが表示されます。
「HELP」と入力すると、使用できるコマンド一覧が表示されます。
FTPに近いコマンドが利用できます。「quit」で終了します。