引入:

最近audit别的团队时候发现使用了samba用于跨平台的文件共享,刚好我手里刚申请了一台CentOS机器,所以我就想搭建一个samba服务器玩玩,我看到51cto上已经出了一个专题:

http://os.51cto.com/art/200512/12843.htm

专门讲解samba的有关知识,收益匪浅,掌握基本原理后,小实践了一把,还是很顺利的,20分钟就KO了。


实践:


Part 1: 基本安装

首先还是用yum install来安装samba.

这里会自动解析依赖关系。


一路选择Y,最后samba及其依赖包都被安装了:


现在我们就启动samba:


确认samba服务已经开启:


Part2: 配置samba服务器


vi  /etc/samba/smb.conf


首先配置[global]部分,它给出了全局设定

workgroup是配置在某个工作组中,如果局域网访问最好让所有机器在同一个工作组

hosts allow 配置了哪些主机是可以访问这个samba服务器的,因为我只想本地或者局域网访问,而局域网的ip地址前缀都是192.168。

最终配置如下:


下面配置[homes]部分,它主要是对于samba用户通过什么规则,约束来访问自己的主目录

browseable设为yes,writable设为yes 表明登录的samba用户既可以读也可以写自己的主目录


共享打印机服务我们暂时不用所以不配置了。


下面配置[netlogon]部分:


因为默认samba用户只能访问自己目录,为了让多个用户共享访问某个目录,我们配置[public]部分:


下面,我们用testparm命令来测试我们的配置是否正确:

这里出现了 “Loaded services file OK ”字样,说明我们配置完全正确。


我们重启samba让其生效。



Part 3: 关闭CentOS防火墙

当我在我自己desktop(装的windows XP)  尝试去访问samba服务器时候,提示以下问题:

很简单,这个问题我们经常遇到,因为我们拿到的是新装的CentOS系统,而默认防火墙是开着的,所以我们将其关闭即可:


这次可以访问这个机器了,但是提示输入用户/密码:


Part 4: 创建samba账号和密码用于访问:

查看相关文章得知,访问samba服务器的账户必须是一个samba服务器所在的操作系统管理的某账户。为此,添加一个系统账户(假设我们创建名字叫samba):


我们为这个新建的系统账户,将其作为samba服务器账户,为其创建samba密码(假设我们这里设的密码是samba_password):

直到显示"Added user samba"才算成功。


重启samba服务器,再从windows系统登录(samba/samba_password)这台samba服务器,果然成功了:


Part 5: 关闭centos对于安全管理的限制

在我们成功登录到192.168.71.43之后,当我们访问samba目录时候,我们被拒绝了:


这就奇怪了,我们明明在smb.conf中的[homes]模块配置了browsable=yes,还配置了valid user,为什么不让我们访问呢?这个困扰了我一段时间,后来找到原因了,原来centos下面有个selinux模块,它增加了centos的访问安全控制:


此文件中默认的SELINUX被设置为enforcing,表明默认启用安全控制,所以阻止了 windows系统访问这个centos系统的文件资源,我们将其设为disabled来禁用这个安全管理,如下:


保存后重新启动centos系统,再通过windows访问。这次我们终于成功的用samba用户名登录,并且可以访问samba服务器上对应的samba目录(home directory)中的资源了:



总结:

samba服务器的安装配置还是比较简单的,希望这文章对大家有借鉴作用,但是很多复杂功能,我还没涉及,不过51CTO的那个专题的确不错,强力推荐一看。