linux安装Samba服务器及配置(windows及ios均可连接互传文件),解决多设备共享文件的问题
前言
在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中经常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。
samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。
Linux操作系统版本:centos7
Samba服务器介绍
Samba是在Linux系统上实现SMB(Session MessageBlock)协议的一个免费软件,以实现文件共享和打印机服务共享。
Samba服务器组件
samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB客户定位服务器,处理所有基于UDP的协议。
Samba服务器的安装
查看是否已经存在
rpm -qa | grep samba
[root@localhost temp]# rpm -qa | grep samba
samba-common-libs-4.10.16-5.el7.x86_64
samba-common-tools-4.10.16-5.el7.x86_64
samba-4.10.16-5.el7.x86_64
samba-client-libs-4.10.16-5.el7.x86_64
samba-libs-4.10.16-5.el7.x86_64
samba-client-4.10.16-5.el7.x86_64
samba-common-4.10.16-5.el7.noarch
安装Samba
yum install -y samba
检查是否安装成功
rpm -qa | grep samba
[root@192 ~]# rpm -qa | grep samba
samba-common-libs-4.10.4-11.el7_8.x86_64
samba-common-tools-4.10.4-11.el7_8.x86_64
samba-common-4.10.4-11.el7_8.noarch
samba-client-libs-4.10.4-11.el7_8.x86_64
samba-libs-4.10.4-11.el7_8.x86_64
samba-4.10.4-11.el7_8.x86_64
其中:samba、samba-common、samba-client三个程序是必须的。
配置Samba
修改配置文件
samba服务器最主要的配置文件其实只有一个,就是/etc/samba/samba.conf,这个配置文件可以分为两个部分,一个部分是全局参数,一部分是共享资源相关参数。
1. 全局部分参数设置:
[global]
#与主机名相关的设置
workgroup = zkhouse <==工作组名称
netbios name = zkserver <==主机名称,跟hostname不是一个概念,在同一个组中,netbios name必须唯一
serverstring = this is a test samba server <==说明性文字,内容无关紧要
#与登录文件有关的设置
log file = /var/log/samba/log.%m <==日志文件的存储文件名,%m代表的是client端Internet主机名,就是hostname
max log size = 50 <==日志文件最大的大小为50Kb
#与密码相关的设置
security = share <==表示不需要密码,可设置的值为share、user和server
passdb backend = tdbsam
#打印机加载方式
load printer = no <==不加载打印机
-----------------------------------------------------------
2.共享资源设置方面:将旧的注释掉,加入新的
先取消[homes]、[printers]的项目,添加[temp]项目如下
[temp] <==共享资源名称
comment = Temporary file space <==简单的解释,内容无关紧要
path = /tmp <==实际的共享目录
writable = yes <==设置为可写入
browseable = yes <==可以被所有用户浏览到资源名称,
guest ok = yes <==可以让用户随意登录
先备份一下配置文件:
cp smb.conf smb.conf1
修改配置文件
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[temp]
comment = test Samba
path = /tmp
writable = yes
browseable = yes
guest ok = yes
添加Samba的登陆用户及密码
useradd jenrey # jenrey为设置的Samba登录用户名
smbpasswd -a jenrey # jenrey为上面设置的Samba登录用户名,本句含义为给谁设置登录密码
重启Samba
systemctl restart smb.service
用windows电脑连接linux的Samba
打开windows系统的“运行”
win+r快捷键
输入Samba的地址
\192.168.1.198
注意:上面的地址为你安装Samba的linux的地址,不知道的可以使用ifconfig命令查看
如果需要输入密码就输入之前声明的账号及对应密码
设置Samba开机自启
systemctl enable smb.service
cd /etc/systemd/system/multi-user.target.wants/
ll
手动启动Samba
systemctl start smb.service
Linux共享后无权限访问,Samba服务无权限访问
解决方法一:
关闭SELIUNX
getenforce ;查看当前状态
Enforcing
setenforce 0;
SELINUX几种状态表示:
enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了;
permissive:宽容模式:代表 SELinux 运行中,不过仅会有警告信息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
disabled:关闭,SELinux 并没有实际运行。
直接采用此方法便可,简单易理解;