![29e7845a9f48c429fe36f36835b0bd44.png](https://i-blog.csdnimg.cn/blog_migrate/b4696ab340e38ff4807320fc45d70e5b.jpeg)
在Linux上编译代码,在Windows上查看和编辑代码,是笔者比较习惯的方式。这就需要在Linux端安装samba的server,然后Windows作为client去访问Linux上的共享目录。
在server侧安装samba后,需要对"/etc/samba/smb.conf"进行修改,以添加自己需要共享给client侧的目录的路径。由于是手动修改,可能出现格式上的错误,所以改完后最好用testparm工具检查一下。
先别急着连接,因为还需要设置samba登录用户的密码(以root登录为例):
smbpasswd -a root <passwd>
按理在作为server的Linux上是不需要安装client的,但是如果有smbclient,那么可以拿来做一个自测,以确保server段的配置和运行(比如对端口的监听)都是没有问题的。
如果用smbclient自测没问题,但windows端还是无法登录这个samba server,那么很可能是被server侧的firewall阻止了。在Linux上(以Cenots-8为例)用"systemctl status firewalld"命令看一下,如果状态是"active(running)",说明防火墙确实是开启的状态。
直接粗暴地关闭防火墙当然是可以的,但对一个软件工程师来说,还是别用这种没有技术含量的手段吧。设置防火墙放行一下samba的service就可以了:
firewall-cmd --permanent --add-service=samba firewall-cmd --reload
然后,应该就可以弹出登录窗口了,输出用户名和密码,啊,终于看到了Linux共享出来的文件目录。以为就此大功告成,结果发行点击文件夹打不开……
也许是对这个文件夹的访问权限问题?可是已经是root登录了啊。别忘了还有SELinux,在server端用"getenforce"命令看一下,如果结果是"Enforcing",那对文件夹的访问很可能是被SELinux阻止了。
用"setenforce 0"关闭SELinux?可以,但并不是推荐的做法,更优雅的方式是单独添加samba对这个共享目录(假设路径为"/share")的访问允许:
semanage fcontext -a -t samba_share_t "/share/(/.*)?" restorecon /share
如果提示"semanage, command not found",那么需要先安装semanage。可是怎么知道semanage在哪个软件包里啊。去网上搜索一番,想必肯定是可以得到答案的,不过其实不用那么麻烦,yum自带这项功能,就是"yum provides"命令:
![541301cc6e65a179bf3fe6f959de0e2c.png](https://i-blog.csdnimg.cn/blog_migrate/ecc5d0290993000682704fd815075f77.png)
根据找到的软件包的名称,安装之:
yum install policycoreutils-python
小结:
相比起ssh的使用,samba的联通可能遇到更多的问题,希望笔者摸过的这些坑,可以帮助你节省一些探索上的时间,早点愉快地用上samba。
参考:
PERSISTENT CHANGES: SEMANAGE FCONTEXT
How to Fix semanage command Not Found Error
原创文章,转载请注明出处。