基于samba的远程目录共享服务搭建简易指南

一、为什么我需要samba

笔者最近在玩S3C2440,这块芯片呢,需要使用linux环境下的arm-linux-gcc进行程序编译。然后呢,笔者的主力笔记本跑的是windows,便携本渣渣的性能又不允许跑虚拟机,所以笔者额外搭建了一个实体linux编译服务器。于是每次笔者的开发流程是这样的:使用VSCode编辑工程代码-》打开MobaXtern使用SSH登陆编译服务器-》使用sftp上传工程文件到linux编译目录-》运行make编译它-》把编译好的文件下载回本地电脑-》使用oflash烧录到芯片然后测试。一旦程序哪怕有一点小问题,笔者需要再重复一次以上过程,可想而知有多心累。

好了,有了samba,这一切都不是事,通过samba的远程目录共享服务(当然,samba的能耐不止如此,这个严格来说年纪比笔者还大的老古董会的当然不少,想了解更多可以访问:https://www.samba.org/),笔者只需要一个VSCode就可以完成整个开发流程,具体就是:使用VSCode编辑编译服务器下共享目录中的工程-》打开VSCode的终端SSH到编译服务器(需要预先在windows中装好openssh)并且把工程make一下-》使用VSCode的终端调用oflash烧录共享目录中生成的hex文件到芯片并调试。是的,再也不需要打开一堆软件窗口和文件窗口了,唯一需要打开的只是VSCode(我大VSCode天下第一)。

二、所以我要怎么用samba搭建远程目录共享服务

很可惜啊,为了搭建个远程目录共享服务笔者查阅了一堆资料,然而查到的资料要不就是远古时期写下的老古董,经过历次linux指令更新早已走不通;要不就是复制粘贴之流,估计作者本身都没验证过可行性;有些则是确实有用,不过却写的残缺不全,只提到了部分流程,比如只说了服务端如何搭建,却不提windows端的配置流程。于是笔者折腾了一晚,总结了一个比较完整的适用于Centos8.0和windows10的流程。下面就开始吧(是的,前面都是我无聊写着凑字数的废话,下面才是正文,哈哈)

三、比较正经的samba目录共享服务端搭建流程

1、在linux上安装samba

这个就很简单了,一般Centos用户只需要如下一个指令:

sudo yum -y install samba #对于ubuntu的簇拥们,你们应该需要sudo apt-get install samba

2、编辑 /etc/samba/目录下的smb.conf

用什么编辑器就无所谓了,比如笔者用的nano,所以指令是这样:

sudo nano /etc/samba/smb.conf #如果你用vim, 那么就是sudo vim /etc/samba/smb.conf

打开后呢,在文件的结尾添加以下内容:

[share_name]                     #随便起一个你喜欢的共享名字
    path = /home/share_dirct     #填写任何你希望分享的目录,之后需要新建这个目录专门用来分享
    pablic = yes
    browseable = yes
    writeable = yes
    create mask = 644            #往共享目录创建文件时的默认文件权限
    directory mask = 755         #往共享目录创建目录时的默认目录权限
    valid users = username       #用来登陆共享目录的用户名,可以填多个,需要之后新建一个对应的用户
    write list = username        #对共享目录拥有写权限的用户,可以填多个

编辑保存后,可以用以下指令检查一下配置文件,确保自己编辑没有出错:

testparm

3、创建共享目录与登陆共享目录用的用户

其实在访问目录时,你是以某个linux用户的身份在访问,所以需要创建访问共享目录用的用户,指令如下:

mkdir /home/share_dirct #创建之前在smb.conf里的path后写入的目录作为分享目录,目录如果已经存在则忽略这一步
chmod 777 /home/share_dirct #修改目录权限,这样我们就可以远程对共享目录进行读写了
sudo adduser username #创建之前在smb.conf里的valid users里指明的远程访问用户,用户已存在则忽略这一步
sudo smbpasswd -a username #为远程访问用户添加远程访问密码,注意,和linux用户的登陆密码是两个概念

4、关闭linux的防火墙

其实对于防火墙比较了解的话,完全可以不关防火墙,只开放samba需要的端口即可,可惜笔者对防火墙并不熟悉,而且应该也没人会攻击我的编译服务器吧,所以我选择简单的关掉它,指令如下:

systemctl stop firewalled #停止防火墙 此指令适用于Centos7和Centos8, 不同linux发行版指令可能不同,需要自己查
systemctl disable firewalld #你这个防火墙下次开机也不许启动

上面使用的systemctl指令是个很有用的指令,用法可以参考这篇博客:https://www.cnblogs.com/moxiaoan/p/5683743.html

5、关闭SELinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

https://baike.baidu.com/item/SELinux

嗯,看起来很厉害的样子,不过这东西会导致我们无法远程访问samba的共享目录,所以笔者选择关了它。我们需要编辑 /etc/sysconfig 目录下的selinux文件,找到其中的SELINUX项,将=后面改为disable,指令如下:

sudo nano /etc/sysconfig/selinux #使用nano编辑器打开文件

修改文件内容就很简单了,这里就不详细说了,反正改完记得保存就是。

6、重启linux,启用samba服务

重启一下linux,然后键入以下指令,服务端就配置OK了:

systemctl restart smb #启用samba服务
systemctl enable smb #加入启动项,省的每次开机都要重新启动一次

四、适用于windows10的用户端配置流程

很多教程只说服务端怎么搞定好不好!用户端怎么做只字不提,用户端不会配还不是不能用,而且windows10最坑的地方是取消了对smb1.0协议的默认支持,导致笔者当时配置时也一头雾水,明明按照教程做了,别人的windows7访问的好好的,笔者的windows10就各种连接不上!!!气死偶嘞!!!各种查资料总算搞明白了。

1、为windows10添加smb文件共享支持

打开windows10的控制面板->程序和功能->启用或关闭windows功能,将SMB1.0/CIFS File Sharing Support勾选上,然后确定等它安装好就行。

把smb1.0支持添加上

 

2、映射共享目录到磁盘目录

打开此电脑,在侧边栏的网络上右键,选择弹出菜单中的 映射网络驱动器 项

就像这样

 

在弹出的窗口中设置分配的盘符,在目录输入框中填入如下格式:\\你的linux服务器的ip地址\共享名字,这里的共享名字是前面配置smb.conf时在[share_name]中填写的共享名字。然后之下两个勾选框需要勾上,最后点确定,如下图:

就像这样,我是不是暴露了什么,幸好这是局域网地址

 

然后在弹出的窗口中先点击 更多选项 选择其下的 使用其他账户 ,然后输入你在smb.conf文件中 valid users 一项中填入的用户名,密码填入你使用 smbpasswd 指令设置的对应用户密码,最后点击确定即可,如下图:

是的,就像这样,这张我懒得打箭头了

 

最后在 此电脑 中的网络位置处就可以看到映射的共享目录了,如下图:

我在咖啡厅,所以是断开状态。。。

 

五、一些废话

我在前面说的够多了,这里什么都没有,就这样,写完收工。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值