一、什么是samba?

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

二、实验环境配置

desktop:
主机名:node1
ip:172.25.254.113
安装3个软件:samba-client samba-common samba.x86_64
yum search samba #可以看到
systemctl start samba
ststemctl stop firewall

server:
主机名:node2
ip:172.25.254.213
安装:yum install samba-client -y

三、samba用户的建立及客户端查看共享目录

服务端:
useradd westos
smbpaswd -a westos  #添加为samba用户
pdbedit -L #查看samba用户

vim /etc/samba/smb.conf 
	添加:
	[HA]  #samba服务对外共享的总名称
	comment= test share #共享目录的说明
	path=/westos #对外共享的实际目录
	
:wq
systemctlrestart smb 

 	
客户端:
smbclient -L //172.25.254.113 #查看匿名用户的共享目录
smbclient -L //172.25.254.113 -U westos #查看westos用户的共享目录
smbclient -//172.25.254.113/westos -U westos #进入westos用户的共享目录

效果:

匿名用户登陆

Linux samba服务没有权限写入 linux samba服务器_服务端


用户登陆此查看目录:

Linux samba服务没有权限写入 linux samba服务器_Linux samba服务没有权限写入_02

用户登陆此查看目录内容:

Linux samba服务没有权限写入 linux samba服务器_服务端_03

默认情况下匿名用户不能查看共享目录

Linux samba服务没有权限写入 linux samba服务器_客户端_04

如何查看?

vim /etc/samba/smb.conf
	map to guest = bad user
	[HA]
	guest ok =yes
:wq
systemctlrestart smb.service

四、用户(服务端的)在客户端的权限

mount -o username=westos,password=123 //172.25.254.113/westos /mnt #用户身份westos挂载

1.写权限

Linux samba服务没有权限写入 linux samba服务器_共享目录_05


挂载后客户端能写,且服务端可以看到;

Linux samba服务没有权限写入 linux samba服务器_共享目录_06


如何关闭写权限?

vim /etc/samba/smb.conf
	writeable =no #关闭
	write list=@lee #只有lee组的可以写
:wq
systemctl restart smb

Linux samba服务没有权限写入 linux samba服务器_共享目录_07

Linux samba服务没有权限写入 linux samba服务器_服务端_08

Linux samba服务没有权限写入 linux samba服务器_客户端_09

客户端再次写入:

Linux samba服务没有权限写入 linux samba服务器_共享目录_10

2.哪个用户可以登陆?

vim /etc/samba/smb.conf
	[HA]
	valid users=sun #只有sun可以挂载,可以登陆查看共享目录
	valid users=+sun或者@sun #属于sun的组的可以
:wq
systemctl restart smb

用户westos不可以:

Linux samba服务没有权限写入 linux samba服务器_共享目录_11


Linux samba服务没有权限写入 linux samba服务器_客户端_12


用户sun 可以

Linux samba服务没有权限写入 linux samba服务器_共享目录_13


把westos归属为sun的组

Linux samba服务没有权限写入 linux samba服务器_客户端_14


再次测验:

Linux samba服务没有权限写入 linux samba服务器_共享目录_15

3.是否隐藏共享目录

vim /etc/samba/smb.conf
	[HA]
	browseable=no
:wq
systemctl restart sma

设置后的效果

Linux samba服务没有权限写入 linux samba服务器_Linux samba服务没有权限写入_16

Linux samba服务没有权限写入 linux samba服务器_客户端_17

4.是否可以上传

默认不可以上传:

Linux samba服务没有权限写入 linux samba服务器_Linux samba服务没有权限写入_18


因为服务端的/westos 对其他人没有写权限:

chmod 777 /westos.

客户端就都可以上传了。

五、selinux开启

1.服务端selinux开启后,客户端不能查看:

Linux samba服务没有权限写入 linux samba服务器_共享目录_19


这是为什么?

因为我们新建的共享目录安全上下文不匹配

Linux samba服务没有权限写入 linux samba服务器_服务端_20


更改一下:

Linux samba服务没有权限写入 linux samba服务器_客户端_21

再次测验:

Linux samba服务没有权限写入 linux samba服务器_Linux samba服务没有权限写入_22

2.不能上传文件

Linux samba服务没有权限写入 linux samba服务器_服务端_23

六、smb多用户挂载

客户端上以用户westos(服务端的用户)挂载并建立的文件,客户端的stuedent用户也可以看到,这样是很不安全。

westos用户挂在并建立的westos文件

Linux samba服务没有权限写入 linux samba服务器_Linux samba服务没有权限写入_24

student 也可以看见:

Linux samba服务没有权限写入 linux samba服务器_客户端_25

最好客户端的每一个用户在smb服务端都有自己的帐号

如何实现?

客户端:
yum install cifs-utils.x86_64 -y #安装可以多用户挂载的服务
vim /root/smbpassfile
	username=sun
	pssword=123
:wq
chmod 600 /root/smbpassfile
ls -l /root/smbpassfile

mount -o credentials=/root/smbpassfile,sec=ntlmssp,multiuser //172.25.254.113/HA /mnt #以多用户方式挂载并读取/root/smbpassfile文件里的内容

Linux samba服务没有权限写入 linux samba服务器_共享目录_26


Linux samba服务没有权限写入 linux samba服务器_客户端_27


实验效果,再次切换到student 用户就不能看了:

Linux samba服务没有权限写入 linux samba服务器_服务端_28

使用个smb帐号又可以看了:

Linux samba服务没有权限写入 linux samba服务器_Linux samba服务没有权限写入_29