我正在努力让一台 CentOS 机器访问另一台 CentOS 机器托管的 Samba 共享。这是在需要它的混合操作系统环境中。
主机是 CentOS 7,多年来一直将文件托管到 Windows 机器上。我基于 CentOS 构建了一台新机器,但它无法成功访问 Samba 共享。奇怪的是,这台新机器托管的 Windows 7 虚拟机可以正常访问 Samba 共享,但主机本身却不能。
我已在服务器上禁用 selinux setenforce 0
、禁用 iptablessystemctl stop iptables
和禁用 firewalld systemctl stop firewalld
。我已尝试确保工作组相同。我已尝试确保同一名称用户的用户和组 ID 在每台计算机上都相同usermod -u <id> <user>
。groupmod -g <id> <user>
使用 gnome GUI 时,无法浏览“Windows 网络”。“无法访问位置。无法从服务器检索共享列表:没有此文件或目录”。
使用“连接到服务器”时,smb://<user>@<ip>/<share>
它会要求输入域和密码,我提供了工作组名称和用户密码。这遇到了“无法访问位置。无法安装 Windows 共享:连接被拒绝”
当使用终端时mount.cifs -o username=<user>,workgroup=<workgroup> //<ip>/<share> <mount location>
,系统提示我输入密码,输入密码后,命令返回“无法找到合适的地址”。
当使用 时smbtree
,不会返回任何结果。
我还能做些什么来理解和解决这个问题?
答案1
正如您所发现的,Linux 机器是笨拙的 Samba 客户端。新 CentOS 机器上的 Windows 客户机毫无困难地连接到 Samba 服务器,这并不奇怪,因为它们毕竟是功能齐全的 Windows 机器,只需通过主机上的虚拟网络,然后通过 LAN 连接到 Samba 服务器即可。从 Windows 客户机的角度来看,CentOS 主机提供的只是网络连接,尽管它本身存在连接困难。
在 Linux 机器之间使用 SSH 更好。SSH 服务器无疑已经在 Samba 服务器主机上,因为 Samba 需要它。然后,从新的 Linux 系统使用基于密钥(即无密码)的身份验证配置用户登录或计划作业登录就足够简单了,这样连接对用户来说是透明的。然后,可以使用 sshfs 和相应的 fstab 条目作为本地挂载点。您需要在所有机器(真实和虚拟)上手动排列用户帐户,或者考虑 LDAP 或将 Samba 服务器升级为域控制器。
如果您希望新 CentOS 主机上的 Windows 客户机能够访问 CentOS 主机上的本地存储,那么您将面临一些额外的复杂性。最佳配置是在新 CentOS 主机上安装 Samba 服务器,以便为本地客户提供本地文件。这很快就会让您陷入在同一网络上配置多个 Samba 服务器、LDAP/Samba AD DC 以及其他麻烦的困境。另一种选择可能是让现有的 Samba 主机通过 ssh 连接到新的 CentOS 计算机,使用 sshfs 和 fstab 安装后者的存储目录,然后将这些安装作为 Samba 共享提供服务。无论如何,您可能会发现跳过所有这些操作并仅依靠现有的 Samba 主机提供文件服务和相关存储会更优雅。