![为什么 testparm 的输出与 /etc/samba/smb.conf 不同?](https://linux22.com/image/216583/%E4%B8%BA%E4%BB%80%E4%B9%88%20testparm%20%E7%9A%84%E8%BE%93%E5%87%BA%E4%B8%8E%20%2Fetc%2Fsamba%2Fsmb.conf%20%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
[global]
这是随机 Synology NAS 的 /etc/samba/smb.conf 部分的输出:
~# cat /etc/samba/smb.conf
[global]
printcap name=cups
winbind enum groups=yes
include=/var/tmp/nginx/smb.netbios.aliases.conf
min protocol=NT1
security=user
local master=no
realm=*
passdb backend=smbpasswd
printing=cups
max protocol=SMB3
winbind enum users=yes
load printers=yes
workgroup=WORKGROUP
这是 的输出testparm
,尽管它说它加载了此配置文件,但它并不相同:
# testparm -s
Load smb config files from /etc/samba/smb.conf
...
[global]
passdb backend = smbpasswd
printcap name = cups
realm = *
security = USER
server min protocol = NT1
syno catia = Yes
winbind enum groups = Yes
winbind enum users = Yes
winbind expand groups = 1
notify:synotify = yes
rpc_server:msftewds = embedded
rpc_daemon:wspd = disabled
fruit:locking = none
rpc_server:mdssvc = embedded
rpc_daemon:mdssd = disabled
idmap config * : backend = syno
include = /var/tmp/nginx/smb.netbios.aliases.conf
smb encrypt = if_required
strict sync = No
我知道testparm
有这个选项:
-v, --verbose Show default options too
例如,这解释了它不返回max protocol=SMB3
,因为它已经是默认值:
# testparm -s -v 2>&1 | grep "max protocol"
client ipc max protocol = default
client max protocol = default
server max protocol = SMB3
但为什么会返回以或 行开头的testparm
值。它没有在 smb.conf 中设置。我也无法在 中的任何其他文件中找到它:rpc_
fruit:locking = none
/etc
# grep -rIils fruit /etc
#
我的意思是,是的,GUI 中有一个设置似乎启用了 vfs 模块“fruit”,但为什么在任何 Samba 配置文件中都没有提到它?
答案1
默认值不是某个绝对值,而是相对值。含义:编译到 samba 二进制文件中的内容。供应商可以在编译时为某些选项定义自己的默认值。
答案2
这很可能是因为 Synology 采用了 Samba 源代码并根据自己的需要进行了调整,synology 上有很多标准 Samba 中不存在的 smb.conf 参数,例如 syno catia = Yes