在 / 作為 root 下意外 chown

在 / 作為 root 下意外 chown

我不小心以 root 身份運行了以下命令, chown mike -Rf / backups 重點是我在 / 之間添加了一個空格並備份了我的錯誤,我在 1-2 秒後停止了該命令,我該如何恢復?我現在在使用 DirectAdmin 時遇到問題,例如在訪問它時收到錯誤:

Unable to determine Usertype
user.conf needs to be repaired
http://help.directadmin.com/item.php?id=456

或者我停止接收電子郵件,我什至不知道現在還有什麼問題...

答案1

由於系統不追蹤所有權的修訂,因此無法在不恢復備份的情況下將其變更回來。

最好是立即進行備份,以便可以回滾任何進一步的變更。

在系統上重新安裝軟體包可能可以解決大部分所有權問題。在 Debian/Ubuntu 上我會這樣做:

apt-get install --reinstall package

在一個rpm基礎系統上,類似rpm -Uvh --force package.rpm 任何造成麻煩的事情。如果正確設置,套件將不會覆蓋您更改的設定檔。

如果您有另一個類似的系統或備份,您可以從中檢索原始所有權資訊並將其應用於您的系統。首先列出您有興趣使用的文件和目錄:

find / -user mike

並使用該清單在備份或類似系統中尋找非邁克擁有的檔案。

答案2

這取決於您正在運行的作業系統。

如果是 Solaris 10 及更早版本,您可以使用以下命令修復影響屬於某個套件的檔案和目錄的所有擁有者問題:

pkgchk -f

對於 Solaris 11,這將是:

pkg fix

我相信 AIX 有類似的 package fix 指令。

如果您運行基於 rpm 的作業系統(Red Hat、Fedora 等),您應該能夠運行

rpm -aV

偵測與套件資料庫存在差異的檔案和目錄。然後您可以透過執行以下命令來修復它們:

rpm --setugids <package-name>

但您需要傳遞每個受影響的套件名稱。或者,您可以簡單地運行:

for package in $(rpm -qa); do rpm --setugids $package; done

如果您使用的是基於 debian 的作業系統,恐怕檔案所有權不會儲存在軟體包資料庫中,因此您需要使用備份(如果有)作為恢復所有權的參考,或者找到一個類似的系統來恢復所有權。

答案3

我犯了完全相同的錯誤,是句子末尾的印刷錯誤

chown -R root:root /folder/subfolder /

我沒有意識到斜線之前的空格:(

希望在這裡提問,最終我解決了這個問題,從另一個已安裝的 Debian 伺服器取得擁有者和群組。在該伺服器中,我做了:

find / -not -path '/proc/*' -not -path '/var/www/*' -not -path '/home/*' ! \(  -name root -o  -group root \) | xargs stat --format 'chown %U:%G %n' | sort -k 2,3 > chown_owner_and_group.sh
chmod +X chown_owner_and_group.sh

然後,我將檔案複製到需要還原檔案擁有者和檔案群組的伺服器,並執行以下操作:

./chown_owner_and_group.sh

答案4

恐怕您唯一的解決方案是與同一發行版的另一個安裝進行比較並正確重置所有者。

相關內容