目录:

  • 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 这两个不同的操作系统平台相互共享数据的文件系统

samba 集成ldap samba设备_服务端

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

samba 集成ldap samba设备_vim_02


samba 集成ldap samba设备_服务端_03


samba 集成ldap samba设备_客户端_04


samba 集成ldap samba设备_服务端_05


samba 集成ldap samba设备_服务端_06


samba 集成ldap samba设备_vim_07


samba 集成ldap samba设备_客户端_08

2 添加smb用户
pdbedit -L		##查看samba服务器的samba用户
useradd -s /sbin/nologin -M westos		##创建westos用户但不建立家目录
smbpasswd -a 添加用户(被添加用户必须是系统用户)
smbpasswd -x 删除用户

samba 集成ldap samba设备_samba 集成ldap_09

3 创建共享目录
cd /etc/samba/
vim smb.conf
mkdir -vp /sambashare
chmod 777 /sambashare/
systemctl restart smb

samba 集成ldap samba设备_服务端_10


samba 集成ldap samba设备_客户端_11


客户端:172.25.60.252

yum install samba-client -y

samba 集成ldap samba设备_vim_12

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 ##

samba 集成ldap samba设备_客户端_13


samba 集成ldap samba设备_服务端_14


samba 集成ldap samba设备_samba 集成ldap_15

mount //172.25.60.251/WESTOS /mnt -o username=westos,password=westos
将samba服务器的目录挂载在本地目录/mnt下面,挂载的时候必须加上samba用户,cd /mnt进入挂载目录,实际上进入了samba服务器的共享目录

samba 集成ldap samba设备_samba 集成ldap_16


服务端:172.25.60.251

samba 集成ldap samba设备_vim_17


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

samba 集成ldap samba设备_服务端_18


samba 集成ldap samba设备_samba 集成ldap_19


samba 集成ldap samba设备_samba 集成ldap_20


samba 集成ldap samba设备_客户端_21


samba 集成ldap samba设备_vim_22


samba 集成ldap samba设备_samba 集成ldap_23


samba 集成ldap samba设备_服务端_24


samba 集成ldap samba设备_samba 集成ldap_25


测试:

cd mnt
ls
cd WESTOS
ls

samba 集成ldap samba设备_vim_26


4.samba服务配置及权限的更改

4.1 基础配置修改
  1. 域名
    服务端:172.25.60.251
vim /etc/samba/smb.conf
	workgroup = WESTOS

samba 集成ldap samba设备_vim_27


samba 集成ldap samba设备_vim_28


测试:客户端:172.25.60.252

smbclient -L //172.25.60.251

samba 集成ldap samba设备_服务端_29


2. 黑名单

服务端:172.25.60.251

vim /etc/samba/smb.conf
	hosts deny = 172.25.60.252	##不允许我的客户端登录,其余都可以登录
systemctl restart smb

samba 集成ldap samba设备_vim_30


samba 集成ldap samba设备_客户端_31


samba 集成ldap samba设备_服务端_32


测试:客户端:172.25.60.252

smbclient -L //172.25.60.251

samba 集成ldap samba设备_vim_33


3. 白名单

服务端:172.25.60.251

vim /etc/samba/smb.conf
	hosts allow = 172.25.60.252	##只允许我的客户端登录
systemctl restart smb

samba 集成ldap samba设备_客户端_34


samba 集成ldap samba设备_vim_35


测试:客户端:172.25.60.252

smbclient -L //172.25.60.251

samba 集成ldap samba设备_服务端_36

4.2 权限修改
  1. 匿名用户登录
    服务端:172.25.60.251
vim /etc/samba/smb.conf
	guest ok =yes                  ##使匿名用户可以登陆
	map to guest = bad user        ##使匿名用户可以挂载,使挂载进程识别samba匿名用户
systemctl restart smb

samba 集成ldap samba设备_服务端_37


samba 集成ldap samba设备_vim_38


samba 集成ldap samba设备_客户端_39


测试:客户端: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

samba 集成ldap samba设备_vim_40


samba 集成ldap samba设备_vim_41


samba 集成ldap samba设备_samba 集成ldap_42


2. 隐藏目录

服务端:172.25.60.251

vim /etc/samba/smb.conf
	 browseable=no   ##隐藏这个共享目录,使客户端-L看不见samba服务器对外共享的目录,但是实际上是存在的,可以进去
systemctl restart smb

samba 集成ldap samba设备_vim_43


samba 集成ldap samba设备_服务端_44


测试:客户端:172.25.60.252

smbclient -L //172.25.60.251

samba 集成ldap samba设备_服务端_45


3. 可登录用户

(1)

服务端:172.25.60.251

vim /etc/samba/smb.conf
	 valid users=westos   ##客户端可以用来登陆samba服务端的samba用户身份
systemctl restart smb

samba 集成ldap samba设备_服务端_46


samba 集成ldap samba设备_samba 集成ldap_47


测试:客户端:172.25.60.252

smbclient //172.25.60.251/WESTOS -U westos		##可登录
smbclient //172.25.60.251/WESTOS -U zjy			##不可登录

samba 集成ldap samba设备_samba 集成ldap_48


(2)

服务端:172.25.60.251

vim /etc/samba/smb.conf
	 valid users=@/+westos   ## 属于westos组的用户才可以登陆samba服务器 
systemctl restart smb
Usermod -G westos zjy
id zjy

samba 集成ldap samba设备_客户端_49


samba 集成ldap samba设备_samba 集成ldap_50


samba 集成ldap samba设备_客户端_51


测试:客户端:172.25.60.252

smbclient //172.25.60.251/WESTOS -U zjy			##可登录

samba 集成ldap samba设备_samba 集成ldap_52


4. 可写用户列表

服务端:172.25.60.251

vim /etc/samba/smb.conf
	 write list =@westos   ##可写用户的列表(和 writable=yes只能一个存在),服务允许只有westos用户和组可以对samba目录写
systemctl restart smb

samba 集成ldap samba设备_samba 集成ldap_53


samba 集成ldap samba设备_服务端_54


测试:客户端: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

samba 集成ldap samba设备_客户端_55


samba 集成ldap samba设备_samba 集成ldap_56


5. ** 提升用户权限**

服务端:172.25.60.251

vim /etc/samba/smb.conf
	 admin users =  westos    ##指定 smb 服务的访问管理用户
systemctl restart smb

samba 集成ldap samba设备_客户端_57


samba 集成ldap samba设备_服务端_58


测试:客户端:172.25.60.252

mount //172.25.60.251/WESTOS /mnt/ -o username=westos,password=westos

samba 集成ldap samba设备_samba 集成ldap_59


samba 集成ldap samba设备_服务端_60

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

samba 集成ldap samba设备_vim_61


samba 集成ldap samba设备_客户端_62


samba 集成ldap samba设备_samba 集成ldap_63


samba 集成ldap samba设备_samba 集成ldap_64


那么此普通用户student,想要查看此共享目录内的内容,就要通过验证:

cifscreds add -u ranran 172.25.60.251 给本地用户student一个samba用户的身份,此时他就可以通过验证了。

samba 集成ldap samba设备_服务端_65


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/

samba 集成ldap samba设备_vim_66


方法二:

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

samba 集成ldap samba设备_vim_67