如何恢復大規模所有權變更?
可能重複:
我在伺服器上的
chown someuser * -R
時候不小心執行了。 我想也許通過發行會以某種方式解決它。但似乎有些問題。 例如,現在當我嘗試登錄時,DirectAdmin 的行為很奇怪。它說:/
chown root * -R
無法確定Usertype
user.conf 需要修復
有什麼辦法可以解決這種情況嗎?
**更新:**我想也許可以通過編寫一個檢查每個文件的組並相應地設置使用者的 shell 腳本來解決這個問題,因為據我所知,通常所有文件都具有相同的使用者和組值。
那是不幸的!
您發出的後一個命令所做的是將所有文件的所有權更改為 root。因此,任何設置為 suid(設置 UID,以便它們以所有者的權限執行)的文件都將以 root 權限執行,並且使用者將不擁有他們的主目錄。對此要非常小心。考慮使用 ls 搜尋此類文件,因為如果您的使用者有任何 suid shell 腳本或諸如此類的東西,這可能是一個嚴重的安全問題。
你面臨一個困難的局面;您現在必須確定誰應該擁有哪些文件,並手動分配它。在某些情況下,重建然後這樣做會更容易,特別是如果您備份了配置(我假設您備份了數據)。如果不這樣做,請立即將其全部備份,以便在重建時有參考。但是,如果您不介意有點不准確,這裡有一些簡單的規則:
- 使用者應該擁有其主目錄中的所有文件。對於每個使用者,
chown -R username ~username
.- 更改自己文件的服務通常應歸執行 Web 應用程序的使用者所有。雖然您可以對此進行配置,但如果您使用的是 apache,則該使用者通常稱為 apache。對於每個此類應用程序的 webroot
chown -R apache /path/to/webroot
,.- 同樣,將由服務更改的文件和目錄(例如上傳目錄)應該由服務執行的使用者擁有。對於他們每個人,
chmod -R username /path/to/filesystem/object
.- 屬於系統服務的 SSL 私鑰通常應該由 root 擁有(並且只能由所有者讀取)。它們的儲存位置差異很大,但在所有情況下,您或您的前任都將它們放在那裡。找到它們,並
chown root somefile.key
為每個。- 具有讀取權限僅限於所有者的配置文件的應用程序,但在刪除 root 後讀取這些文件,必須擁有這些文件(這聽起來像您的 DirectAdmin user.conf,可能,如果它聽起來像的話)。
chown username /path/to/file
.儘管如此,您應該考慮從備份中恢復使用者的主目錄,因為他們可能已經設置了各種權限並在其中擁有各種東西。這樣做將有助於避免開頭提到的安全風險。
您無法從組中推斷出所有者。例如,使用者主目錄中的文件通常具有所有權
username:users
。此外,許多文件都有一個可以編輯它們的特定所有者,以及一個可以讀取和執行它們的特定組,並且沒有其他使用者的權限。這也會導致奇怪的行為,或者只是失敗(組不需要對應於使用者)。祝你好運!如果您選擇不重建,從現在到永遠,如果您發現有關文件損壞或權限不正確的奇怪錯誤,您將不得不檢查所有權。