Як я можу повернути chmod у каталог etc?


9

Я випадково виконав таку команду в каталозі etc:

sudo chmod -R 700 /etc

Я знаю, що я зробив щось дуже неправильне. Зараз мій термінал друкує:

I have no name!@ubuntu: /$

Як я можу повернути свій каталог etc до його попереднього стану?

Я спробував змінити дозволи, але це зараз не вдається. Крім того, було б дуже корисно, якщо хтось може пояснити, що насправді пішло не так, коли я виконував цю команду і т. Д. Це були лише файлові дозволи. Тоді чому вся система здається повністю підірваною? Чому так не працює паролів для входу? Я знаю, що в каталозі etc є файл, який стосується користувачів. Але як зміна дозволів ставила під загрозу все? Деякі технічні деталі щодо цього були б дуже корисними.


3
Вам потрібен каталог ( ls -laR) з іншої запущеної системи. Яка версія ваша? Ви можете змінити каталоги на 755, а файли на 644, але деякі повинні мати різні режими (наприклад, / etc / shadow, наприклад).
ott--

4
Коли ви набираєте текст, sudoви повинні прочитати його в голові так: "Я надаю собі остаточну владу над моєю системою без захисної мережі, чи я впевнений, що я знаю, що роблю? Чи впевнений я, що ввів те, що мав на увазі?" перед натисканням return.
msw

1
За допомогою робочої системи ви можете використовувати find /etc -type d ! -perm 755 -exec ls -ld {} \;та find etc -type f ! -perm -644 -exec ls -l {} \;знаходити каталоги та файли з нестандартними режимами. У Debian це лише 2 каталоги та 39 файлів
ott--

"Але як зміна дозволів ставила під загрозу все?" - деякі речі, які потребували для читання цих файлів, зараз не мають дозволу на читання цих файлів.
користувач253751

Відповіді:


15

Одне пішло не так: використання sudoз цією командою. -RПеремикач вказує chmodрекурсивно встановити права доступу до цього каталогу, який, у всякому разі, не-рекомендований дію (якщо ми називаємо це: єресь) , якщо ви не знаєте , що ви робите (раз це трапилося зі мною, я не видав команду, але несправний графічний інтерфейс зробив її, і моя система вийшла з ладу).

Це були лише дозволи на файли. Тоді чому вся система здається повністю підірваною?

GNU / Linux дуже чутливий до дозволів на отримання файлів, оскільки він був створений з урахуванням стабільності та безпеки . Те саме стосується більшості програм, що працюють у GNU / Linux (тобто apache2скидає привілеї та користування root www-data, або подібного користувача, і ваш 700дозвіл не дозволяє йому читати / записувати власні файли).

Чому так не працює паролів для входу?

Як ви вже згадували, паролі для входу зберігаються у файлі, /etc/passwdі лише корінь (я вважаю, ви цього не змінили) може прочитати його, але підказка для входу (або GUI для входу в систему) використовує непривілейований обліковий запис, отже, він не може читати файл.

Але як зміна дозволів ставила під загрозу все?

Як сказано вище, Linux дуже чутливий до дозволів на отримання файлів. Деякі програми навіть перевіряють дозволи своїх файлів конфігурації, і якщо вони не очікуються, вони взагалі не працюватимуть.

Як я можу повернути свій каталог etc до його попереднього стану?

Якщо ви використовуєте дистрибутив на основі RPM, це можна зробити за допомогою rpm --setpermsкоманди, було б болісно повертати один за одним пакети, на Debian-подібній системі apt-get --reinstall install- ваш друг. Інші рішення можуть бути доступні, але для цього потрібна робоча система.


5

Подивимось, що ви зробили це встановлення дозволів у цілому / etc dir, оскільки читання / запис / виконання дозволено лише власнику файлу / dir, відмовленому всім іншим. Якщо вас плутають дозволи на файли, ви можете прочитати більше у Вікіпедії: Традиційні дозволи UNIX .

Причина, що ви підірвали вашу систему, полягає в тому, що багато процесів більше не можуть читати їх налаштування, не маючи доступу до / тощо. Відновити весь / etc dir до попереднього стану буде непросто. Як це зробити, буде залежати від вашого дистрибутива, але в основному це означає перевстановити кожен пакет, який містить будь-який файл в / etc.

В якості швидкої діапазонної допомоги, щоб мати можливість використовувати систему, щоб її правильно виправити (перевстановлення всіх пакетів із вмістом в / etc, як зазначено вище), ви можете зробити:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

За допомогою цих двох рядків ви встановлюватимете ліберальні дозволи у всьому / etc dir, з дозволом читання / запису для власника та групи, а читання дозволене для всіх інших. Причина двох chmod полягає у встановленні біта виконання тільки на dirs. Деякі процеси будуть скаржитися або не працювати навіть так, включаючи будь-який виконуваний файл у / etc, але ви повинні мати змогу виконати переустановку, яку я описав вище.

Будьте в курсі, ніж поки ви не відновите оригінальні дозволи, ваша система буде, принаймні, в незахищеному стані.


2
Крім того, деякі програми не працюватимуть; Наприклад, SSH вимагає обмежувальних дозволів на певні файли. /etc/sudoersінша.
Мел Бойс

1
Але деякі файли в цьому файлі /etcне повинні бути зрозумілими ніколи! Відновіть із резервних копій, тому у вас є їх (або саме тому люди закликають вас робити резервні копії).
tripleee

0

700 видалила доступ до безлічі файлів для груп та користувачів світу (наприклад, файли тепер мають rwx------дозволи). Наприклад, усі користувачі повинні мати можливість читати /etc/passwd. З вашим налаштуванням тепер може читати лише корінь /etc/passwd. Багато речей порушиться, якщо ви порушите дозволи на файли /etc/непередбачуваними способами.

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

Я пропоную відновити /etc/з резервної копії, якщо у вас є (переконайтесь, що відновлення повертає дозволи назад, або, якщо ваше резервне рішення підтримує його, відновіть лише дозволи).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.