Владение хотя бы одним из ваших важных системных файлов неверно. Это плохо; Если это произошло со многими системными файлами (возможно, вы в какой-то момент выполнили большую sudo chown
команду с -R
флагом?), это может вызвать ряд других системных ошибок и нестабильностей. Так что если вы недавно установили Ubuntu , вы можете переустановить, как советует Адам Хиткот .
Но вам не нужно переустанавливать, чтобы решить эту проблему . Вместо этого просто исправьте владельца этого файла. Если после этого вы получите ошибки о других файлах, вы также можете их исправить (хотя вам, возможно, придется сообщить нам, что это за сообщения об ошибках, чтобы мы могли также рассказать, как их исправить).
sudo
не работает, но использованиеsudo
является одним из двух способов для администраторов выполнять действия от имени пользователя root в Ubuntu. Другой - это Polkit (который раньше назывался PolicyKit).
Запустите эту команду, которая использует Polkit (через pkexec
), чтобы изменить владельца /usr/lib/sudo/sudoers.so
обратно root
(то есть, UID 0):
pkexec chown root /usr/lib/sudo/sudoers.so
Затем попробуйте sudo
снова. Вы можете запустить что-нибудь тривиальное, например , и посмотреть, если вы получите сообщение об ошибке.sudo ls
Наконец, я рекомендую запустить, history
чтобы показать все команды, которые вы запускали. Надеемся, что в нем будут перечислены все команды, которые вы выполнили и которые изменили разрешения. Предполагая, что sudo
теперь все работает, я рекомендую опубликовать новый вопрос, включая вывод history
, чтобы получить помощь по отмене всех изменений владельца файла и разрешений, которые вы сделали.
Если pkexec
тоже не работает ...
Вы пытались, pkexec
и это не сработало. Поскольку ни sudo
Polkit, ни Polkit не работают для того, чтобы вы могли выполнять действия от имени пользователя root, вам придется загрузиться в режиме восстановления и получить оболочку root. Для этого Shiftпри загрузке компьютера удерживайте нажатой клавишу, чтобы получить видимое меню загрузки GRUB. Выберите запись, которая содержит режим восстановления слов (как правило, вы должны выбрать ближайший к началу, в котором есть эти слова). Затем вы получите меню, в котором у вас есть несколько опций - выберите опцию, чтобы перейти в корневую оболочку.
Подробные инструкции по доступу к корневой оболочке в режиме восстановления находятся здесь:
Как только у вас будет корневая оболочка, запустите:
chown root /usr/lib/sudo/sudoers.so
Если вы получили сообщение об ошибке, что файл или файловая система не могут быть изменены, перемонтируйте их readwrite:
mount -rw -o remount /
(Источник для идеи перемонтирования и как это сделать: это в основном несвязанный ответ .)
Затем, выполнив эту mount
команду, chown
снова запустите приведенную выше команду и посмотрите, работает ли она.
Как только вы закончите в режиме восстановления, вы можете перезагрузиться, запустив:
reboot
sudo
должен тогда сработать или хотя бы выдать какую-то другую ошибку.
Наконец, обратите внимание, что с учетом ошибок, которые вы показали, вполне вероятно, что многие файлы теперь имеют неправильное владение или разрешения. Было бы идеально, если бы вы могли выяснить, какие файлы вы изменили таким образом. Например, если вы могли бы выяснить, что это были все файлы в паре определенных папок, то можно было бы исправить полный объем недавних проблем, с которыми вы столкнулись.
Переустановка, безусловно, является вариантом, но особенно если все, что вы изменили, было владельцем (а не разрешениями, которые несколько сложнее реконструировать, поскольку они больше различаются), можно было бы просто рекурсивно установить разрешения обратно их первоначальным владельцам (вероятно, обычно root ) и полностью изменить ущерб.
Начало sudo
работы снова - это первый шаг. Надеюсь, что вышеупомянутая техника позволит вам сделать это.
pkexec
команду?