Мне нужно было отредактировать файл .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
На этом этапе все файлы принадлежат корню. Вероятно, это то, что вам нужно, но некоторые файлы в / etc /
могут иметь другое право собственности. Если эти файлы также не принадлежат пользователю root в действующей системе, вы можете использовать их как ссылку для изменения разрешений в установленной системе:
shopt -s globstar
liveSystem = "/ и т. д."
cd / mnt / и т. д.
для файла в ** / *; делать
[-e "$ liveSystem / $ file"] &&
echo sudo chown --reference "$ liveSystem / $ file" "$ file"
сделанный
Если вы также изменили разрешения, сделайте следующее:
shopt -s globstar
liveSystem = "/ и т. д."
cd / mnt / и т. д.
для файла в ** / *; делать
[-e "$ liveSystem / $ file"] &&
echo sudo chown --reference "$ liveSystem / $ file" "$ file" &&
echo sudo chmod --reference "$ liveSystem / $ file" "$ file"
сделанный
Это просто напечатает, какая команда будет запущена. После того, как вы увидели, что это делает, и убедились, что это правильно, удалите echo
, чтобы он действительно запускал команды.
Теперь это будет перебирать все файлы, включая те, владельцем которых является root
в обоих каталогах, но это не имеет значения. Вы можете написать более сложный подход, но это того не стоит, поскольку это займет секунды.
Перезагрузите компьютер: все должно вернуться в нормальное состояние.
ВАЖНО : это не поможет, если вы установили что-то, чего нет в действующей системе и чьи файлы находятся в / etc
не принадлежат корню
. В этом случае вам нужно будет либо найти то, что вы установили, и переустановить его, либо вам может потребоваться переустановка системы.
Загрузитесь в режим восстановления и выполните следующие команды:
mount -o remount,rw -n /
chown -R root: /etc