
我已進行編輯/proc/fs/cifs/SecurityFlags
以允許我的 cifs 安裝正確安裝。 (我必須使用值 0x81。)
要編輯,SecurityFlags
我輸入modprobe cifs
,然後讓我看到/proc/fs/cifs
目錄(在輸入此命令之前我看不到它)。
重新啟動後,其中的值SecurityFlags
已重設為預設值,即 0x7。
如何永久設定它以便在重新啟動後保留 0x81 值?
答案1
編譯內核時將其設定為選項
/proc 是一個虛擬檔案系統,參見http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
/proc 非常特別,因為它也是一個虛擬檔案系統。它有時被稱為進程資訊偽檔案系統。它不包含“真實”文件,而是包含運行時系統資訊(例如係統記憶體、安裝的設備、硬體配置等)。因此,它可以被視為內核的控制和資訊中心。事實上,相當多的系統實用程式只是呼叫該目錄中的檔案。例如,「lsmod」與「cat /proc/modules」相同,而「lspci」是「cat /proc/pci」的同義詞。透過更改此目錄中的文件,您甚至可以在系統運行時讀取/更改核心參數 (sysctl)。
看https://www.kernel.org/doc/readme/Documentation-filesystems-cifs-README
SecurityFlags 控制安全協商和資料包簽署的標誌。認證(可以/必須)標誌(例如,對於NTLM和/或NTLMv2)可以與簽名標誌組合。另一方面,指定兩種不同的密碼雜湊機制(「必須使用」)沒有太大意義。預設標誌為 0x07007(允許 NTLM、NTLMv2 和封包簽署)。如果您希望允許使用較弱的密碼雜湊掛載到伺服器,則允許的最大標誌為 0x37037(lanman、純文字、ntlm、ntlmv2、允許簽章)。某些 SecurityFlags 需要啟用對應的 menuconfig 選項(例如,lanman 和純文字需要 CONFIG_CIFS_WEAK_PW_HASH)。目前啟用明文驗證還需要在安全標誌中啟用 lanman 驗證,因為 cifs 模組僅支援使用會話設定 SMB 的舊 lanman 方言形式傳送明文密碼。 (例如,對於使用純文字密碼進行身份驗證,請將 SecurityFlags 設定為 0x30030):
may use packet signing 0x00001
must use packet signing 0x01001
may use NTLM (most common password hash) 0x00002
must use NTLM 0x02002
may use NTLMv2 0x00004
must use NTLMv2 0x04004
may use Kerberos security 0x00008
must use Kerberos 0x08008
may use lanman (weak) password hash 0x00010
must use lanman password hash 0x10010
may use plaintext passwords 0x00020
must use plaintext passwords 0x20020
(reserved for future packet encryption) 0x00040
您可以使用安裝選項來覆蓋它
看https://www.samba.org/samba/docs/man/manpages-3/mount.cifs.8.html
sec= 安全模式。允許的值為:
沒有嘗試以空用戶身份連線(無名稱)
krb5 使用 Kerberos 版本 5 驗證
krb5i 使用 Kerberos 驗證和封包簽名
ntlm 使用 NTLM 密碼雜湊(預設)
ntlmi 使用帶有簽署的 NTLM 密碼雜湊(如果 /proc/fs/cifs/PacketSigningEnabled 開啟或伺服器需要簽章也可以是預設值)
ntlmv2 使用 NTLMv2 密碼哈希
ntlmv2i 使用 NTLMv2 密碼雜湊和資料包簽名
[注意此[sec參數]正在開發中,預計將在cifs核心模組1.40及更高版本中提供]
如果您需要協助,請發布您的掛載選項或 fstab 中的條目以及嘗試掛載時收到的錯誤訊息。
答案2
原海報,保羅·羅薩斯,能夠透過新增命令來解決問題rc.local
,並在中報告了解決方案這則評論和隨後的評論。
解決方案出現如下:
/etc/rc.d/rc.local
在文字編輯器中開啟。[請注意,該文件並不總是預設存在或使用在較新版本的 Ubuntu 上。
將這兩行新增至檔案中,以便每次 Ubuntu 啟動時,
cifs
都會載入模組(如果尚未載入)並將文字0x81
寫入「SecurityFlags」:modprobe cifs echo 0x81 > /proc/fs/cifs/SecurityFlags
儲存檔案並退出文字編輯器。
我這樣說是因為有關空格的資訊(包括我認為是兩個單獨命令之間的換行符)不可見在評論中,並且因為我相信完整路徑/proc/fs/cifs/SecurityFlags
而不僅僅是SecurityFlags
使用(或cd
在它之前添加了命令),否則解決方案將無法工作。
答案3
為了獲得更永久的解決方案,建議創建一個烏德夫規則來設定 SecurityFlags 的值。這將在每次載入 cifs 模組時設定該值。您可以在 /etc/udev/rules.d 中定義規則。
50-cifs-securityflags.規則:
# Set SecurityFlags to 0x81.
ACTION=="add", SUBSYSTEM=="module", KERNEL=="cifs", RUN+="/bin/sh -c 'echo 0x81 > /proc/fs/cifs/SecurityFlags'"
然後重新加載 udevudevadm control --reload-rules && udevadm trigger