samba源码安装 linux,Samba服务器配置

1991年,Andrew Tridgwell通过对数据包的分析,而编写了Samba这个自由软件(Samba官方网站:http://www.samba.org),只要在类UNIX启用Samba服务,类UNIX系统就好像变为了Windows甜系统,可以利用SMB协议与Windows系统之间实现资源共享等功能。

Samba是开放源代码的GPL自由软件,可以说又是自由软件界的一个重大贡献。Samba的出现彻底解决了类UNIX与Windows之间的资源共享与访问,它以其简洁、实用、灵活配置、功能强大的特点受到越来越广泛的关注。也是因为这个原因,现在几乎所有的类UNIX都可以使用Samba服务。

由于Samba作为类UNIX系统和Windows的通信桥梁,在设计上是让类UNIX系统加入到Windows网络中,而不是让Windows加入类UNIX网络中,因此需要了解一下Windows网络的工作原理。Windows 9x、Windows Me、Windows NT中SMB使用137(UDP)、138(UDP)、139(TCP)、端口,Windows 2000以后的版本中使用445(TCP)端口。

Samba服务主要提供以下功能:

(1)共享UNIX系统上的资源(目录、打印机)。

(2)使用Windows上的共享资源(目录、打印机)。

(3)通过Windows对使用Samba资源的用户进行认证。

(4)使用WINS服务进行名称解析及浏览。

(5)通过SSL实现安全的数据传输。

Samba服务主要由以下两个进程组成:

(1)nmbd:进行NetBIOS名称解析,提供浏览服务显示网络上的共享资源列表。

(2)smbd:管理Samba服务器上的共享目录、打印机等。主要是针对网络上的共享资源进行管理服务。当要访问服务器时,要查找共享文件,这时要靠smbd这个进程来管理数据传输。

Samba服务与Samba客户端的工作流程如下:

(1)协议协商:客户端在访问Samba服务器时,发送negprot命令包,告知目标计算机其支持的SMB类型。Samba服务器根据客户端情况,选择最优的SMB类型,并做出回应。

(2)建立连接:当SMB类型确认后,客户端会发送session setup命令数据包,提交账号、密码,请求与Samba服务器建立连接。如果客户端通过身份验证,Samba服务器会对session setup报文做出回应,并为用户分配唯一的UID,在客户端与其通信。

(3)访问共享资源:客户端访问Samba共享资源时,发送tree connect命令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户与共享资源的连接分配TID,客户端即可以访问需要的共享资源。

(4)断开连接:共享完毕,客户端向服务器发送tree disconnect报文关闭共享。

二、Samba服务源码安装

1、下载samba源码文件到目录/data1下并解压:

6ed497f5f57058339bf178902fc97ca6.png

2、在samba-3.6.1下面有目录source3和source4。这里进入目录source3。

150d9014bfcd54cfab28d6f7f1e93373.png

3、配置编译环境:

10c27d0cfeb8dda3f10b8125d008ac8e.png

可以通过#./configure --help获得帮助。根据个人情况选择配置参数。

4、编译安装

#make

#make install

5、配置动态链接库

2a5bedef765bc531d0026ad04216fb01.png

在/etc/ld.so.conf.d/目录下创建samba.conf文件(文件只要以conf结尾即可),并输入所安装的samba库位置的绝对路径(/usr/local/samba/lib)即可;之后执行命令#ldconfig重新读取/etc/ld.so.conf.d目录下的配置文件。

1bed11d9e0659b182e19bcc67a763f8f.png

注意:这一步必须要做,否则smbd不能启动。

ldconfig命令的用途,主要是在默认搜寻目录(/lib、/lib64和 /usr/lib)以及动态库配置目录 /etc/ld.so.conf内的文件,搜索出可共享的动态链接库(lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。

6、创建samba的配置文件smb.conf

391f2b06268c0d0a3200a1c0bf4b96cf.png

注意:smb.conf文件默认位置有点别扭。

(1)我一般会建立/usr/local/samba/etc/目录,把smb.conf放在这个目录下,然后在/usr/local/samba/lib/目录下创建符号链接到etc/目录下的smb.conf文件。

(2)在配置编译环境时可以指定samba服务配置文件的位置;如:#./configure --prefix=/usr/local/samba --sysconfdir=/usr/local/samba/etc

为了先把samba服务运行起来进行验证,可以先简单修改一下smb.conf文件。找到security的地方,将默认 security=user改为 security=share。

7、启动smbd和nmbd服务

切换到/usr/local/samba/sbin目录执行命令#./smbd -D和#./nmbd -D启动服务,通过命令#ps -ef | grep smbd和#ps -ef | grep nmbd检查启动的服务。

95df28e7a4468d96ee5a326815bd4bac.png

8、设置 samba服务开机启动

在 /etc/rc.d/rc.local文件中加入以下samba服务启动命令,并让服务在后台启动。

/usr/local/samba/sbin/smbd -D &

/usr/local/samba/sbin/nmbd -D &

b8b9118adea2ada9fc1747173503df0f.png

注:到这一步samba服务安装已经完成。乘下就是根据你的实际生产环境来修改smb.conf文件配置服务了。

三、SELinux和防火墙常规配置

在配置生产环境前,可以先把防火墙和selinux安全机制关闭。等到生产环境测试成功后再开启 selinux和防火墙。不关闭也可以,只要记得配置就可以。这些根据你的个人习惯和实际情况。

=================================================================

我的习惯是:

(1)关闭防火墙和selinux(通过命令#/etc/rc.d/init.d/iptables stop关闭防火墙,#setenforce 0临时关闭selinux)

(2)配置生产环境实现当初设计功能并测试成功

(3)开启selinux安全机制并配置服务的安全上下文,使相应服务的功能符合当初的生产环境设计。

(4)开启防火墙,开启相应服务的端口。

==================================================================

1、selinux相关配置

setsebool -P samba_domain_controller on是否启用域控

setsebool -P samba_enable_home_dirs on如果不需要使用默认共享的用户家目录,可不执行。

setsebool -P samba_export_all_ro on是否启用所有的共享目录为只读

setsebool -P samba_export_all_rw on是否启用所有的共享目录可读可写

setsebool -P smbd_disable_trans on如果需要共享光驱时启用

chcon -R -t samba_share_t /bin/mount如果需要共享光驱时启用

chcon -R -t samba_share_t /bin/umount如果需要共享光驱时启用

setsebool -P swat_disable_trans on需要使用swat时启用

setsebool -P smbd_disable_trans on如果使用PAM模块进行访问控制时启用

chcon -R -t samba_share_t [目录]指定目录安全上下文的类型。

下图为RHEL Workstation 6.0 X86_64中SELinux的布尔值:

cd02c66eb15d14c1390b4d595dc3e744.png

如果想知道当前系统中的那些samba相关的安全上下文。可以通过命令#seinfo获取相关信息。如果没有这条命令,需安装setools-console.x86_64.rpm包(for RHEL)。如:获取安全上下文中与samba相关的类型:#seinfo -t | grep samba;获取用户:seinfo -u;获取角色:#seinfo -r;获取布尔值:seinfo -b同命令:getsebool -a。

下图是获取安全上下文中与samba相关的类型:

d4431bcd26345a3cb75879a03335cd61.png

2、防火墙相关配置

允许微软的NetBIOS协议(UDP端口137和138,TCP端口139)还有不使用NetBIOS协议时通过TCP 445端口实现SMB文件共享。

编辑iptables文件#vim /etc/sysconfig/iptables

加入下面四行内容:

e22a2e3d5069daf81d0ee6443b6cc84a.png

下面是一段设置防火墙的脚本:

b17e46c59e50f886d684562c536b7253.png0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值