Случайный chown под / как root

Случайный chown под / как root

Я случайно запустил следующую команду как root, chown mike -Rf / backups суть в том, что я добавил пробел между / и 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 есть похожая команда исправления пакетов.

Если вы используете ОС на основе 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

Боюсь, что единственное решение, которое у вас есть, — это сравнить с другой установкой того же дистрибутива и правильно сбросить владельцев.

Связанный контент