Broken Sudo в Ubuntu 14.04 [dубликат]

У этого вопроса уже есть ответ здесь: Что делать, если я случайно запускаю команду & ldquo; chmod -R & rdquo; на системные каталоги (/, / etc, & hellip;) 7 ответов

Мне нужно было отредактировать файл .config (который, как я знаю, не создает эти проблемы, просто чтобы очистить это) и это не позволило мне сохранить его, поэтому я взял на себя права /etc и все содержимое с помощью команды chown -hR username /etc, и это позволило мне отредактировать файл .config, но теперь, когда я пытаюсь установить какие-либо пакеты или использовать любые команды sudo , он не работает (я проверял ошибки в файле sudo в sudoers.d, и в этом не было ничего плохого).

Итак, как мне вернуть его предыдущему владельцу?

7
задан 18 February 2017 в 15:23

4 ответа

Поскольку некоторые из файлов в /etc могут не принадлежать root, если вы хотите избежать переустановки, вы можете сделать следующее:

Загрузиться в живую систему и смонтировать раздел содержащий каталог /etc. Например, если ваш / раздел /dev/sda1, вы сделаете это из живой системы: sudo mount /dev/sda1 /mnt Установите права собственности на все файлы на root: sudo chown -R root /mnt/etc . В этот момент все файлы принадлежат root. Это, вероятно, то, что вам нужно, но некоторые файлы в /etc/ могут иметь разное право собственности. Если эти файлы также не принадлежат root в живой системе, вы можете использовать их в качестве ссылки для изменения разрешений для установленной системы: shopt -s globstar liveSystem="/etc" cd /mnt/etc for file in **/*; do [ -e "$liveSystem/$file" ] && echo sudo chown --reference "$liveSystem/$file" "$file" done Если вы также изменили разрешения, сделайте это вместо этого: shopt -s globstar liveSystem="/etc" cd /mnt/etc for file in **/*; do [ -e "$liveSystem/$file" ] && echo sudo chown --reference "$liveSystem/$file" "$file" && echo sudo chmod --reference "$liveSystem/$file" "$file" done Это будет просто распечатайте, какая команда будет запущена. После того, как вы увидели, что это делает, и удостоверились, что это правильно, удалите echo, чтобы он действительно запускал команды. Теперь это будет итерация по всем файлам, включая те, чья принадлежность root в обоих каталогах, но это не имеет значения. Вы могли бы написать более сложный подход, но это не стоит того, так как это займет несколько секунд. Перезагрузите компьютер: все должно быть верным.

ВАЖНО: это не поможет, если вы установили что-то, что не находится в живой системе и чьи файлы в /etc не принадлежат root. Если это так, вам нужно либо найти то, что вы установили, либо переустановить, либо вам потребуется переустановить систему.

10
ответ дан 18 July 2018 в 13:13

Загрузитесь в восстановление и выполните следующие команды:

mount -o remount,rw -n / chown -R root: /etc
3
ответ дан 18 July 2018 в 13:13

Поскольку некоторые из файлов в /etc могут не принадлежать root, если вы хотите избежать переустановки, вы можете сделать следующее:

Загрузиться в живую систему и смонтировать раздел содержащий каталог /etc. Например, если ваш / раздел /dev/sda1, вы сделаете это из живой системы: sudo mount /dev/sda1 /mnt Установите права собственности на все файлы на root: sudo chown -R root /mnt/etc . В этот момент все файлы принадлежат root. Это, вероятно, то, что вам нужно, но некоторые файлы в /etc/ могут иметь разное право собственности. Если эти файлы также не принадлежат root в живой системе, вы можете использовать их в качестве ссылки для изменения разрешений для установленной системы: shopt -s globstar liveSystem="/etc" cd /mnt/etc for file in **/*; do [ -e "$liveSystem/$file" ] && echo sudo chown --reference "$liveSystem/$file" "$file" done Если вы также изменили разрешения, сделайте это вместо этого: shopt -s globstar liveSystem="/etc" cd /mnt/etc for file in **/*; do [ -e "$liveSystem/$file" ] && echo sudo chown --reference "$liveSystem/$file" "$file" && echo sudo chmod --reference "$liveSystem/$file" "$file" done Это будет просто распечатайте, какая команда будет запущена. После того, как вы увидели, что это делает, и удостоверились, что это правильно, удалите echo, чтобы он действительно запускал команды. Теперь это будет итерация по всем файлам, включая те, чья принадлежность root в обоих каталогах, но это не имеет значения. Вы могли бы написать более сложный подход, но это не стоит того, так как это займет несколько секунд. Перезагрузите компьютер: все должно быть верным.

ВАЖНО: это не поможет, если вы установили что-то, что не находится в живой системе и чьи файлы в /etc не принадлежат root. Если это так, вам нужно либо найти то, что вы установили, либо переустановить, либо вам потребуется переустановить систему.

10
ответ дан 24 July 2018 в 20:07

Загрузитесь в восстановление и выполните следующие команды:

mount -o remount,rw -n / chown -R root: /etc
3
ответ дан 24 July 2018 в 20:07

Другие вопросы по тегам:

Похожие вопросы: