Linux

如何設置僅在 samba 訪問期間掛載的加密目錄?

  • October 19, 2021

(這不是關於限制客戶端訪問,ext3 權限可以解決這個問題)

我想以使用者友好的方式加密我的 NAS 驅動器(啟用 SSH 訪問的Buffalo LinkStation Pro ,如果這很重要)上的數據。目前,必須通過 SSH 手動安裝 truecrypt 容器並再次解除安裝(除非您解決了我的超時問題)。使用無密碼(但 EFS 加密)SSH 密鑰,這將減少為兩個 PuTTY 桌面快捷方式並輸入 truecrypt 密碼(直到進一步簡化)以進行安裝。

然而,理想的解決方案應該是透明的。我首先考慮嘗試以某種方式讓共享允許 EFS 加密,但這可能會涉及更多工作,並且對於沒有 Active Directory 伺服器的多個使用者來說 EFS似乎很麻煩

但現在我的想法是自動掛載,例如由授權使用者(使用 Windows 客戶端)的 samba 訪問自動觸發的 EncFS 加密目錄。怎樣才能做到這一點?(為未經授權的使用者顯示honeypot共享的獎勵積分……)

我看到了一個使用 Samba“登錄腳本”的解決方案草圖——在 samba 登錄後執行的客戶端程式碼——但是一個完整的解決方案需要用細節來完成這個草圖。與此相關的還有“preexec 腳本”——在 samba 登錄期間執行的伺服器端程式碼。

引用smb.conf 手冊頁

登錄腳本 (G)

此參數指定當使用者成功登錄時要下載並在電腦上執行的批處理文件 (.bat) 或 NT 命令文件 (.cmd)。該文件必須包含 DOS 樣式的 CR/LF 行結尾。推薦使用 DOS 風格的編輯器來創建文件。

腳本必須是相對路徑

$$ netlogon $$服務。如果$$ netlogon $$service指定路徑為/usr/local/samba/netlogon,logon script = STARTUP.BAT,則下載的文件為:

/usr/local/samba/netlogon/STARTUP.BAT

批處理文件的內容完全由您選擇。建議的命令是添加 NET TIME \SERVER /SET /YES,以強制每台機器與同一時間伺服器同步時鐘。另一種用途是為常用實用程序添加 NET USE U:\SERVER\UTILS,或

NET USE Q: \\SERVER\ISO9001_QA

例如。

請注意,不允許對

$$ netlogon $$共享,或授予使用者在安全環境中對批處理文件的寫入權限,因為這將允許任意修改批處理文件並破壞安全性。 此選項採用標準替換,允許您為每個使用者或機器擁有單獨的登錄腳本。

並且

預執行 (S)

此選項指定連接服務時要執行的命令。它需要通常的替換。

一個有趣的例子是在使用者每次登錄時向他們發送歡迎消息。也許是當天的消息?這是一個例子:

preexec = csh -c 'echo \"Welcome to %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' &

但是,在您的情況下,您確實需要登錄腳本(未加密的表單安裝在客戶端上),因此解決方案草圖可能涉及:

  1. 確保每台電腦都安裝了等效的 EncFS
  2. 編寫登錄腳本(.bat 格式),在客戶端呼叫 encfs 並提示使用者登錄。因此,encfs 命令在本地安裝未加密的表單,而遠端儲存保持加密狀態。
  3. 配置 smb.conf 以便相關使用者執行登錄腳本。例如類似的東西

登錄腳本 = runencfs.bat 4. 對於獎勵積分,您的登錄腳本可能會自動/提示安裝 Encfs(來自 samba 共享),並且只有在安裝時才執行安裝!

但是,由於 cmd 語言的存在,客戶端腳本肯定會讓您頭疼,確保安裝 encfs,以及解決 Windows 陷阱,如 Windows 8.1 及更高版本,除非另有配置,否則直到五分鐘後才執行登錄腳本

引用自:https://unix.stackexchange.com/questions/50550