![升级了 Fedora,现在 Samba 遇到麻烦:如何在 Fedora Server 32 上正确配置 Samba?](https://linux22.com/image/755753/%E5%8D%87%E7%BA%A7%E4%BA%86%20Fedora%EF%BC%8C%E7%8E%B0%E5%9C%A8%20Samba%20%E9%81%87%E5%88%B0%E9%BA%BB%E7%83%A6%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%20Fedora%20Server%2032%20%E4%B8%8A%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%20Samba%EF%BC%9F.png)
我用一个新的、全新的服务器替换了旧的服务器(因此,“替换”可能比“升级”更准确),但当然,我收集了所有旧的配置文件等,而我没有运行的唯一重要功能是 samba。
我已经为此工作了很多天,甚至今天还升级了系统,以Fedora Server 5.7.11-200.fc32.x86_64
确保没有修复任何错误。绝对没有安装错误或更新错误。而且,值得一提的是,有十几个 samba 软件包:
samba-dc-provision-4.12.5-0.fc32.noarch
samba-test-libs-4.12.5-0.fc32.x86_64
samba-winbind-clients-4.12.5-0.fc32.x86_64
samba-libs-4.12.5-0.fc32.x86_64
samba-winbind-4.12.5-0.fc32.x86_64
samba-dc-bind-dlz-4.12.5-0.fc32.x86_64
samba-winbind-krb5-locator-4.12.5-0.fc32.x86_64
samba-common-tools-4.12.5-0.fc32.x86_64
samba-devel-4.12.5-0.fc32.x86_64
python3-samba-dc-4.12.5-0.fc32.x86_64
samba-dc-libs-4.12.5-0.fc32.x86_64
samba-vfs-cephfs-4.12.5-0.fc32.x86_64
python3-samba-4.12.5-0.fc32.x86_64
samba-krb5-printing-4.12.5-0.fc32.x86_64
samba-vfs-glusterfs-4.12.5-0.fc32.x86_64
samba-winbind-modules-4.12.5-0.fc32.x86_64
samba-client-libs-4.12.5-0.fc32.x86_64
samba-4.12.5-0.fc32.x86_64
samba-pidl-4.12.5-0.fc32.noarch
samba-client-4.12.5-0.fc32.x86_64
samba-common-libs-4.12.5-0.fc32.x86_64
samba-common-4.12.5-0.fc32.noarch
samba-dc-4.12.5-0.fc32.x86_64
samba-test-4.12.5-0.fc32.x86_64
我尝试过做功课,但在搜索引擎中找不到任何有用的例子。我尝试过的配置文件内容比我能记住的还要多——肯定有几十个,甚至上百个,这取决于你如何计算。发布各种配置文件可能并不会浪费我很多时间,但对于我希望能够起作用并且适用于 Fedora 32 的示例配置,请参阅下面有关该配置的链接。然而,下面发现了旧的配置数据。
无论配置文件说什么,错误消息都是相同的 - 至少到目前为止:
At this time the 'samba' binary should only be used for either:
'server role = active directory domain controller' or to access the ntvfs file server with 'server services = +smb' or the rpc proxy with 'dcerpc endpoint servers = remote'
You should start smbd/nmbd/winbindd instead for domain member and standalone file server tasks
[2020/08/02 15:48:33.190413, 0] ../../lib/util/become_daemon.c:121(exit_daemon)
exit_daemon: daemon failed to start: Samba detected misconfigured 'server role' and exited. Check logs for details, error code 22
当然,这首先来自 journalctl 程序,然后同样来自 /var/log/samba/ 中的一个日志,在阅读了每一个日志以确保无误之后,没有从那里找到更多信息,这与消息中自鸣得意的暗示相反。
我做的第一件事就是试图弄清楚这到底想表达什么:
您应该启动 smbd/nmbd/winbindd 来执行域成员和独立文件服务器任务
我尽我所能地跟踪了 smbd、nmbd 和 winbindd,但正如所述,它们不能简单地启动,显然需要博士学位才能弄清楚如何在 Fedora 上处理它们 - 或者也许我只是不明白我到底在读什么,尽管我不是新手。有趣的是,在任何启动之后,都会有两个 winbind 进程:
/usr/sbin/winbindd --foreground --no-process-group
但是我的客户端根本无法连接。而且,我能想到的最好的办法是,这是一个我们根本不想要的域控制器,似乎nmdb
是一个NetBios
工具,我不知道它如何帮助将 Linux 文件提供给 Windows。至于smbd
,是的!这听起来就像我们这些年来一直在使用的东西!但是......我没有找到任何关于它的信息 - 我甚至要求 dnf 安装它!不,对不起,不幸的是,它是短暂的。
为了清楚起见,我认为 SURELYsmbd
是需要的,但不,这些都不起作用:
# systemctl start smbd
Failed to start smbd.service: Unit smbd.service not found.
# dnf install smbd
Last metadata expiration check: 1:27:03 ago on Mon 03 Aug 2020 08:08:24 AM PDT.
No match for argument: smbd
Error: Unable to find a match: smbd
我很乐意尝试其他类似的方法 - 欢迎提出建议!(值得注意的是,我尝试安装“samba*”,以为可能缺少一个包,结果samba-winexe-2:4.12.5-0.fc32.x86_64,
确实如此,所以我当然安装了它。systemctl start smbd
仍然没有反应,但添加了一个图像winexe
,但它没有手册页,也systemctl
没有做任何事情。然而:
# winexe -h
winexe version 4.12
This program may be freely redistributed under the terms of the GNU GPLv3
Usage: winexe [OPTION]... //HOST[:PORT] COMMAND
Options:
-h, --help Display help message
-V, --version Display version number
-U, --user=[DOMAIN/]USERNAME[%PASSWORD] Set the network username
-A, --authentication-file=FILE Get the credentials from a file
-N, --no-pass Do not ask for a password
-k, --kerberos=[yes|no] Use Kerberos
-d, --debuglevel=DEBUGLEVEL Set debug level
--uninstall Uninstall winexe service after
remote execution
--reinstall Reinstall winexe service before
remote execution
--runas=[DOMAIN\]USERNAME%PASSWORD Run as the given user (BEWARE:
this password is sent in
cleartext over the network!)
--runas-file=FILE Run as user options defined in a
file
--interactive=0|1 Desktop interaction: 0 -
disallow, 1 - allow. If allow,
also use the --system switch
(Windows requirement). Vista
does not support this option.
--ostype=0|1|2 OS type: 0 - 32-bit, 1 - 64-bit,
2 - winexe will decide.
Determines which version (32-bit
or 64-bit) of service will be
installed.
这很有趣,但我不知道该拿它做什么,它有什么用。所以我继续往下看。
然后,我把重点放在了人们可能认为可以用于“服务器角色”的明显变化上,查阅了文档,花了无数个小时在网上搜索“服务器角色”问题的解决方案。我尝试了很多变体——不仅是“服务器角色”,还有整个配置文件——我甚至记不清它们了。而且,文档大多看起来非常旧,但我确实认为这是当前的,但它没有产生有用的结果。我努力尝试,但我是不是忽略了什么?也许我对 Windows 的世界不够了解,不知道他们在说什么?例如,域控制器是否只能提供我熟悉的目录?我认为这正是我不想要的。
在广泛的网络搜索中,唯一接近的可以在这里找到。它适用于 Fedora 32,但是它们的示例对我来说不起作用 - 服务器无法启动或提供有用的错误消息。
Samba 需要什么:
在 Samba 安装于此的 20 多年中,它提供了与 NFS 类似的完美服务,使用工作组范例在本地网络上为 Windows 设备提供 Linux 目录。域毫无用处,也根本不需要,尽管打印机支持很有用。系统必须具有读写权限、简单但有效的用户名/密码方案,并且相当好地遵守权限。也许 24 年来 - 我已经记不清了 - Samba 一直在这家商店中扮演这一角色。是的,这些系统都比较老,比如 Windows 7,我们根本不关心域控制器 - 发现它相当专制和独裁,不是我们想要的。(或者我们想要吗?)
值得补充的是,这是在内部网络上,SE linux 不是问题 - 服务器甚至无法启动!
那么,简单的系统升级是否会结束我们与 Samba 的关系 - 并迫使我们重新考虑 Windows?!(这太令人抓狂了。)
旧配置:
评论者 Michael Hampton 想要查看旧配置,但我看不出有什么相关性,因为我将使用任何允许服务器启动的配置文件,并以现代方式重新进行配置。但是,对于像 Michale 这样的人,请看这里 - 首先,系统:
Server: 3.19.3-200.fc21.x86_64
Packages:
samba-winbind-4.1.17-1.fc21.x86_64
samba-client-4.1.17-1.fc21.x86_64
samba-libs-4.1.17-1.fc21.x86_64
system-config-samba-1.2.100-3.fc21.noarch
samba-common-4.1.17-1.fc21.x86_64
samba-winbind-modules-4.1.17-1.fc21.x86_64
samba-4.1.17-1.fc21.x86_64
配置文件数据-来自 testparm,这是你以前做事的方式:
Server role: ROLE_STANDALONE
[global]
workgroup = OurWorkgroup
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
idmap config * : backend = tdb
cups options = raw
[printers]
comment = All Printers
path = /var/spool/samba
guest ok = Yes
printable = Yes
print ok = Yes
browseable = No
[Share1]
path = /opt/samba/Share1
username = fred clara
write list = fred, clara
read only = No
您不能从 testparm 获得以下信息:
security = user
bassdb backend = tdbsam
好的,就是这样 - 没有其他内容了。我的意思是配置文件中没有其他内容了。配置文件中还有很多内容被注释掉了,但是,好吧,它们被注释掉了!
答案1
由于我不太明白的原因,Fedora 将启动 smbd 和 nmbd 的 systemd 单元分别命名为smb
和nmb
。要管理这些服务,请使用systemctl <command> smb
(或nmb
)。
通过检查 RPM 内容,我能够找到 systemd 单元,即:
[root@localhost ~]# rpm -ql samba | grep systemd/system
/usr/lib/systemd/system/nmb.service
/usr/lib/systemd/system/smb.service
答案2
您似乎正在尝试启动 Samba AD DC,但 smb.conf 不适用于 DC,可能适用于独立服务器。尝试“systemctl start smbd”