You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

同网段Windows客户端无法访问Linux Samba共享文件夹求助

同网段Windows客户端无法访问Linux Samba共享文件夹求助

各位大佬,我最近碰到个棘手的问题:同网段里有一台Windows服务器(作为客户端)和一台搭建了Samba共享的Linux服务器,共享文件夹能在Windows那边看到,但死活访问不了,两边的防火墙都已经关闭了还是没用。下面是我的配置细节和报错信息,麻烦帮忙诊断下!

环境与配置详情

Samba配置文件smb.conf内容:

[global]
workgroup = SAMBA
security = user
hosts allow = 192.168.1.40 #(windows server)
passdb backend = tdbsam
bind interfaces only = yes
netbios name = test-server
server role = standalone server
log file = /var/log/samba/%m
log level = 1

[testshare]
path = /home/smbuser/testshare
read only = no
guest ok = yes
guest only = yes

共享目录的权限信息:

drwxrwsrwx. 2 smbuser examplegroup   6 Sep  6 16:34 testshare

Windows客户端弹出的报错:

Windows cannot access \192.168.1.20\testshare
You do not have permission to access \192.168.1.20\testshare

排查思路与解决方案建议

结合你的配置,我梳理了几个可能的问题点,你可以逐一排查验证:

  • SELinux限制问题
    很多时候Linux下的SELinux会悄悄阻止Samba访问目录,即使你已经给目录开了777权限。先执行sestatus看看SELinux是不是处于Enforcing状态,如果是,先临时关闭试试:setenforce 0,如果关闭后能正常访问了,就给共享目录添加正确的SELinux上下文,避免重启后失效:

    chcon -t samba_share_t /home/smbuser/testshare
    
  • Guest用户映射与权限冲突
    你设置了guest only = yes,意味着所有访问都会以Guest身份进入,但当前security = user的配置可能和这个规则冲突,而且Samba默认的Guest用户是nobody,需要确保这个用户能访问共享目录及其父目录。
    建议在[global]段添加一行配置,让未认证用户自动映射为Guest:

    map to guest = Bad User
    

    修改后重启Samba服务:systemctl restart smb nmb(不同发行版服务名可能是samba,按需调整)。另外可以测试nobody用户能不能访问目录:

    su -s /bin/bash nobody -c "cd /home/smbuser/testshare && ls"
    

    如果报错,说明父目录(比如/home/smbuser)的权限可能没开放给nobody,需要调整父目录权限,比如给/home/smbuser添加其他用户的执行权限:chmod o+x /home/smbuser

  • 主机访问规则限制
    检查hosts allow = 192.168.1.40是不是准确对应Windows客户端的IP,有没有可能Windows的IP发生了变化?如果不确定,可以临时改成允许整个网段访问:hosts allow = 192.168.1.0/24,测试能不能正常访问。

  • 查看Samba日志定位细节
    Samba的日志文件路径是/var/log/samba/%m,其中%m是客户端的主机名,找到对应Windows主机的日志文件,里面会有具体的权限拒绝原因,这是最直接的排查线索,比如是不是用户身份验证失败,或者目录访问被拒绝的具体原因。

备注:内容来源于stack exchange,提问作者Tango

火山引擎 最新活动