1、SAMBA概述

       技术实现:解决跨平台的文件共享的需求。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

        

sshfs 与samba 性能 samba和smb的区别_运维

       如上图,以前打印机没有无线网络时,不同主机电脑想要打印都单独连一条线路到打印机上。当主机电脑数量多时,这种对于打印机上需要多个接口来连接主机电脑的方法就不是很现实。现今打印机上支持了无线/有线网络,只需要网络上连接就可以打印。

1.1 FTP与SAMBA各个方面的对比

       ftp的优缺点:

  • 优点:文件传输、应用层协议、可跨平台;
  • 缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件;

       Samba的特性:

  • 使用 smb/cifs 协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件;

       对于本地账户密码验证模式下:

       FTP的用户密码使用文件:

  • passwd
  • shadow

       SAMBA的用户名密码使用文件:

  • passwd
  • passdb.tbd

1.2 SAMBA与CIFS之间的关系

  •  CIFS(Common Internet File System), 它使程序可以访问远程 t Internet 计算机上的文件并要求此计算机提供服务。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS 是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。
  • SMB 协议在局域网上用于服务器文件访问和打印的协议。

2、SAMBA服务详解

SAMBA软件相关信息:

        

sshfs 与samba 性能 samba和smb的区别_运维_02

2.1 登陆验证模式

  • share 匿名验证;
  • user 本地用户验证(Samba服务器默认的安全级别,用户在访问共享资源之前必须提供用户名和密码进行验证)。—————拓展 :tdbsam:该方式是使用一个数据库文件来验证。数据库文件叫passdb.tdb。可以通过pdbedit -a 向数据库中添加新用户,不过要建立的Samba用户必须先是系统用户。也可以理解为我们使用pdbedit -a 将系统用户转化为了samba用户。pdbedit命令的参数很多,列出几个主要的。
  1. pdbedit -a username:新建Samba账户(将系统用户转化为samba用户,并设置密码);
  2. pdbedit -x username:删除Samba账户;
  3. pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件;
  • 别名用户访问(虚拟用户);

2.2 常见配置参数解释

[global]用于定义Samba服务器的总体特性,其配置项对所有共享资源生效
workgroup = WORKGROUP
#设定 Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v
#设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
interfaces = lo eth0 192.168.12.2/24
#设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = 127. 192.168.1. 192.168.10.1
#表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。
hosts deny 与hosts allow 刚好相反(二选一)。
例如:
hosts allow=172.17.2. EXCEPT172.17.2.50
表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
log file = /var/log/samba/log.%m
#设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问
Samba Server的机器都单独记录一个日志文件。
max log size = 50
#设置Samba Server日志文件的最大容量,单位为kB,0代表不限制
security = user
#设置用户访问Samba Server的验证方式。
passdb backend = tdbsam
load printers = yes/no
#设置是否在启动Samba时就共享打印机
[homes]用于设置用户宿主目录的共享属性(特殊共享)
[homes] #共享名(特殊共享,泛指每个用户对应的家目录)
comment = Home Directories #共享描述
browseable = no #共享是否可被查看
writable = yes #共享是否可写
;valid users = %S #允许访问该共享的用户
例如:valid users = bob,@bob(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)
[printers]用于设置打印机共享资源的属性(特殊共享,共享打印设备,现在基本不用)
[printers] #共享名
comment = All Printers #共享描述
path = /var/spool/samba #共享路径
browseable = no #共享是否可被查看
guest ok = no #是否可以匿名访问,类似于public
writable = no #是否可写
printable = yes #是否可以打印
[自定义]自定义共享区域
[自定义] #共享名
comment = the share is xbz #共享描述
path = /share/zdy #共享路径
public = yes #是否可以匿名访问,类似于guest ok
browseable = yes #共享是否可被查看
writable = yes #是否可写(同时设置目录的W)

配置文件检查工具:

       testparm :若显示"Loaded services file OK."信息表示配置文件的语法是正确的

  •        -v:显示samba所支持的所有选项;

2.3 访问控制

       写入权限的控制方式(类似于vsftp的限制方式)。配置文件开启writeable、系统用户对文件目录的权限,根据这个地方的限制有两种方式进行控制:

     (1)配置文件开启,文件系统严格控制(尽量采用这种)

  • writable = yes
  • setfacl 或 chmod 777

     (2)文件系统开启,配置文件严格控制

  • chmod 777 /dir
  • read only = yes
  • write list = 用户,@组

2.4 客户端登陆方式

Linux 端:
• smbclient -U 用户名 -L //服务器 IP #查看服务器共享
• smbclient -U 用户名 //服务器 ip/共享名 #登录服务器共享
Window 端
• \\服务器 ip\共享名
• net use * /del #清空登录缓存