Я случайно запустил следующую команду как 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
Боюсь, что единственное решение, которое у вас есть, — это сравнить с другой установкой того же дистрибутива и правильно сбросить владельцев.