升级了 Fedora,现在 Samba 遇到麻烦:如何在 Fedora Server 32 上正确配置 Samba?

升级了 Fedora,现在 Samba 遇到麻烦:如何在 Fedora Server 32 上正确配置 Samba?

我用一个新的、全新的服务器替换了旧的服务器(因此,“替换”可能比“升级”更准确),但当然,我收集了所有旧的配置文件等,而我没有运行的唯一重要功能是 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 单元分别命名为smbnmb。要管理这些服务,请使用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”

相关内容