Samba
Windows クライアント向けのファイル共有サーバーを構築できます。高機能で安定しています。
更新日 2016-02-13
Samba 3.6.9 をCentOS6.4 に入れる
共有ファイルサーバー(NAS)が簡単にできます。
インストール
yum でインストールします。
yum install samba -y
chkconfig smb on
chkconfig nmb on
ユーザーの登録
共有フォルダへのアクセス制限の為のユーザーとパスワードを設定します。
useradd -s /sbin/nologin ast
passwd ast
pdbedit -a ast
smb.conf を設定
設定ファイルに修正します。
vi /etc/samba/smb.conf
[global]
max protocol = SMB2
workgroup = WORKGROUP
hosts allow = 127. 192.168.
// プリンタは使わないのでコメントアウト
;load printers = yes
;cups options = raw
// フォルダの公開
[camera_avis1]
comment = Camera AVIs
path = /mnt/camera_avis1
browseable = yes
writeable = yes
valid users = ast
ファイアウォールの設定
UDP ポート 137, 138 とTCP ポートの139, 445 を使います。samba-swat はTCP ポート 901 を使います。
vi /etc/sysconfig/iptable
-A INPUT -s 192.168.23.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.23.0/24 -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.23.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
-A INPUT -s 192.168.23.0/24 -p tcp -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.23.0/24 -p tcp -m tcp --dport 901 -j ACCEPT
service iptables restart
Samba 4.0.6 をCentOS 6.4 にインストールする
ActiveDirectory に対応しています。
ソースコードからビルド
オフィシャルサイト SAMBA からダウンロードします。
yum groupinstall "Development Tools" -y
yum groupinstall "Compatibility libraries" -y
yum install python-devel libacl-devel krb5-devel ctdb-devel
quota-devel pam-devel avahi-devel openldap-devel cups-devel
libaio-devel gamin-devel pytalloc-devel xfsprogs-devel
cd /usr/src
wget "http://www.samba.org/samba/ftp/stable/samba-4.0.6.tar.gz"
tar zxvf samba-4.0.6.tar.gz
cd samba-4.0.6
./configure
make
make install
初期設定
samba-tool を使って初期設定を施します。Realm(kerberos 関係) とDomain を指定します。
/usr/local/samba/bin/samba-tool domain provision
// Realm [LOCAL]: SAMBA_CENTWO6.LOCAL
// Domain [SAMBA_CENTWO6]:
// Server Role (dc, member, standalone) [dc]:
// DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
// DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]: 192.168.23.1
// Administrator password: (英数字と記号を含める事)
// Retype password:
Realm とDomain を名前解決できるようにhosts ファイルにも書く
vi /etc/hosts
192.168.23.104 SAMBA_CENTWO6.LOCAL SAMBA_CENTWO6
samba-tool をすぐ呼べるようにPATH も通しておく。
vi ~/.bashrc
// 末尾に追加
PATH="$PATH":/usr/local/samba/bin
起動スクリプトを記述
起動スクリプトが無いようなので、他所のサイトを参考に簡単なのを作ります。
vi /etc/init.d/samba4
#! /bin/bash
#
# samba4 Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces
# configured to start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/samba4 ]; then
. /etc/sysconfig/samba4
fi
CWD=$(pwd)
prog="samba4"
start() {
echo -n $"Starting $prog: "
/usr/local/samba/sbin/samba
sleep 2
c=$(ps ax | grep -v grep | grep -c samba)
if [ $c != 0 ];
then
echo [$'\e[32;1m' OK $'\e[0m'];
else
echo [$'\e[31;1m' FAILED $'\e[0m'];
fi
}
stop() {
echo -n $"Shutting down $prog: "
killall samba 1> /dev/null 2> /dev/null
c=$(ps ax | grep -v grep | grep -c samba)
if [ $c = 0 ];
then
echo [$'\e[32;1m' OK $'\e[0m'];
else
echo [$'\e[31;1m' FAILED $'\e[0m'];
fi
}
status() {
c=$(ps ax | grep -v grep | grep -c samba)
if [ $c != 0 ];
then
echo Samba4 を実行中...
else
echo Samba4 は停止しています
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
起動したら成功
service samba4 start
chkconfig samba4 on
一般ユーザーの登録
samba-tool を使ってユーザーを追加します。
samba-tool usr add ユーザー名// パスワード要件を変更する
// 複雑さチェックをオフ
samba-tool domain passwordsettings set --complexity=off
// 文字列長の最短数
samba-tool domain passwordsettings set --min-pwd-length=5
// パスワードの有効期限を無制限に
samba-tool user setexpiry ユーザー名 --noexpiry
Samba 3.6.0 をCentOS 5.6 にインストールする
SMB2 という通信プロトコルをサポートしたSamba 3.6.0 をインストールします。大変高速になっています。
ソースコードからビルド
wing リポジトリを使ったrpm インストールがイマイチうまくいかないので、素直にソースからビルドインストールします。
主にコチラのサイト様を参考にさせていただきました。
yum install gcc pam-devel readline-devel fileutils libacl-devel \
openldap-devel krb5-devel cups-devel keyutils-libs-devel
cd /tmp
wget http://ftp.samba.org/pub/samba/samba-3.6.3.tar.gz
tar zxvf samba-3.6.3.tar.gz
cd samba-3.6.3/source3
./configure CC="gcc" CFLAGS="-O2 -march=pentium3" \
--prefix=/usr/local \
--localstatedir=/var \
--with-configdir=/etc/samba \
--with-modulesdir=/usr/local/lib/samba \
--with-pammodulesdir=/lib/security \
--with-lockdir=/var/lib/samba \
--with-logfilebase=/var/log/samba \
--with-nmbdsocketdir=/var/run \
--with-piddir=/var/run \
--with-privatedir=/etc/samba \
--with-swatdir=/usr/local/share/swat \
--with-shared-modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2 \
--with-acl-support \
--with-ads \
--with-automount \
--with-cluster-support=auto \
--with-dnsupdate \
--with-fhs \
--with-libsmbclient \
--with-libsmbsharemodes \
--with-libtalloc \
--with-libtdb \
--with-pam \
--with-pam_smbpass \
--with-quotas \
--with-sendfile-support \
--with-syslog \
--with-utmp \
--with-winbind
make
make install
設定ファイルの雛形をコピー
cd ../packaging/RHEL/setup
cp samba.log /etc/logrotate.d/samba
cp samba.pamd /etc/pam.d/samba
cp samba.sysconfig /etc/sysconfig/samba
cp {smb.conf,smbprint,smbusers} /etc/samba
cp smb.init /etc/rc.d/init.d/smb
cp swat /etc/xinetd.d
cp winbind.init /etc/rc.d/init.d/winbind
下記のコマンド実行も初期設定に必要
cd ~
echo /usr/local/lib >> /etc/ld.so.conf.d/usrlocal.conf
ldconfig
ldconfig -p | egrep libnetapi\|libsmb\|libtalloc\|libtdb\|libwbclient
起動の設定
起動スクリプトを若干修正、登録します。インストールはこれで終了です。yum install ならココまで自動です。
cd /etc/rc.d/init.d/
chmod 755 smb
chmod 755 winbind
vi smb
# chkconfig: - 91 35
// ↓
# chkconfig: 235 91 35
PATH=$PATH:/usr/local/sbin:/usr/local/bin
chkconfig --add smb
service smb start
設定
smb.conf を編集します。
smb.conf の設定
デフォルトの設定でユーザー毎のホームディレクトリが公開されるはずです。
vi /etc/samba/smb.conf
// 基本設定項目
[global]
max protocol = SMB2 // SMB2 プロトコルを利用
netbios name=MYSERVER // ネットワークに表示されるコンピュータ名
workgroup = WORKGROUP
hosts allow 127. 192.168.23. // アクセス許可アドレス
// ユーザーのホームディレクトリを公開するという設定項目
// 無効にしたければコメントアウトする
[homes]
// ディレクトリを個別に公開したければ以下のように追記
[ddrv_for_ast]
comment = Work Folder for AST
path = /ddrv_for_ast
browseable = yes
writeable = yes
valid users = ast
smb.conf のテストは以下で
testparm -s
起動
service smb start
Windows のエクスプローラ上から確認できますでしょうか?最初は見えないかもしれないのでアドレスバーに\\MYSERVER と打ってみます。
パスワード入力ダイアログが出れば成功です。Windows のユーザーアカウントならびにパスワードを同じにしてれば便利でしょう。
トラブルシューティング
異なるサブネットから参照したい
異なるサブネットに属するWindows からネットワークコンピュータとしてSamba のNetBIOS 名を取得することはできません。UDP port 137,138 にて
そのやり取りがなされますが、ブロードキャストアドレスが異なる為にnmbd が返答しないのが原因です。\\192.168.24.4 といったIP アドレスを直接打てば
アクセスできます。私はHosts File Managerを使っているので、SAMBA 名を名前解決できるように登録してあります。
「ネットワークパスが見つかりません」
サーバーが見えていてもアクセス出来ないのはファイヤーウォールが原因です。またSELinux もオフにしましょう。