第7章<--->SAMBA

第7章<--->SAMBA
一、Samba概述
Samba起源于Linux和Windows之间的通信需求,早期的Linux和Windows两大平台之间不能直接沟通。比如:像拷贝文件之类的。需要通过第三方移动媒体(介质)来实现,那么在Linux和Windows共存的网络中,这种两大平台之间不能直接沟通产生了很大的不便,随着Linux的用户日益增多,使得两个平台之间的通信的问题的解决更加的迫切,最后呢,借助SMB(
Server Message Block)解决了这一个问题.
SMB协议是由微软和因特尔在1987年定制的协议,SMB是一个遵循客户机服务器(C/S)模式的协议,SMB服务器主要是负责通过网络提供可用的共享资源,至于服务器和客户机之间的链接,那就要通过TCP/IP 或者IPX 或者NetBIOS协议进行链接了,一旦服务器和客户机之间建立了稳定的链接,那么客户机就可以向服务器发送命令完成操作。该协议主要用于,共享文件、共享打印机、共享串口等用途,Windows系统下通过访问网络邻居用的就是此协议。



二、Samba简介
Samba是属于(GNU Public License)简称(GPL)的软件,可以合法免费使用,它的核心就是SMB(Server Message Block)通信协议,让运行Linux系统的电脑能够用Microsoft网络通信协议,使它能够和Windows平台进行通信。
samba主要由两个进程:
(1)、smbd进程,主要用来管理共享文件,smdb运行在TCP的 139 445端口.
(2)、nmdb进程,主要用来实现主机名到IP地址的转换(NetBIos名称解析)_,nmdb运行在UDP的137、138端口,如果不运行nmbd进程,那么客户端只能用IP地址来访问samba服务器,那么我们知道SAMBA是基于C/S模式的。既然是C/S模式那么就应该由服务器和客户端。

Windows主机之间使用SMB/CIFS网络协议实现文件共享和打印资源的共享
139端口为SMB协议
445端口为CIFS协议
137端口为NetBIOS名称解析协议
138端口为NetBIOS数据包


三、Samba功能
Samba提供了以下功能:
(1)、共享Linux的文件系统
(2)、共享安装在Samba服务器上的打印机
(3)、使用Windows系统共享的文件和打印机
(4)、支持Windows域控制器和Windows成员服务器对使用samba资源的进行用户认证
(5)、支持WINS名字服务器解析及浏览
(6)、支持SSL安全套接层协议.


四、Samba工作原理
工作原理分为4个步骤
(1)、客户端--->服务端 发起negprot命令数据包,告诉服务器,客户端支持SMB类型,然后服务器根据客户端的情况来选择最优的SMB类型,并作出回应.

(2)、当SMB类型确认后,客户端发送session setup数据包,提交帐号和密码,请求与Samba服务器建立链接,如果这个身份验证通过了。Samba服务器会对Session报文作出回应,并且为用户分配一个唯一的UID,在于客户端通信使用。

(3)、当完成第2步以后,客户端访问Samba共享资源,发送tree connect命令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samab为每个客户端与共享资源链接分配一个TID,客户端既可以访问需要的共享文件。

(4)、共享完毕,客户端向服务器发送数据报文关闭共享,然后与服务器断开链接.


五、Samba安装
(1)、安装包说明
samba-3.0.33-3.28 # 服务器端程序
samba-client-3.0.33 # 客户端程序
samba-common-3.0.33 # 公共组件
samba-swat-3.0.33 #web方式配置程序,可不选

(2)、安装samba
# yum -y install samba

(3)、配置Samba文件说明
# vim /etc/samba/smb.conf
[global] #配置文件中的全局配置部分
workgroup = MYGROUP #工作组的名字,设置服务器加入的共组,在windows的网上邻居会看见。
server string = Samba Server Version %v #服务器的说名信息,在windows访问的时候,出现在“名称、备注”栏中,并描述服务器版本 %v是变量 取当前版本

hosts allow = 10.0.0.21 10.0.0.22 #允许特定IP 地址可以访问,此处可以可写IP和主机名,默认是注释的。一般和deny之需要开启其中一个。就行。,
hosts deny = 10.0.0.23 10.0.0.24 #禁止特定IP 地址可以访问,此处可以可写IP和主机名

security = user
################################
# 指明验证模式 share匿名模式 不验证用户名和密码 #
# user验证模式 验证用户名和密码 #
# 注意:匿名用户此时依旧可用 用空密码验证则通过 #
# 限制匿名需要用valid users = #
# server验证服务器模式 #
# domain由WINDOWS域服务器验证 #
################################
passdb backend = tdbsam # 密码的加密存储模式

load printers = yes #允许共享打印机,指定是否加载打印机(使打印机共享),
cups options = raw #默认打印系统类型

[homes] #每个用户的家目录默认情况下会开启用户家目录和打印机的共享设置,通过[homes]实现系#统中的用户并被smbpasswd添加后的用户可以直接访问各自的家目录
comment = Home Directories #目录的说明
browseable = no #是否启用此共享目录
writable = yes #是否可写入共享目录

[printers] #打印机的一些配置信息
comment = All Printers #为了配置共享打印机,所有用户都能访问共享打印机
path = /var/spool/samba #设置打印机的队列位置,用户必须自行创建目录,存放打印临时文件
browseable = no #是否允许浏览共享打印机
guest ok = no #是否允许匿名用户访问
writable = no #是否可写入共享
printable = yes #是否允许用户更改打印队列的文件




六、samba常用命令

(1)、客户端常用命令
sambaclient命令,查看及登录使用共享
smbclient -L 10.0.0.201 查看smb服务器201上共享了那些目录,默认以root方式验证。需要输入密码
smbclient -U root //10.0.0.201/test1 登录共享。使用方法跟FTP差不多。
mount -o username=root,password=123456 //10.0.0.201/test1/ /mnt
mount -t cifs -o username=root,password=123456 //10.0.0.201/test1 /mnt 将201上的/test共享目录挂在到本地/mnt下面

(2)、服务端常用命令
smbpasswd 增加samba用户帐号
#smbpasswd -a alvin
-a 添加指定的samba帐号
-d 禁用指定的samba帐号
-e 启动指定的samba帐号
-x 删除指定的samba帐号
-h 显示帮助相信.
##不加任何选项,就是直接改帐号密码smbpasswd alvin 修改samba帐号的alvin密码.

(3)、samba/etc/samba/smbusers 可以设定账户的别名
# vim /etc/samba/smbusers
alvin=test1 给alvin帐号设置一个别名为test1

(4)、配置文件可以写定义
用户能否写某个共享资源由以下几个参数决定。
(1)readonly:是否将共享资源设置为只读。当readonly = yes时表示只读共享,readonly = no时表示不使用只读方式共享。
(2)read list:设置只读的用户或组(如果使用组时,需要在组名称前加@)。
(3)writable:是否允许共享资源设置为可写。当writable = yes时表示可写,writable = no时表示不可写。
(4)write list:设置可写的用户或组(如果使用组时,需要在组名称前加@)。
(5)force user:指定通过Samba服务器访问共享资源建立的文件或目录时的拥有者。(通过该参数指定用户后,无论以什么身份登录Samba服务器,都会被重定向到指定的用户,相当于以指定身份访问共享文件夹)
(6)group:指定通过Samba服务器访问共享资源建立的文件或目录的拥有组。(该参数与force user的作用类似)

当readonly、read list、writable及write list在对某一共享资源的设置发生冲突时,使用以下规则。
(1)readonly、writable发生冲突时,在后面的参数优先。
(2)readonly、wirte list发生冲突时,除write list指定用户可写外,其他用户只读。
(3)read list、writable发生冲突时,除read list指定用户只读外,其他用户可写。
(4)read list、write list发生冲突时,write list优先。
(5)writable = no时,只有write list的用户可写。
(6)同时配置writable = yes、write list时,write list无效。

当writable、write list及readonly同时出现在一个共享资源时,最后的结果可根据上面提到的几个规则来判定是否可写

(1) browseable = no 表示应藏该目录,需要通过完整的路径访问:\\10.0.0.201\test
(2) valid users=用户或者组,允许那访问该共享的用户
(3) invalid users=用户或者组,禁止那些用户访问该共享。


七、samba案例实战
(1)匿名访问
# vim /etc/samba/smb.conf
[global]
security = share
[test1]
path = /test1
comment = share test1
writeable = yes
browseable = yes
public = yes
# mkdir /test1 #创建目录,再touch两个文件用来测试
# cd /test1 && touch 1.txt 2.txt
验证在windows下面直接输入//10.0.0.201 不需要密码可以直接进入


(2)、用户验证的文件共享
配置文件如下:
# vim /etc/samba/smb.conf
[global]
security = user
[test2]
Path=/test2
Comment = share test2
writable = no
public = no
valid users = aixocm 用户
write list = @aixocm 用户组
##如果想在目标目录中进行操作(添删改查),需要将共享的目录的权限授予需要操作此目录的用户。
例如:我想让aixocm用户对共享目录进行操作只要在服务器端:
# useradd aixocm
# chown aixocm:aixocm /test2
[root@server samba]# smbpasswd -a aixocm
New SMB password:
Retype new SMB password:



八、练习题目:
公司有财务,技术,领导3个部门,我们分别为3个部门建立3个用户组为caiwu,network,lingdao;三个部门里各有2个用户,我们建用户分别为caiwu01,caiwu02,network01,network02,lingdao01,lingdao02,然后我们分别就公司的具体情况建立相应的目录及访问权限,通过以下的例子,希望大家能在平时的工作中灵活的应用samba的安全权限来设置你们的 samba 文件服务器。

file:///tmp/ct_tmp/1.png

 

file:///tmp/ct_tmp/2.png

 

file:///tmp/ct_tmp/3.png

 

file:///tmp/ct_tmp/4.png




1。首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录。

file:///tmp/ct_tmp/5.png

 

file:///tmp/ct_tmp/6.png



2。建立一个 caiwu 的文件夹,希望 caiwu 组和 lingdao 组的人能看到,network02 也可以访问,但只有 caiwu01 有写的权限。

file:///tmp/ct_tmp/7.png

 

file:///tmp/ct_tmp/8.png

 

file:///tmp/ct_tmp/9.png



客户端验证:

file:///tmp/ct_tmp/10.png

 

file:///tmp/ct_tmp/11.png



3。建立一个 lingdao 的目录,只有领导组的人可以访问并读写,还有 network02 也可以访问,但外人看不到那个目录.

file:///tmp/ct_tmp/12.png

 

file:///tmp/ct_tmp/13.png

 

file:///tmp/ct_tmp/14.png



客户端验证:

file:///tmp/ct_tmp/15.png

 

file:///tmp/ct_tmp/16.png



4。建立一个文件交换目录 exchange,所有人都能读写,包括 guest 用户,但每个人不能删除别人的文件。

file:///tmp/ct_tmp/17.png

 

file:///tmp/ct_tmp/18.png

 

file:///tmp/ct_tmp/19.png



客户端验证:

file:///tmp/ct_tmp/20.png



5。建立一个公共的只读文件夹 public,所有人只读这个文件夹的内容。

file:///tmp/ct_tmp/21.png

 

file:///tmp/ct_tmp/22.png

 

file:///tmp/ct_tmp/23.png



客户端验证:

file:///tmp/ct_tmp/24.png





##修改配置文件后要刷新服务:

file:///tmp/ct_tmp/25.png






s











 

posted @ 2015-02-01 17:05  大都比2号  阅读(155)  评论(0编辑  收藏  举报