前回でSambaサーバー自体の設定は完了しました。
今回は、iptables設定や自動起動スクリプトの設置等、まわりの設定を行っていきます。
(CentOS / Fedora / RH*の方のみ)
まずは、使用するポートを開けましょう。
使用するポートは、次の4つです。
nmbd : 137/UDP、138/UDP
smbd : 139/TCP、445/TCP
nmbdは、マイネットワークでマシンをブラウジングする機能を提供します。
smbdは、本来のファイル転送の機能を提供します。
ファイル転送のみであれば、139/TCP(もしくは445/TCP)のみを開けば機能します。
私は普段NetBIOS over TCP/IPしか使わないので139/TCPのみしか開放していませんが、4つ全てのポートを開けておけば確実でしょう。今回は紹介しませんが、SWATを利用される場合は 901/TCP も開いておきましょう。
■ iptablesの設定 (CentOS / Fedora / RH*)
# vi /etc/sysconfig/iptables |
この行を追加
・ /etc/sysconfig/iptables
18 19 20 21 | -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited |
SWAT利用の場合は901/TCPも
18 19 20 21 22 | -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited |
# service iptables restart |
■ ライブラリのパスを通す (CentOS / Fedora / RH*)
ここまで来たら後はsambaを起動するだけですが、configure オプションに –prefixを設定したのでライブラリのパスが通っていない可能性があります。
試しに nmbd を起動してみて次のようなエラーが出たらパスを通しましょう。
# /usr/local/samba3/sbin/nmbd /usr/local/samba3/sbin/nmbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory |
ライブラリのパスを通す。
(CentOS / Fedora / RH*) # echo "/usr/local/samba3/lib" > /etc/ld.so.conf.d/samba.conf # ライブラリのパスを設定 # ldconfig # パスをキャッシュ化する。 # 設定したパスを通す |
パスを通したら起動できるかを確認。
無事にライブラリが読み込まれると起動します。
# /usr/local/samba3/sbin/nmbd |
何も表示されなければ起動してます。
起動したら止めておいてください。
# killall nmbd |
■ 動作確認
nmbd、smbd を起動します。
# /usr/local/samba3/sbin/nmbd # /usr/local/samba3/sbin/smbd |
起動したらWindowsからアクセスしてみます。
マイコンピュータかIEを開いてアドレスバーのところに次のように入力します。
\\[sambaサーバーのIPアドレス]\
既にファイルサーバーとして機能するはずです。
プロセスは一度落としておきます。
# killall nmbd smbd |
■ 自動起動スクリプト
■ OS起動時に起動してくれさえすればいい場合 (RHクローン/*Linux/*BSD)
・ vi /etc/rc.local
09 10 11 12 13 14 15 16 | # nmbd if [ -x /usr/local/samba3/sbin/nmbd ]; then /usr/local/samba3/sbin/nmbd -D fi # smbd if [ -x /usr/local/samba3/sbin/smbd ]; then /usr/local/samba3/sbin/smbd -D fi |
■ RHのクローンをお使いでchkconfigでプロセスを管理したい場合。
chkconfig用の起動スクリプト作成。
・ vi /etc/rc.d/init.d/samba
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/bin/sh # # Startup script for samba # # chkconfig: 345 85 15 # description: samba # Source function library. . /etc/rc.d/init.d/functions SMBD='/usr/local/samba3/sbin/smbd' NMBD='/usr/local/samba3/sbin/nmbd' SMBPID='/usr/local/samba3/var/locks/smbd.pid' NMBPID='/usr/local/samba3/var/locks/nmbd.pid' case "$1" in start) echo -n "Starting samba" $SMBD -D $NMBD -D echo ;; stop) echo -n "Shutting down samba" PIDS=`cat $SMBPID` PIDS="${PIDS} `cat $NMBPID`" kill $PIDS echo ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0 |
# chmod +x /etc/rc.d/init.d/samba # chkconfig --add samba # chkconfigに追加 # service samba start # 起動してみる # ps ax | grep samba # 起動できてる? 1737 ? Ss 0:00 /usr/local/samba3/sbin/smbd -D 1739 ? Ss 0:00 /usr/local/samba3/sbin/nmbd -D 1740 ? S 0:00 /usr/local/samba3/sbin/smbd -D 1742 pts/0 S+ 0:00 grep samba # chkconfig samba on # OS 起動時に service samba start を実行 |
これで一通り作業は終了です。
# service samba start # service samba stop |
でプロセスを管理できます。