Установить себя как владельца /etc с командой chown, теперь получаю всевозможные ошибки

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

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

2 ответа

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

  1. Загрузитесь в работающую систему и смонтируйте раздел, содержащий /etc каталог. Например, если ваш / раздел /dev/sda1, вы бы сделали это из живой системы:

    sudo mount /dev/sda1 /mnt
    
  2. Установите право собственности на все файлы root:

    sudo chown -R root /mnt/etc
    
  3. На данный момент все файлы принадлежат пользователю 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 в обоих каталогах, но это не имеет значения. Вы могли бы написать более сложный подход, но это того не стоит, так как это займет несколько секунд.

  4. Перезагрузите машину: все должно вернуться к нормальной жизни.

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

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

mount -o remount,rw -n /
chown -R root: /etc
Другие вопросы по тегам