这个问题之前已经被问过无数次了,我也研究了几十年来的几百个“解决方案”,但没有一个能 100% 有效。
我想要的是:
一个简单、最小的 smb.conf,我可以将其打包在基于 Alpine Linux 的 LXC 容器中,该容器可通过 WORKGROUP 发现和浏览,并允许完全、不受限制的访客访问 /mnt/shared,而无需输入密码。家庭成员在自己的计算机(windows、mac、linux、chromeos)上进入“网络”,看到“Fileshare”,单击它,它就可以正常工作(读写访问)。
我尝试过的:
- 弄乱大量设置,如安全=共享、安全=用户、映射到访客=坏用户、访客帐户=无人、强制用户=无人、本地主机=是、本地主机=否、各种名称解析顺序的咒语,以及一堆其他我现在记不起来的东西。
- 将权限和所有权更改为 nobody、root、your-mother...
- 查看每个论坛、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
(注意:以上配置不起作用)
我可以调整环境以符合您想要的任何假设(尽管我更喜欢 Alpine 作为发行版,因为它的移动部件较少)。我只想要一个最小的、基本的“保证工作”设置,然后我可以逐步构建它,而不是像每次设置文件共享时那样手忙脚乱。
然后我可以制作一个具有规范的、保证工作的配置和环境的 lxc 容器模板,并永远完成它。
答案1
我已经设置了一个带有目录的服务器drwxrwxrwx jnl jnl /share/backup
。此目录通过 samba 与以下项共享smb.conf
:
[global]
workgroup = WORKGROUP
log file = /var/log/samba/log.%m
max log size = 1000
server role = standalone server
security = user
map to guest = Bad Password
[Backup]
path = /share/backup
writeable = yes
browsable = yes
guest ok = yes
通过此配置,我能够在其他所有 (Windows) 操作系统下直接使用共享,无需用户/密码,但具有读/写权限。文件使用 创建,-rw-r----- nobody nogroup FILE
文件夹使用 创建drwxrwxr-x nobody nogroup DIR
。
如果我想隐藏共享,只需设置browsable = no
。
答案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
/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>
此 avahi 配置提供闪电般的快速访问和吞吐量,并使所有启用 Bonjour 的系统(Mac 和 Linux)可以立即发现该服务。