需求描述
公司的打印机使用扫描功能的时候,需要发送大量文件。然鹅公司的电脑都是加入了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博客