我可以连接到 Samba 服务器但无法访问共享。

我可以连接到 Samba 服务器但无法访问共享。

我无法让 Samba 共享访问共享。

我设置了一个运行 Fedora 16 的独立机器,用作文件共享和 Web 开发服务器。它需要能够与 Windows 7 PC 和运行 OSX Snow Leopard 的 Mac 共享文件。

我已经使用 Fedora 上的 Samba 配置 GUI 工具设置了 Samba。将用户添加到 Fedora 并以 Samba 用户身份连接他们(与 Windows 和 Mac 用户名和密码相同)。工作组名称与 Windows 工作组相同。身份验证设置为用户。我已允许 Samba 和 Samba 客户端通过防火墙,并将以太网设置为防火墙中的受信任端口。

Windows 和 Mac 机器都可以连接到服务器并查看共享,但是在尝试访问共享时,Windows 会抛出错误:

0x80070035 " Windows cannot access \\SERVERNAME\ShareName." 

Windows 用户在访问服务器时(位于“网络位置”下)不会提示输入用户名或密码。使用 IP 而不是服务器名称进行连接时也会发生这种情况。

Mac 也可以连接到服务器并查看共享,但是在选择共享时出现错误:

The original item for ShareName cannot be found.

通过 IP 连接时,Mac 用户会提示输入用户名和密码,经过身份验证后会提供共享列表,但是在选择要连接的共享时,会显示错误并且用户无法访问该共享。

由于两台机器在尝试访问共享时的行为类似,因此我认为这是 Samba 配置方式的问题。

smb.conf:

[global]

    workgroup = workgroup
    server string = Server
    log file = /var/log/samba/log.%m
    max log size = 50
    security = user
    load printers = yes
    cups options = raw
    printcap name = lpstat
    printing = cups


[homes]
    comment = Home Directories
    browseable = no
    writable = yes


[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = yes
    printable = yes

[FileServ]
    comment = FileShare
    path = /media/FileServ
    read only = no
    browseable = yes
    valid users = user1, user2

[webdev]
    comment = Web development
    path = /var/www/html/webdev
    read only = no
    browseable = yes
    valid users = user1

我如何使 Samba 共享正常工作?

更新:我明白了,这是因为我共享了第二个硬盘。请参阅下面的答案。

推测 1:在此机器之前,我有另一台机器,其中安装了相同版本的 Fedora(16),并且 Samba 在这些相同的计算机上运行。我启动了旧机器,并将 smb.conf 文件从旧机器复制到新机器(当然,编辑了新共享的共享定义),但两台客户端机器上仍然出现相同的错误。环境的唯一区别是硬件和路由器。在旧机器上,路由器收到动态公共 IP,并为网络上的每个设备分配动态私有 IP,而新机器连接到具有静态公共 IP 的路由器(但仍然是动态内部 IP)。其中任何一个都会影响 Samba 吗?

猜测2:由于我尝试共享的目录实际上是整个内部磁盘,因此我尝试了以下操作:

1.) 将挂载磁盘的所有者从 root 更改为我的用户(与 Windows 计算机上的用户名相同)

2.) 建立了一个共享,其中仅包含磁盘上的一个文件夹,而不是整个磁盘,并且我的用户再次作为所有者。

两次测试都失败了,并给出了有关网络地址的相同错误。

推测 3:每当我尝试连接到 Windows 7 客户端上的共享时,系统都会提示我输入用户名和密码。当我输入正确的凭据时,我收到一条拒绝访问的消息。但是我确实注意到在登录框下列出了“域:WINDOWS-PC-NAME”。我相信这很可能就是问题所在。

推测 4:所以我现在已经完全重新安装了 Fedora 和 Samba。我在第一个硬盘上创建了一个共享(安装了 Fedora),我可以从 Windows 正常访问它。但是,当我尝试共享第二个磁盘上的任何数据时,我收到相同的错误。我相信这就是问题所在。我想我需要在 fstab 或 fdisk 中更改一些内容,或者其他什么。

推测 5:因此,在 fstab 中,我将驱动器映射到文件夹中的自动挂载,该文件夹可以正常工作。我还将 samba_share_t SElinux 标签添加到挂载点目录,现在我可以访问 Windows 计算机上的共享,但是我无法在 Windows 计算机上的目录中看到任何文件。(它们在那里,我可以在本地的 Fedora 文件浏览器中看到它们)

答案1

终于搞定了。首先,问题在于我试图共享第二个硬盘,而不是共享安装操作系统的同一驱动器上的数据。以下是通过 Samba 共享第二个驱动器的步骤:(这些步骤适用于内部安装的驱动器,但我认为它也可能适用于外部驱动器)

1.) 您必须在 fstab 中设置驱动器以自动挂载。添加:

/dev/sdbx /mountpoint ext3 auto 0 0

到 /etc/fstab,其中 x 是驱动器的分区号,“/media/mountpoint”是挂载目录(我创建了一个名为 /share 的目录并在那里挂载了驱动器),“ext3”是文件系统

2.)将挂载点的权限设置为755:

chmod 755 /mountpoint

3.) 添加新的 SElinux 标签“samba_share_t”,并将此标签应用于挂载点

chcon -t samba_share_t /mountpoint

4.) 将这些权限应用于所有封闭的文件和文件夹。(我为此使用了 Gnome 的 GUI)

我可以从 Windows 7 PC 和运行 OSX 的 Mac 访问共享的读写权限。

答案2

发布您的 smb.conf,以便我们检查您的所有配置是否正常。

smb.conf 中最重要的部分如下:

[name_of_the_shared_folder_resource]
   valid users = user1 user2    #you can use groups
   public = no
   path = /var/www    #the path of your folder
   printable = no
   writable = yes

记住smbpasswd为每个用户运行以生成 Samba 密码。

另一件重要的事情...重新启动 Samba。:P

答案3

确保你可以使用 netstat 看到 samba 正在运行

netstat -an | grep LISTEN | egrep "445"

还可以尝试在配置中添加接口绑定:

interfaces = eth0或者interfaces = <ip address>在 smb.conf 中

答案4

我遇到了同样的问题,最后我解决了,编辑/etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled    # if the files dont appears is because this parameters is not disabled

相关内容