Як повернути команду chown?


17

Якщо я біжу:

sudo chown -R user:user /

Чи можу я повернути його до того, що було до того, як я його запустив?


1
Так само, як попередження для інших: Наступна команда sudo chown -R user:user ..може мати той же ефект, що і вказана тут, якщо ви знаходитесь на одному рівні нижче кореня файлової системи. Не намагайтеся щось подібне.
перехожий51

Відповіді:


22

Коротше кажучи: ні.

Вам потрібно буде відновити з резервної копії. (У деяких інструментах резервного копіювання можуть бути налаштовані лише відновлення лише дозволу, інші можуть перелічити резервні файли з їх дозволами, і ви можете використовувати це для виправлення системи.)

Якщо у вас немає резервної копії, вам потрібно буде виправити все це вручну.


Після sudo chown -R user:user /цього, ймовірно, що система настільки сильно збита, що неможливо відновити її з резервної копії.
Кіт Томпсон

1
Якщо ви не можете відновити важливі частини своїх даних користувачів у цьому сценарії з резервної копії, ваша "резервна копія" насправді не є такою. Якщо ви не можете відновити всю ОС, ви все одно зможете повторно встановити базу та відновити після резервного копіювання. У цьому випадку, швидше за все, знадобиться живий компакт-диск або мережеве завантаження, але якщо ваша стратегія резервного копіювання не зможе відновитися після цього, це насправді недостатньо добре.
Мат

Мій попередній коментар був, ймовірно, незрозумілим. Функціонуючу систему можна відновити за допомогою самої системи. Після того, як ви зробили chownописано, цілком ймовірно , що ви не будете в змозі зробити що - небудь перед установкою всієї системи з нуля; система навіть не має rootоблікового запису і sudoне працюватиме. Напевно, варто спробувати завантажитися на однокористувацьку оболонку, але не сподівайтеся, що вона спрацює.
Кіт Томпсон

1
Кореневий обліковий запис не зник (це все ще UID 0); він просто не володіє жодними файлами, але root все одно обходить звичайні перевірки дозволів. Незалежно від того , sudoчи навіть suбуде продовжувати функціонувати , коли все його відповідні файли належать userінша справа (ймовірно , не тому , що серед іншого біт SUID на ехе пропадуть).
jw013

6

Тільки якщо ви знаєте користувачів та групових прав власності на кожен файл та каталог у вашому /каталозі.

Вже тоді ви вже клоубували право власності на критичні системні файли, яким потрібно володіти root, включаючи sudoкоманду. Можливо, вам потрібно буде встановити жорсткий диск на іншій системі - і пам’ятайте, що інша система, ймовірно, не буде мати такі ж відображення UID та GID, як та, яку ви просто клопотали.

Якщо можете, зробіть копію всього жорсткого диска, а потім перевстановіть операційну систему. Щойно ви зробите це, ви можете спробувати скопіювати файли назад у нещодавно стерту систему та відновити їх власність. Ви, ймовірно, можете припустити (хоча і не на 100% надійно), що все, що /home/fooзнаходиться під власністю, належить користувачеві foo, і що кожен файл котушки електронної пошти /var/mailзнаходиться у власності відповідного користувача (якщо у вас є електронна пошта в системі). Ви, ймовірно, можете піти без відновлення більшості файлів, які не знаходяться в /homeзалежності від того, що ви зробили з системою.

А потім почніть вирощувати звичку двічі перевіряти будь-яку команду, під яку ви запускаєтесь, sudo перш ніж потрапити Enter.


6

Якщо ваш дистрибутив на основі 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


1

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.