Установить себя как владельца /etc с командой chown, теперь получаю всевозможные ошибки
Мне нужно было отредактировать .config файл (который я точно знаю, не создает эти проблемы, просто чтобы прояснить это), и он не позволил бы мне сохранить его, поэтому я взял на себя ответственность /etc и все содержимое с командой chown -hR username /etc и это позволяет мне редактировать .config файл, но теперь всякий раз, когда я пытаюсь установить какие-либо пакеты или использовать какие-либо команды sudo, это не работает (я проверил ошибки в файле sudo в sudoers.d, и в этом не было ничего плохого).
Так как мне вернуть его предыдущему владельцу?
2 ответа
Так как некоторые из файлов в /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, В этом случае вам нужно либо найти то, что вы установили, и переустановить его, либо вам может потребоваться переустановить систему.
Загрузитесь в recovery и выполните следующие команды:
mount -o remount,rw -n /
chown -R root: /etc