###本文只是实现了一个简单的带用户名验证的文件共享服务器,只是起到一个借鉴参考作用,如果有其他权限方面的进一步修改,可以参考本人另一篇文章《Samba配置文件
一、samba的编译安装
tar zxvf samba-3.4.1.tar.gz
#####samba-3.4.1目录下包含source3与source4两个资源目录,其中source3是正式稳定版本,4则是测试版本
cd samba-3.4.1/source3
./configure --prefix=/usr/local/samba
make
make install
echo "/usr/local/samba/lib/" >>/etc/ld.so.conf
ldconfig
cp ../examples/smb.conf.default /usr/local/samba/lib/smb.conf
cp ../examples/smb.init /etc/rc.d/init.d/smb
chmod 700 /etc/rc.d/init.d/smb
二、samba的基本设置:
因为这只是一个简单的文件共享服务器,因此不涉及到太多的权限及配置,所以我们只做了两个共享:“用户主目录共享”“SharePath”两个共享目录,具体配置如下:
vi /usr/local/samba/lib/smb.conf
[global]
###设置Samba服务器所要加入的工作组或AD:
workgroup = MYGROUP
###设置Samba服务器描述,%v表示显示samba的版本号:
server string = Sun.Samson's Samba Server %v
security = user
###允许/拒绝访问samba服务器的主机:
hosts allow = 222.92.14.58,61.147.109.51,61.147.109.52
; hosts deny = 192.168.0. 192.168.3.
#============================ 共享定义 ==============================
###定义samba共享名称
[SharePath]
###该共享的描述,可以是任意字符串。
comment = This is Sun.Samson's File Server!
###path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。
path = /data/FilePath
###指定该共享是否可以浏览。
browseable = yes
###指定该共享路径是否可写。
writable = yes
###指定该共享资源是否可用。
available = yes
###指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效(多个用户中间用逗号隔开)。
admin users = root,sunjun
###指定允许访问该共享资源的用户或组(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
valid users = sunjun,@admin
###指定允许写操作的用户
write list = sunjun
###指定不允许访问该共享资源的用户。(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
invalid users = test,@ftp
###指定该共享是否允许guest账户访问。
public = no
guest ok = no
###===============系统默认几个特殊共享=================###
###定义用户主目录共享
[homes]
comment = Home Directories
browseable = no
writable = yes
三、验证samba配置并启动smb服务:
/usr/local/samba/bin/testparm
###使用此命令可以验证smb.conf文件的语法是否正确,及可以看到设置的几个共享目录较为详细的信息
###smb服务启动:
###samba具体两个守护进行:smbd与nmbd,需要同时运行
###/etc/rc.d/init.d/smb这个启动脚本,默认只有start与stop功能,因此需要编辑添加restart功能:
vi /etc/rc.d/init.d/smb
#!/bin/sh
#
if [ ! -d /usr/bin ]; then
echo "The /usr file system is not mounted."
exit 1
fi
killproc() {
pid=`/bin/ps ax | grep -w $1 | sed -e 's/^ *//' -e 's/ .*//'`
echo "Stopping $1 now."
[ "$pid" != "" ] && kill -15 $pid
echo $pid
}
# Start/stop processes required for samba server
case "$1" in
'start')
echo "Starting Samba"
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
echo "Done."
;;
'stop')
killproc smbd
killproc nmbd
;;
'restart')
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/rc.d/init.d/smb [ start | stop | restart ]"
;;
esac
exit 0
###启动samba服务:
/etc/rc.d/init.d/smb start/stop/restart
四、共享服务验证测试:
###查看进程是否启动
ps -ax |grep -E '(smbd|nmbd)'
###查看端口是否侦听
###samba端口主要有四个:UDP:137 138 ;TCP:139 445
netstat -na |grep -E '(137|138|139|445)'
###防火墙添加samba四个端口允许访问:
###本地测试
/usr/local/samba/bin/smbclient -L XXX.XXX.XXX.XXX
###Windows客户端进行测试
阅读(2653) | 评论(0) | 转发(0) |