我正在尝试调试 ubuntu 9.10 的 samba 共享问题。
Ubuntu 9.10 共享一个文件夹,尝试从 WinXP 访问。WinXP 看不到该文件夹。
使用 netstat -anp 命令我发现 smbd 仅接受 tcp6 上的 139 上的套接字连接,但不接受 tcp 上的套接字连接。(IPv4)。 有人知道这是导致我连接问题的原因吗?如果是,如何解决?
在正在运行的 samba 共享系统 (FC11) 上,我可以看到 smbd 正在 tcp 端口 139 中等待,而不是在 tcp6 中等待。
感谢
root@tlee-vm:~# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1024/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1281/cupsd
tcp 16 0 192.168.64.141:58996 10.81.24.191:445 ESTABLISHED 3647/gvfsd-smb
tcp 24 0 127.0.1.1:40058 127.0.1.1:139 ESTABLISHED 3677/gvfsd-smb-brow
tcp 0 0 192.168.18.140:22 192.168.18.1:4107 ESTABLISHED 3953/sshd: tlee [pr
tcp6 0 0 :::139 :::* LISTEN 3104/smbd
tcp6 0 0 :::22 :::* LISTEN 1024/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1281/cupsd
tcp6 0 0 :::445 :::* LISTEN 3104/smbd
tcp6 0 0 127.0.1.1:139 127.0.1.1:40058 ESTABLISHED 3679/smbd
udp 0 0 0.0.0.0:47032 0.0.0.0:* 891/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 891/avahi-daemon: r
udp 0 0 192.168.18.140:137 0.0.0.0:* 3100/nmbd
udp 0 0 192.168.64.140:137 0.0.0.0:* 3100/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 3100/nmbd
udp 0 0 192.168.18.140:138 0.0.0.0:* 3100/nmbd
udp 0 0 192.168.64.140:138 0.0.0.0:* 3100/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 3100/nmbd
答案1
您必须运行smbpasswd
来添加用户密码,因为 Samba 不会自动将 Unix 密码复制到其密码后端。
看man smb.conf
有关每个 smb.conf 参数的详细信息。该unix password sync
选项不代替Samba 的密码后端与系统密码子系统。它通过允许您passwd program
在 smbpasswd 更改时运行来增强它。以下是具体细节来自手册页(重点是我的)。
此布尔参数控制 Samba 是否尝试将 UNIX 密码与 SMB 密码同步当 smbpasswd 文件中的加密 SMB 密码发生更改时。如果设置为是,则 passwd 程序参数中指定的程序将以 AS ROOT 调用 - 以允许设置新的 UNIX 密码而无需访问旧的 UNIX 密码(因为 SMB 密码更改代码无法访问旧密码明文,只能访问新密码)。
默认:unix 密码同步 = 否
答案2
通过以下方式获得工作:
在 Ubuntu 中禁用 ipv6:(不确定是否需要这一步,但无论如何我不需要 ipv6,也不确定为什么 samba 没有绑定 ipv4 端口)
vi /etc/sysct.conf # and add following line; reboot
net.ipv6.conf.all.disable_ipv6=1
使用 smbpasswd 为需要登录的用户添加密码,我不确定为什么需要这样做,因为我的 /etc/samba/smb.conf 文件中有“unix password sync = yes”行。
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
顺便说一句,如果有人能告诉我为什么需要使用 smbpasswd 将用户密码添加到系统,我会将其标记为答案。
答案3
我刚刚调试了从 Windows XP 连接到 Ubuntu 9.10 上的 samba 共享的问题,我发现了以下描述设置 samba有帮助的,还有这个samba 故障排除指南。
如果你好奇的话,我的 Ubuntu 防火墙阻止了访问。我允许端口 445 上的访问,它就开始工作了。
sudo ufw allow 445
答案4
sudo ufw allow 445
这对我有用。谢谢!
PS 他们需要解决这个问题。新的 Linux 用户永远无法弄清楚这一点!