目录:
- 1.samba的相关概念
- 1.1 samba的定义
- 1.2 samba的软件架构
- 2.搭建samba服务器
- 3.自动挂载共享目录
- 4.samba服务配置及权限的更改
- 4.1 基础配置修改
- 4.2 权限修改
- 4.3 Samba多用户挂载
- 5.selinux开启之下对samba服务的权限修改
1.samba的相关概念
1.1 samba的定义
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、 打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。Windows和Sun公司开发,所以可以跨平台。
目标:让Windows与Unix-LIke 这两个不同的操作系统平台相互共享数据的文件系统
1.2 samba的软件架构
- samba:服务器端的应用程序,这个套件主要提供了SAM服务器所需的各项服务程序 (smbd及nmbd )、SAMBA的文件档 ( document )、以及其它与SAMBA 相关的logrotate 设定文件及开机默认选项档案等 。
- samba-common:这个套件则主要提供了 SAMBA 的主要配置文件(smb.conf) 、 smb.conf 语法检验的测试程序( testparm )等等,samba的支持文件;
- samba-client:客户端的应用程序,这个套件则提供了当Linux做为SAMBAClient端时,所需要的工具指令,例如挂载SAMBA文件格式的mount.cifs、取得类似网上邻居相关树形图的smbtree等。如果Linux系统共享资源,没有Windows作为测试,可以用LInux自带的samb-client作为测试端!
2.搭建samba服务器
服务端:172.25.60.251
1 搭建smb服务器
yum install samba samba-common samba-client -y
rpm -qa | grep samba ##查看samba服务的版本
rpm -ql samba-common ##查看samba服务的主配置文件
getenforce disabled ##将selinux关掉
systemctl start smb ##开启smb
systemctl enable smb
netstat -antlupe | grep smb ##查看smb开启的接口
Firewall-cmd --permanent --get-service ##查看火墙中所有的服务
firewall-cmd --permanent --add-service=samba ##在火墙中允许smb
firewall-cmd --reload
2 添加smb用户
pdbedit -L ##查看samba服务器的samba用户
useradd -s /sbin/nologin -M westos ##创建westos用户但不建立家目录
smbpasswd -a 添加用户(被添加用户必须是系统用户)
smbpasswd -x 删除用户
3 创建共享目录
cd /etc/samba/
vim smb.conf
mkdir -vp /sambashare
chmod 777 /sambashare/
systemctl restart smb
客户端:172.25.60.252
yum install samba-client -y
smbclient -L //172.25.60.251 ##匿名用户登录(-L表示list列出)
smbclient -L //172.25.60.251 -U westos ##samba用户登录查看共享目录
smbclient //172.25.60.251/WESTOS -U westos ##直接进入samba共享服务
ls ##查看当前共享目录
!ls ##查看当然本机用户所在目录
put anaconda-ks.cfg ##
mount //172.25.60.251/WESTOS /mnt -o username=westos,password=westos
将samba服务器的目录挂载在本地目录/mnt下面,挂载的时候必须加上samba用户,cd /mnt进入挂载目录,实际上进入了samba服务器的共享目录
服务端:172.25.60.251
3.自动挂载共享目录
客户端:172.25.60.252
yum install autofs -y
systemctl start autofs.service
vim /etc/auto.master
#
/misc /etc/auto.misc
/mnt /etc/auto.samba
vim /etc/auto.samba
WESTOS -fstype=cifs,username=lee,password=lee ://172.25.60.251/WESTOS
vim /etc/sysconfig/autofs
TIMEOUT=3
systemctl restart autofs.service
测试:
cd mnt
ls
cd WESTOS
ls
4.samba服务配置及权限的更改
4.1 基础配置修改
- 域名
服务端:172.25.60.251
vim /etc/samba/smb.conf
workgroup = WESTOS
测试:客户端:172.25.60.252
smbclient -L //172.25.60.251
2. 黑名单
服务端:172.25.60.251
vim /etc/samba/smb.conf
hosts deny = 172.25.60.252 ##不允许我的客户端登录,其余都可以登录
systemctl restart smb
测试:客户端:172.25.60.252
smbclient -L //172.25.60.251
3. 白名单
服务端:172.25.60.251
vim /etc/samba/smb.conf
hosts allow = 172.25.60.252 ##只允许我的客户端登录
systemctl restart smb
测试:客户端:172.25.60.252
smbclient -L //172.25.60.251
4.2 权限修改
- 匿名用户登录
服务端:172.25.60.251
vim /etc/samba/smb.conf
guest ok =yes ##使匿名用户可以登陆
map to guest = bad user ##使匿名用户可以挂载,使挂载进程识别samba匿名用户
systemctl restart smb
测试:客户端:172.25.60.252
smbclient //172.25.60.251/WESTOS
mount //172.25.60.251/WESTOS /media/ -o username=guest ##匿名用户挂载
df
ummont //172.25.60.251/WESTOS
2. 隐藏目录
服务端:172.25.60.251
vim /etc/samba/smb.conf
browseable=no ##隐藏这个共享目录,使客户端-L看不见samba服务器对外共享的目录,但是实际上是存在的,可以进去
systemctl restart smb
测试:客户端:172.25.60.252
smbclient -L //172.25.60.251
3. 可登录用户
(1)
服务端:172.25.60.251
vim /etc/samba/smb.conf
valid users=westos ##客户端可以用来登陆samba服务端的samba用户身份
systemctl restart smb
测试:客户端:172.25.60.252
smbclient //172.25.60.251/WESTOS -U westos ##可登录
smbclient //172.25.60.251/WESTOS -U zjy ##不可登录
(2)
服务端:172.25.60.251
vim /etc/samba/smb.conf
valid users=@/+westos ## 属于westos组的用户才可以登陆samba服务器
systemctl restart smb
Usermod -G westos zjy
id zjy
测试:客户端:172.25.60.252
smbclient //172.25.60.251/WESTOS -U zjy ##可登录
4. 可写用户列表
服务端:172.25.60.251
vim /etc/samba/smb.conf
write list =@westos ##可写用户的列表(和 writable=yes只能一个存在),服务允许只有westos用户和组可以对samba目录写
systemctl restart smb
测试:客户端:172.25.60.252
mount //172.25.60.251/WESTOS /mnt/ -o username=westos,password=westos ##可写
mount //172.25.60.251/WESTOS /mnt/ -o username=zjy,password=zjy
5. ** 提升用户权限**
服务端:172.25.60.251
vim /etc/samba/smb.conf
admin users = westos ##指定 smb 服务的访问管理用户
systemctl restart smb
测试:客户端:172.25.60.252
mount //172.25.60.251/WESTOS /mnt/ -o username=westos,password=westos
4.3 Samba多用户挂载
客户端:172.25.60.252
以认证文件方登录smb,是切换到student用户不可以登录,因为student用户没有权限
yum install cifs-utils -y
vim /etc/auto.samba
WESTOS -fstype=cifs,credentials=/root/smbpass,sec=ntlmssp,multiuser ://172.25.60.251/WESTOS
vim /root/smbpass
username=westos
password=westos
chmod 600 /root/smbpass
systemctl restart autofs.service
那么此普通用户student,想要查看此共享目录内的内容,就要通过验证:
cifscreds add -u ranran 172.25.60.251 给本地用户student一个samba用户的身份,此时他就可以通过验证了。
5.selinux开启之下对samba服务的权限修改
服务端:172.25.60.251
方法一:
vim /etc/sysconfig/selinux ##开启selinux
reboot
Getenforce
sam允许的上下文是samba_share_t
ls -Zd /sambashare/
semanage fcontext -a -t samba_share_t '/sambashare(/.*)?'
restorecon -RvvF /sambashare/
方法二:
vim /etc/samba/smb.conf
path=/mnt
systemctl restart smb.service
getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> on
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
setsebool -P samba_export_all_rw on