Я вошел в chmod -R 777 /usr/bin
, и теперь sudo не работает.
Это говорит sudo must be setuid root
.
В некоторых советах говорится, что он запускает chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
.
При вводе chown root:root /usr/bin/sudo
отображается ошибка opened in readonly mode
.
Несмотря на принятый статус, теперь я убежден , что этот ответ неверен . (Я надеюсь, что это скоро улучшится, после консультации с OP по поводу принятия.) Я думаю, что припоминаю, как другие говорили, что это сработало, но я считаю, что их проблемы были, по крайней мере, немного другими. Описанный здесь метод остается ценным в некоторых ситуациях, когда
chmod -R 777 / usr / bin
прерывается с помощью Ctrl + C или по другим причинам не завершается. Но как только это произойдет,pkexec
также будет отключен, и он не будет работать лучше, чемsudo
, как правильно прокомментировали Дэмиен Рош и Оли.
В настольной системе Ubuntu PolicyKit установлен, поэтому pkexec
можно использовать для восстановления неработающего исполняемого файла sudo
или файла sudoers
. Вам не нужно загружаться в режиме восстановления, и вам не нужно загружаться с live CD. Вам даже не нужно перезагружаться.
В этом случае выполните следующие команды:
pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo
См. этот вопрос для получения дополнительной информации.
Даже при запуске с live CD / Pendrive вы должны префикс вашей команды chmod
с помощью sudo
. Таким образом, ваши действия будут похожи на следующие:
sudo chmod 0755
для настройки разрешений Как определить, где смонтирован ваш диск: из окна терминала запустите mount
(без аргументов). Это перечислит все подключенные устройства. Проверьте указанный в списке тип
- вы можете пропустить все, не используя «настоящую файловую систему» (ваш диск, вероятно, использует ext3 или ext4 - вы наверняка можете пропустить такие вещи, как proc, sysfs и т.п.) . Если что-то звучит многообещающе (выглядит как / dev / sda1 на / media / sda1 type ext3
), проверьте его содержимое с помощью ls / media / sda1
, чтобы убедиться, что это так.
Если он не смонтирован, вы можете проверить с помощью записей / dev
, где может находиться диск (используя ls / dev / | grep '/ dev / sd
для проверки доступных устройств; ваш диск должен выглядеть как / dev / sdaX
, / dev / sdbX
или тому подобное - где X является числом). Сравните это со списком подключенных устройств. Если его там нет, попробуйте смонтировать его и проверьте его содержимое (как показано выше). Чтобы смонтировать его, сначала создайте точку монтирования, например sudo mkdir / mnt / mydisk
, затем попробуйте смонтировать устройство с помощью mount / dev / sda1 / mnt / mydisk
и проверьте его содержимое с помощью ls / mnt / mydisk
.
После того, как вы получите нужный диск, вы можете вернуться к изменению разрешений в вашем каталоге usr: sudo chmod 0755 /mnt/mydisk/usr[11110879 provided.[12176 providedNow you still may be возникнет проблема, если вы изначально выполняли команду
chmod
рекурсивно с параметром -R
. В этом случае вы можете попробовать исправить каждую запись вручную или сразу перейти к новой установке ...
Пытаясь установить разрешения для моих локальных скриптов, я нарушил разрешение sudo и по ошибке сменил владельца. Мне удалось вернуть права владения sudo на root, выполнив следующие действия:
Шаг 1: Переключитесь в режим восстановления ubuntu . Если вы не знаете о процессе, вы можете найти ответ здесь: https://askubuntu.com/a/172346/223901
Шаг 2: В режиме восстановления выберите root - Перейти к приглашению оболочки root
Шаг 3: Выполните следующие команды
mount -o remount,rw /
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
reboot
Подождите, пока ваша система загрузится в обычном режиме , и вы увидите, что sudo снова принадлежит root.
У меня мало знаний. Но эти шаги решили мою проблему даже без перезапуска компьютера. Выполните следующие действия:
su root
<enter root password>
cd /usr
chmod -R 755 *
Я думаю, что Мэт прав, вы должны быть пользователем root, чтобы добавить бит в / usr / bin, но, конечно, sudo не работает. Если у вас есть пароль root, вы можете использовать его для входа в систему как root, а затем исправить разрешения с помощью указанной выше команды. Однако, если вы этого не сделаете (и я тоже), вероятно, лучше всего:
Корень всегда имеет номер пользователя 0, поэтому root в любой системе может вносить изменения, разрешенные для root в других файловых системах.