Чому Linux має як файл тіні, так і файл passwd? [дублювати]


1

На це запитання вже є відповідь:

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


1
Хоча це питання є дублікатом питання, зазначеного JakeGould, його початкова відповідь є неповною, оскільки захист хешу не є єдиною проблемою безпеки, див. Нижче.
MariusMatutiae

Відповіді:


4

Основною метою є захист хешей паролів користувача. The /etc/passwd Файл містить різноманітні дані про користувача, які повинні бути читаними по всьому світу. The /etc/shadow Файл можна прочитати лише root. Це просте розподіл прав доступу не дозволяє випадковим користувачам і «скриптовим дітям» бачити список хешей паролів користувачів і, можливо, хакерів цих хешей. Пам'ятайте, хеші не шифруються жодним чином і, таким чином, слабкіші.

В одній точці shadow Файл не існував і хеши користувачів зберігалися в passed файл як пояснюється у Вікіпедії :

У 1987 році автор оригіналу Люкс "Тінь Пароль" , Джулі   Хауг пережив комп'ютерний вхід і написав початковий реліз   з тіньового пакету, що містить login, passwd і su команд. Оригінальний реліз, написаний для операційної системи SCO Xenix   система, швидко потрапила на інші платформи. The Тіньовий люкс був   перенесено на Linux в 1992 році через рік після першого оголошення   Проект Linux, і був включений в багато ранніх дистрибутивів, і   продовжує входити до багатьох поточних дистрибутивів Linux.

Я пам'ятаю це, тому що публічна система Unix, на якій я працювала на початку 1990-х, оголосила про перехід на нову установку, де /etc/shadow були б деякі дискусії щодо того, чи це була гарна ідея чи ні.

Більше історії про Джулі Хог і про створення Люкс "Тінь Пароль" можна знайти тут :

У 1987 році я став жертвою комп'ютерного хакера і раптом знайшов   потрібно дізнатися все можливе про комп'ютерну безпеку. Я почав   вивчаючи загальні трюки, хакери використовувалися для прориву в системи і   закінчився написання Люкс "Тінь Пароль" . Зараз це дефакто   Стандартна розширена підсистема безпеки для вільних UNIX систем і є   ймовірно, використовується на більш ніж 100 000 системах у всьому світі. Я навіть писав і   на конференції USENIX. Якщо ти зацікавлений   у використанні Люкс "Тінь Пароль" у вашій власній системі, ви можете отримати   копіювати тут. Я написав і представив доповіді або обговорення на   кілька конференцій і з нетерпінням чекаємо зустрічі з вами   на конференції з безпеки деякий час у майбутньому.


4

Це питання безпеки. The /etc/passwd Файл використовується різними інструментами, тому він має бути загальнодоступним. Наприклад ls збігається з ідентифікатором користувача з іменем користувача, щоб відображати інформацію про права власності на файли в зручному для людини способі.

Замість цього /etc/shadow читається лише коренем. Незважаючи на малоймовірність того, що пароль може бути відновлений з хеша, що зберігається у файлі, все одно бажано захистити його від цікавих очей; також, інші поля є чутливими і, таким чином, вважаються необхідними для додаткового захисту: враховуйте насправді, що файл також зберігає:

Зміна останнього пароля: це поле позначає кількість днів, починаючи з UNIX часу (1-Jan-1970), сталася остання зміна пароля.

Мінімальна кількість днів між змінами пароля: Це поле означає мінімальну кількість днів, після яких користувач може змінити свій пароль.

Дійсність пароля: це поле позначає максимальну кількість днів, протягом яких пароль є дійсним. Після цього термін дії пароля закінчується, і користувачеві доведеться змінити пароль.

Поріг попередження: це поле означає кількість днів, до яких користувач отримає попередження про закінчення терміну дії пароля.

Обліковий запис неактивний: це поле означає кількість днів, після яких обліковий запис буде вимкнено, коли пароль закінчиться.

Час, коли обліковий запис вимкнено: це поле позначає кількість днів з часу UNIX, з якого обліковий запис вимкнено.

Вся ця інформація буде корисною для зловмисника, якщо вона буде доступною для них.


Так в основному маючи shadow тільки читається корінь це ще один рівень безпеки на додаток до того, що пароль зашифрований?
Celeritas

1
@Celeritas Так, дійсно. Але пароль не зашифрований: він хешируется. Чи варто розширювати це?
MariusMatutiae

1

The passwd Файл дійсно все ще має поле "пароль", що залишилося з перших днів, але все ще можна використовувати - наприклад, Linux має pwconv і pwunconv команди для об'єднання / розділення двох файлів. (Хоча це втратить додатково інформацію, яка також зберігається в shadow файл, наприклад, час закінчення рахунку.)

Я не зовсім впевнений у часовій шкалі; проте, AFAIK, спочатку shadow Файл був створений тому, що паролі взагалі не хешировались, тому паролі відкритого тексту мали бути захищені від прочитання простими смертними. ( Обмеження експорту на той час багато систем Unix не мали DES хешування паролів стало набагато пізніше.

(Пароль є хеш , не зашифровані; оскільки немає жодного прямого способу "зняти хеш" щось, система перевіряє пароль, перемішуючи його точно так само, і порівнюючи обидва хеша.)

Але навіть з хешованими паролями, додатковий рівень захисту залишається важливим. Не всі хеш-функції є достатньо сильними, щоб захистити короткий пароль - наприклад, однакова оригінальна DES-заснована "crypt ()" хеш-функція була сильною в той час, але вважається цілком слабкою в ці дні. (Деякі системи все ще використовують його!)

Linux crypt () тепер підтримує більшу різноманітність хеш-функцій, наприклад $1$ на основі SHA-1 або $5$ на базі SHA-256, але додали захист (солі, кратні раундів ) все ще не настільки хороші, як пізніші розробки PBKDF2 або bcrypt, і багато коротких хешей паролів все ще можуть бути зламані за короткий проміжок часу.

Аналогічно, Windows донині використовує a дуже слабка хеш-функція (лише один раунд MD4, без солі або будь-яких інших функцій безпеки). Він не може бути легко оновлений, оскільки старі протоколи мережної автентифікації Windows покладаються на нього, тому база даних повинна бути сильно захищена навіть від адміністраторів (щоб запобігти отриманню зловмисного програмного забезпечення).


1

Існує дуже просте пояснення для цього. passwd У файлі є багато цінних відомостей, де shadow файл містить encrypted пароль.

**passwd** Файл містить наступну інформацію

  1. Ім'я користувача
  2. Пароль (символ x)
  3. UserID (UID)
  4. GroupID (GID)
  5. Інформація про користувача
  6. Домашній каталог
  7. Оболонка користувача Де всі атрибути в shadow файл містить інформацію про пароль користувача, **shadow** Файл містить наступну інформацію:
  8. Ім'я користувача
  9. Пароль (зашифрований)
  10. Остання зміна пароля
  11. Мінімальні дні для зміни пароля користувачем
  12. Максимальна кількість днів для зміни пароля користувачем
  13. Попереджати (дні, коли починається попередження про зміну пароля)
  14. Неактивний Кількість днів після закінчення дії пароля для цього облікового запису вимкнено
  15. Закінчується абсолютна дата, що вказує, коли вхід більше не може бути використаний

інша відмінність passwd файл читається всім користувачем, де у випадку shadow тільки root може.


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