在 VirtualBox 中从 Windows 10 访问 Samba 共享

在 VirtualBox 中从 Windows 10 访问 Samba 共享

我阅读了很多关于这个问题的用户问题和博客,但没有一个能解决我的问题。

我有一台 Linux CENTOS 主机,其中在 VirtualBox 中安装了 Windows 10 客户机。在 Linux 上,有一个名为“myuser”的用户,它共享一个目录 (777) 并注册到 Samba 用户数据库。此用户没有密码限制。smb.conf如下所示:

[global]
workgroup = WORKSPACE_SHARE
security = user
map to guest = bad user

[public]
path = /home/myuser/public
public = yes
writeable = yes
comment = smb share
printable = no
guest ok = yes

Windows 有一个同名的本地用户(“myuser”,未设置密码),启用了文件和打印机共享,启用了 Microsoft Client,工作组设置与 Samba 工作组匹配并使用私有网络。

在资源管理器中,我可以看到 Linux 主机,它确实包含共享文件夹(“公共”)。但是,当尝试访问此共享文件夹时,会出现错误警报:您无权访问...

我在互联网上读到过诸如“Windows 10 使用 SMBv3 但 Samba 尚不支持它”以及如何关闭 SMBv3 之类的内容 - 但这没有帮助。

即使修改 Windows 上的本地安全策略也无济于事:https://superuser.com/a/916835/408191

我该如何解决这个奇怪的问题?

答案1

一些 Linux 发行版在其内核中有一个所谓的 SELinux 实现。它代表“安全增强型 Linux”并且,除了其他事项之外,还限制 Samba 共享。如果您想创建共享文件夹,那么仅指定方便的访问权限和 中的定义是不够的samba.conf。您还需要设置共享文件夹的正确“安全上下文”。

遵循权限掩码和安全上下文应该可以解决问题:

chmod -R 770 yoursharefolder
chcon -R -t samba_share_t yoursharefolder

还必须遵守不同 wiki 中已知的所有条件:

  • 必须将作为共享所有者的 Unix 用户添加到 Samba 用户数据库中:smbpasswd -a youruser
  • 您的 Windows 计算机必须具有与 Samba 数据库中设置的名称和密码相同的用户
  • 你的samba.conf可能看起来像这样:

samba.conf(所有大写部分必须根据您所关注的特定环境进行定制):

[global]
workgroup = SAME_WORKGROUP_AS_CONFIGURED_IN_WINDOWS
server string = Samba Server %v
netbios name = HOST_NAME_OF_YOUR_LINUX_MACHINE_ON_NETWORK
security = user
map to guest = bad user
dns proxy = no

[yourshare]
path = /PATH/TO/YOURSHARE
valid users = YOUR_WINDOWS_USER_NAME
browsable = yes
writeable = yes
guest ok = no
read only = no
directory mask = 0770
create mask = 0770

编辑:请注意,通过以下方式进行的更改chcon不是永久性的。要进行永久性的安全上下文更改,请使用以下命令:

semanage fcontext -a -t samba_share_t /full/path/to/your/share/folder

...并使其有效:

restorecon -v /full/path/to/your/share/folder

相关内容