linux上的smb共享文件夹

发布于:2024-10-13 ⋅ 阅读:(144) ⋅ 点赞:(0)

需求描述

公司的打印机使用扫描功能的时候,需要发送大量文件。然鹅公司的电脑都是加入了AzureAD的,不能在公司电脑上简单设置共享。好在公司有很多阿里云上的服务器,Linux和Windows的都有,所以就来尝试用阿里云的服务器来进行smb共享。

至于为啥不用ftp。因为smb是可以直接通过Windows资源管理器访问的,而如果是ftp的话,还需要额外安装ftp客户端,这又是一个不小的工作量。所以果断选择用SMB。

安装

用的是samba这个软件,可以直接yum安装

yum install samba

添加用户

我们需要添加一个用户,将来就是通过这个用户来访问共享文件夹。然后通过smbpasswd命令,来给他指定一个密码。

useradd -M -s /sbin/nologin smbsuser
sudo chmod -R 777 /opt/scan
sudo chown -R smbsuser /opt/scan
smbpasswd -a smbsuser
New SMB password:
Retype new SMB password:
Added user ftsuser.

修改配置文件

配置文件基本上,如下这样写就可以了

sudo vim /etc/samba/smb.conf
[shared]                         
	comment = Shared Folder       
	path = /opt/scan 
	browseable = yes
	read only = no
	writable = yes
	valid users = smbsuser

开启防火墙端口

可以用如下命令开放端口。ps,如果是阿里云的话,就需要手动去安全组里开放端口。

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload
# 需要开放 137-139 和 445

启动服务

systemctl start smb
# 开机启动
sudo systemctl enable smb

测试访问

已经可以看到文件夹,并进行访问了。但是发现没有写入的权限。

在这里插入图片描述

SElinux设置

查阅资料,发现是SElinux的锅。可以简单的将Selinux设置为宽容模式,这样发现就能写入了。

[root@node5 opt]# getenforce
Enforcing
[root@node5 opt]# setenforce 0
[root@node5 opt]# getenforce
Permissive

如果希望不关闭SElinux也能写入,需要用SElinux管理工具修改上下文

setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
# 安装SElinux的管理工具
sudo yum install policycoreutils-python setroubleshoot-server
# 将共享文件夹的上下文设置为samba_share_t
semanage fcontext -a -t samba_share_t "/opt/scan(/.*)?"
# 上下文立即生效
restorecon /opt/scan

打印机端的设置

打印机在通讯录里,添加一个如下的smb路径即可

服务器:10.26.62.217

文件夹:shared

用户名:smbsuser

密码:abc@1234

Windows下的设置

Windows下的设置就比较简单了,就是设置一个共享文件夹就可以了。如下所示,两个地方都需要设置。在里面给everyone读写权限就可以了。
在这里插入图片描述

Windows需要开放445和139端口,如果是阿里云的话,需要在ecs的安全组策略里开启,默认的系统防火墙已关闭。如下图所示。
在这里插入图片描述

参考了如下链接:『Samba』在Linux中实现高效管理共享文件夹的基本操作与实践_linux 使用samba共享文件夹-CSDN博客