升級 Fedora,現在 Samba 麻煩:如何在 Fedora Server 32 上正確配置 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 安裝它!不,抱歉,不幸的是,它是短暫的。為了明確這一點,我認為肯定
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 單元分別命名為
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
您似乎正在嘗試啟動 Samba AD DC,但 smb.conf 不適用於 DC,可能用於獨立伺服器。嘗試’systemctl start smbd'