Rocky Linux 9:Samba服务安装配置全攻略

简介: 本文手把手教你用Rocky Linux 9从零搭建Samba文件共享服务:详解防火墙/SELinux配置、smb.conf核心参数(global与共享段)、目录权限与SELinux上下文设置、Samba用户创建及Win/Linux双端访问,新手也能轻松实现跨系统无缝传文件!

日常运维中最头疼的事儿之一,莫过于Windows和Linux之间“传文件”——用U盘来回拷太麻烦,FTP又没法直接修改文件,而Samba就是解决跨系统文件共享的“万能钥匙”!今天咱们就扎根Rocky Linux 9,从0到1搭起Samba服务,每个配置参数都拆解得明明白白,新手也能轻松上手~

一、先唠明白:Samba到底是个啥?

简单说,Samba就是基于SMB/CIFS协议的跨平台文件共享工具,能让Linux服务器变成一台“文件共享服务器”——Windows电脑可以直接访问Linux的文件夹,Linux主机之间也能无缝共享,甚至还能直接修改服务器上的文件,比FTP灵活多了。

就像咱们平时在Windows里访问“网上邻居”一样,Samba就是让Linux也能加入这个“邻居圈”的工具,核心就是解决不同系统之间的文件互通问题。
samba.png

二、准备工作:先把“路障”清掉

Rocky Linux 9默认开着防火墙和SELinux,这俩玩意儿在测试阶段会挡住Samba的访问,咱们先临时关掉(生产环境可以精细化配置,后面会提):

1. 关闭防火墙(临时)

# 停止防火墙
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld

小说明:如果不想关防火墙,也可以放行Samba端口/服务(推荐生产环境用这个):

# 放行Samba服务,永久生效
firewall-cmd --add-service=samba --permanent
# 重新加载防火墙规则
firewall-cmd --reload

2. 关闭SELinux(临时)

# 临时关闭,重启后失效
setenforce 0
# 永久关闭(改配置文件),需要重启生效
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

为啥要关? SELinux会限制Samba访问目录,新手先关了测试,后面配置完可以再开,给共享目录加SELinux上下文就行。

三、安装Samba服务:一步到位

Rocky Linux 9的yum源里直接有Samba包,不用折腾第三方源,敲一行命令就能装:

# 安装核心包+客户端工具(客户端工具用来测试)
dnf -y install samba samba-client samba-common

包说明

  • samba:Samba核心服务包,提供共享功能
  • samba-client:客户端工具,用来测试Samba服务是否正常
  • samba-common:通用配置文件和工具,必备

安装完可以检查下版本,确认装好了:

smbd --version

四、核心操作:配置smb.conf(重点中的重点)

Samba的所有配置都在/etc/samba/smb.conf里,咱们先备份原配置文件,再从头改,避免改错了回不去:

1. 备份默认配置

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

2. 编辑主配置文件

用vim打开/etc/samba/smb.conf(新手也可以用nano):

vim /etc/samba/smb.conf

配置文件主要分两部分:[global](全局配置,对所有共享生效)和“自定义共享段”(比如[办公共享]),咱们逐行改,每个参数都讲透~

(1)全局配置[global]:给服务器定“基础规则”

先把默认的冗余内容删掉,保留核心配置,每一行都加注释说明:

[global]
    # 工作组名称:Windows默认是WORKGROUP,必须和Windows保持一致,不然找不到服务器
    workgroup = WORKGROUP
    # 监听的网卡/IP:指定Samba只在哪个网卡提供服务,比如只监听内网IP 192.168.1.100
    # 要是想监听所有网卡,直接写0.0.0.0或者注释掉这行
    interfaces = 127.0.0.1 192.168.1.100/24
    # 允许访问的客户端IP:只让192.168.1.0/24网段的电脑访问,更安全
    # 格式:IP段、单个IP都可以,多个用空格分隔
    hosts allow = 192.168.1.0/24
    # 日志文件路径:%m是“宏”,会自动替换成客户端主机名,每个客户端单独记日志,方便排查问题
    log file = /var/log/samba/log.%m
    # 日志最大大小:单位KB,0表示不限制,设成1024就是1MB,满了会自动轮转
    max log size = 1024
    # 安全验证级别:默认user(本地用户验证),新手就用这个,最常用
    # share是匿名验证,安全性低,生产环境别用
    security = user
    # 密码数据库:默认tdbsam(本地数据库),不用改
    passdb backend = tdbsam
    # 启动Samba时是否共享打印机:咱们只做文件共享,设为no
    load printers = no
    # 服务器注释:随便写,比如“Rocky Linux 9 Samba共享服务器”,方便识别
    server string = Rocky Linux 9 Samba Server

(2)自定义共享段:创建“办公共享文件夹”

全局配置改完,往下加一个自定义共享,比如创建一个供团队使用的[OfficeShare]共享文件夹,参数一个个解释:

# 自定义共享名:括号里的名字是客户端看到的共享名,随便起
[OfficeShare]
    # 共享描述:备注这个文件夹是干啥的,方便识别
    comment = 办公室共享文件夹(仅研发部访问)
    # 共享目录的实际路径:必须先创建这个目录,不然会报错
    path = /data/office_share
    # 是否允许匿名访问:no表示必须用账号密码,yes是匿名
    public = no
    # 是否在网络上可见:yes表示Windows“网上邻居”能看到这个共享
    browseable = yes
    # 是否可写:yes表示允许写入,但最终能不能写还要看文件系统权限
    writable = yes
    # 允许访问的用户/组:@研发部表示研发部组,多个用户用逗号分隔(比如user1,@dev)
    # 这里先写一个测试用户,后面创建
    valid users = testuser,@dev
    # 上传文件的默认权限:文件默认664,目录默认775,符合Linux权限规范
    create mask = 664
    directory mask = 775

3. 配置检查:避免语法错误

改完配置千万别直接重启服务,先用testparm检查语法,新手必做!

testparm

如果最后显示Loaded services file OK.,说明配置没问题;如果报错,根据提示改就行(比如路径写错、参数拼错)。

五、创建共享目录+配置权限:新手最容易踩坑的地方

Samba的权限是“双层管控”:配置文件的权限 + Linux文件系统权限,俩都要配对才能正常读写!

1. 创建共享目录

按配置文件里的path创建目录:

mkdir -p /data/office_share

2. 配置文件系统权限

给目录设置合适的权限,比如让testuser用户拥有读写权限:

# 先创建系统用户(Samba用户必须基于系统用户)
useradd -s /sbin/nologin testuser
# 修改目录所属者为testuser
chown testuser:testuser /data/office_share
# 设置目录权限:所有者读写执行,同组读写执行,其他只读
chmod 775 /data/office_share

为啥要这么配? 就算Samba配置里writable=yes,如果Linux文件系统权限是只读,照样写不了,这是新手最容易踩的坑!

3. SELinux上下文(如果开了SELinux)

如果前面没关SELinux,给共享目录加个Samba上下文,不然访问不了:

chcon -t samba_share_t /data/office_share -R
# 永久生效(重启不丢)
semanage fcontext -a -t samba_share_t "/data/office_share(/.*Z)?"
restorecon -R /data/office_share

六、创建Samba用户:把系统用户“转成”Samba用户

Samba不直接用Linux系统密码,需要把系统用户(比如刚才的testuser)转换成Samba用户,并设置独立的密码:

1. 创建Samba用户

# -a表示添加,后面跟系统用户名
pdbedit -a testuser

执行后会提示输入Samba密码(两次),这个密码是访问共享时用的,和系统密码可以不一样。

2. 常用pdbedit命令(备查)

# 列出所有Samba用户
pdbedit -L
# 删除某个Samba用户(比如删testuser)
pdbedit -x testuser

七、启动Samba服务:让配置生效

1. 启动服务+设置开机自启

Rocky Linux 9里Samba的服务名是smbnmb(nmb负责NetBIOS解析,Windows访问需要):

# 启动服务
systemctl start smb nmb
# 设置开机自启
systemctl enable smb nmb
# 查看服务状态,确认running
systemctl status smb

2. 本地测试:先确认服务器端能访问

samba-client工具测试共享是否能访问:

# -U指定用户名,-L列出服务器的共享列表,//127.0.0.1是本机IP
smbclient -U testuser -L //127.0.0.1

输入刚才设置的Samba密码后,如果能看到[OfficeShare]这个共享,说明服务配置成功了!

八、客户端访问:Windows和Linux都能连

1. Linux客户端访问

(1)临时挂载共享目录

# 创建本地挂载点
mkdir /mnt/samba_office
# 挂载共享目录,-o指定用户名和密码
mount -t cifs //192.168.1.100/OfficeShare /mnt/samba_office -o username=testuser,password=你的Samba密码

挂载后就能像访问本地目录一样,在/mnt/samba_office里读写文件了。

(2)永久挂载(重启不丢)

编辑/etc/fstab文件,添加一行:

//192.168.1.100/OfficeShare /mnt/samba_office cifs defaults,username=testuser,password=你的Samba密码 0 0

然后执行mount -a生效,这样每次开机都会自动挂载。

2. Windows客户端访问

Windows访问更简单,不用装任何工具:

  1. 打开“此电脑”,在地址栏输入\\192.168.1.100\OfficeShare(服务器IP+共享名)
  2. 弹出登录框,输入Samba用户名(testuser)和密码
  3. 回车后就能看到共享文件夹,直接拖文件、改内容都可以!

小技巧:如果想把共享文件夹做成“网络驱动器”,右键点击共享文件夹,选择“映射网络驱动器”,选一个盘符(比如Z:),下次直接在“此电脑”里点Z盘就能访问。

跟着这个教程走,你就能在Rocky Linux 9上搭起稳定的Samba共享服务,不管是Windows还是Linux客户端,都能轻松访问,再也不用为跨系统传文件发愁啦!

附:Samba核心配置参数明细

一、全局参数 [global]

作用于整个Samba服务器的基础配置,决定服务器的网络身份、访问控制、日志、安全验证、服务功能等核心属性,关键参数及说明如下:
| 参数 | 核心说明 |
| ---- | ---- |
| config file | 可指定自定义配置文件覆盖默认配置,通过宏%m(客户端主机名)实现多客户端差异化配置,文件不存在则该参数无效 |
| workgroup | 设定Samba服务器加入的工作组/域 |
| server string | 服务器注释,可自定义字符串,%v宏显示Samba版本号 |
| netbios name | 服务器NetBIOS名称,默认取DNS名称第一部分,不可与workgroup同名 |
| interfaces | 指定服务器监听的网卡/IP地址,多值以空格分隔 |
| hosts allow/deny | 控制客户端访问权限,allow为允许访问的IP/网段/主机/域,deny则相反,支持EXCEPT排除、@域标识等语法 |
| max connections | 最大连接数,0表示不限制 |
| deadtime | 自动断开无文件打开连接的时间(分钟),0表示不自动切断 |
| time server | 是否让nmdb成为Windows客户端的时间服务器(yes/no) |
| log file/max log size | log file指定日志存储路径,%m为每个客户端单独生成日志;max log size设定日志最大容量(kB),0不限制 |
| security | 客户端验证方式,共4种:
1. share:免账号密码,安全性低
2. user:Samba本地验证账号密码(最常用)
3. server:代理其他NT/Samba服务器验证
4. domain:由主域控制器(PDC)验证 |
| passdb backend | Samba用户后台管理方式,共3种:
1. smbpasswd:基于smbpasswd文件存储密码
2. tdbsam:基于passdb.tdb数据库,需先建系统用户,支持pdbedit管理
3. ldapsam:基于LDAP服务,需配置LDAP服务器地址 |
| encrypt passwords | 是否加密认证密码,Windows客户端需设为yes,默认开启 |
| smb passwd file | 定义Samba用户密码文件路径,无文件需手工新建 |
| username map | 用户名映射文件,可将系统用户(如root)映射为Windows习惯名称(如admin) |
| guest account | 指定guest访问的用户名,默认nobody |
| socket options | 优化服务器与客户端的TCP/IP传输速度,如设置缓冲区大小 |
| domain master/local master/preferred master | 均与网域主浏览器选举相关:
1. domain master:是否成为跨子网主浏览器
2. local master:是否参与本地主浏览器选举
3. preferred master:开机是否强制选举,建议与domain master同时设为yes,同子网仅一台服务器开启 |
| os level | 主浏览器选举优先级(0-255),值越大优先级越高,0则失去选举资格;Windows NT/95/98/2000对应不同默认值 |
| domain logons | 是否作为本地域控制器,PDC/备份DC需设为yes |
| logon . | Windows客户端登陆的脚本文件,可使用%u宏为每个用户单独配置,或指定统一脚本(如start.bat) |
| wins support/server/proxy | 配置WINS服务:
1. wins support:是否自身提供WINS服务
2. wins server:指定使用其他WINS服务器的IP
3. wins proxy:是否开启WINS代理 |
| dns proxy | 是否开启DNS代理服务(yes/no) |
| load printers/printcap name/printing | 打印机共享配置:
1. load printers:启动Samba时是否共享打印机
2. printcap name:打印机配置文件名称(如cups)
3. printing:指定打印机类型(如bsd、cups、sysv等) |

二、共享参数 [共享名]

用于定义单个共享资源的属性,可自定义多个共享段(不同共享名),实现对不同目录/资源的精细化权限管控,关键参数及说明如下:
| 参数 | 核心说明 |
| ---- | ---- |
| comment | 共享资源的描述信息,可自定义任意字符串 |
| path | 共享目录的实际路径,支持%u(用户名)、%m(客户端NetBIOS名)宏实现动态路径,路径需提前存在 |
| browseable | 该共享是否在网络上可见(yes/no) |
| writable | 该共享目录是否默认可写(yes/no) |
| available | 该共享资源是否可用(yes/no) |
| admin users | 共享的管理员,拥有完全控制权限,security=share时此参数无效,多用户用逗号分隔 |
| valid users/invalid users | valid为允许访问的用户/组(组以@开头);invalid为禁止访问的用户/组,多值用逗号分隔 |
| write list | 允许在共享目录写入的用户/组,优先级高于writable,多值用逗号分隔 |
| public/guest ok | 两者意义相同,是否允许guest账户访问该共享(yes/no) |

三、几个特殊共享配置

Samba内置了几个常用的特殊共享段,用于实现用户主目录、打印机、域登陆、用户配置文件等基础功能,均为预定义共享名,核心配置如下:

  1. [homes]:用户主目录共享
  • 核心作用:为每个Samba用户提供专属的主目录共享
  • 关键配置:browseable=no(网络不可见)、writable=yes(可写)、valid users=%S(仅对应用户可访问)
  1. [printers]:打印机共享
  • 核心作用:共享服务器上的打印机资源
  • 关键配置:browseable=no、guest ok=no(禁止guest访问)、writable=no、printable=yes(允许打印),路径为/var/spool/samba
  1. [netlogon]:网络登陆服务
  • 核心作用:为Windows客户端提供域登陆脚本服务
  • 关键配置:guest ok=yes(允许guest)、writable=no,路径为/var/lib/samba/netlogon
  1. [Profiles]:用户配置文件共享
  • 核心作用:存储Windows用户的配置文件
  • 关键配置:browseable=no、guest ok=yes,路径为/var/lib/samba/profiles
相关文章
|
2月前
|
Java 编译器 C++
google protobuf3中文手册
本文介绍 Protocol Buffers proto3 语言的使用规范,涵盖 `.proto` 文件语法、消息与字段定义、枚举、映射、服务接口及代码生成等内容,指导开发者正确设计和更新数据结构,确保跨语言兼容性与二进制安全。
|
2月前
|
人工智能 JSON Linux
玩转Ollama函数调用:让AI从“光说不练”到“动手解决问题”
你是否厌倦AI瞎编答案?Ollama函数调用功能为AI装上“小手”,让它能调用天气查询、计算器等自定义工具,先做事、再回答,告别胡说八道!本文手把手教你从零实现单次调用、并行调用、多轮智能体循环及流式响应,全程Python实战,小白也能轻松上手。
|
人工智能 Linux 虚拟化
Linux Centos虚拟机扩容
Linux Centos虚拟机扩容
|
2月前
|
网络协议 Linux 网络安全
Rocky Linux 下 DHCP 服务配置详细文档
DHCP(动态主机配置协议)是局域网中用于自动分配IP地址、网关、DNS等网络参数的核心协议,工作于UDP 67/68端口。通过“发现-提供-请求-确认”四步租约机制,实现客户端即插即用,提升IP利用率。支持固定IP绑定、跨子网中继及多网段超级作用域配置,广泛应用于各类网络环境。
|
安全 网络安全 数据安全/隐私保护
FileZilla搭建FTP服务器图解教程
在日常办公当中,经常会需要一个共享文件夹来存放一些大家共享的资料,为了保证文件数据的安全,最佳的方式是公司内部服务器搭建FTP服务器,然后分配多个用户给相应的人员。今天给大家分享FileZilla搭建FTP服务器图解教程,希望对大家有所帮助!
FileZilla搭建FTP服务器图解教程
|
8月前
|
编解码 网络协议 网络安全
OpenWrt x86 虚拟机VMware ESXi安装
OpenWrt x86 虚拟机VMware ESXi安装
|
8月前
|
Linux 虚拟化 iOS开发
VMware Workstation 17.6.4 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
VMware Workstation 17.6.4 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
2172 0
VMware Workstation 17.6.4 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
|
9月前
|
Linux
Linux命令拓展:为cp和mv添加进度显示
好了,就这样,让你的Linux复制体验充满乐趣吧!记住,每一个冷冰冰的命令背后,都有方法让它变得热情起来。
978 8
|
Ubuntu 安全 网络协议
Ubuntu设置smb功能
通过以上步骤,您已经在Ubuntu系统上成功设置了SMB共享服务,实现了与不同操作系统间的文件共享。记住,根据实际需求调整配置文件,特别是在安全性方面,比如限制访问权限、使用加密传输等,以确保共享环境既便利又安全。
1044 1
|
网络协议 开发工具 git
使用 cloudflare 解决docker镜像问题
无聊的人才搞这么复杂,我推荐使用更简单有效的方法:https://developer.aliyun.com/article/1575426

热门文章

最新文章