ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CentOS 7 Samba文件共享实战:配置、权限与排错指南

CentOS 7 Samba文件共享实战:配置、权限与排错指南 简介面向Linux运维工程师与系统管理初学者这份基于CentOS 7的Samba服务器配置实战资料以完整操作流程演示如何在Linux环境中部署SMB共享服务。内容先从Samba与SMB协议的基本概念讲起再围绕匿名访问和身份验证两条主线展开前者给出关闭防火墙、临时禁用SELinux、创建共享目录并赋予权限等步骤后者演示添加系统用户、通过smbpasswd建立Samba账号、用pdbedit查看用户列表、配置valid users与write list读写权限等关键操作。每个环节均配有命令行示例清晰呈现从安装Samba、备份并修改smb.conf到重启服务、测试访问的完整排错路径同时点明map to guest、public等参数在匿名共享中的作用。资源为PDF格式共1个文件压缩包约392KB体积小巧特别适合在实验机或虚拟机中边看边练。目前已有1166人学习下载实用性强。读者可借此掌握Samba核心配置思路理解匿名共享与认证共享的差异并沉淀一套可直接复用的Linux文件共享部署经验。1. 为什么Centos7 Samba至今还是小企业文件共享的首选一家二十人的公司老板要求所有人都能访问同一个“公共盘”有人用Windows 10有人用macOS还有一台没人愿意碰的老服务器。你不想上NextCloud也不想买群晖因为预算就一台旧PC。这时候最务实的选择就是Centos7下配置Samba。Samba是Linux上实现SMB/CIFS协议的服务端能让Linux目录变成Windows和macOS可以直接访问的共享文件夹Centos7虽然已经不算年轻但它的yum仓库里依然有稳定可用的Samba包而且网上踩坑资料最多。本文适合系统管理员、运维入门者和需要在局域网内快速搭建文件共享的人我会从安装、配置、权限、防火墙到排查给你一套能照着敲完就用的实战流程。别担心那些让新手头大的“黑匣子”我会一个一个打开。2. Centos7下Samba安装与最小配置先让共享能用起来这一章的目标只有一个在干净的Centos7上把Samba跑起来并且让另一台机器能通过SMB协议看到共享。之所以优先选Samba而不是NFS是因为Windows不会原生支持NFS而Centos7服务器往往要给一屋子Windows电脑当文件共享。Samba实现了SMB/CIFS协议让Linux目录在网络里呈现为Windows风格共享路径。整个实战流程是准备环境 - 安装包 - 写最小配置 - 建目录 - 启动服务 - 本机验证。如果你已经装过Samba可以直接跳到第3章看用户权限。2.1 装之前镜像源与网络准备别让安装栽在第一步新装Centos7时我一般用centos7镜像下载官网里那个Minimal ISO安装时不勾选“Development Tools”保持最小系统后面缺什么装什么。装机完成后第一件事是配网。很多人跳过这一步结果yum install samba半天没反应或者Windows那边连不上以为是Samba问题其实网卡都没通。静态IP配置常见做法是编辑/etc/sysconfig/network-scripts/ifcfg-ens33。注意网卡名可能是ens33、ens32甚至eth0先执行ip addr看一下实际名称。以下是典型配置把IP地址改成你自己网段的空闲地址# /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.1.88 NETMASK255.255.255.0 GATEWAY192.168.1.1 DNS1192.168.1.1 DNS2223.5.5.5保存后重启网络服务systemctl restart network如果最小系统没有ifconfig先yum install -y net-tools再用ifconfig确认IP。BOOTPROTOstatic表示使用固定IP而不是DHCP自动分配ONBOOTyes确保系统重启后自动启用网卡GATEWAY必须和上级路由一致DNS1最好写内网DNSDNS2填公共DNS否则容易出现“centos7 无法ping通百度”这种DNS解析问题。如果你在VMware里把网络模式改成桥接并勾选“复制物理网络连接状态”否则Windows宿主机根本访问不到这个虚拟机的共享。装Samba之前还建议把yum源换成国内源。Centos7官方源在某些网络环境慢得离谱换源后安装速度差一个数量级。常见做法是用阿里云镜像的repo文件# 先备份后悔药要留好 cp -r /etc/yum.repos.d /etc/yum.repos.d.bak # 下载阿里云的Centos7 repo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecachecurl -o是把远程文件下载并覆盖到本地这个repo文件只适用Centos7Centos8千万别这么干。换源后执行yum repolist能看到仓库列表确认网络能访问镜像站。有内网镜像的可以跳过没有的话这一步能省下大量等待时间。网络这块是Samba所有步骤的前提血泪经验告诉我后面一旦出现“连接不上”先回来检查IP和网关别在Samba配置里瞎找。2.2 安装三件套并生成最小smb.conf现在网络就绪安装命令yum install -y samba samba-client cifs-utils为什么是三件套而不是只装sambasamba-client里的smbclient客户端工具是排查共享是否可用的关键没有它你会连本机是否正常提供服务都不知道cifs-utils提供Linux挂载SMB共享的mount.cifs命令后面验证会用到。安装后可以用rpm -q samba samba-client cifs-utils确认版本。配置文件路径是/etc/samba/smb.conf修改之前把原厂配置备份一下cp /etc/samba/smb.conf /etc/samba/smb.conf.bak一个能跑通的最小配置如下。假设共享目录是/data/share允许内网用户凭账号访问[global] workgroup WORKGROUP server string Samba Server on Centos7 security user map to guest Bad User hosts allow 192.168.1. 127.0.0.1 socket options TCP_NODELAY [share] comment Company Shared Files path /data/share browseable yes writable yes guest ok no valid users staff逐段看。[global]里的workgroup要和Windows客户端的“工作组”一致家庭网络默认是WORKGROUP如果公司在域里这里要改成域名否则网上邻居看不到security user是Samba默认且推荐的安全模式表示每个用户要提供账号密码map to guest Bad User表示用户名错误时映射为guest但我们的[share]节里guest ok no所以匿名依然进不来。hosts allow限制来源网段这行能减少不少扫描攻击。socket options TCP_NODELAY可以提高局域网小文件响应速度写了无害。[share]是共享名Windows客户端访问时路径里的最后一个段就是这个名字比如\\192.168.1.88\share。path指向服务器上的实际目录browseable yes让它在“网络”列表可见writable yes表示允许写入valid users staff限定只有staff组的用户能访问这个后面第3章会展开。配置文件先不动先建目录和启动。创建目录和权限groupadd staff mkdir -p /data/share chown -R root:staff /data/share chmod -R 0770 /data/sharegroupadd staff如果已经存在会报错没关系说明组已经建好了。chown root:staff把目录属主设为root、属组设为staff0770表示owner和group可读可写可执行其他用户无权限。这跟valid users配合Samba用户还得在staff组里才能写文件。如果你希望不同用户都只能访问自己的家目录这个目录结构要重新设计本章先不过度展开。启动服务并检查语法systemctl start smb nmb systemctl enable smb nmb testparmsmb服务监听445/TCP和139/TCPnmb负责NetBIOS名称解析Windows网上邻居要用enable让开机自启。testparm会解析当前smb.conf如果输出里看到“Loaded services file OK.”语法没问题如果出现“ERROR”或“WARNING”基本是路径或权限组的问题。这里有个很容易忽略的地方testparm只检查语法和参数合法性不检查目录是否真实存在所以目录必须先建好。本机先验证服务起来没有smbclient -L //127.0.0.1 -U zhangsan如果还没有zhangsan这个用户先用第3章的方法添加或者直接看端口有没有监听ss -tlnp | grep -E :(139|445)\b能看到监听就算成功了一半。此时防火墙和SELinux可能还拦着Windows连不上所以后面两章分别说这两个坎。这一章你只要理解Samba配置的核心是smb.conf服务的验证要经过“testparm - 端口监听 - smbclient - 客户端挂载”四步顺序不要跳。3. 用户映射与权限控制把Samba用户和Linux权限理清楚共享目录配好了但任何人通过Samba访问Linux文件系统最终都要落成一个Linux用户身份。这一章要解决两个问题Samba自己的账号库怎么维护以及怎么通过参数和目录权限控制谁有权读写。搞明白这两个问题你才能真正把共享权限管住而不是靠chmod -R 777应付一阵。3.1 Samba账号库与系统账号为什么改了系统密码Samba还是进不去第2章末尾直接用了smbclient -U zhangsan但这里有个坑如果你直接执行passwd zhangsanWindows那边密码不会变。原因在于Samba维护着独立的密码数据库不读/etc/shadow。Samba用户必须对应一个已存在的Linux系统用户但登录验证时用的是Samba自己的密码库。很多教程让“先创建系统用户再smbpasswd”但没说为什么要两步。系统用户提供的是UID、组信息和家目录Samba账号库提供的是SMB协议里的认证信息。两者同时存在才能完成“客户端用户 - Linux文件系统身份”的映射。标准添加命令如下useradd -s /sbin/nologin zhangsan passwd -l zhangsan smbpasswd -a zhangsan第一条useradd -s /sbin/nologin创建一个不能登录Shell的系统用户这是安全习惯Samba共享不需要它登录系统。第二条passwd -l锁定系统密码防止以后有人尝试通过系统途径登录这个账号。第三条smbpasswd -a把zhangsan添加到Samba数据库中-a是add然后会提示输入两次密码。注意这个密码是Samba访问密码可以和系统密码不同如果只有系统密码Samba客户端尝试认证时会一直失败。如果把用户加入staff组usermod -aG staff zhangsan-aG的含义是append to group如果你写成usermod -G staff zhangsan会把用户从其他非核心组里移除生产环境翻车的常见原因之一。检查组成员id zhangsan看到groups1000(zhangsan),1001(staff)就说明加对了。注意在Windows第一次连接时Samba会先去系统里找zhangsan这个Linux账号如果系统账号不存在smbpasswd根本加不了。这点和NFS的uid映射有些像要意识到底层身份最终是Linux uid。3.2 从guest ok到force user权限控制的核心参数Samba的共享权限有多个层次许多人只改smb.conf里的writable却发现没生效因为底下的Linux文件系统权限可能不同意。访问物理路径时Samba会用已经认证的Linux用户身份去打开文件所以目录权限必须允许这个系统用户访问。常见“简易samba”会采用guest ok yes和map to guest Bad User结合使用让没有账号的客户端也能以nobody用户身份读取共享。但nobody用户没有真实UID对应的家目录在Linux上往往会撞上权限限制。如果只是临时给访客只读资料可以用只要涉及写操作不建议。更可控的是force user。假设一个部门共享目录希望所有人写入的文件都归同一个账号管理配置这样写[team] path /data/team browseable yes writable yes valid users staff force user sharemanager force group staff create mask 0664 directory mask 0775这段配置的含义是所有通过team共享进入的Samba用户在Linux端实际以sharemanager身份读写文件创建新文件时属组强制为staff文件权限按create mask计算得到0644目录权限得到0775。这样员工A建的文件员工B也能编辑因为大家最终都是同一个文件属主身份。如果不加force user员工A建的文件属于UID 1001员工B可能因为不同组而写不了这正好解释为什么“明明有写权限却还是报错”。valid users和write list的差别也要清楚。valid users控制谁能进这个共享write list控制谁能写即使writable no只要用户名列在write list里也可以写。比如一个共享只读给全公司但运维组的账号需要能更新公告文件[public] path /data/public browseable yes writable no valid users allusers write list ops create mask 0644 directory mask 0755这里writable no默认只读write list ops放行运维组写权限。allusers和ops都是Linux系统组要先在系统里创建好。这个设计比“给所有人可写再靠目录权限限制”要清晰得多。Samba的权限模型不是单一开关而是“系统用户/组成员关系 smb.conf参数 文件系统权限”三层排查时按这个顺序往下查。3.3 验证共享权限从smbclient到Windows资源管理器配置完成、用户建好后先别急着点Windows资源管理器。在Centos7本机用smbclient做最直接的认证测试smbclient //127.0.0.1/team -U zhangsan输入密码后会进入smb: \交互提示符这时可以敲ls看目录mkdir testdir创建目录put /etc/hosts hosts.txt上传文件。如果put成功说明写权限链路是通的如果返回NT_STATUS_ACCESS_DENIED说明权限或SELinux有问题。用一条非交互命令做脚本化验证smbclient //127.0.0.1/team -U zhangsan%密码 -c mkdir smbtest; ls注意-U zhangsan%密码把用户名和密码用百分号连接-c后面跟一条命令多个命令用分号分隔。真实生产环境不建议把密码写进命令行历史记录会留着这里只是演示。Windows侧访问路径是\\192.168.1.88\team。如果Windows当前的登录用户名和Samba用户同名系统可能不会弹认证窗口而是尝试用本机凭据直接连这会导致连不上。解决方法是WinR运行cmd执行net use * /delete /y清空网络连接缓存再重新访问共享。如果还是提示“不允许一个用户使用多个用户名”之类可以用net use \\192.168.1.88\team /user:zhangsan 密码强制指定。这些都是Windows客户端常见的缓存坑。权限验证除了smbclient还要看Linux侧文件属主。比如在共享目录里ls -l /data/team如果看到文件属主是sharemanager而不是zhangsan就说明force user生效了如果属主是zhangsan说明Samba保留了各个用户身份。通过这个对比你能确认配置到底走的是哪条权限路径。这一章的操作都在“不碰防火墙和SELinux”的前提下验证本机回环一旦换到远程Windows就必须处理后面两章了。4. 防火墙与SELinuxSamba实战里最常见的两个拦路虎很多Samba服务本机能跑通但外部机器一访问就失败十有八九是防火墙或SELinux在作怪。Centos7的防火墙是firewalldSELinux又是独立的一层两者叠在一起排查顺序错了会浪费大量时间。这一章先按常规顺序把防火墙和SELinux放行再教你怎么用日志判断到底是谁拦截的。4.1 Firewalld放行端口不要轻易关防火墙网上搜“关掉centos7的防火墙命令”的人很多但我一般不建议在生产环境直接关闭firewalld。Samba需要的端口是TCP 139和445、UDP 137和138firewall-cmd里正好有samba服务模板一次放行这四个端口systemctl status firewalld firewall-cmd --permanent --add-servicesamba firewall-cmd --reload firewall-cmd --list-services--permanent表示写入永久规则不加的话--reload后临时规则会消失--add-servicesamba实际打开上面四个端口--reload让规则热加载不会断掉当前连接。最后--list-services确认服务列表里有dhcpv6-client和samba。如果之前还加了ssh也应该在列表里。firewall-cmd默认操作的是当前默认zone一般就是public如果服务器有多个网卡、不同zone要用--zoneinternal之类明确指定。如果安全策略要求按端口放行也可以这样firewall-cmd --permanent --add-port137-138/udp firewall-cmd --permanent --add-port139/tcp firewall-cmd --permanent --add-port445/tcp firewall-cmd --reload注意137-138/udp是一个范围写法中间不能有空格。--add-port139/tcp也可以用--add-servicesamba代替但显式端口便于写进CMDB。端口放行后用另一台机器测一下nc -vz 192.168.1.88 445nc -vz返回Connection succeeded才说明防火墙对445开放了。如果Centos7里没有nc先yum install -y nc。如果ping还通但nc不通先看Samba服务有没有监听和防火墙zone的规则。有些场景要求只允许某个网段访问Samba可以在firewalld rich rule里限制源地址firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 service namesamba accept firewall-cmd --reload这样即使服务器暴露在公网也能减少445端口被外部扫描到的概率。注意rich rule如果原先有deny规则顺序会影响最终结果必要时用--list-rich-rules查看。现实中很多“翻车”是之前有人用iptables -F清空了规则然后firewalld还持有自己的规则两者并存导致行为诡异在Centos7上我一般只用firewalld管理不要混用iptables。4.2 SELinux让Samba共享目录可读写的两个开关防火墙放行后Windows依然可能报“拒绝访问”这时候要考虑SELinux。Centos7默认SELinux状态是EnforcingSamba进程在强制模式下的访问会被约束。先看状态getenforce如果是Enforcing接着查和Samba相关的SELinux布尔值getsebool -a | grep samba输出里有samba_export_all_ro、samba_export_all_rw、samba_enable_home_dirs等默认多数是off。如果不小心执行过setenforce 0当前会话会显示Permissive但重启后会恢复这不是长久办法。让Samba能导出任意目录为读写用setsebool -P samba_export_all_rw on setsebool -P samba_export_all_ro on-P是permanent写进SELinux策略重启不丢samba_export_all_rw on等于告诉SELinux允许smbd导出任意目录并读写samba_export_all_ro on只读。生产上比较严格的做法是不要开export_all而是给共享目录打上samba_share_t类型标签。打标签命令chcon -R -t samba_share_t /data/sharechcon立即生效但不会写入文件系统上下文定义如果目录被restorecon重置就会失效。要持久化应该用semanage fcontext定义默认标签yum install -y policycoreutils-python semanage fcontext -a -t samba_share_t /data/share(/.*)? restorecon -Rv /data/sharepolicycoreutils-python提供semanage命令Centos7最小安装没有它fcontext -a添加一条文件上下文规则/data/share(/.*)?匹配目录本身和内部所有内容restorecon -R根据规则重新打标签。执行后检查ls -Zd /data/share输出末尾应该是samba_share_t。如果看到unconfined_u:object_r:default_t说明标签没打上。还有一种情况共享目录在家目录下那是另一套规则通常用samba_enable_home_dirs布尔值。记住一个原则能用semanage fcontext就别用chcon前者是“声明式”后者是“命令式”换盘或恢复文件后容易丢失。之前有个项目为了省事用chcon打标签后来数据迁移restorecon一把全还原Windows端立刻不能写排查半天才明白。4.3 用日志判断到底是谁拦截firewalld还是SELinux遇到共享目录连不上先别急着猜。Samba本身有日志在/var/log/samba/下smbd的报错会写进log.smbd另外Centos7的systemd会把smb和nmb的错误统一收进journal。想看最近10分钟错误journalctl -u smb -u nmb --since 10 minutes ago -p err-p err只输出error级别以上避免刷屏。如果日志里有NT_STATUS_ACCESS_DENIED说明认证或权限层出问题有Connection denied则可能和hosts allow、防火墙规则有关。SELinux如果拦截会记录在/var/log/audit/audit.loggrep smbd /var/log/audit/audit.log | tail -20看到avc: denied的关键字就能确认是SELinux。想要系统给修复建议用audit2whyyum install -y setroubleshoot-server ausearch -m avc -ts recent | audit2whyaudit2why会提示缺失的布尔值或标签照着做通常就能解决。不过它建议有时候是“普遍放权”比如samba_export_all_rw你要结合业务判断能不能接受。如果audit.log里没有记录可能是firewalld拦截回到4.1看防火墙。检查顺序建议是先ss -tlnp确认服务在听再nc从外部测端口再查SELinux日志最后看smb.conf的hosts allow。这个顺序能避开90%的Samba网络故障。5. 避坑排查从“无法访问”到“Permission denied”的5个真实场景这一章只写我实战里真正遇到、且很多教程一句话带过的坑。每一条按“现象、原因、解决”展开适合直接当排错手册用。如果你按照第2到第4章的顺序配置大概率遇不到这些但只要改了目录、加了用户、动过防火墙下面这套经验就能派上用场。5.1 坑1能ping通但Windows里“找不到网络路径”本机却正常现象Centos7上smbclient -L //127.0.0.1正常列出共享Windows资源管理器输入\\192.168.1.88提示“找不到网络路径”或“0x80070035”。原因不是Samba挂了而是防火墙没放行UDP 137/138或TCP 139/445或者nmb服务没起来导致NetBIOS名称解析失败。解决先确认systemctl status nmb是active再执行firewall-cmd --add-servicesamba --permanent之后再在Windows命令行执行net view \\192.168.1.88如果直接IP能通说明网络底层没问题。另外检查smb.conf的hosts allow有没有把你客户端的网段排除在外hosts allow 192.168.1. 127.0.0.1里的网段写错也会拒绝。这条血泪经验让我后来习惯把hosts allow写在文件最上面每次排错先看它。5.2 坑2共享目录能浏览但创建文件时报“Permission denied”现象Windows能打开共享目录、能读旧文件新建文件夹或保存文件就报“需要权限”但smb.conf里明明写了writable yes。原因Samba在Linux端是以认证用户的uid去操作系统文件的所以问题多半出在目录权属上。比如/data/share的属主是root权限是0755其他用户只有r-x没有w自然不能写。也有可能是SELinux的布尔值没开。解决先ls -ld /data/share看属主和权限再id 用户名看这个用户是否属于目录的属组目录权限至少0770且用户要加入属组。如果目录挂在/home下还要考虑browseable和valid users是否正确。不要一开始就chmod -R 777那是用安全换省事后面你会还债的。开SELinux的setsebool -P samba_export_all_rw on之前先确认文件系统权限没问题避免双保险失灵。5.3 坑3改了Linux密码Samba还是用旧密码登录或一直失败现象运维用passwd zhangsan改了系统密码然后通知员工结果员工在Windows连Samba还是报错或者有人用旧密码还能连上。原因Samba账号库和系统账号库分离passwd只改系统密码不更新Samba的passdb.tdb。旧密码还能用是因为Windows凭据缓存了旧认证。解决用smbpasswd -a zhangsan首次或smbpasswd zhangsan修改密码更新Samba密码注意smbpasswd -a同样要求系统用户已经存在。改完在Windows端cmd里执行net use * /delete /y清除连接缓存再重新访问。千万不要在Samba上继续用手工的passwd方式不然下次还要翻车。5.4 坑4Centos7里ping不通百度Samba客户端找不到服务器现象Samba配置看起来全对但另一台Linux客户端mount -t cifs //192.168.1.88/share /mnt提示超时ping外网也丢包。原因服务器网卡没有配网关或DNS导致跨网段路由不通、域名解析失败虚拟机里最常见的还有VMware网络模式选了NAT客户端和宿主机不在一个网段。解决按2.1把网络配置固定到和客户端同一个物理网段先检查默认路由ip route show default如果没有default路由就是网卡配置文件里没写GATEWAY或NetworkManager把配置覆盖了。再检查DNScat /etc/resolv.confnameserver要有可用的DNS。最后用ping -c 4 223.5.5.5和ping -c 4 baidu.com两步判断是网关问题还是DNS问题。别在Samba日志里找网络问题纯浪费生命。5.5 坑5修改smb.conf后没有生效重启服务也没用现象改了共享名、路径或权限参数然后systemctl restart smb但客户端看到的还是旧共享。原因要么改错了文件服务读的是/etc/samba/smb.conf你却在别处创建了一个同名文件要么[global]里的参数写错位置导致[share]没有继承想要的选项还有一种情况是Windows端凭据管理缓存了旧共享信息。解决先执行testparm它会告诉你当前生效的配置在哪、有没有语法错误。然后systemctl reload smb试试热加载如果改的是security或全局共享则必须restart。在Windows执行net use查看当前连接删除后再连。如果服务端日志有bad command line可能是参数拼写问题Samba对未知参数经常只给警告不报错所以testparm输出要认真看。顺手养成的习惯是改配置前先cp一份带日期的备份改完用diff看一下别把旧配置搞丢了。排错时我常用的顺序是先在服务器本机testparm然后ss确认端口再nc本机自测接着从外部客户端nc然后看SELinux日志最后清Windows凭据缓存。这个顺序每步都能指向明确的日志或输出避免在Samba配置里反复打转。6. 进阶把配置固化成脚本下次部署不再靠记忆到了这个阶段你已经把Samba从安装到权限跑通了。接下来的进阶建议不是堆参数而是把整套配置抽成脚本这样下次再遇到类似需求比如新加一个共享目录、新员工入职开账号不用再敲一遍命令行也减少手误。我习惯把“用户创建 写配置 放行防火墙 SELinux 启动”放进一个bash脚本。核心结构如下#!/bin/bash # add_samba_user.sh username set -e U$1 useradd -s /sbin/nologin $U usermod -aG staff $U echo $U | passwd --stdin $U /dev/null passwd -l $U echo -e $U\n$U | smbpasswd -a -s $U脚本里用了passwd --stdin和smbpasswd -s实现非交互式改密。注意这里只是演示生产环境建议用随机初始密码并要求员工首次登录后修改。再配合一个共享目录初始化命令mkdir -p /data/$1 chown root:staff /data/$1 chmod 0770 /data/$1 semanage fcontext -a -t samba_share_t /data/$1(/.*)? restorecon -Rv /data/$1把这些命令封装成add_samba_user.sh zhangsan这样的函数能省不少事。不过脚本的边界在于它不能替你判断业务权限模型比如某组是否要写进valid users这还得靠人工确认。我这几年配置Samba最深的教训是不要因为贪图省事把所有权限都设为777也不要一开始就关闭SELinux。每次翻车基本都是安全上下文和目录权限没对齐。如果你能把防火墙、SELinux、用户映射这三件事按顺序验证一遍Samba这个老家伙其实非常稳定。上面这套脚本和排查顺序都是我不断返工后的沉淀希望帮到你。本文还有配套的精品资源点击获取
返回列表