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

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

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

8
задан 18 February 2017 в 14:23

2 ответа

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

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

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

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

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

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

15
ответ дан 18 February 2017 в 14:23

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

mount -o remount,rw -n /
chown -R root: /etc
3
ответ дан 18 February 2017 в 14:23

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

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