Ответы:
Короче говоря: нет.
Вам нужно будет восстановить из резервной копии. (Некоторые инструменты резервного копирования могут иметь параметры только для восстановления только разрешений, другие могут отображать файлы резервных копий с их разрешениями, и вы можете использовать это для исправления вашей системы.)
Если у вас нет резервной копии, вам нужно все исправить вручную.
sudo chown -R user:user /
этого вполне вероятно, что система настолько плохо подключена, что вы не сможете восстановить ее из резервной копии.
chown
описано, вполне вероятно , что вы не будете в состоянии сделать что - либо перед установкой всей системы с нуля; система даже не имеет root
учетной записи и sudo
не будет работать. Вероятно, стоит попробовать загрузиться с однопользовательской оболочки, но не ожидайте, что она будет работать.
sudo
или даже su
будет продолжать функционировать , когда все его соответствующие файлы принадлежат user
другое дело (вероятно , не потому , что среди прочего бит SUID на ехе пропадут).
Только если вы знаете пользователя и группу владельцев каждого файла и каталога в вашем /
каталоге.
Даже тогда вы уже потеряли владение критически важными системными файлами, которые должны принадлежать пользователю root, включая sudo
команду. Возможно, вам понадобится смонтировать жесткий диск в другой системе - и помните, что другая система, скорее всего, не будет иметь тех же сопоставлений UID и GID, что и только что скопированная.
Сделайте копию всего жесткого диска, если можете, затем переустановите операционную систему. После того, как вы это сделаете, вы можете попробовать скопировать файлы обратно во вновь стёртую систему и восстановить их права собственности. Вы, вероятно, можете предположить (хотя и не на 100% достоверно), что все находящееся /home/foo
в собственности принадлежит пользователю foo
, и что каждый файл почтового спула /var/mail
принадлежит соответствующему пользователю (если у вас есть электронная почта в системе). Скорее всего, вы можете обойтись без восстановления большинства файлов, которые не находятся под /home
, в зависимости от того, что вы сделали с системой.
А затем начните культивировать привычку перепроверять любую команду, под которой вы работаете, sudo
прежде чем ударить Enter.
Если ваш дистрибутив основан на RPM, вы можете восстановить ТОЛЬКО файлы, установленные пакетами rpm.
Чтобы восстановить все разрешения пакета:
rpm --setperms -a
Для восстановления всего владельца пакета (пользователь / группа):
rpm --setugids -a
Если -a не запускается, вы можете выполнить цикл bash:
Для разрешений:
for x in $(rpm -qa); do rpm --setperms $x; done
Для владельца:
for x in $(rpm -qa); do rpm --setugids $x; done
Извлечено из: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html
Вы можете сохранить текущие версии, а затем проанализировать их, чтобы отменить, используя опцию -v.
chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log
Содержание будет:
changed ownership of `/tmp/some_file' from me:users to nobody:nobody
Используя ваш любимый язык сценариев и регулярные выражения, вы можете выполнить болезненный процесс их возврата (если необходимо).
Я настоятельно рекомендую не делать рекурсивный переход на /, так как вы выставите / etc / shadow или любой другой важный файл.
sudo chown -R user:user ..
может иметь тот же эффект, что и упомянутая здесь, если вы находитесь на один уровень ниже корня файловой системы. Не пытайтесь делать что-то подобное.