Помилка судо, це режим 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, виберіть режим відновлення. (Якщо вона не з'являється, натисніть Shiftклавішу, коли ви побачите завантажувач GRUB внизу).
  3. Має з’явитися чорний термінал, в цей момент ви можете запустити цю команду (у вас повинні бути привілеї root):

    chmod 0440 /etc/sudoers
    

Як варіант

Вам доведеться поставити Ubuntu на LiveCD, завантажитися на LiveCD, встановити розділ Ubuntu на жорсткий диск (відкрийте браузер файлів, як Nautilus, і натисніть ваш Ubuntu Partition; або клацніть Місця -> "xxGB Partition / Ваш Ubuntu Partition ").

Потім відкрийте термінал в сеансі LiveCD і введіть ці дві команди:

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

Додаткові проблеми

Якщо є якісь помилки (як розміщено нижче), дотримуйтесь підказки про помилку та відповідно відрегулюйте кожен файл, використовуючи один із перелічених вище кроків:

sudo apt-get update sudo: /etc/sudoers.d/README - це режим 0777, має бути 0440 sudo: / var / lib / sudo, написаний невласником (040777), має бути режим 0700 [sudo] пароль для

Виправити за допомогою:

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
користувач20698

@Alex: ESC - це спадщина GRUB, чи не так? Зсув слід натиснути для GRUB2.
Лекенштейн

@ user20698: перший вам не потрібен sudo, другий слід зробити з Live CD.
Лекенштейн

Якщо sudoers є 0777, чи не може користувач працювати chmod 0440 /etc/sudoersбез судо, оскільки sudoers може бути написаний усіма?
Seppo Erviälä

2
@Seppo: ні, лише власник файлу може змінювати дозволи файлів.
Лекенштейн

16

sudoв цій ситуації порушено, але pkexec(командний рядок frontend до 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вам потрібен Живий компакт-диск, щоб відновити це.

    1. Завантажте живий компакт-диск та виберіть "Спробувати"
    2. Встановіть свій Ubuntu-розділ (або розділ, що містить, /etcякщо ви розмістили /etcокремий розділ). Це можна зробити за допомогою браузера файлів, наприклад Nautilus або меню Місця
    3. Відкрийте термінал , перейшовши до Applications => Accessories => Terminal
    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.