文件系統權限:可以備份所有文件的使用者
我正在為網路上的某些電腦設置自動備份作業。有一台伺服器每天都會執行一個
rsync
命令來備份其他每台電腦。我希望rsync
作業執行的使用者能夠讀取每個人的主目錄(包括敏感文件,如加密的秘密 SSH 密鑰),但不能在系統上的任何地方寫入(除了/tmp
)。我還想防止普通使用者閱讀彼此的主目錄,尤其是敏感部分。我的第一個想法是創建一個僅由備份使用者組成的組。然後我會讓使用者
chgrp
將他們的文件放到備份組中。他們自己不是成員,他們將無法讀取彼此的文件,但備份使用者可以讀取他們想要備份的所有內容。但是,使用者不能
chgrp
加入他們不屬於的組。我無法將它們添加到組中,因為這將使使用者能夠讀取彼此的主目錄。我曾考慮在文件中為備份使用者提供一個
NOPASSWD
條目sudoers
,使他只能rsync
以 root 身份執行所需的確切命令,但如果我沒有正確設置它(如果有辦法製作符號連結),這似乎可能是災難性的例如,to/etc/sudoers
和 to 獲取將rsync
其用作目的地的命令)。
TL,DR:以 root 身份執行備份。通過 sudo授權精確命令沒有錯
rsync
,只要仔細查看參數即可;允許呼叫者指定參數是錯誤的。如果您希望備份使用者能夠讀取文件,請參閱允許使用者讀取其他使用者的主目錄該想法是創建文件系統的bindfs視圖,該使用者可以在其中讀取所有內容。
但是文件級別並不是解決這個特定問題的最佳級別。by 所做的備份的問題
rsync
在於它們不一致:如果使用者在備份file1
進行file2
時更改,但備份到達file2
之前file1
,則備份將包含舊版本file2
和新版本file1
。如果file2
是新版本的file1
andfile1
被刪除,則意味著這個文件根本不會出現在備份中,這顯然很糟糕。此問題的解決方案是創建文件系統的快照,並從中執行備份。
根據您的快照技術,可能有一種方法可以確保使用者可以讀取快照。如果沒有,請掛載快照並使用通用的基於文件系統的解決方案。而且即使有,rsync 還是有問題的,因為如果你以普通使用者的身份執行它,它將無法備份所有權。因此,如果您要備份多個使用者的目錄,則需要以 root 身份執行備份。