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