这里是普通文章模块栏目内容页
centos stream 9安装配置samba服务

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

安装samba服务

查看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系统上轻松设置文件共享。


栏目索引
相关内容