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

big*_*les 5 linux fedora file-sharing network-share 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." 
Run Code Online (Sandbox Code Playgroud)

Windows 用户在访问服务器(在“网上邻居”下找到)时不会被提示输入用户名或密码。使用 IP 而不是服务器名称连接时也会发生这种情况。

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

The original item for ShareName cannot be found.
Run Code Online (Sandbox Code Playgroud)

通过 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
Run Code Online (Sandbox Code Playgroud)

如何让 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 标签添加到 mountpoint 目录,现在允许我访问 Windows 机器上的共享,但是我看不到 Windows 机器上目录中的任何文件。(它们在那里,我可以在本地的fedora 文件浏览器中看到它们)

big*_*les 3

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

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

/dev/sdbx /mountpoint ext3 auto 0 0
Run Code Online (Sandbox Code Playgroud)

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

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

chmod 755 /mountpoint
Run Code Online (Sandbox Code Playgroud)

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

chcon -t samba_share_t /mountpoint
Run Code Online (Sandbox Code Playgroud)

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

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