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

  • Post author:
  • Post category:其他


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