五、samba服务器
1、概述
Samba最先在linux和windows两个平台之间搭建起来的一座桥梁,它实现了linux系统和windows系统之间的通信,比如拷贝文件、实现不同操作系统之间的资源共享等,我们可以将其架设成一个功能强大的文件服务器,也可以将其架设成打印服务器提供给本地和远程联机打印。
2、Samba应用环境
文件和打印机共享:文件和打印机共享是samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问。
身份验证和权限设置:smbd服务支持user mode和domain mode等身份验证和权限设置模式,通过加密的方式可以保护共享的文件和打印机。
3、服务的安装
(1)服务端
[[email protected] Desktop]# rpm -ivh /mnt/Packages/samba-3.6.9-164.el6.x86_64.rpm
#该包为Samba服务的主程序包
[[email protected] Desktop]# /etc/init.d/smb start
Starting SMB services: [ OK ]
[[email protected] Desktop]# netstat -antup |grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 3223/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 3223/smbd
tcp 0 0 :::139 :::* LISTEN 3223/smbd
tcp 0 0 :::445 :::* LISTEN 3223/smbd
(2)客户端
[[email protected] Desktop]# rpm -ivh /mnt/Packages/samba-client-3.6.9-164.el6.x86_64.rpm
#该包为samba的客户端工具,是连接服务器和连接网上邻居的客户端工具并包含其测试工具
4、服务的使用
(1)windows系统
windows+R,打开一个运行窗口
(2)linux系统
[[email protected] ~]# smbclient -L 192.168.220.150
5、Samba常规服务器配置
基本的samba服务器的搭建流程主要分为四个步骤:
(1)编辑配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限;
(2)在smb.conf文件中指定日志文件名称和存放路径;
(3)设置共享目录的本地系统权限及samba共享权限;
(4)重新加载配置文件或重新启动smb服务,使配置生效。
6、samba配置详解
(1)smb.conf文件的开头部分为samba配置简介,告诉我们smb.conf文件的作用及相关信息。smb.conf中还有以“;”开头,这些都是samba配置的格式范例,默认是不生效的,可以通过去掉前面的“;”并加以修改来设置想使用的功能。
[[email protected] Desktop]# vim /etc/samba/smb.conf
(2)Global Settings
Global Settings设置为全局变量区域。全局变量就是说我们只要在global时进行设置,那么该设置项目就是针对所有共享资源生效。
下面我们就[global]常用的字段设置进行讲解:
A、设置samba服务器所在的工作组或域名
Workgroup=server1.example.com#工作组
B、服务器描述,服务器描述实际上类似于备注信息
Server string=samba server1#samba服务器描述
C、设置samba服务器安全模式。常见模式有两种:share安全级别模式和user安全级别模式
Samba服务器有share、user、server、domain和AD活动目录五种安全模式
a.share安全级别模式
客户端登录samba服务器,不需要输入用户名和密码就可以浏览samba服务器的资源,适合于公共的共享资源,安全性差,需要配合其他权限设置,保证samba服务器的安全性。
b.user安全级别模式
客户端登录samba服务器,需要提交合法的账号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。
(3)share definitions共享服务的定义
[homes]为特殊共享目录,表示用户主目录;
[printers]表示共享打印机
配置一个共享资源如下:
[share]#设置共享名
Comment=Home Directories#描述
Browseable=yes#是否允许查看此共享内容
Path=/share#共享路径,写绝对路径
Public=yes#允许匿名查看
(4)设置访问用户
如果共享资源存在重要数据的话,需要对访问的用户进行审核,我们可以使用valid users字段进行设置
Valid users=用户名
Valid [email protected]组名
(5)设置目录只读
共享目录如果限制用户的读写操作,我们可以通过readonly实现
Readonly=yes#只读
Readonly=no#读写
(6)设置目录可写
如果共享目录允许用户写操作,可以使用writable或write list两个字段进行设置
Writable 格式
Writable=yes#读写
Writable=no#只读
Write list 格式
Write list=用户名
Write [email protected]组名
(7)samba服务日志文件
在/etc/samba/smb.conf文件中,log file为设置samba日志字段
7、实例演练
(1)匿名共享(实验之前要保证windows和虚拟机网络连通)
公司现在有一工作组server1,需要添加samba服务器作为文件服务器,并发布共享目录/share,共享名为public,这个共享目录允许公司所有员工访问。
[[email protected] Desktop]# mkdir /share
[[email protected] Desktop]# cp /etc/passwd !$
cp /etc/passwd /share
[[email protected] Desktop]# ls /share/
passwd
[[email protected] Desktop]# vim /etc/samba/smb.conf
74 workgroup = server1
75 server string = server1 samba server
101 security = share
102 passdb backend = tdbsam
290 [share]
291 comment = Home Directories
292 path = /share
293 public = yes
[[email protected] Desktop]# service smb restart
#验证
(2)通过用户名和密码的方式将/sales共享出去,只有知道用户名和密码的同事才可以以查看此文件
A、添加销售部用户和组并添加相应samba账号
使用groupadd命令添加sales组,然后执行useradd和passswd命令添加销售部员工账号及密码
[[email protected] Desktop]# groupadd sales
[[email protected] Desktop]# useradd -g sales sale1
[[email protected] Desktop]# useradd -g sales sale2
[[email protected] Desktop]# id sale1
uid=502(sale1) gid=502(sales) groups=502(sales)
[[email protected] Desktop]# smbpasswd -a sale1
New SMB password:
Retype new SMB password:
Added user sale1.
[[email protected] Desktop]# smbpasswd -a sale2
New SMB password:
Retype new SMB password:
Added user sale2.
[[email protected] Desktop]# vim /etc/samba/smb.conf
101 security = user
102 passdb backend = smbpasswd
103 smb passwd file = /etc/samba/smbpasswd
296 [sales]
297 comment = sales data
298 path = /sales
299 valid users = @sales
300 writable = yes#设置smb服务权限
[[email protected] Desktop]# mkdir /sales
[[email protected] Desktop]# cp /etc/passwd !$
cp /etc/passwd /sales
[[email protected] Desktop]# ls /sales/
Passwd
[[email protected] Desktop]# chmod 777 /sales/#设置smb系统权限
[[email protected] Desktop]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
#测试
连接之后需要输入用户名和密码,此处输入sale1,654321
此时在sale1中新建1.txt文件,在linux中可以看到
[[email protected] Desktop]# ls /home/sale1/
1.txt
(3)扩展参数
Hosts allow和hosts deny的使用方法
Hosts allow字段定义允许访问的客户端
Hosts deny 字段定义禁止访问的客户端
例如:
Hosts deny = 172.18.0. 表示禁止所有来自172.18.0.0/24网段的IP地址访问
Hosts allow = 172.18.58.111 表示允许172.18.58.111这个IP地址访问
当hosts deny和hosts allow字段同时出现并定义的内容冲突时hosts allow优先
(4)boss用户和sales组对/sales都可以读写
配置文件修改如下:
(5)samba的隐藏共享,配置文件修改如下:
例:创建独立配置文件,让sale1直接访问隐藏的共享文件
[[email protected] Desktop]# vim /etc/samba/smb.conf
74 workgroup = server1
75 server string = server1 samba server
76 config file = /etc/samba/smb.conf.%U
102 security = user
103 passdb backend = smbpasswd
104 smb passwd file = /etc/samba/smbpasswd
297 [sales]
298 comment = sales data
299 path = /sales
300 #valid users = @sales
301 #writable = yes
302 write list = @sales
303 browseable = no
[[email protected] Desktop]# cp /etc/samba/smb.conf /etc/samba/smb.conf.sale1
[[email protected] Desktop]# vim /etc/samba/smb.conf.sale1
297 [sales]
298 comment = sales data
299 path = /sales
300 #valid users = @sales
301 #writable = yes
302 write list = @sales
303 browseable = yes
[[email protected] Desktop]# service smb restart
#测试
切断windows对共享文件的连接:
登录sale1用户会发现隐藏文件/sales
登录sale2会发现没有隐藏文件/sales的出现
(6)客户端的一些特殊设置
A、Windows系统下的映射驱动器
将\\172.18.58.111\share复制到下面窗口
B、linux系统下客户端可通过以下几种方案实现
方案1:
方案2:
方案3:
[[email protected] Desktop]# mount -t cifs //172.18.58.111/sales /mnt -o username=sale1%654321
[[email protected] Desktop]# df -h
//172.18.58.111/sales 9.7G 3.2G 6.0G 35% /mnt
[[email protected] Desktop]# cd /mnt/
[[email protected] mnt]# ls
1.txt passwd 新建文本文档.txt
[[email protected] mnt]# touch 2.txt
[[email protected] mnt]# ls
1.txt 2.txt passwd 新建文本文档.txt