SMB说明
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
Samba服务的主要作用就是Linux系统在局域网内实现文件共享,可以共享给Linux系统也可以给共享给window系统
samba服务的相关软件包
samba-common :提供服务端和客户端程序的公共组件的一种工具
samba-client :samba的客户端
samba :主要的程序文件
Samba服务的主要进程
smbd进程:控制发布共享目录与权限、负责文件传输TCP 139 445;
nmbd进程:用于名称解析netbios UDP 137 138;基于netbios协议获得计算机名称-->解析为相应IP地址,实现信息通讯。
NETBIOS是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API。
操作环境:centos stream 9 最小化安装
操作账号:root
更新系统,查看版本
[root@localhost ~]# yum update -y [root@localhost ~]# cat /etc/redhat-release CentOS Stream release 9
查看yum源
yum list |grep samb
查看是否已安装
如果已安装需要先卸载干净
rpm -qa |grep samba
安装samba
yum -y install samba
查看安装
[root@localhost ~]# rpm -qa|grep samba samba-common-4.18.6-100.el9.noarch samba-common-libs-4.18.6-100.el9.x86_64 samba-client-libs-4.18.6-100.el9.x86_64 samba-libs-4.18.6-100.el9.x86_64 samba-dcerpc-4.18.6-100.el9.x86_64 samba-ldb-ldap-modules-4.18.6-100.el9.x86_64 samba-common-tools-4.18.6-100.el9.x86_64 samba-4.18.6-100.el9.x86_64
启动samba服务
systemctl start smb.service systemctl start nmb.service
开机自启动
systemctl enable smb systemctl enable nmb
查看samba服务状态
systemctl status smb.service systemctl status nmb.service
修改防火墙设置
//设置防火墙例外
firewall-cmd --permanent --add-service=samba
//重新加载防火墙
firewall-cmd --reload
配置文件详解
vim /etc/samba/smb.conf [global] //全局选项 workgroup = SAMBA //定义samba服务器所在的工作组 security = user //认证模式:share匿名|user用户密码|server外部服务器用户密码 passdb backend = tdbsam //密码格式 printing = cups //定义打印机的系统类型 load printers = yes //加载打印机 cups options = raw //打印机选项 [homes] comment = Home Directories //描述 valid users = %S, %D%w%S //有效用户 browseable = No //隐藏匿名共享 read only = No //可读可写 inherit acls = Yes //目录属性继承 [printers] //共享名称 comment = All Printers //描述 path = /var/tmp //本地共享目录 printable = Yes //打印选项 create mask = 0600 //创建文件的权限 browseable = No //隐藏 public = Yes //是否允许guest账号访问 writable = No //不可写
创建共享文件夹
首先,创建一个用于共享的文件夹。可以选择任何地方作为共享文件夹,这里我们以/home/share作为示例:
mkdir /home/share
再创建一个用于Samba服务器的配置文件。使用以下命令创建smb.conf文件,并将share部分内容粘贴到文件中,global部分参考配置:
vi /etc/samba/smb.conf
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = centos9 security = user map to guest = Bad User dns proxy = no # 共享文件夹配置 [share] comment = Share Folder path = /home/share browsable = yes guest ok = yes read only = no create mask = 0777 directory mask = 0777
这个配置文件首先设置了Samba的全局选项,然后定义了一个名为"share"的共享文件夹。
部分参数说明
[共享文件名]: 如果我们想要共享一个资源就必须用左边的格式写出共享的名字,这是一个共享内容的开头。 comment ="xxxxxx”: 被共享文件的相关备注 path =共享目录路径: 定义共享目录 browseable=yes /no :是否可以看到,看不到依然可以指定具体路径并去访问 writable = yes /no : 该资源是否可写 available =yes/no :该资源是否有用 admin users= 该共享的管理者: 定义该共享目录的管理员,可以随便操作该共享目录 valid users =允许访问的人 : 定义哪些用户是合法的且可以访问 invalid users =不允许访问的人 : 定义哪些用户是非法不能访问 write list =允许写入该共享的用户 : 定义哪些用户对该共享目录拥有写权限 public =yes /no : 是否允许匿名登录guest ok =on : 是否预先匿名登录 create mask = 0775# 客户端上传文件的默认权限 directory mask = 0775# 客户端创建目录的默认权限 read list = @kevin定义哪些用户对该共享目录拥有读权限
配置用户
使用以下命令创建一个新的Samba用户:
smbpasswd -a smbuser
smbuser为要创建的用户名,可以根据需要配置,并设置密码。
此处可能会出错
smbpasswd -a smbuser New SMB password: Retype new SMB password: Failed to add entry for user smbuser.
这是因为samba使用当前系统账户,却没有添加加相应的系统账号,所以会提示Failed to add entry for user的错误
增加相应的系统账号:
groupadd smbuser -g 6000
useradd smbuser -u 6000 -g 6000 -s /sbin/nologin -d /dev/null
接下来,通过使用以下命令编辑Samba用户配置文件来添加新用户的访问权限:
vi /etc/samba/smb.conf
在文件的末尾添加以下内容,并将"username"替换为之前创建的用户名:
[share] valid users = smbuser
重启samba服务,使你的配置生效:
systemctl restart smb systemctl restart nmb
访问共享文件夹
在Windows系统中,打开资源管理器,输入以下地址访问共享文件夹:
\\ip-address\share
将"ip-address"替换为你的centos系统的IP地址。
输入之前设置的Samba用户名和密码,即可访问文件夹。
linux上可以安装samba-client访问共享
dnf -y install samba-client
在/home下运行命令
cd /home smbclient //192.168.16.132/share -U smbuser Password for [SAMBA\smbuser]: Try "help" to get a list of possible commands. smb: \> ls . D 0 Tue Oct 31 11:37:44 2023 .. D 0 Tue Oct 31 10:26:53 2023 25820860 blocks of size 1024. 19363952 blocks available
下载文件到/home,以及退出smb-client常用操作
smb: \> get smb.txt //下载文件到当前目录 smb: \> pub smb.txt //上传文件到共享目录 smb: \> mkdir smb //在共享目录创建目录smb smb: \> rmdir smb //共享目录下的smb目录 smb: \> rm smb.txt //删除共享目录下smb.txt smb: \> ls //列出共享目录下文件 smb: \> exit //退出共享
把共享目录挂载到本地
mount //192.168.16.132/share /home/share
总结
通过配置Samba,我们可以在Linux系统上轻松设置文件共享。
上一篇:Linux 多种方式实现文件共享
下一篇:samba服务相关说明