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