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