Відповіді:
Коротше кажучи: ні.
Вам потрібно буде відновити з резервної копії. (У деяких інструментах резервного копіювання можуть бути налаштовані лише відновлення лише дозволу, інші можуть перелічити резервні файли з їх дозволами, і ви можете використовувати це для виправлення системи.)
Якщо у вас немає резервної копії, вам потрібно буде виправити все це вручну.
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 ..може мати той же ефект, що і вказана тут, якщо ви знаходитесь на одному рівні нижче кореня файлової системи. Не намагайтеся щось подібне.