Linux

rsync 程序在不以 root 身份執行的情況下訪問它不擁有的文件的權限

  • May 26, 2016

我想使用 rsync 通過 ssh 從遠端網路伺服器進行自動備份。網路伺服器是用 suphp 配置的,所以不同的站點有不同的使用者和組的文件。不幸的是,Web 應用程序會生成一些沒有組或其他讀取權限的文件。

我只能看到兩個選項,一個都不好吃;要麼以 root 身份執行 rsync,要麼允許每個 Web 使用者進行 ssh 訪問,然後依次以每個 Web 使用者身份執行 rsync。

不幸的是,ACL 不起作用,因為當 Web 伺服器創建具有 600 權限的文件時,這會調整繼承的 ACL 遮罩以使其他使用者的有效權限為 000。

任何人都可以建議一種以最低可能權限執行 rsync 的方法,該方法仍然允許訪問沒有組或其他讀取權限的使用者文件。

謝謝

我有一個解決辦法,把問題轉過來。我沒有將數據從生產機器拉到備份機器,而是將數據從生產機器推送到備份機器。

這樣,我只需在生產機器上以 PHP 使用者身份執行 rsync,在備份機器上以備份使用者身份執行。備份使用者的 ssh 授權密鑰文件允許我進一步鎖定生產伺服器 IP 的訪問,並限制可以執行 rsync 的命令。

我可以看到 3 條線索,它們都不是很簡單。

  • 您可以在沒有 ssh 的情況下在 vpn 或 ssl 隧道中使用 rsync,這樣 rsync 程序將非常有限,具有隻讀共享。
  • 您可以執行數據的只讀綁定掛載,並在其中使用 rsync/ssh 數據。
  • 使用功能http://linux.die.net/man/7/capabilities,尤其是 CAP_DAC_READ_SEARCH 您的非特權程序應該能夠讀取所有內容。要更改 rsync 的功能,我會使用http://linux.die.net/man/8/setcap

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