最小的、完全来宾可浏览的 samba 共享?

Kar*_*arl 5 samba

这已经被问过一百万次了,我已经看了几十年的几百个“解决方案”,没有一个是 100% 有效的。

我想要的是:

一个简单的、最小的 smb.conf,我可以将它打包在基于 Alpine Linux 的 LXC 容器中,该容器可通过 WORKGROUP 发现、浏览,并允许完全、无限制的访客访问 /mnt/shared 而无需输入密码。家庭成员在他们的计算机(windows、mac、linux、chromeos)上访问“网络”,看到“文件共享”,点击它,它就可以工作(读写访问)。

我试过的:

  • 处理大量设置,例如安全 = 共享、安全 = 用户、映射到访客 = 坏用户、访客帐户 = 无人、强制用户 = 无人、本地主 = 是、本地主 = 否、名称解析顺序的各种咒语,以及还有一堆我一时想不起来的事情。
  • 将权限和所有权更改为没有人、root、你的母亲......
  • 浏览每个论坛,SO、SU、SF 都发布了关于此完全相同问题的帖子,并按照标记为已解决的解决方案进行操作,但没有任何效果。
  • 当然试过https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server
  • 启动并重新启动并重新安装并再次重新启动我网络上的每台机器。

Samba 配置比 sendmail 更难正确配置。似乎没有任何事情可以正常工作,因此任何给定的配置都会导致以下一项或多项:

  • 浏览网络无法发现服务器
  • 服务器可以手动浏览,但不会自动显示在 windows 的“网络”部分
  • 服务器可以被某些系统发现,但不能被其他系统发现(mac、linux、windows)
  • 服务器只能通过IP地址访问,不能通过名称访问
  • 客户端一直要求输入密码才能浏览WORKGROUP
  • 客户端不断要求输入密码以查看共享本身
  • 客户不断抱怨权限问题,即使在 chown -R 之后
  • 客户端一直超时
  • 客户端非常非常慢,许多操作需要 10-30 秒

更糟糕的是,samba 在环境方面是非常易变的,例如用户帐户、权限和所有权,甚至不匹配的网络类都可能导致它严重失败,并出现无助于诊断问题的通用错误消息。

所以,我想知道的是:有人可以为刚制作的容器提供一个干净的 smb.conf 吗?目录?例如:

[global]
   map to guest = Bad User
   security = user
   guest account = nobody

[shared]
   path = /mnt/shared
   public = yes
   only guest = yes
   writable = yes
   printable = no
   force user = nobody
Run Code Online (Sandbox Code Playgroud)

(注意:上面的配置不起作用)

我可以调整环境以匹配您想要的任何假设(尽管我更喜欢 Alpine 作为发行版,因为它的活动部件较少)。我只想要一个最小的、基线的“保证工作”设置,然后我可以逐步构建它,而不是像我每次必须设置文件共享时那样摇摆不定。

然后我可以制作一个具有规范的、保证工作的配置和环境的 lxc 容器模板,并永远完成它。

Kar*_*arl 2

好的,我已经成功地组合了一个配置来解决所有问题,包括 Windows 下的可发现性。

Windows 可发现性的技巧是让 NetBIOS 名称与主机名匹配,并且长度不超过 15 个字符。

/etc/samba/smb.conf:

[global]

# Identification
netbios name = same-as-hostnanme
workgroup = WORKGROUP
server string = Samba Server Version %v

# Network
name resolve order = bcast host lmhosts wins

# Protocol
server role = standalone server
disable netbios = no
wins support = yes
dns proxy = yes
domain master = yes
local master = yes
preferred master = yes
os level = 31

# Security
security = user
map to guest = Bad User
guest ok = yes
guest only = yes
guest account = nobody

# Needed by some Windows installs
server signing = auto

# Printing
load printers = No
printing = bsd
printcap name = /dev/null
disable spoolss = Yes

# Files
directory mask = 0755
force create mode = 0644
force directory mode = 0755
case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes

# Performance
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
server signing = no
strict locking = no
min receivefile size = 16384
use sendfile = Yes
aio read size = 16384
aio write size = 16384

# Logging
syslog = 0
max log size = 100
Run Code Online (Sandbox Code Playgroud)

/etc/avahi/services/samba.service:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_smb._tcp</type>
    <port>445</port>

  </service>
</service-group>
Run Code Online (Sandbox Code Playgroud)

此 avahi 配置提供闪电般的快速访问和吞吐量,并使所有支持 Bonjour 的系统(Mac 和 Linux)立即发现该服务。