一.samba服服务的安装
在RHEL5系统的安装光盘中,与samba相关的软件包有五个:
1.samba-3.0.23c-2.i386.rpm //服务器程序文件
2.samba-client-3.0.33-3.14.el5.i386.rpm //客户端程序文件
3.samba-common-3.0.33-3.14.el5.i386.rpm //服务器和客户端的公共文件
4.samba-swat-3.0.33-3.14.el5.i386.rpm //Web方式的管理工具
5.system-config-samba-1.2.41-5.el5.noarch.rpm //图形界面管理程序(需要在X图形环境中使用)
要实现samba服务器和客户端的的基本功能,前三个软件包必须安装。
二.samba服务器的提供的服务
1.smbd:为客户机提供服务器中共享资源的访问,监听TCP协议的139端口(SMB)、445端口(CIFS);
2.nmbd:提供基于NetBios主机名称的解析,为Windos网络中的主机进行名称解析,监听UDP协议的137~138端口;
通过“/etct/init.d/smb”控制samba服务的启动与终止,无需单独运行smbd或nmbd。
三samba服务的配置文件
1.lmhosts:用来进行NETBIOS名静态解析。
2.passdb.tdb:用来存放samba账户。
3.secrets.tdb:用来存放samba账户密码。
4.smb.conf: samba服务主配置文件
5.smbusers:用户名映射文件
四.smb.conf文件常用配置项
workgroup:设置服务器所在的工作组名称,例如“WORKGRUOP”(windows主机默认工作组名)
server string:设置服务器的说明文字,用于描述samba服务器
cecurity:设置服务器的安全级别,可设为以下四个值中的一个:share(可匿名访问)、user(需由本服务器验证用户名及密码)、server(由另一台服务器验证用户名及密码)、domain(由windows域控制器验证用户名及密码)
log file:设置samba服务器的日志文件,默认设置为“/var/log/samba/%m.log”,%m表示客户端主机名或IP地址
max log size:设置日志文件的最大容量,默认为50,表示50KB
comment:设置对应共享目录的注释、说明信息
path:设置对应共享目录在服务器中的文件夹路径
browseable:设置该共享目录在“网上邻居”中是否可见,设置为no时相当于隐藏共享目录
guest ok / public:设置是否所有人都可以访问共享目录
writable:设置该共享目录是否可写
read only:设置该共享目录是否只读
valid users:哪些用户可以访问共享目录
invalid users:哪些用户不能访问共享目录
write list:哪些用户有写入权限
read list:哪些用户只有读取权限
directory mask:设置共享目录中的写入的目录的权限
create mask:设置共享目录中的写入的文件的权限
force group:指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
force user:指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
host allow:设置仅允许访问共享的网段或IP
host deny:设置仅拒绝访问共享的网段或IP
下面开始搭建samba文件共享服务器
实验环境:
根据公司的信息建设要求,需要在局域网内部搭建一台文件服务器,便于对于数据集中管理备份。考虑到服务器的运行效率及稳定、定全性,选择在RHEL5操作系统中构建samba服务器以提供文件资源共享服务。
需求描述:
1.在“/var/share/”目录中建立子目录public、training、devel,用途如下:
public目录用于存放公共数据,如公司的规章制度、员工手册、工作用表格等文件;
training目录用于存放公司的技术培训资料;
devel目录用于存放项目开发数据;
2.将“/var/share/public”目录共享为public,所有员工可匿名访问,但是只能读取文件,不能写入;
3.将“/var/share/training”目录共享为peixun,只允许管理员admin及技术部的员工只读访部;
4.将“/var/share/devel”目录共享为kaifa,技术部的员工都可以读取该目录中的文件,但是只有管理员admin及project项目组的员工有写入权限。
搭建此服务器的思路:
1.创建共享目录对应的文件夹:“/var/share/public”、“/var/share/training”、“/var/share/devel”,并设置相应权限。
2.建立相关系统组,用户并创建samba用户。
3.修改smb.conf配置文件,添加共享设置。
4.重启smb服务。
5.验证实验结果。
实验步骤:
1.在/var/sahre/目录下创建public、training、devel,分别设置权限为777(所有用户均有读取、写入、可执行权限),此时把权限设置最大没有关系,可以在cmb.conf文件中设置共享权限来进行限制(类似于windsow中的NTFS权限和共享权限设置),别外将/var/share/devel目录的改为project并增加粘滞位权限(devel权限为1777),以便实现有权限的用户在/var/share/devel目录中只能写入目录或文件,不能删除他人的目录或文件。最终设置如下:
2.建立相关系统组,用户(只用于访问samba文件服务器)并创建samba用户:
#groupadd tech //创建技术组(技术部员工)
#groupadd project //创建项目组(项目组员工)
#useradd -M -g tech lee //创建系统用户lee并加入tech组,并不为其创建宿主目录
#useradd -M -g tech tom //创建系统用户tom并加入tech组,并不为其创建宿主目录
#useradd -M -g project jarry //创建系统用户jarry并加入project组,并不为其创建宿主目录
#useradd -M -g project linda //创建系统用户linda并加入project组,并不为其创建宿主目录
#smbpasswd -a lee //添加samba用户lee
#smbpasswd -a tom //添加samba用户tom
#smbpasswd -a jarry //添加samba用户jarry
#smbpasswd -a linda //添加samba用户linda
#smbpasswd -a root //添加samba用户root
3.修改smbusers文件,配置用户映射,以提高用户安全性:
root = admin
lee = tech1
tom = tech 2
jarry = pro1
linda = pro2
4.修改smb.conf配置文件,进行共享目录的设置,经过配置文件检查工具:testparm命令检查后显示的配置清单如下(security设置为user):
5.重启samba服务:
service smb restart 或 /etc/init.d/smb restart
6.验证实验结果(使用windows客户机进行验证):
6.1.使用技术组用户tech1登录,验证是否有访问所有共享目录的权限:(可访问所有共享目录)
6.2.使用项目组用户pro1登录,验证是否只有访问public和kaifa共享目录在kaifa目录的写入权限:(验证成功!)
6.3.使用项目组用户pro2登录,验证是否只有访问public和kaifa共享目录在kaifa目录的写入权限与粘滞位权限:(验证成功!)
6.4.另外还可以使用linux客户机进行验证(略),相关命令如下:
6.4.1.使用smbclient工具登录samba服务器
smbclient -L 服务器IP/主机名 //查看samba服务器共享目录
smbclient -U 用户名 //服务器IP/共享目录 //以仿ftp客户端方式登录访问samba服务器中的共享目录
6.4.2smbclient 命令说明
?或help [command] : 提供关于帮助或某个命令的帮助
![shell command] :执行所用的SHELL命令,或让用户进入 SHELL提示符
cd [目录] : 切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录
lcd [目录] : 切换到客户端指定的目录;
dir 或ls : 列出当前目录下的文件;
exit 或quit : 退出smbclient
get file1 file2 :从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略
mget file1 file 2 file 3 file n :从服务器上下载多个文件;
md或mkdir 目录 :在服务器上创建目录
rd或rmdir 目录 : 删除服务器上的目录
put file1 [file2] :向服务器上传一个文件file1,传到服务器上改名为file2;
mput file1 file2 filen :向服务器上传多个文件
?或help [command] : 提供关于帮助或某个命令的帮助
![shell command] :执行所用的SHELL命令,或让用户进入 SHELL提示符
cd [目录] : 切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录
lcd [目录] : 切换到客户端指定的目录;
dir 或ls : 列出当前目录下的文件;
exit 或quit : 退出smbclient
get file1 file2 :从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略
mget file1 file 2 file 3 file n :从服务器上下载多个文件;
md或mkdir 目录 :在服务器上创建目录
rd或rmdir 目录 : 删除服务器上的目录
put file1 [file2] :向服务器上传一个文件file1,传到服务器上改名为file2;
mput file1 file2 filen :向服务器上传多个文件
6.4.3.使用mount命令将共享目录挂载到本地
mount -o username=用户名 //服务器IP/共享目录 /本地主机目录
搭建此samba服务器所引发的问题:
做完这个实验有点郁闷,按照实验的需求描述,所有员工可以匿名访问public文件夹,即不需要用户名和密码验证就能看到public目录,peixun和kaifa这两个目录需要用户名及密码验证才能访问。也就是要实现匿名用户与普通用户并发登录samba服务器。然而问题是在smb.conf主配置文件中的global全局配置中security配置项只要设置为user,就不能实现匿名访问public文件,如果security配置项设置为share,虽然匿名方式能登入samba服务器访问public目录,但tech组和project组无法使用验证方式访问peixun和kaifa这两个目录。
测试如下:
security配置项设置为user就不再演示了,不能进行匿名访问public目录,以上实验中已经验证,只进行security配置项设置为share时的测试:
配置文件如下:
进行匿名访问:
访问kaifa和peixun这两个目录无法进行身份验证:
为了解决这个问题,想了好多办法,也在网上查找了这方面问题,虽然同样有人在我之前提出这类问题,但还是没有看到解决的方法,期待有高手指教一下!
转载于:https://blog.51cto.com/kk5234/385516