Linux下samba服务器的部署

实验环境

Redhat企业8主机(192.168.1.19):部署samba服务器,进行资源共享
Redhat企业7主机(192.168.1.29):作为客户端,访问共享资源
windows(192.168.1.5)主机:作为客户端,访问共享资源

1.Samba介绍

1.1、samba简介

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

1.2、 samba服务端基本信息

  • 服务名称:smb.service
  • 主配置目录: /etc/samba
  • 主配置文件: /etc/samba/smb.conf
  • 安全上下文:samba_share_t
  • 端口: 139 445

2.samba的安装与启用

①:安装samba程序(我们让这台主机既可以做服务端,也可以做客户端,smaba-client 是客户端程序包)
Linux下samba服务器的部署
②:开启smb服务,并设定开机自启;在防火墙策略中添加smb服务
Linux下samba服务器的部署
③:测试smb服务是否开启成功:为了实验效果明显,我们在企业7主机安装samba客户端程序 ; smbclient -L //192.168.1.19 显示服务器端所分享出来的所有资源(root密码直接回车即可)
Linux下samba服务器的部署
Linux下samba服务器的部署

3.samba用户的建立

samba用户必须是本地存在的用户

命令 作用
smbpasswd -a student 添加student用户
pdbedit -L 查看用户列表
pdbedit -x student 删除student用户

示例:
Linux下samba服务器的部署

4.samba用户家目录访问

在selinux开启时,客户端无法访问用户的家目录
①:在服务端的selinux设定中,开启samba家目录使用权限
Linux下samba服务器的部署
②:在windows主机上,访问服务端的共享资源,可以对samba的student用户家目录进行使用
Linux下samba服务器的部署
Linux下samba服务器的部署
Linux下samba服务器的部署
③:在window主机上,可以直接在服务端的student用户家目录下创建文件
Linux下samba服务器的部署
Linux下samba服务器的部署
④:在window的cmd中,我们执行net use命令,查看访问记录;执行net use * /del命令,删除访问记录
Linux下samba服务器的部署
⑤:linux系统下访问samba用户的共享目录(-U 指定用户名称)
Linux下samba服务器的部署

5.samba服务共享目录

①:在服务端创建文件夹/sharedir作为samba共享目录 , 新建文件作为实验素材
Linux下samba服务器的部署
②:更改/sharedir目录的安全上下文为:samba_share_t
Linux下samba服务器的部署
③: vim /etc/samba/smb.conf ,修改配置文件,指定共享路径;修改后,重启smb服务
Linux下samba服务器的部署
④:在客户端访问服务端,可以成功访问共享的/sharedir目录
Linux下samba服务器的部署
Linux下samba服务器的部署

6.samba的访问控制

拒绝主机访问:hosts deny = ip地址
允许主机访问:hosts allow = ip地址

对于共享目录的访问控制:
①: vim /etc/samba/smb.conf ,修改配置文件,拒绝192.168.1.29f访问/sharedir目录 ;修改后,重启smb服务
Linux下samba服务器的部署
②:在客户端(192.168.1.29)测试:无法访问/sharedir共享目录,但是可以访问samba的其他东西
Linux下samba服务器的部署
samba全局访问控制:
①: vim /etc/samba/smb.conf ,修改配置文件,在[global]参数下设定访问控制,拒绝192.168.1.29f访问samba全局共享资源;修改后,重启smb服务
Linux下samba服务器的部署
②:在客户端(192.168.1.29)测试:无法访samba服务器上的所有共享资源
Linux下samba服务器的部署

7.samba的常用配置参数

参数 作用
writable = yes 可写
write list = student 指定student用户可写
write list = +student 或者 write list = @student 指定student组可写
valid users= student 指定student 用户可以访问
valid users = +student 或者 valid users = @student 指定访问组
browseable = yes/no 是否隐藏共享
map to guest = bad user;guest ok =yes 第一条参数写到全局设定中(表示把没有身份的用户映射成guest);允许匿名用户访问
admin users = student 指定student用户为超级用户访问此共享目录

我们在用远程访问共享资源时,在权限允许的情况下,可以使用put / get命令上传下载文件
Linux下samba服务器的部署
但这种方式对共享目录进行操作时,不能使用touch命令等,很不方便,所以我们可以把远程共享目录挂载到本地,直接进行创建或删除文件(注意:是在权限允许的情况下
Linux下samba服务器的部署
Linux下samba服务器的部署
示例:
①:默认共享目录不允许写入,添加writable = yes参数,客户端可对指定共享目录写入
Linux下samba服务器的部署
②:write list = student ,指定只有student用户可写入
Linux下samba服务器的部署
Linux下samba服务器的部署
Linux下samba服务器的部署
③:browseable = yes,不隐藏共享文件;browseable=no ,隐藏共享文件
Linux下samba服务器的部署
Linux下samba服务器的部署
Linux下samba服务器的部署
④:valid users=linux,指定linux用户可访问共享目录
Linux下samba服务器的部署
Linux下samba服务器的部署
⑤:设定允许匿名用户访问共享目录(默认不可以); map to guest = bad user 必须写在全局参数中;Linux下samba服务器的部署
Linux下samba服务器的部署
Linux下samba服务器的部署
Linux下samba服务器的部署

8. samba的多用户挂载

问题:
在客户端如果使用普通方式挂载共享目录,没有通过用户认证的人也可以访问samba服务,存在很大的安全隐患
如:设定samba服务只有student用户可以访问/sharedir目录,客户端的root用户通过student用户认证把共享目录挂载到本地,客户端的westos用户并未用认证的方式挂载共享目录,但是westos也可以访问
Linux下samba服务器的部署
Linux下samba服务器的部署
解决办法:
客户端
①:安装cifs,对多用户挂载进行管理:yum install cifs-utils -y
②:把samba的用户认证写在一个文件中,作为认证文件;并修改文件权限,防止文件内容泄露
Linux下samba服务器的部署
Linux下samba服务器的部署
③:挂载共享目录到本地/mnt中,其他用户不可访问该挂载点 ;
挂载参数说明:
credentials =/root/smbpass ## 指定认证文件;sec=ntlmssp ##指定认证类型 ;multiuser ##支持多用户
Linux下samba服务器的部署
本地其他用户如何对挂载后的共享目录进行操作?
用户通过自己持有的samba账号进行用户认证,可对挂载后的共享目录进行操作
cifscreds add -u student 192.168.1.19 ##student 为samba的认证用户 ; ip 为samba服务器ip地址
Linux下samba服务器的部署cifscreds clearall ##清除认证