SAMB服务的搭建

samba服务是基于SMB协议上的文件共享系统,可以实现全平台兼容,允许Windows和Linux之间进行通讯

端口:

smb:提供对服务器中文件、打印资源的共享访问,TCP的139端口和445端口

nmb:提供基于NetBIOS主机名称的解析,UDP的137端口和138端口

ftp和samba对比:

ftp不能进行在线修改文件,需要下载—>修改—>上传这些操作

ftp的并发高,大文件下载速度快,面向公网

samba如果有写权限,可以直接在线修改

samba不适用于大型文件下载,面向内网

samba共享服务的权限分配:

文件系统权限和应用程序权限两种权限组成

SAMBA服务安装

yum install -y samba  #C6中安装

配置文件解析

vim /etc/samba/smb.conf
[global]  #全局设置
[homes]  #用户目录共享设置
	     #本地samba用户的家目录
		 #默认允许在自己家目录上传下载
[printers]  #打印机共享设置
[myshare]  #自定义名称的共享目录设置

常见配置项:
workgroup = 工作组名称  #所在工作组,需要在一个工作组才能共享
server string = 描述信息  #服务器描述信息
Security = user/share  #安全级别,share允许匿名用户的共享访问,user需要用户认证,Samba用户
log file = /var/log  #日志文件位置
max log file = 50 #日志文件的最大容量,单位为KB
passwd backend = tdbsam #设置共享账户文件的类型
comment = 描述信息  #对共享目录的注释、说明信息
path = 路径  #共享目录在服务器中对应的实际路径
browseable = yes/no  #该目录是否让其他人可见
guest ok = yes/no #是否允许所有人访问,等效于“public”
writable = yes/no  #是否可写,与 read only 的作用相反
valid users = user1,user2,...  #设置哪些用户可以访问
printable = yes/no  #是否加载打印功能

拒绝IP访问:
[global]  #区域内声明
hosts allow = 192.168.1. #申明允许网段
hosts allow = 192.168.1.1  #申明允许 IP
hosts deny = 192.168.1.  #申明拒绝网段
hosts deny = 192.168.1.1  #申明拒绝 IP
#注意:允许 allow 与拒绝 deny 不能同时出现,只能单独出现,出现 allow 代表只允许出现 IP或网段访问,其它全部拒绝。出现 deny 代表只拒绝出现 IP或网段访问,其它全部允许

匿名用户共享配置

1.修改配置文件

vim /etc/samba/smb.conf
Security = share  #修改安全等级为share,默认只能下载
#在配置文件尾部添加共享模块
[test]  #共享名称
comment = test  #描述信息
path = /test  #共享路径
public = yes  #是否允许公共访问,如果去掉,匿名用户无法访问
writable = yes  #允许写入,允许更改内容,如果不允许写入,不加此选项
#共享服务权限:应用程序权限和文件系统权限,两种权限决定

2.创建共享目录

mkdir /test #共享目录和配置文件中的相对应,将共享的信息,写入到此目录中

3.启动服务

service smb start #启动服务

4.客户端测试

[root@localhost ~]# smbclient -L //192.168.4.115   #查看共享目录
Enter root's password:   #无需输入密码,回车即可
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
	Sharename       Type      Comment
	---------       ----      -------
	test #共享目录             Disk      Public Stuff 
	IPC$            IPC       IPC Service (Samba Server Version 3.6.23-33.el6)
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
	Server               Comment
	---------            -------
	Workgroup            Master
	---------            -------
	
登录服务器:
[root@localhost ~]# smbclient //192.168.4.115/ss
Enter root's password:  #无需输入密码,回车即可
Anonymous login successful  #登录成功
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \>

本地用户共享

这里的用户是系统用户,但是密码是samba设置的密码,和系统密码不一样

1.修改配置文件

Security = user  #用户级别认证
[homes]   #系统用户的家目录,配置文件自带的,不需要添加
        comment = Home Directories  #描述信息
        browseable = no  #不允许别看
        writable = yes  #允许写入
;       valid users = %S
;       valid users = MYDOMAIN\%S

#在配置文件尾部添加共享模块
[ss]  #共享名称
comment = test  #描述信息
path = /test  #共享路径
#public = yes  #加上这一项,和匿名登录没有区别,是允许公共访问的,所以删除这一项
writable = yes  #允许写入,允许更改内容,如果不允许写入,不加此选项
#共享服务权限:应用程序权限和文件系统权限,两种权限决定

2.创建共享目录

mkdir /test #共享目录和配置文件中的相对应,将共享的信息,写入到此目录中

3.为系统用户创建samba密码

[root@localhost samba]# pdbedit -a laow  #创建samba密码
new password:
retype new password:

[root@localhost samba]# pdbedit -L  #查看samba用户,没有创建samba密码就不是samba用户
laow:500:

[root@localhost samba]# pdbedit -x laow  #删除samba用户

4.启动服务

service smb start #启动服务

5.客户端测试

[root@localhost ~]# smbclient -U laow -L //192.168.4.115  #本地用户查看共享目录
Enter laow's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
	Sharename       Type      Comment
	---------       ----      -------
	ss              Disk      Public Stuff  #添加的模块会被共享出来
	IPC$            IPC       IPC Service (Samba Server Version 3.6.23-33.el6)
	laow            Disk      Home Directories  #用户的家目录也会共享出来
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
	Server               Comment
	---------            -------
	Workgroup            Master
	---------            -------

[root@localhost ~]# smbclient -U laow //192.168.4.115/ss  #登录samba服务器的ss模块共享目录
Enter laow's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]

[root@localhost ~]# smbclient -U laow //192.168.4.115/laow  #登录系统用户共享的家目录
Enter laow's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \> ls
  .                                   D        0  Wed Jun 17 09:43:35 2020
  ..                                  D        0  Wed Jun 17 09:43:35 2020
  .bash_profile                       H      176  Wed May 11 07:21:42 2016
  .gnome2                            DH        0  Fri Nov 12 09:04:19 2010
  .bash_logout                        H       18  Wed May 11 07:21:42 2016
  .bashrc                             H      124  Wed May 11 07:21:42 2016

		34845 blocks of size 524288. 28548 blocks available
smb: \>

本地用户的权限分割

1.修改配置文件

vim /etc/samba/smb.conf
#将[homes]注释掉
#[homes]
#       comment = Home Directories
#       browseable = no
#       writable = yes
;       valid users = %S
;       valid users = MYDOMAIN\%S
权限分割参数:
[test]  #共享名称  #使用多个共享模块,设置不同的人员能够写入,访问
comment = test  #共享描述
path = /test  #共享的目录路径
public = yes  #允许公共访问,允许读
read only = yes  #只读权限       ######read only和public二选一##########
write list = zhangsan,lisi,...  #哪些用户允许在此模块有写权限,如果是用户组:write list = @组名
valid users = lisi,zhangsan,...  #允许访问的用户列表
create mask = 0766  #创建的文件权限
directory mask = 0766  #目录创建权限

[guanli]
comment = 管理者访问
path = /guanli
public = yes
read only = yes
write list = boss
valid users = boss,l1,b1
create mask = 0766
directory mask = 0755

[lbumen]
comment = l部门访问
path = /lbumen
public = yes
read only = yes
write list = boss,l1
valid users = boss,l1,l2
create mask = 0766
directory mask = 0755

[bbumen]
comment = b部门访问
path = /bbumen
public = yes
read only = yes
write list = boss,b1
valid users = boss,b1,b2
create mask = 0766
directory mask = 07552.客户端登录验证

2.客户端测试

本地用户的别名

samba的别名文件/etc/samba/smbuser

1.修改别名配置文件

vim /etc/samba/smbuser
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest #可以设置好几个别名,空格隔开
laow = 1    #将用户laow,设置别名为1

2.修改samba配置文件

vim /etc/samba/smb.conf
[global]  #在这个区域下边添加
username map = /etc/samba/smbusers #增加这一行

3.重启服务

service restart smb #重启服务

4.客户端测试

[root@localhost ~]# smbclient -U 1 //192.168.4.115/ss   #使用别名登录
Enter 1's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \>

samba 挂载到 Linux 目录上使用

1.在客户端创建挂载目录

mkdir /root/smb #创建挂载目录

2.挂载

mount -t cifs -o username=laow,password=123 //192.168.4.115/ss /rootsmb/ #将samba服务器的ss共享目录挂载到客户端的/root/smb目录下

3.刷新权限

mount -a #刷新权限

4.查看

[root@localhost ~]# df -h
Filesystem          Size  Used Avail Use% Mounted on
/dev/sda3            18G  2.2G   14G  14% /
tmpfs               491M     0  491M   0% /dev/shm
/dev/sda1           575M   32M  513M   6% /boot
/dev/sr0            3.7G  3.7G     0 100% /mnt/cdrom
//192.168.4.115/ss   18G  2.3G   14G  14% /root/smb  #挂载成功
#可以直接在挂载的目录下,操作共享目录的内容