天天看点

在RHEL5下构建Samba文件共享服务器

一.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目录中只能写入目录或文件,不能删除他人的目录或文件。最终设置如下:

在RHEL5下构建Samba文件共享服务器

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):

在RHEL5下构建Samba文件共享服务器

5.重启samba服务:

service smb restart   或   /etc/init.d/smb restart

6.验证实验结果(使用windows客户机进行验证):

6.1.使用技术组用户tech1登录,验证是否有访问所有共享目录的权限:(可访问所有共享目录)

在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器

6.2.使用项目组用户pro1登录,验证是否只有访问public和kaifa共享目录在kaifa目录的写入权限:(验证成功!)

在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器

6.3.使用项目组用户pro2登录,验证是否只有访问public和kaifa共享目录在kaifa目录的写入权限与粘滞位权限:(验证成功!)

在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器
在RHEL5下构建Samba文件共享服务器

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 :向服务器上传多个文件

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时的测试:

配置文件如下:

在RHEL5下构建Samba文件共享服务器

进行匿名访问:

在RHEL5下构建Samba文件共享服务器

访问kaifa和peixun这两个目录无法进行身份验证:

在RHEL5下构建Samba文件共享服务器

为了解决这个问题,想了好多办法,也在网上查找了这方面问题,虽然同样有人在我之前提出这类问题,但还是没有看到解决的方法,期待有高手指教一下!

继续阅读