Windows

升級 Fedora,現在 Samba 麻煩:如何在 Fedora Server 32 上正確配置 Samba?

  • August 3, 2020

我用一個全新的伺服器替換了我的老化伺服器,一個全新的建構,(所以也許“替換”會比“升級”更準確)但當然我收穫了所有舊的配置文件等,以及我唯一重要的功能不去是桑巴舞。

我已經為此工作了很多天,甚至今天升級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 安裝它!不,抱歉,不幸的是,它是短暫的。

為了明確這一點,我認為肯定smbd是需要的,但不,這些都不起作用:

# 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 安裝在這裡的 20 多年中,它提供了類似於 NFS 的完美服務,使用 Workgroup 範式為本地網路上的 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

好的,就是這樣——沒有別的了。我的意思是配置文件中沒有其他內容。配置文件中有很多東西被註釋掉了,但是,好吧,它被註釋掉了!

由於我不太明白的原因,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

您似乎正在嘗試啟動 Samba AD DC,但 smb.conf 不適用於 DC,可能用於獨立伺服器。嘗試’systemctl start smbd'

引用自:https://serverfault.com/questions/1028640