隐藏未经授权用户的浏览列表中的 Samba 共享

隐藏未经授权用户的浏览列表中的 Samba 共享

我一直在尝试正确设置我的 samba 共享。

我所寻找的设置是公开提供几个共享,访客帐户可以正常浏览这些共享。我的设置正确。

问题出现在设置仅特定用户可以查看的共享时,尽管我已经设置了仅允许特定用户访问的共享。我无法向访客隐藏此共享。

我查看了可浏览 = 是选项,但是这会将其对所有人隐藏,包括已登录的用户。

有什么想法可以解决这个问题吗?

我对此私人共享的设置如下:

[private]
comment = private share for certain users
path = /media/drive/private
create mask = 0777
directory mask = 0777
writable = yes
public = no
users = admin

我目前有

security = share

但尝试过使用 browserable = no

security = user

答案1

要隐藏完整共享,您可以使用以下选项:

[global]
access based share enum = yes

要将共享内的文件/文件夹隐藏给没有这些文件/文件夹读取权限的用户,您可以使用:

[share]
...
hide unreadable = yes 

答案2

您可以使用'包括'共享定义部分内的指令。

例如: ‘smb.conf’:

security = user

[private]
...
browseable = no
...
include = /etc/samba/per-user-config/%u.conf

‘允许的用户.conf’:

browseable = yes

请参阅 Samba 官方文档以获取更多信息和变量:http://www.samba.org/samba/docs/using_samba/ch06.html

答案3

丹尼斯几乎是对的。

不幸的是,根据 Samba 的官方文档(这里)、用户变量‘%u’不适用于'包括'

但是,在大多数情况下,用户的主目录具有与用户名相同的值,您可以像这样使用它:

[share]
...
browseable = no
...
include = /etc/samba/%U.conf

其中 %U(注意大写 U)是当前用户的主目录。现在假设用户是伊桑与主文件夹伊桑。在这种情况下,您将创建一个文件,/etc/samba/ethan.conf其内容为:

browseable = yes

答案4

对于 FreeBSD (12.1) 和 Samba 4.11,kgizdov 提供的答案也不起作用。如果您使用 testparm 测试 smb.conf 文件,您会发现 %U 在包含 include 语句的行上消失了。

[share]
...
browsable = no
...
include = /usr/local/etc/samba/%U.conf

运行 testparm 时发生以下变化:

[share]
...
browsable = no
...
include = /usr/local/etc/samba/.conf

这当然是行不通的。

使用 %G 使用经过身份验证的用户的主要组确实有效。由于大多数默认 FreeBSD 系统使用用户名作为主要组,因此配置保持不变。否则,您需要为每个希望共享可见的主要用户组添加 .conf 文件。

因此改变:

include = /usr/local/etc/samba/%U.conf
to
include = /usr/local/etc/samba/%G.conf

并在上面的目录中创建包含以下内容的 .conf 文件:

browseable = yes

这对我来说很有帮助。

相关内容