sudo: /usr/lib/sudo/sudoers.so должен принадлежать uid 0

10

Всякий раз, когда я пытаюсь сделать что-либо, что требует мой пароль, он возвращает это:

u7ur7l3@ubuntu:~$ sudo
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins
u7ur7l3@ubuntu:~$

Поэтому я не могу ничего установить из Центра программного обеспечения / менеджера пакетов или выполнить какие-либо команды в терминале, которые требуют мой пароль. Я могу войти в систему, но на этом все.

Я случайно изменил права доступа к некоторым файлам, затем изменил некоторые, пытаясь это исправить: /. Теперь я полностью потерян, что делать.

Вот что произошло, когда я попытался снова заставить sudo работать с помощью pkexec:

u7ur7l3@ubuntu:~$ pkexec chown root /usr/lib/sudo/sudoers.so
Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ExecFailed: Failed to execute program /usr/lib/dbus-1.0/dbus-daemon-launch-helper: Success 

u7ur7l3@ubuntu:~$ sudo ls
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0 sudo: fatal error, unable to load plugins

И чтобы изменить разрешения, я использовал Root Actions как сервис / плагин для дельфина, поэтому история не показывает изменения прав.

Я только что понял, что звуки больше не работают вообще. Когда я захожу в Phonon, моих настроек по умолчанию и устройств воспроизведения даже нет. Также у меня нет возможности выключиться, я могу только выйти или выйти.

7UR7L3
источник
Проблема со звуком и отключением - новая, так как вы запустили pkexecкоманду?
Элия ​​Каган
@Eliah Kagan, нет, я понял проблему со звуком, когда вошел в систему на своем компьютере, и понял проблему с выключением, когда вчера вечером выключал компьютер. В итоге я просто нажал кнопку питания.
7UR7L3
Я расширил свой ответ, чтобы предоставить инструкции, которые должны работать, хотя ни одна из них не работает sudoи PolicyKit (через pkexec).
Элия ​​Каган
2
su root chown -R root: root / usr / lib /

Ответы:

20

Владение хотя бы одним из ваших важных системных файлов неверно. Это плохо; Если это произошло со многими системными файлами (возможно, вы в какой-то момент выполнили большую 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и это не сработало. Поскольку ни sudoPolkit, ни Polkit не работают для того, чтобы вы могли выполнять действия от имени пользователя root, вам придется загрузиться в режиме восстановления и получить оболочку root. Для этого Shiftпри загрузке компьютера удерживайте нажатой клавишу, чтобы получить видимое меню загрузки GRUB. Выберите запись, которая содержит режим восстановления слов (как правило, вы должны выбрать ближайший к началу, в котором есть эти слова). Затем вы получите меню, в котором у вас есть несколько опций - выберите опцию, чтобы перейти в корневую оболочку.

Подробные инструкции по доступу к корневой оболочке в режиме восстановления находятся здесь:

Как только у вас будет корневая оболочка, запустите:

chown root /usr/lib/sudo/sudoers.so

Если вы получили сообщение об ошибке, что файл или файловая система не могут быть изменены, перемонтируйте их readwrite:

mount -rw -o remount /

(Источник для идеи перемонтирования и как это сделать: это в основном несвязанный ответ .)

Затем, выполнив эту mountкоманду, chownснова запустите приведенную выше команду и посмотрите, работает ли она.

Как только вы закончите в режиме восстановления, вы можете перезагрузиться, запустив:

reboot

sudoдолжен тогда сработать или хотя бы выдать какую-то другую ошибку.

Наконец, обратите внимание, что с учетом ошибок, которые вы показали, вполне вероятно, что многие файлы теперь имеют неправильное владение или разрешения. Было бы идеально, если бы вы могли выяснить, какие файлы вы изменили таким образом. Например, если вы могли бы выяснить, что это были все файлы в паре определенных папок, то можно было бы исправить полный объем недавних проблем, с которыми вы столкнулись.

Переустановка, безусловно, является вариантом, но особенно если все, что вы изменили, было владельцем (а не разрешениями, которые несколько сложнее реконструировать, поскольку они больше различаются), можно было бы просто рекурсивно установить разрешения обратно их первоначальным владельцам (вероятно, обычно root ) и полностью изменить ущерб.

Начало sudoработы снова - это первый шаг. Надеюсь, что вышеупомянутая техника позволит вам сделать это.

Элия ​​Каган
источник
Я следовал этим инструкциям, но когда я загрузился обратно в kubuntu, проблема все еще существовала. Та же ошибка. На данный момент, вероятно, проще просто переустановить. : /
7UR7L3
Кроме того, есть ли способ сделать что-то вроде этого: askubuntu.com/questions/9135/… чтобы сохранить все? Все вместе как сценарий псевдо-bash не будет работать, потому что задействован sudo, так что ...
7UR7L3
@ 7UR7L3 Это создаст резервную копию информации об установленных пакетах и большей части информации о системных настройках ваших программ. В сочетании с полной резервной копией вашего домашнего каталога, это должно позволить вам восстановить вещи в основном так, как они были, после удаления существующей системы и установки новой, да. Пожалуйста, всегда сохраняйте резервную копию всех действительно важных файлов (например, ваших документов). Если вам понадобится дополнительная информация об этой технике применительно к вашей ситуации, я предлагаю опубликовать новый вопрос (но я не против, если вы зададите его в комментариях).
Элия ​​Каган
Есть ли хороший способ сделать все это? У меня есть внешний диск емкостью 1 ТБ, на который я могу выполнить резервное копирование, но он не появится нигде, когда я подключу его. Он горит, показывая, что он работает, но ничего на экране не меняется, и он нигде не находится в дельфине , Затем, когда я получу эту работу, как мне сохранить все в ней. В диспетчере пакетов я мог сохранить установленные пакеты в текстовый документ, но это действительно все, что я решил сделать, чтобы сохранить информацию. Практически все другие решения включают sudo, который все еще не работает.
7UR7L3
@ 7UR7L3 Для резервного копирования файлов? Загрузитесь с живого CD / DVD или живого USB. Оттуда вы можете получить доступ к своим файлам и сохранить их на внешнем диске. Если ваш внешний накопитель также не отображается в действующей системе, то это совершенно отдельная проблема, с которой я, возможно, не смогу вам помочь и почти наверняка не смогу ограничиться комментариями. Поэтому, если это произойдет, я рекомендую опубликовать новый вопрос. Если вы прокомментируете здесь ссылку на новый вопрос, я обязательно посмотрю его и внесу свой вклад, если смогу.
Элия ​​Каган