[摘录]CentOS 7 配置SMB文件服务

Centos 7配置Samba服务器

1、Centos 7版本,内核: Linux 3.10.0-514.el7.x86_64

[root@tommy /]# hostnamectl #查看版本号
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.el7.x86_64
Architecture: x86-64

2、介绍samba功能:
主要用来实现局域网内Linux与windows 之间的文件、打印等设备的共享功能。

3、安装samba软件:
安装指令:yum install samba -y


4、开启smb/nmb服务
指令:systemctl start smb nmb


5、将smb/nmb添加到开机启动项
指令:systemctl enable smb nmb


6、查看smb/nmb的监听端口是否打开
netstat -anlpt |grep smb
netstat -anlpu | grep nmb


7、添加到防火墙白名单放行
firewall -cmd --permanent --add-service=samba
firewall -cmd --reload


8、关闭SELinux(也可以不关闭,方法看文底)
setenforce 0


9、建立测试目录和用户
mkdir /common
useradd zhangsan
smbpasswd -a zhangsan


10、检测用户是否添加成功
pdbedit -L


11、给测试目录755权限
chown -R 755 /common/


12、配置参数文件
vim /etc/samba/smb.conf


13、测试语法是否正确
testparm


14、重启smb/nmb服务
systemctl restart smb nmb

15、winodws 客户端进行访问
win+r,打开运行,输入\192.168.0.94 ,并且输入用户名zhangsan 和密码,即可进行访问。


16、Linux访问samba服务共享文件
方法一:使用指令smbclient -L  //192.168.0.94 访问
首先,安装samba-client 软件包
yum install samba-client -y


然后,输入指令smbclient -L  //192.168.0.94 可访问


方法二:通例Linux挂载访问samba服务器共享文件(类似windows 网络映射)
首先,安装cifs-utils安装包
yum install cifs-utils -y


然后,挂载samba服务器共享文件夹
mount -t cifs  //192.168.0.94/common /mnt -o username=zhangsan,password=123456

-----------------------------------
[引文1-转载自51CTO博客作者tommy18
Centos 7 配置Samba服务器
https://blog.51cto.com/tommy2017/2055223]

CentOS开启SELinux导致samba无法访问的解决办法

安装CentOS7下开启SELinux时,会导致samba、ftp等应用程序无法访问相应目录,解决办法如下
开启Samba用户HOME目录权限
/usr/sbin/setsebool -P samba_enable_home_dirs=1
开启单个共享目录(path)权限
chcon -t samba_share_t path
开启所有共享目录
只读权限
/usr/sbin/setsebool -P samba_export_all_ro on
读写权限
/usr/sbin/setsebool -P samba_export_all_rw on
查看某个目录(path)是否开启了权限
ls -ldZ path
-----------------------------------
[引文2-转载自51CTO博客作者jxwpx
SECURITY-CENTOS7.5下SELINUX阻挡SAMBA访问的解决思路方法
https://blog.51cto.com/jxwpx/2358061]

如果445端口被封,则在windows客户端进行端口代理也就不会起作用。

端口拦截、端口代理
通过windows防火墙架构理清楚原因后,我们就想是否有别的办法在winsock.dll层面将流量报文拦截下来,然后转移到端口代理中去呢。
果不其然,google上找到了我们需要的驱动WinDivert:

windows 数据包转移 (WinDivert) 是一种用户模式的数据包捕获和转移包,WinDivert 允许用户模式应用程序捕获、修改、丢弃从 windows 网络堆栈发送的网络数据包。

基于这个工具,在github找到衍生开源项目divertTCPconn。
这个项目利用WinDivert驱动可以把指定目的端口的流量转换成访问本地其它端口,这不就正是我们想要的东西,那问题基本解决了,跃跃欲试,重新整理架构图:

把WinDivert和DivertTCPconn结合编译、执行,将访问远端445端口的流量转换成访问本地8445,然后再写一条端口代理从本地8445代理到远端8445,对应命令如下:

端口拦截

divertTCPconn.exe 445 8445
1
端口代理
假设远端smb服务器IP为192.168.1.81

netsh interface portproxy add v4tov4 listenport=8445 connectaddress=192.168.1.81 connectport=8445
1
经过客户端smb连接

net use \\192.168.1.81\C$
1
测试发现,流量并没有走8445端口,后面对divertTCPconn项目源码进行分析,发现在使用过滤器时,针对的是inbound&dst-port=445进行匹配。但对于我们这种情景来说,本地访问远端445是属于outbound&dst-port=445,赶紧把divertTCPconn代码修改:

经再次测试,在服务器之间走的是8445端口,而客户端和服务器内部也能够将445和8445进行转换,总结本案例是通过用户态端口拦截加端口重定向技术,最终达到我们想要的效果,并且在整个过程中,不用修改注册表,不用重启系统。
————————————————
版权声明:本文为CSDN博主「云云生息」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rocson001/article/details/86717722

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值