字数 3901,阅读大约需 20 分钟
手把手玩转Rocky Linux 9:Samba服务安装配置全攻略
日常运维中最头疼的事儿之一,莫过于Windows和Linux之间“传文件”——用U盘来回拷太麻烦,FTP又没法直接修改文件,而Samba就是解决跨系统文件共享的“万能钥匙”!今天咱们就扎根Rocky Linux 9,从0到1搭起Samba服务,每个配置参数都拆解得明明白白,新手也能轻松上手~
一、先唠明白:Samba到底是个啥?
简单说,Samba就是基于SMB/CIFS协议的跨平台文件共享工具,能让Linux服务器变成一台“文件共享服务器”——Windows电脑可以直接访问Linux的文件夹,Linux主机之间也能无缝共享,甚至还能直接修改服务器上的文件,比FTP灵活多了。
就像咱们平时在Windows里访问“网上邻居”一样,Samba就是让Linux也能加入这个“邻居圈”的工具,核心就是解决不同系统之间的文件互通问题。
二、准备工作:先把“路障”清掉
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的服务名是smb和nmb(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服务器的基础配置,决定服务器的网络身份、访问控制、日志、安全验证、服务功能等核心属性,关键参数及说明如下:
| |
|---|
| 可指定自定义配置文件覆盖默认配置,通过宏%m(客户端主机名)实现多客户端差异化配置,文件不存在则该参数无效 |
| |
| 服务器注释,可自定义字符串,%v宏显示Samba版本号 |
| 服务器NetBIOS名称,默认取DNS名称第一部分,不可与workgroup同名 |
| |
| 控制客户端访问权限,allow为允许访问的IP/网段/主机/域,deny则相反,支持EXCEPT排除、@域标识等语法 |
| |
| 自动断开无文件打开连接的时间(分钟),0表示不自动切断 |
| 是否让nmdb成为Windows客户端的时间服务器(yes/no) |
| log file指定日志存储路径,%m为每个客户端单独生成日志;max log size设定日志最大容量(kB),0不限制 |
| 客户端验证方式,共4种: 1. share:免账号密码,安全性低 2. user:Samba本地验证账号密码(最常用) 3. server:代理其他NT/Samba服务器验证 4. domain:由主域控制器(PDC)验证 |
| Samba用户后台管理方式,共3种: 1. smbpasswd:基于smbpasswd文件存储密码 2. tdbsam:基于passdb.tdb数据库,需先建系统用户,支持pdbedit管理 3. ldapsam:基于LDAP服务,需配置LDAP服务器地址 |
| 是否加密认证密码,Windows客户端需设为yes,默认开启 |
| |
| 用户名映射文件,可将系统用户(如root)映射为Windows习惯名称(如admin) |
| |
| 优化服务器与客户端的TCP/IP传输速度,如设置缓冲区大小 |
| domain master/local master/preferred master | 均与网域主浏览器选举相关: 1. domain master:是否成为跨子网主浏览器 2. local master:是否参与本地主浏览器选举 3. preferred master:开机是否强制选举,建议与domain master同时设为yes,同子网仅一台服务器开启 |
| 主浏览器选举优先级(0-255),值越大优先级越高,0则失去选举资格;Windows NT/95/98/2000对应不同默认值 |
| 是否作为本地域控制器,PDC/备份DC需设为yes |
| Windows客户端登陆的脚本文件,可使用%u宏为每个用户单独配置,或指定统一脚本(如start.bat) |
| wins support/server/proxy | 配置WINS服务: 1. wins support:是否自身提供WINS服务 2. wins server:指定使用其他WINS服务器的IP 3. wins proxy:是否开启WINS代理 |
| |
| load printers/printcap name/printing | 打印机共享配置: 1. load printers:启动Samba时是否共享打印机 2. printcap name:打印机配置文件名称(如cups) 3. printing:指定打印机类型(如bsd、cups、sysv等) |
二、共享参数 [共享名]
用于定义单个共享资源的属性,可自定义多个共享段(不同共享名),实现对不同目录/资源的精细化权限管控,关键参数及说明如下:
| |
|---|
| |
| 共享目录的实际路径,支持%u(用户名)、%m(客户端NetBIOS名)宏实现动态路径,路径需提前存在 |
| |
| |
| |
| 共享的管理员,拥有完全控制权限,security=share时此参数无效,多用户用逗号分隔 |
| valid users/invalid users | valid为允许访问的用户/组(组以@开头);invalid为禁止访问的用户/组,多值用逗号分隔 |
| 允许在共享目录写入的用户/组,优先级高于writable,多值用逗号分隔 |
| 两者意义相同,是否允许guest账户访问该共享(yes/no) |
三、几个特殊共享配置
Samba内置了几个常用的特殊共享段,用于实现用户主目录、打印机、域登陆、用户配置文件等基础功能,均为预定义共享名,核心配置如下:
- • 核心作用:为每个Samba用户提供专属的主目录共享
- • 关键配置:browseable=no(网络不可见)、writable=yes(可写)、valid users=%S(仅对应用户可访问)
- • 关键配置:browseable=no、guest ok=no(禁止guest访问)、writable=no、printable=yes(允许打印),路径为/var/spool/samba
- • 核心作用:为Windows客户端提供域登陆脚本服务
- • 关键配置:guest ok=yes(允许guest)、writable=no,路径为/var/lib/samba/netlogon
- • 关键配置:browseable=no、guest ok=yes,路径为/var/lib/samba/profiles
本文图片由AI生成