您的位置:首页 > 运维架构 > Linux

Linux下samba源码安装(非RPM包)

2009-06-11 03:16 686 查看
Samba不仅可以作为文件服务器软件,还可以实现不同操作系统之间的资源共享。而且它还可以作为打印服务器提供本地和远程联机打印,除此之外,SambaAMBA Server可以完全取代NT/2000中的域控制器,做域管理工作。
Samba的应用环境:文件和打印机共享。身份验证和权限设置。名称解析。浏览服务。
学习以下几个方面的内容
1、 samba的工作原理
2、 samba所需的软件包和安装方法
3、 基本的samba服务器的搭建流程
4、 解读samba的主配置文件
5、 Samba服务的日志文件
6、 Samba服务的密码文件
7、 Samba应用实例一
8、 Samba应用实例二
(一)、samba的工作原理
Samba服务器在linux系统上实现了SMB/CIFS协议,即可以在linux系统中为windows主机提供网络文件共享服务。
Samba服务器需要smbd和nmbd两个服务程序同时运行,缺一不可。
Smbd服务程序为客户机提供了服务器中共享资源的访问。
Nmbd服务程序提供了NeBIOS主机名称的解析。
当客户端访问服务器时,信息通过SMB协议进行传输,将经过四个工作流程
1、 协议协商:客户端发送negprot指令数据包,服务器发送negprot响应
2、 建立连接:客户端发送session setup指令数据包,提交账号和密码,请求建立连接,samba服务器会对session setup报文做出回应,并为用户分配唯一的UID
3、 访问共享资源:客户端访问samba共享资源时,发送tree connect指令数据包,服务器响应该报文,为每个客户端与共享资源的连接分配TID
4、 断开连接:客户端发送tree disconnect数据包关闭共享,服务器响应
(二)、samba所需的软件包和安装方法
注:下列软件包的主次版本号省略,不同的版本,版本号不同
Samba 主程序包
Samba-client 客户端工具,包含其测试工具
Samba-common 存放通用的工具和库文件
Samba-swat 通过浏览器对samba服务器进行图形化管理
在安装samba之前,先用rpm –qa命令检测系统是否已安装



可以看到主程序包默认已安装,如果还没有安装,那么可以使用下面的方法安装相关的软件包
使用 rpm –ivh安装samba的主程序包和其他软件包



安装完毕后,使用rpm再次查询一下



(三)、基本的samba服务的搭建流程
1、编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限
2、在smb.conf文件中指定日志文件名称和存放路径
3、设置共享目录的本地系统权限
4、重新加载配置文件或重新启动smb服务,使配置生效
(四)、解读samba的主配置文件
先来看看samba配置文件的真实面目,然后对其中的字段进行详细的介绍
Samba配置文件打开的方式是:vi /etc/samba/smb.conf
配置文件主要分为一下两个部分:
1、 global settings全局设置,针对所有的共享资源生效



下面对全局设置几个比较常用的字段进行解释
A、 先介绍一下samba的通用格式:字段=设定值
B、设置工作组或域名名称
例:workgroup = RHEL5 #设置samba服务器的工作组为RHEL5
C、 服务器描述,类似于备注信息
例:server string = RHEL5 file server
D、 设置samba服务器的安全级别模式
有五种级别:
Share模式:客户端登录samba,不需要用户名和密码
User模式:服务器默认为该级别,客户端登录samba服务器需要用户名和密码
Server模式:客户端需要将用户名和密码提交到指定的一台samba服务器上进行验证
Domain模式:如果samba服务器加入到windows域环境中,验证工作由windows域控制器负责
Ads模式:当samba服务器使用ads安全级别加入到windows域环境,其包含有domain级别中的所有功能,并可以具备域控制器的功能。



2、 Share definitions共享服务的定义,设置对象为共享目录和打印机



下面对常用的字段进行说明
A、 设置共享名等信息
[public] #设置共享名为public
Comment = share directory of sales #设置共享目录的注释信息
Path = /sales #设置共享目录的完整路径
Public = yes #允许匿名访问
Public = no #不允许匿名访问
B、设置访问用户
[tech]
Comment = tech
Path = /share/tech
Valid users = boss,@tech #只允许技术部员工和经理访问,技术部组为tech,经理为boss
C、 设置目录只读
Readonly = yes #该目录允许读取
Readonly = no #该目录允许读写
D、 设置目录可写
Writable = yes #读写
Writable = no #只读
Write list格式如下
Write list = 用户名
Write list = @组名
备注:[homes]为特殊共享目录,表示用户主目录,[printers]表示共享打印机
(五)、samba服务的日志文件
存储客户端访问samba服务器的信息,以及samba服务器的错误提示信息
Samba服务刚刚建立时,只有nmbd.log和smbd.log两个日志文件,如图:



日志文件对于排除系统错误非常有帮助。
当有客户端访问samba服务器时,samba服务器的Log目录下会自动建立相关的日志文件



如图,我们刚才用客户端192.168.1.100访问过后,就建立了相应的配置文件
我们打开smbd.log日志文件看一看,详细地记录了客户端访问的过程



再看一下nmbd日志文件,记录了关于访问的信息



(六)、samba服务密码文件
Samba服务为了实现客户身份验证功能,将用户名和密码的信息存放在/etc/samba/smbpasswd中。在客户端访问时,将用户提交资料与smbpasswd存放信息进行比对。
Samba中添加账号的命令为smbpasswd –a 用户名,在建立samba账号之前应该先建立与之对应的linux账号,samba的账号和linux用户账号的密码可以不相同。举个例子:
1、 建立linux系统账号



2、 添加test用户的samba账号,使用smbpasswd -a test



3、 使用cat命令查看smbpasswd文件的内容



4、 设置开机自动加载samba服务



5、 也可以使用ntsysv命令,利用文本图形界面对smb自动加载进行配置



Samba的基本知识学习完了,下面通过两个小的案例来实践验证一下。
(七)、目标需求一
公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/share,共享名为public,此共享目录允许所有员工访问
具体实现的方法如下:
1、 修改samba的主配置文件,修改global的设置,如图



设置安全级别为share,允许匿名访问



2、 在配置文件中的share definitions添加下面的字段
设置共享目录为根目录下的share,且允许匿名访问



3、 在根目录下建立share文件夹,在文件夹中建立一个测试文件



4、 重新加载配置,有两种方式,一种是重启启动smb服务,另外一种是重新加载smb服务,建议使用重新加载,这样就不会中断服务。



5、 在windows客户端验证一下
在网上邻居输入\\192.168.1.1,回车后,无需用户名和密码,可以直接访问刚才在samba服务器上建立的共享目录,如图:



(八)应用案例二
公司现有多个部门,因工作需要,将销售部的资料存放在samba服务器的/sales目录中,集中管理,以便销售人员浏览,并且该目录只允许销售部员工访问
分析:我们需要把安全级别设置为user,并且在配置文件中设置的共享目录/sales下设置valid users字段
1、 添加销售部用户和组,在根目录下建立/sales文件
建立用户的同时加入到相应的组中的方式:useradd -g 组名 用户名






2、 将刚才建立的两个帐户添加到samba的帐户中



查看一下smbpasswd文件的内容



3、 修改samba主配置文件smb.conf






4、 重新加载配置



5、 到windows客户端验证一下,在网上邻居访问\\192.168.1.1,提示输入用户名和密码,在此输入sale1验证,如图



如下图,访问陈功后,可以看到用户sale1的宿主目录,和其有权限访问的目录sales



我们打开sales看一看
里面有我刚才在samba文件共享上创建的文件flie2



关于客户端访问权限的问题将在下面的samba服务器的高级配置中做详细的介绍。Windows客户端能不能够访问samba上的共享文件夹是有文件夹本身的权限和配置文件设置的权限共同决定的。本文出自 51CTO.COM技术博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: