Я недавно набрал команду
sudo chmod 777 -R /
после этого некоторые вещи, такие как
sudo -i
не работают нормально. Так что мне интересно, есть ли способ, которым я мог бы сбросить разрешения для папок в их исходное состояние?
Я недавно набрал команду
sudo chmod 777 -R /
после этого некоторые вещи, такие как
sudo -i
не работают нормально. Так что мне интересно, есть ли способ, которым я мог бы сбросить разрешения для папок в их исходное состояние?
Ответы:
Это можно вернуться из этой грязной ситуации.
Я снова запустил такой же вопрос (какая-то ошибка в сценарии, который я писал) и решил ее, но вам нужно обратиться за помощью к эксперту. Будьте очень осторожны!
Во-первых, мою ситуацию было проще разрешить, потому что у меня была система с двойной загрузкой (Ubuntu и моя старая установка Fedora), но запуск ОС с CD / DVD или USB-ключа должен делать то же самое.
MPOINT=/mount/ubuntu
Сначала я смонтировал свои файловые системы следующим образом (не забудьте создать точки монтирования):
mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home
Затем я запустил следующую команду (моя проблема была только в нескольких - критических - каталогах), чтобы скопировать разрешения из запущенной системы в грязную (фактически, в моем случае я установил систему Ubuntu в Virtual Box под Fedora и получил там разрешения)
find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh
И тогда я запустил скрипт restoreperms.sh.
Я снова смог загрузиться на Ubuntu.
Содержимое restoreperms.sh будет примерно таким:
(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
Я не тестировал его, но он должен работать и для владельцев, и для групп владельцев. Что-то вроде:
find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^
(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
Конечно, вы должны позаботиться о том, чтобы UID и GID были одинаковыми в обеих системах, но для пользователей и групп, связанных с системой, это не должно быть проблемой.
Редактировать:
Кроме того, настройка владельца обнуляет флаги SGID и SUID , что вызывает странные проблемы (например, вы не сможете выполнить sudo, если у вас нет разрешения 4755). Вы должны и должны устанавливать права только ПОСЛЕ настройки владельцев. СОХРАНИТЕ полную информацию о правах доступа к файлу вместе с информацией о владельце.
Rk:
Теперь у меня есть эти команды в cronjob, которые выполняются каждый день (могут быть недели), чтобы сохранить эту информацию. Это облегчит решение в следующий раз, но, разумеется, так как у меня сейчас, это никогда не повторится. ;-) Что-то вроде этого:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
Правильная (комбинированная) команда больше похожа на:
`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`
Обратите внимание, что может потребоваться дополнительная осторожность для учета скобок в именах файлов (например, в локалях), и что chown может молча сбрасывать биты setuid и setgid, установленные chmod. В последнем случае, который сломает, скажем, / bin / su и / usr / bin / sudo, вам может понадобиться поменять местами приведенные выше инструкции exec.
После восстановления sudo или выбора режима восстановления при загрузке
Можно восстановить целую систему, используя отсеки, которые проверяют целостность файлов и разрешения.
со страницы руководства:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
Переустанавливает пакеты с измененными файлами
или ограничен определенным путем, например /usr
:
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
или ограничено несколькими наборами путей, например: /sbin /etc /var
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var ) | cut -d : -f 1 | sort -u)
chmod a-x /bin/ping
и debsums -c
не сообщал об этом файле.
Всегда смотрите, что вы запускаете как sudo.
В этой ветке объясняется, что вы можете вручную установить некоторые разрешения, и скрипт помогает с этим, но все же это большая работа. Скорее следуйте советам в протекторе, чтобы сохранить установленные пакеты (маркировки) и переустановить ОС, а также применить маркировку сохраненных пакетов, чтобы вернуть ваши приложения.
Насколько я знаю, только пакеты System V и RPM предлагают команду для восстановления прав доступа к файлам. В System V (Solaris) это pkgchk, с RPM это rpm --setperms.
К сожалению, похоже, что для пакетов Debian / Ubuntu такой команды не существует, но я могу ошибаться.
Но даже с помощью этих команд не является простой задачей вернуть вашу систему в нормальное состояние, и, восстановив ее, вы можете легко нанести новый вред вашей системе - если вы не будете осторожны.
Кроме того, что сказал Иосиф, ты не первый, и ты не будешь последним, кто введет такую команду. Но сама по себе идея изменить права доступа к файлам на 777 в системе Unix является ярким свидетельством того, что вы не очень опытны с такой системой. Лучшее, что вы можете сделать в этой ситуации, - это сделать резервную копию того, что вам понадобится снова (домашние каталоги, файлы конфигурации, почтовые файлы?), И попробовать новую установку.
И вы должны быть очень, очень осторожны, когда восстанавливаете свои - поврежденные - резервные файлы.
Удачи!
PS: мне просто интересно, какую проблему вы хотели решить?
Вау, ты убил это. Он мертв! Попробуйте войти в систему и использовать компьютер в качестве пользователя root (поскольку вы его включили), а затем измените членство в группе пользователей root. Это может или не может работать, потому что я никогда не пробовал это раньше, но это стоит попробовать.
Вы не можете отменить chmod
операцию; по крайней мере, не в смысле отката к предыдущей настройке, к которой призывает эта ситуация. Возможно, вы можете отменить chmod
операцию, chmod
переведя каждый файл и каталог обратно в исходный режим - но они не все одинаковые; Определение оригинальных режимов довольно сложно (как обсуждалось в других ответах).