Я пользуюсь Raspberry Pi уже несколько недель и потратил много часов на настройку всего необходимого для моего университетского проекта.
Я хотел установить Samba и иметь все в виде сетевой папки. Я использовал sudo chown -R pi:pi /
.
Теперь мой sudo сломался и выводит сообщение sudo: effective uid is not 0, is sudo installed setuid root?
каждый раз, когда я его запускаю (например, sudo nano
).
Можно ли это исправить? Пожалуйста, помогите мне, чтобы мне не пришлось переустанавливать ВСЕ. Я даже не могу вспомнить, что я делал в последние недели... столько работы.
решение1
Запуск sudo chown -R pi:pi /
по сути нарушил права собственности на все файлы в вашей системе.
К сожалению, переустановка, вероятно, является самым простым вариантом в вашем случае. Было бы очень утомительно и подвержено ошибкам пытаться восстановить правильных владельцев вручную (предположительно, используя другой компьютер). Я рекомендую сделать образ хранилища Raspberry Pi перед переустановкой, чтобы после переустановки вы могли восстановить некоторые из сделанных вами изменений.
решение2
Бит setuid
в исполняемом файле означает, что рассматриваемый файл может изменить свой эффективный UID на идентификатор владельца, а не вызывающего/исполняющего пользователя.
Запустив его, sudo chwon -R pi:pi /
вы стали sudo
принадлежать пользователю pi
(ненулевой UID), и поэтому при sudo
проверке возможности изменения эффективного UID на 0 ( root
) он видит, что не может, поскольку он больше никому не принадлежит root
.
Вы можете попытаться исправить это, выполнив команду chown root:root
over sudo
, но система может сообщить, что у вас недостаточно прав для этого, поэтому переустановка может быть единственным выходом.
решение3
Самый простой подход — найти и сохранить все файлы, которые были изменены за «последние несколько недель», а затем переустановить их и повторно применить изменения.
- Загрузите аварийный диск.
- Найдите и сохраните «недавно» измененные файлы.
cd /mnt/root && tar czvf /mnt/usb/tarball.tgz --newer-mtime='2015-10-01 00:00:00' .
Убедитесь, что/mnt/root
это корневой каталог вашей системы Pi, а не корневой каталог диска восстановления, и что он/mnt/usb
находится в безопасном месте, например на USB-накопителе. - Переустановить
- Восстановите файлы, которые вы тщательно сохранили -
cd / && tar xzvf /root/tarball.tgz
- Перезагрузить