
我用來rsync
鏡像故障轉移伺服器上的多個資料夾。但是,我們的某些檔案(例如縮圖或全文索引)是由我們的應用程式在 Web 使用者(名為「nobody」)下產生的,並且預設具有限制性權限。
另外,我是透過 ssh 執行此操作,其中 root 存取被禁用,如果可能的話,我希望保持這種狀態。
有什麼合理的方法可以告訴 rsync 作為 sudo 運行嗎?或者我應該考慮更改文件權限?
答案1
你可以:
- 為應該讀取的資料建立一個新群組(透過 rsync),將 UID 新增至該群組和/或變更檔案和目錄的 GID 並設定適當的權限,這樣您就可以使用該使用者名稱使用 rsync
- 使用rsync-over-ssh 時獲取在伺服器端運行的確切命令行(提示,多次使用-v 並記住將“-v”從您獲得的命令行中取出)並使用SSH 公鑰身份驗證強制執行該特定操作指令(請參閱 sshd(8) 中的 AUTHORIZED_KEYS 檔案格式)
使用#2,您可以透過ssh 使用rsync 到root 用戶,並且仍然安全(請參閱sshd_config(5) 中的PermitRootLogin 無密碼),或者更好的是,您可以將兩者結合起來創建一個只能使用的非特權使用者使用特定的 rsync 命令列。
編輯:透過 ssh 發送身份驗證資料以獲取 root(例如,ssh 作為用戶,使用用戶密碼的 sudo)並不比直接 ssh 到 root 用戶(透過公鑰或透過好的密碼),恕我直言。
答案2
您可以透過以下方式指定作為遠端 rsync 命令運行的內容--rsync-path
- 例如:
rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst
答案3
您也可以使用rsync守護程式。但請注意,我在那裡描述的方式使得運行 rsync 守護程序的電腦上的任何人都可以存取模組名稱。
我還沒有深入研究它,但我無法以這種方式創建基於安全公鑰(因此無密碼)的設定。但是,可能有。