ошибка sudo, режим 0777, должен быть 0440


26

Я получаю ошибки sudo, как я могу исправить эту ошибку?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 

Как уже отмечали пользователи, использование chmod 0440 / etc / sudoers, когда файл sudoers.d / README содержит неправильный chmod, НЕ РАБОТАЕТ.
kentfx

Вы предлагаете, что, когда проблема в разрешениях /etc/sudoers.d/README, что ошибка все еще может сказать sudo: /etc/sudoers is mode 0777, should be 0440?
Элия ​​Каган

Ответы:


26

Первый вариант

После этого поста :

  1. Перезагрузить компьютер
  2. Когда появится экран выбора загрузки GRUB, выберите Recovery Mode. (Если он не появляется, нажмите Shiftклавишу, когда вы увидите загрузчик GRUB внизу).
  3. Должен появиться черный терминал, в этот момент вы можете запустить эту команду (у вас должны быть привилегии root):

    chmod 0440 /etc/sudoers
    

альтернативно

Вам нужно будет установить Ubuntu на LiveCD, загрузиться с LiveCD, смонтировать раздел Ubuntu на жесткий диск (откройте файловый браузер, например, Nautilus, и выберите раздел Ubuntu; или нажмите «Места» -> «Раздел xxGB / раздел Ubuntu»). «).

Затем откройте терминал в сеансе LiveCD и введите эти две команды:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

Лишние проблемы

Если есть какие-либо ошибки (как опубликовано ниже), следуйте инструкциям на экране и исправьте каждый файл, используя один из двух вышеуказанных шагов:

sudo apt-get update sudo: /etc/sudoers.d/README в режиме 0777, должно быть 0440

Исправить, выполнив с помощью:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

Обе эти команды должны использоваться соответствующим образом с описанными выше шагами. Они изменят права доступа к файлу, связанные с этим файлом. 0440 даст владельцу (root) и группе разрешения на чтение, а 0700 предоставит владельцу (root), права чтения, записи и выполнения.


Я могу использовать команду sudo, но ограниченно. sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698

@ Алекс: ESC для GRUB наследие, верно? Shift должен быть нажат для GRUB2.
Лекенштейн

@ user20698: вам не нужно sudoпервое, второе должно быть сделано с Live CD.
Лекенштейн

Если sudoers равно 0777, не должен ли пользователь работать chmod 0440 /etc/sudoersбез sudo, так как sudoers доступен для записи всем?
Сеппо Эрвиаля

2
@Seppo: нет, только владелец файла может изменять права доступа к файлу.
Лекенштейн

16

sudoв этой ситуации не работает, но pkexec(интерфейс командной строки для PolicyKit ) по-прежнему работает, так что вы можете исправить это с помощью одной команды. Перезагрузка не требуется.

pkexec chmod 0440 /etc/sudoers

Это предполагает, что PolicyKit установлен. Если это настольная система (а не сервер без графического интерфейса), это так.


4

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

chmod 0440 /etc/sudoers

Или, если вы не хотите перезапускать, вы можете использовать эту альтернативу:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

это изменит разрешение. Попробуйте, это будет работать.


1
Почему вы используете chmodодни файлы, 440а другие - 0440? Разве вы не должны использовать 0440равномерно? И почему вы меняете права доступа, /etc/sudoers.d/READMEкогда используете pkexecспособ, а не иначе? А как насчет других возможных файлов в /etc/sudoers.d?
Элия ​​Каган

1

Что вы сделали, чтобы получить эти ошибки?

  • Если вы сделали: sudo chmod -R 777 /etcвам нужен Live CD, чтобы это исправить.

    1. Загрузитесь с Live CD и выберите «Попробуйте»
    2. Смонтируйте свой раздел Ubuntu (или раздел, содержащий, /etcесли вы поместили /etcв отдельный раздел). Это можно сделать с помощью файлового браузера, такого как Nautilus или меню Places.
    3. Откройте терминал , перейдя в Приложения => Аксессуары => Терминал
    4. Определите папку вашего раздела Ubuntu, вы можете просмотреть содержимое смонтированных разделов с помощью ls -l /media. Возможно, это имя ubuntuили disk. На следующих шагах я приду ubuntu.
    5. В Терминале установите ограничения по умолчанию:

      sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
      sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
      
    6. Затем используйте Live CD в качестве контрольной точки для восстановления прав доступа к файлам. Приведенная ниже команда изменит права доступа к файлам для /etc/media/ubuntuиспользования /etcпапки на Live CD в качестве контрольной точки. Это изменит только разрешения для файлов ( -type f) и каталогов ( -type d) в одной файловой системе ( -xdev). Любые ошибки записываются в « ~/errors.logОшибки», например, «файл не найден» означает, что файл в системе установлен, но не найден на Live CD. Команда из шага 5 должна установить правильные разрешения для нее, но для достижения наилучших результатов лучше переустановить пакеты.

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. Теперь ~/errors.logгде-нибудь в безопасности (например, http://paste.ubuntu.com/ ), так что вы можете добавить его в качестве комментария к этому ответу, если у вас возникнут проблемы с приложениями.

1

В Ubuntu вы можете сначала ударить Ctrl+ Alt+, Tкоторый открывает терминал. После этого вы можете скопировать и вставить команду ниже с Ctrl+ Cи вставить в терминал с Ctrl+ Shift+ V.

pkexec chmod 0440 /etc/sudoers

0

Для меня, я должен был добавить еще один шаг к pkexecпредложениям, согласно этому , мне повезло, что у меня случилось 2 сеанса SSH, когда я сделал глупую ошибку:

  1. Откройте 2 терминала
  2. В терминале 2 запустите, echo $$чтобы получить PID
  3. Запустить pkttyagent --process PID_FROM_STEP2в терминале 2
  4. В терминале 1 запустите pkexec chmod 0440 /etc/sudoers
  5. В моем случае мне тоже пришлось бежать pkexec chown root:root /etc/sudoers
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.