前回で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
-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も
-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
# 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
#!/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
でプロセスを管理できます。