Я случайно выполнил следующую команду
sudo chown [username] -hR /
Теперь sudo su
появляется ошибка:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Как это решить?
Создайте резервную копию данных и переустановите.
Возможно, это выглядит чрезмерно, но это не только sudo
. Вы уничтожили структуру разрешений всей файловой системы. Некоторые другие ответы могут заставить работать sudo
, но игнорирование всей проблемы влечет за собой более позднюю катастрофу.
Вы можете попытаться отразить владельцев другой установки, но есть случаи ( / var /
например), которые сильно зависят от того, что вы на самом деле установили. Если вы хотите получить масштаб проблемы, Я действительно умел помогать кому-то решить эту проблему до . Исправление выполняется вручную, долго и может легко сделать вашу систему небезопасной или сломанной.
Устранение этого беспорядка займет значительно больше времени, чем чистая установка.
Это было несколько замечаний от людей, которые этого не делали. Не понимаю серьезности ситуации здесь. Для них это выглядит как большая куча ненужной работы, что-то вроде того, что говорит водопроводчик или механик, чтобы заставить вас встряхнуть для более серьезной работы.
Если вы только изменили разрешения на / usr / bin / sudo
, просто исправьте это. Но этот вопрос касается полного изменения системы. Каждый файл (за исключением файлов, предназначенных только для времени выполнения) теперь принадлежит пользователю. Все, что запускает пользователь (например, браузеры, эксплойты браузеров ), может затем перезаписывать системные файлы, шпионить за вами, извлекать любые данные. Это нужно исправить. Как указано выше, это сложно. Самый простой способ - переустановить.
Так что, пожалуйста, не ленитесь.Разрешения файловой системы помогут вам обезопасить себя, исправьте их.
Как вы прочтете в этот ответ на SO , эта проблема не так сложна, как люди ее решают. Вы можете снова запустить команду sudo
без переустановки , выполнив следующие простые шаги:
chown root: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo
Это помогает и намного быстрее и менее болезненен, чем "ядерный вариант", рекомендованный в других ответах.
Если ваш пароль root не установлен, вы можете загрузиться в режиме восстановления , чтобы установить его.
Обратите внимание, что это решит проблему титульная ошибка / usr / bin / sudo должен принадлежать uid 0 и иметь установленный бит setuid
, но, как и OP, вы сделали больше, чем испортили разрешения для / usr / bin / sudo
, более «ядерный» вариант может иметь больше смысла.
К сожалению, если у вас нет полной резервной копии, вероятно, лучшее, что вы можете сделать на этом этапе, - это переустановить.
Учтите, что вы изменили права собственности на все файлы на те же пользователь, полностью испортил парадигму безопасности вашей системы ....
Если вы выполните поиск по этому сайту, обнаружите много похожих проблем с chmod, например Как я могу восстановить с chmod -R a-wrx / команда?
Вышеуказанные методы у меня не сработало, потому что я не мог «войти в систему как root» (неизвестный пароль) Но я получил корневую оболочку, отредактировав
vi /etc/lightdm/lightdm.conf
autologin-user=root
greeter-show-manual-login=true
. После перезагрузки я наконец смог запустить
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
Мне не удалось отредактировать файл lightdm.conf
в работающей системе. Я исправил такие вещи:
/etc/lightdm/lightdm.conf
в установке sudo -H gedit / mnt /etc/lightdm/lightdm.conf
и добавьте следующие строки из ответа Anno2001
autologin-user = root
greeter-show-manual-login = правда
перезагрузка
команда запуска:
chown root: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo
Сменить пользователя по умолчанию в /etc/lightdm/lightdm.conf
(вы не хотите каждый раз автоматически входить в систему как root, что было бы очень небезопасно и опасно)
перейдите в режим восстановления, удерживая нажатой Esc во время загрузки системы.
выберите корневой параметр в длинном списке, который вы можете увидеть после входа в режим восстановления (на самом деле это root shell)
команда типа - mount -o remount /
(Или при восстановлении вы можете выбрать параметр grub. Это помогло мне получить разрешения на чтение и запись в файловой системе. Это в основном обновило чтение / режим записи в файловой системе, так как команда изначально не работала для меня)
Она перемонтирует вашу файловую систему в режиме чтения и записи.
команда - chown -R root: root / usr
эта команда рекурсивно сменит владельца с "user" на root
, теперь у меня все еще была проблема с командой sudo
, поэтому я снова выполнил шаги 1,2,3 и выполнил chmod 4755 / usr / bin / sudo
Теперь я действительно думаю, что переустановка была бы действительно "ядерным вариантом"
Я сменил / usr / lib / на root-владельца, но sudo выполняется только с root-логином в терминале.
шаг первый: su root шаг второй: cd / usr / lib шаг третий: chown -R root: root sudo
и все. Просто ВНИМАНИЕ: вы должны запускать su root каждый раз, когда хотите использовать sudo.
Была такая же проблема с моей каплей в цифровом океане.
sudo: / usr / bin / sudo
должен принадлежать uid 0
и иметь setuid
бит установлен.
Ниже приведены команды, которые выполняются и перезагружаются после.
chown -R root:root /usr/bin/sudo
chmod -R a=rx,u+ws /usr/bin/sudo
chown -R root:root /usr/lib/sudo/sudoer.so
chmod -R a=rx,u+ws /usr/lib/sudo/sudoer.so
Надеюсь, это поможет.