Я случайно выполнил команду chown -R root /, пытаясь изменить права доступа к публичной папке моего приложения rails. Я полагал, что это изменило права доступа ко всем моим папкам в каталоге /. Итак, мой вопрос: насколько это опасно, на самом деле, лучший вопрос, есть ли способ отменить это?
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 * прочее * каталог * имя файла
Прежде всего, остановите команду, если она все еще выполняется!
Теперь все будет принадлежать root, и это довольно проблематично.
Вы должны попытаться восстановить информацию из вашей последней резервной копии.
Также важно не перезагружать систему, прежде чем проверять все запущенные приложения и запускать их пользователем при загрузке. В противном случае некоторые из них могут не запуститься должным образом из-за проблем с разрешениями.
Удачи.
Очень и не совсем.
"Очень" в том смысле, что если команда действительно прошла, ваша безопасность испорчена. Теперь вы не знаете, какие пути есть у каких владельцев, а кому и что разрешено делать.
"Не совсем" в том смысле - уверены ли вы, что вы были пользователем root, когда сделали это и выполнили ли команду до конца? Если вы отменили его, как только увидели, возможно, вам повезет, и ремонт может быть низким. Если вы не были пользователем root, эта команда не смогла бы этого сделать, если вы не сделали что-то вроде sudo ...
Нет единого средства для этого. Если у вас есть резервная копия, вы можете восстановить ее. Возможно, вам придется проверить владельца в резервной копии и применить их. Если вы использовали средство проверки руткитов (скажем, rkhunter), он может иметь список самых основных прав собственности и, возможно, сможет исправить это. (Не совсем вероятно).
По крайней мере, в Fedora команда RPM имеет параметры --setperms
и --setugids
, с помощью которых вы можете исправить большинство системных файлов, таких как rpm --setugids -a
. Чтобы (несколько) исправить файлы для каждого пользователя, вы можете сделать для каждого из них chown -R user /home/user
. Вероятно, будут остатки, которые не были исправлены вышеупомянутым, особенно если у вас есть какой-то сервер (web, ftp, другие), они должны быть обработаны один за другим.
Вероятно, другие дистрибутивы имеют аналогичные механизмы. Или сделать полное обновление (т.е. установить все заново, как будто оно как-то повреждено. ОК, это было как-то повреждено.)
[Да, это опять-таки довольно жестокий способ Unix научить ничего не подозревающих пользователей внимательно рассматривать каждую команду перед нажатием клавиши ENTER и экономно использовать root. Считай, что тебя учили.]
Если вы используете OSX apple, предоставляет функцию восстановления в Disk Utilities, чтобы решить эту проблему. Если вы используете дистрибутив Linux, я вполне уверен, что вам придется вручную переделать все разрешения. В любом случае, хлопайте руками и не делайте этого снова
К сожалению, я не знаю ни одного способа "отменить" его, но вы, вероятно, можете оставить системные файлы как принадлежащие пользователю root и восстановить все файлы в вашем $ HOME, которые будут принадлежать вам (и сделать то же самое для всех пользователей система). На этом этапе вы можете установить права доступа и / или владельца для каждого файла, который не находится в каталоге $ HOME, который нуждается в нем по мере его появления. Да, это боль, но я не думаю, что это легко исправить. Это то, что я бы сделал в любом случае.
Я бы сказал, что вы довольно "испорчены", как вы говорите. Лучший (и наиболее эффективный) способ - это переустановить и восстановить важные элементы из ваших хороших резервных копий. К сожалению, это не та ситуация, которая обычно имеет быстрое решение со счастливым концом. Удачи!