在新安装的 CentOS 6 系统上,我从另一个系统复制了以下简单的 smb.conf,该系统运行正常:
workgroup = MYDOMAIN
browseable = yes
[homes]
guest ok = no
read only = no
[tmp]
path = /tmp
read only = no
guest ok = yes
[backups]
path = /backups
read only = no
guest ok = no
我已禁用 SELinux 并允许防火墙上的 Samba 端口通过。我已将joe
的 Samba 密码设置为smbpasswd -a joe
。 /home/joe
并/home
具有 755 权限,并/home/joe
具有用户/组joe
。 /backups
具有用户/组 root 和 777 权限。
这应允许具有 /backups 访问权限的用户joe
在 Windows 上或通过同一 Linux 主机上的 samba 客户端连接到读/写 \hostname\backups。它还应允许访问 \hostname\joe(主目录),前提是该用户joe
可以访问他的主目录/home/joe
。
使用本地主机上的Linux客户端:
$ smbclient --user joe '\\hostname\joe'
Enter joe's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
62359 blocks of size 33553920. 59182 blocks available
smb: \> cd Documents
smb: \Documents\> ls
NT_STATUS_ACCESS_DENIED listing \Documents\*
62359 blocks of size 33553920. 59182 blocks available
smb: \Documents\>
因此,在这里我可以连接到共享,但看不到内容,但可以 cd 到我知道存在的目录。请注意,/home/joe/Documents
也是 755 并归 拥有joe
。
现在我将尝试访问backups
:
$ smbclient --user joe '\\hostname\backups\'
Enter joe's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
因此在这种情况下我根本无法连接到共享。此外,我看到tail -f /var/log/samba/log.smbd
:
[2013/02/22 11:09:49.734263, 0] smbd/service.c:988(make_connection_snum)
canonicalize_connect_path failed for service backups, path /backups
当我连接到我的家庭共享时,不会出现此消息。它 /backups
肯定存在,模式为 777,并且是运行良好的外部 RAID 设备的挂载点。
我有另一个系统,配置基本相同,只是它是 CentOS 5 和 Samba 3.0.33 而不是 3.5.10。那里一切都按预期运行。
在 Windows 上,尝试访问\\hostname\backups
或\\hostname\joe
(当然使用正确的凭据)会给出一个无用的“您没有权限......”对话框,其中包含“详细信息”:“找不到网络名称”。
请帮我查明真相!
答案1
可能需要使用 iptables。尝试以下操作:
/sbin/iptables -I INPUT -s adreess -m state --state NEW -p tcp --dport 137 -j ACCEPT
/sbin/iptables -I INPUT -s address -m state --state NEW -p tcp --dport 138 -j ACCEPT
/sbin/iptables -I INPUT -s address -m state --state NEW -p tcp --dport 139 -j ACCEPT
/sbin/iptables -I INPUT -s address -m state --state NEW -p tcp --dport 445 -j ACCEPT
pd:请原谅我的英语,我正在使用谷歌翻译。