«Chown -R root /», как я ввернут?

8

Я случайно выполнил команду chown -R root /, пытаясь изменить права доступа к публичной папке моего приложения rails. Я полагал, что это изменило права доступа ко всем моим папкам в каталоге /. Итак, мой вопрос: насколько это опасно, на самом деле лучше вопрос, есть ли способ отменить это?

user1938700
источник
3
Это не может быть отменено автоматически, и да, это оказывает значительное влияние на вашу систему (включая, помимо прочего, различные домашние каталоги). Я надеюсь, у вас есть свежая резервная копия под рукой. Удачи.
Фредерик Хамиди
Существуют программы, которые проверяют вашу систему на наличие соответствующих разрешений и владения файлами. Я думаю, что tripwire есть или был ранним. Если у вас нет нескольких пользователей, вы можете спасти ситуацию, просто получив отчет и / или исправив с помощью такого инструмента.
минопрет
Также прочитайте приведенный ниже замечательный совет, который гласит: «не реагируйте так, чтобы это ухудшило ситуацию» и «не принимайте худшее». Или запомните эти важные общие шаги по устранению неполадок, используя версию шутки: Оператор службы экстренной помощи: «Не паникуйте, вы уверены, что ваш друг мертв?» Абонент: Bang "Да, к сожалению, он мертв".
minopret
В большинстве случаев в обычной системе вы сможете определить из группы файлов, кем должен быть владелец. Таким образом, findвсе файлы, принадлежащие root, где группа не подходит, и разбейте их все на пользователя, который соответствует группе. Регистрируйте ошибки и разбирайтесь с ними в индивидуальном порядке.
августа
Вы выполнили эту команду от имени root? (Я надеюсь, что нет ...)
Аксель

Ответы:

7

Один из способов смягчить проблему здесь (не решить, но помочь вам из дыры) - запустить процесс в аналогичной системе для сбора соответствующих прав владения файлами. Я ценю, что шансы на точное совпадение несколько невелики, но если оба варианта находятся на одном уровне с установленными схожими пакетами, возможно, вам повезет.

После того, как вы собрали права доступа к файлу в файл, вы можете запустить процесс в своей собственной системе, чтобы прочитать файлы и разрешения / владения из хорошего и заменить их на свой. У меня есть пара небольших домашних приложений для Linux, которые делают именно это.

Например

777*0*0*S*16*1334559119*1334532895*1361208513*/usr/lib32/*libgomp.so.1
644*0*0*F*67370*1359536382*1359374461*1359717843*/usr/lib32/*librt.a
644*0*0*F*59044*1334559119*1334532931*1355405098*/usr/lib32/*libgomp.so.1.0.0
644*0*0*F*1238*1359536382*1359374461*1359717843*/usr/lib32/*libBrokenLocale.a
777*0*0*S*17*1359536382*1359374460*1361208513*/usr/lib32/*libdl.so
644*0*0*F*905712*1334559116*1334533011*1355405098*/usr/lib32/*libstdc++.so.6.0.16
777*0*0*S*15*1333306601*1323929512*1361208513*/usr/lib32/*libbz2.so.1.0
777*0*0*S*24*1359536382*1359374460*1361208513*/usr/lib32/*libnss_files.so
644*0*0*F*1128*1359536382*1359374462*1359717843*/usr/lib32/*crt1.o

RWX * UID * GID * прочее * каталог * имя файла

Оговорка по Фрейду
источник
5

Прежде всего, остановите команду, если она все еще выполняется!

Теперь все будет принадлежать root, и это довольно проблематично.

Вы должны попытаться восстановить информацию из вашей последней резервной копии.

Также важно не перезагружать систему, прежде чем проверять все запущенные приложения и запускать их пользователем при загрузке. В противном случае некоторые из них могут не запуститься должным образом из-за проблем с разрешениями.

Удачи.

fedorqui
источник
3

Очень и не совсем.

«Очень» в том смысле, что если команда действительно прошла, ваша безопасность испорчена. Теперь вы не знаете, какие пути есть у каких владельцев, а кому и что разрешено делать.

«Не совсем» в том смысле - уверены ли вы, что вы были пользователем root, когда сделали это и выполнили ли команду до конца? Если вы отменили его, как только увидели, возможно, вам повезет, и ремонт может быть низким. Если вы не были пользователем root, эта команда не смогла бы это сделать, если вы не сделали что-то подобное sudo ....

Нет единого средства для этого. Если у вас есть резервная копия, вы можете восстановить ее. Возможно, вам придется проверить владельца в резервной копии и применить их. Если вы использовали средство проверки руткитов (скажем, rkhunter), он может иметь список самых основных прав собственности и, возможно, сможет исправить это. (Не совсем вероятно).

carlspring
источник
2

По крайней мере, в Fedora команда RPM имеет параметры --setpermsи --setugids, используя их, вы можете исправить большинство системных файлов, таких как rpm --setugids -a. Чтобы (несколько) исправить файлы для каждого пользователя, вы можете сделать для каждого chown -R user /home/user. Вероятно, будут остатки, которые не были исправлены вышеупомянутым, особенно если у вас есть какой-то сервер (web, ftp, другие), они должны будут обрабатываться один за другим.

Вероятно, другие распределения имеют аналогичные механизмы. Или сделайте полное обновление (т.е. установите все заново, как будто оно было каким-то образом повреждено. Хорошо, оно было каким-то образом повреждено.)

[Да, это еще один довольно жестокий способ Unix научить ничего не подозревающих пользователей внимательно рассматривать каждую команду перед нажатием клавиши ENTER и экономно использовать root . Считай, что тебя учили.]

vonbrand
источник
setuidи setgidразрешения должны быть установлены вручную. rpmне восстановит их.
jnas
1

Если вы используете OSX apple, предоставляет функцию восстановления в Disk Utilities, чтобы решить эту проблему. Если вы используете дистрибутив Linux, я вполне уверен, что вам придется заново редактировать все разрешения вручную. В любом случае, хлопайте руками и не делайте этого снова

Mrshll187
источник
Вероятно, вряд ли удастся полностью восстановиться от этого в Linux. Даже если вы можете заставить систему работать, вы, вероятно, пропустили что-то, что может вернуться вам позже, из-за нестабильности или уязвимости безопасности. Я бы сказал, что восстановление из резервной копии или перестроить подход, вероятно, необходимо.
Крис Кюль
0

К сожалению, я не знаю ни одного способа «отменить» его, но вы, вероятно, можете оставить системные файлы как принадлежащие root и восстановить все файлы в вашем $ HOME, которые будут принадлежать вам (и сделать то же самое для всех пользователей система). На этом этапе вы можете установить права доступа и / или владельца для каждого файла, который не находится в каталоге $ HOME, который нуждается в нем по мере его появления. Да, это боль, но я не думаю, что это легко исправить. Это то, что я бы сделал в любом случае.

Freedom_Ben
источник
0

Я бы сказал, что вы довольно "испорчены", как вы говорите. Лучший способ (и самый эффективный) - это переустановить и восстановить важные элементы из ваших хороших резервных копий. К сожалению, это не та ситуация, которая обычно имеет быстрое решение со счастливым концом. Удачи!

Якорь,
источник