Samba服务器的搭建与配置

1.什么是Samba

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

2.搭建一个Samba服务器
打开desktop和server虚拟机,把desktop当作客户端,server当作服务端,配置desktop的ip为172.25.254.115,配置server的ip为172.25.254.215,更改115名字为client.westos.com,更改215的名字为,samba.westos.com,分别配置yum源
在这里插入图片描述
215端
下面将把215这台虚拟机搭建samba服务器,在215上面需要安装3个安装包

yum install samba-client samba的客户端
yum install samba-common samba服务用到的命令
yum isntall samba samba的主服务
yum search samba

在这里插入图片描述

rpm -qc samba-common查看samba的主配置文件 /etc/samba/smb.conf

在这里插入图片描述

rpm -qa 查看samba服务的版本

在这里插入图片描述

vim /etc/samba/smb.conf 

在这里插入图片描述

可以看出Selinux会对Samba服务有一定的影响,如果Selinux开启,需要更改samba共享目录的安全上下文
mkdir /westos_smb,建立一个共享目录

在这里插入图片描述

semanage fcontext -a -t samba_share_t '/westos_smb(/.*)?'更改安全上下文

在这里插入图片描述

restorecon -RvvF /westos_smb刷新使当前生效

在这里插入图片描述

vim /etc/samba/smb.conf

在这里插入图片描述
[WESTOS]为samba服务器对外共享的总名称
path = /westos_smb实际共享目录路径
重启服务
在这里插入图片描述

关闭防火墙

samba服务用户
建立westos用户和lee用户,并将其加入samba用户里面,并设置密码

useradd westos
useradd lee

在这里插入图片描述

smbpasswd -a westos
smbpasswd -a lee 

在这里插入图片描述
在这里插入图片描述

注意这里的用户首先必须在系统中真实存在,然后在用smbpasswd命令加入到samba服务中
用pdbedit -L 来查看samba服务器的samba用户

在这里插入图片描述
给/westos_smb中建立5个文件
在这里插入图片描述

在215端
安装samba-client客户端

在这里插入图片描述

smbclient -L //172.25.254.215 以匿名用户对samba服务器215的共享目录进行查看,-L表示列出,没有root用户就直接回车

在这里插入图片描述

smbclient //172.25.254.215/WESTOS  -U westos 以smb服务器中westos用户直接查看215共享的文件
ls

在这里插入图片描述
这种方式只能查看,而想进行上传下载等操作,可以mount到本地
在这里插入图片描述发现并不能删除和建立文件

3.在samba服务修改权限

加入服务端对共享目录的说明

在这里插入图片描述
重启服务
在客户端查看,在Comment处,有加入的Share File
在这里插入图片描述

browseable = no 隐藏这个共享目录,使客户端-L看不到samba服务器对外的共享目录,但实际是存在的

重启服务
在这里插入图片描述
在这里插入图片描述

valid users = westos
客户端只可以用samba服务器的westos用户身份来登陆samba

在这里插入图片描述
在这里插入图片描述
而lee用户就不可以登陆
在这里插入图片描述

valid users = +westos 表示只有属于westos组的用户可以登陆

在这里插入图片描述
现在将lee用户加入westos用户组

usermod -G westos lee
id lee

再次用lee登陆,发现可以登陆了
在这里插入图片描述
在这里插入图片描述

writable = yes 表示可以写入

在这里插入图片描述
重启服务
用客户端:
在这里插入图片描述发现此时还是不能上传和删除,为什么?因为虽然服务允许了,但是文件系统的权限还没有允许。

ls -ld /westos_smb查看文件夹权限,发现只对于root用户可写
现在给westos用户一个满权限

在这里插入图片描述

然后再测试

成功删除file1
在这里插入图片描述

成功上传文件
在这里插入图片描述
注意:文件系统的权限和服务权限都要开启

write list = lee 服务只允许lee用户对samba目录可写,这个和writable只能存在一个,开启这个就必须将writable注释掉

在这里插入图片描述

给文件权限系统加入lee用户满权限

在这里插入图片描述
在这里插入图片描述
此时westos用户,虽然文件系统有rwx权限,但是服务只允许lee用户可写,所以它仍不能上传删除文件
在这里插入图片描述

write list = @lee 表示属于lee组的用户可以写

在这里插入图片描述
用客户端westos用户登陆,发现还是无法上传,因为还没有把westos用户加入lee组
在这里插入图片描述
==在服务端加westos用户到lee组中

usermod -G lee westos
id westos

在这里插入图片描述
此时westos用户可以上传删除文件

在这里插入图片描述

guest ok = yes 使匿名用户可以登陆

此时匿名用户不能登陆
在这里插入图片描述
在这里插入图片描述
此时再次尝试,匿名用户可以登陆了
在这里插入图片描述
尝试用匿名用户挂载

 mount //172.25.254.215/WESTOS /mnt -o username=guest.password=""

在这里插入图片描述
发现不能挂载,因为挂载这个进程没有识别smaba服务器的匿名用户
在配置文件中加入 map to guest = bad user 使挂载进程映射你名用户bad user
在这里插入图片描述
在这里插入图片描述

admin users = westos 将/westos_smb目录的root用户设置为westos用户

在这里插入图片描述
此时需要把writable权限也开开

用westos用户挂载/westos_smb,然后上传文件file{7..10}
ll 查看文件的权限所属
发现file7-file10属于root用户,1001组,1001即为服务端westos组,只是因为客户端没有1001这个组所以就直接用组id表示,但是所属用户是root

如何共享系统文件夹,(非自己创建例如/mnt)

前文说到可以通过修改安全上下文的方式来使文件夹被共享,而如果我想共享系统/mnt目录,就不可以使用这个方法了
因为还有别的地方需要用到/mnt的安全上下文,如果修改了/mnt的安全上下文为smaba的就会导致别的地方不能使用/mnt
所以只能通过降低samba安全性的方法来使/mnt共享,这个方法就是修改Selinux的samba功能开关
getsebool -a | grep samba

在这里插入图片描述
发现都是关闭的状态

 vim /etc/smaba/smb.conf 写入共享/mnt的信息

在这里插入图片描述
在/mnt下创建10个文件,查看安全上下文,发现并不是smaba服务要求的安全上下文
在这里插入图片描述
在客户端用westos用户登陆后ls也不能看到10个文件
在这里插入图片描述

这时在服务端修改Selinux对于samba的服务控制
setsebool  -P samba_export_all_ro on(1) 打开只读权限 -P永久打开
客户端再次用westos用户登陆samba服务器

发现可以查看到10个文件了
在这里插入图片描述
尝试删除和上传文件,发现并不能
在这里插入图片描述
在这里插入图片描述这时候需要再开启Selinux控制smaba的读写权限
setsebool -P samba_export_all_ro on(1) -P 永久打开
再次登陆,rm file10 还是不能删除,因为文件系统没有给westos对于/mnt的满权限,切换到samba端,给westos对于/mnt的满权限
在这里插入图片描述
再次用westos登陆,发现可以删除
在这里插入图片描述

如何实现samba的多用户挂载 在客户端做实验

刚才在服务端将smb服务设置好后,客户端实现挂载,对smb的共享目录进行修改
这时候客户端以服务端的westos用户进行登陆,而客户端的student用户可以看到root用户下的/mnt的挂载内容,这样就很不安全
应该客户端每一个用户在smb服务端中均有自己对应的smb用户
root ---->westos
student----->lee

先在root用户下,用smb端的westos用户挂载共享目录到/mnt下
在这里插入图片描述在这里插入图片描述

在客户端切换student用户,cd /mnt 后仍然可以看到/mnt里的东西
在这里插入图片描述
此时需要在客户端安装可以实现多用户挂载的服务,客户端每个用户只能看到自己的挂载内容

切换到root用户 yum install cifs-utils -y 

在这里插入图片描述

man mount.cifs 查看cifs的挂载配置
vim /root/smb 写入挂载用户身份的认证文件

在这里插入图片描述

之前挂载的时候samba用户的密码和用户名是裸露在外的
现在把它写入文件里面
并且给这个文件一个600的权限,只能让root用户查看
chmod 600 /root/smb

在这里插入图片描述

mount //172.25.254.215/WESTOS /mnt -o credentials=/root/smb 以认证文件的方式挂载,不用裸露用户身份

在这里插入图片描述成功挂载
输入mount依然可以看到挂载的用户是westos
在这里插入图片描述
切换到student用户,发现仍然可以看到挂载到/mnt下的文件
在这里插入图片描述
卸载/mnt
在这里插入图片描述

 mount //172.25.254.215/WESTOS /mnt -o credentials=/root/smb,sec=ntlmssp,multiuser  root用户挂载的时候不让别的用户看到自己的操作,并开启多用户挂载

在这里插入图片描述
再次切换用户student,发现不能看到/mnt里的内容了
在这里插入图片描述
现在为student用户创建挂载用户

cifscreds --help 查看多用户挂载的命令用法

在这里插入图片描述

cifsscreds add -u lee 172.25.254.215为本地student用户创建samba用户lee

在这里插入图片描述

cd /mnt切换到挂载目录
ls此时就可以看到/mnt里的内容了
touch file000 
ll 在客户端属于student用户的
cifscreds clear -u lee 172.25.254.215 取消samba用户

在这里插入图片描述
在这里插入图片描述
此时file000的所属用户是1002,是因为在客户端没有lee这个用户,而lee这个用户在服务端是1002,所以客户端显示的就是1002.
在服务端 可以看到file000是属于lee用户的
在这里插入图片描述

取消student用户的smaba用户lee
cifscreds clear -u lee 172.25.254.215
卸载,再次挂载,切换用户student,又不能看到了

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值