Linux Professional Institute Learning Logo.
Перехід до основного вмісту
  • Головна
    • Усі ресурси
    • LPI Навчальні матеріали
    • Стати дописувачем
    • Видавничі партнери
    • Cтати видавничим партнером
    • Про нас
    • FAQ
    • Дописувачі
    • Дорожня карта
    • Контакти
  • LPI.org
5.1 Урок 1
Тема 1: Спільнота Linux та кар'єра у світі вільного програмного забезпечення
1.1 Розвиток Linux і популярні операційні системи
  • 1.1 Урок 1
1.2 Основні застосунки з відкритим кодом
  • 1.2 Урок 1
1.3 Відкрите програмне забезпечення та ліцензування
  • 1.3 Урок 1
1.4 ІКТ навички та робота в Linux
  • 1.4 Урок 1
Тема 2: Як знайти свій шлях у системі Linux
2.1 Основи командного рядку
  • 2.1 Урок 1
  • 2.1 Урок 2
2.2 Використання командного рядку для отримання допомоги
  • 2.2 Урок 1
2.3 Використання папок та перегляд списку файлів
  • 2.3 Урок 1
  • 2.3 Урок 2
2.4 Створення, переміщення та видалення файлів
  • 2.4 Урок 1
Тема 3: Потужність командного рядка
3.1 Архівація файлів через командний рядок
  • 3.1 Урок 1
3.2 Пошук та отримання даних з файлів
  • 3.2 Урок 1
  • 3.2 Урок 2
3.3 Перетворення команд у скрипт
  • 3.3 Урок 1
  • 3.3 Урок 2
Тема 4: Операційна система Linux
4.1 Вибір операційної системи
  • 4.1 Урок 1
4.2 Розуміння апаратного забезпечення комп'ютера
  • 4.2 Урок 1
4.3 Де зберігаються дані
  • 4.3 Урок 1
  • 4.3 Урок 2
4.4 Ваш комп'ютер у мережі
  • 4.4 Урок 1
Тема 5: Безпека та права доступу до файлів
5.1 Основи безпеки та визначення типів користувачів
  • 5.1 Урок 1
5.2 Створення користувачів та груп
  • 5.2 Урок 1
5.3 Керування дозволами та правами власності на файл
  • 5.3 Урок 1
5.4 Спеціальні папки та файли
  • 5.4 Урок 1
How to get certified
  1. Тема 5: Безпека та права доступу до файлів
  2. 5.1 Основи безпеки та визначення типів користувачів
  3. 5.1 Урок 1

5.1 Урок 1

Сертифікат:

Linux Essentials

Версія:

1.6

Розділ:

5 Безпека та дозволи на файли

Тема:

5.1 Основи безпеки та визначення типів користувачів

Урок:

1 з 1

Вступ

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

Основна безпека в системах Linux ґрунтується на основі засобів контролю доступу Unix, які, незважаючи на те, що їм майже п’ятдесят років, є досить ефективними в порівнянні з деякими популярними користувацькими операційними системами більш нових випусків. Навіть деякі популярні операційні системи, засновані на Unix, мають тенденцію “припускати спрощення” , які зосереджені на “легкому доступі” , тоді як Linux цього не робить.

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

Облікові записи

Безпека включає багато концепцій, одною з найпоширеніших є загальна концепція контролю доступу. Перш ніж вирішувати питання контролю доступу до файлів, як то право власності та дозволи, необхідно зрозуміти основні концепції облікових записів користувачів Linux, які поділяються на кілька типів.

Кожен користувач у системі Linux має обліковий запис, пов’язаний з ним, який окрім інформації для входу (наприклад, імені користувача та пароля) також визначає, як і де користувач може взаємодіяти з системою. Привілеї та засоби контролю доступу визначають “межі” , в яких кожен користувач може працювати.

Ідентифікатори (UIDs/GIDs)

Ідентифікатори користувача та групи (UID/GID, User Identifiers/Group Identifiers) є основними сформованими посиланнями на облікові записи. Ранні реалізації були обмежені 16-розрядними (значеннями від 0 до 65535) цілими числами, але системи 21-го століття підтримують 64-розрядні UID і GID. Користувачі та групи визначаються незалежно, тому один і той же ідентифікатор може означати як користувача, так і групу.

Кожен користувач має не тільки UID, а й основний GID. Основний GID для користувача може бути унікальним лише для цього користувача, і в кінцевому підсумку може не використовуватися іншими користувачами. Однак ця група також може бути групою, до якої входять багато користувачів. Окрім цих основних груп, кожен користувач може бути членом інших груп.

За замовчуванням у системах Linux кожен користувач призначається до групи з тим же ім’ям, що його ім’я користувача, і таким же GID, що його UID. Наприклад, створіть нового користувача з ім’ям newuser і, за замовчуванням, його групою за замовчуванням також є newuser.

Обліковий запис суперадміністратора

У Linux обліковим записом суперкористувача є root, який завжди має UID 0. Суперкористувача іноді називають системним адміністратором, і він має необмежений доступ та контроль над системою, включаючи інших користувачів.

Група за замовчуванням для суперкористувача має GID 0 і також називається root. Домашній каталог для суперкористувача - це виділений каталог верхнього рівня, /root, доступний лише самому користувачеві root.

Стандартні облікові записи користувачів

Усі облікові записи, крім root, технічно є звичайними обліковими записами користувачів, але в системі Linux розмовний термін обліковий запис користувача часто означає “звичайний” (непривілейований) обліковий запис користувача. Зазвичай вони мають наступні властивості, за деякими винятками:

  • UID, починається з 1000 (4 цифри), хоча деякі застарілі системи можуть починатися з 500.

  • Визначений домашній каталог, зазвичай підкаталог /home, залежить від локальної конфігурації системи.

  • Визначена оболонка входу. У Linux оболонкою за замовчуванням зазвичай є нова оболонка Борна, Bourne Again Shell (/bin/bash), хоча можуть бути доступні й інші.

Якщо обліковий запис користувача не має допустимої оболонки в своїх атрибутах, користувач не зможе відкрити інтерактивну оболонку. Зазвичай /sbin/nologin використовується як недійсна оболонка. Це може бути зроблено навмисно, якщо користувач буде автентифікований лише для окремих служб, ніж доступ до консолі або SSH, наприклад, лише доступ до Secure FTP (sftp).

Note

Щоб уникнути плутанини, термін обліковий запис користувача надалі застосовуватиметься лише до стандартних або звичайних облікових записів користувачів. Наприклад, системний обліковий запис буде використано для позначення облікового запису користувача Linux, який є системним обліковим записом користувача.

Системні облікові записи

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

Системні облікові записи відрізняються, але їх атрибути включають:

  • UID зазвичай менше 100 (2-значні) або 500-1000 (3-значні).

  • Домашній каталог відсутній або каталог, який зазвичай не знаходиться у директорії /home.

  • Немає дійсної оболонки входу (зазвичай /sbin/nologin), за рідкісними винятками.

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

Note

З точки зору LPI Linux Essentials, системні облікові записи мають UID <1000, з 2 або 3-значними UID (і GID).

Загалом, системні облікові записи повинні не мати дійсної оболонки входу. Інакше це було б порушенням безпеки у більшості випадків.

Службові облікові записи

Облікові службові записи зазвичай створюються, коли служби встановлені та налаштовані. Подібно до системних облікових записів, вони призначені для засобів, програм і служб, які не працюватимуть від імені суперкористувача.

Здебільшого в документації облікові записи системи та служби подібні й часто взаємозаміняють одне одного. Сюди входить розташування домашніх каталогів, які зазвичай знаходяться за межами каталогу /home, якщо вони взагалі визначені (облікові записи служб частіше мають домашній каталог ніж системні облікові записи), і відсутність дійсної оболонки для входу. Хоча чіткого визначення немає, основна відмінність між системними та службовими обліковими записами зводиться до UID/GID.

Системний обліковий запис

UID/GID <100 (2-значне) або <500-1000 (3-значне)

Обліковий запис служби

UID/GID >1000 (4+ цифри), але не “стандартний” або “звичайний” обліковий запис користувача, обліковий запис для послуг, з UID/GID >1000 (4+ цифри))

Деякі дистрибутиви Linux все ще мають попередньо зарезервовані облікові службові записи з UID <100, і їх також можна розглядати як системний обліковий запис, навіть якщо вони не створюються під час встановлення системи. Наприклад, у дистрибутивах Linux на основі Fedora (включаючи Red Hat) користувач веб-сервера Apache має UID (і GID) 48, очевидно, системний обліковий запис, незважаючи на наявність домашнього каталогу (зазвичай /usr/share/httpd або /var/www/html/).

Note

З точки зору LPI Linux Essentials, системні облікові записи мають UID <1000, а облікові записи звичайних користувачів – це UID >1000. Оскільки звичайні облікові записи користувачів > 1000, ці UID також можуть включати облікові записи служб.

Оболонки входу та домашні каталоги

Деякі облікові записи мають оболонку входу, тоді як інші не мають з метою безпеки, оскільки не потребують інтерактивного доступу. Оболонкою входу за замовчуванням у більшості дистрибутивів Linux є нова оболонка Борна або bash, але можуть бути доступні й інші оболонки, наприклад, оболонка C (csh), оболонка Корна (ksh) або оболонка Z (zsh). ).

Користувач може змінити свою оболонку входу за допомогою команди chsh. За замовчуванням команда виконується в інтерактивному режимі та відображає підказку, яка запитує, яку оболонку слід використовувати. Відповіддю має бути повний шлях до двійкового файлу оболонки, як показано нижче:

$ chsh

Changing the login shell for emma
Enter the new value, or press ENTER for the default
	Login Shell [/bin/bash]: /usr/bin/zsh

Ви також можете запустити команду в неінтерактивному режимі з параметром -s, за яким слідує шлях до двійкового файлу, наприклад:

$ chsh -s /usr/bin/zsh

Більшість облікових записів мають визначений домашній каталог. У Linux це, як правило, єдине місце, де цей обліковий запис користувача має гарантований доступ на запис, за деякими винятками (наприклад, тимчасові області файлової системи). Однак деякі облікові записи навмисно налаштовані так, щоб не мати доступу на запис навіть до власного домашнього каталогу з метою безпеки.

Отримання інформації про користувачів системи

Виведення основної інформації про користувача є звичайною повсякденною практикою в системі Linux. У деяких випадках потрібно буде змінити користувачів і підвищити привілеї для виконання привілейованих завдань.

Навіть користувачі мають можливість передивлятися атрибути та права доступу із командного рядка, використовуючи наведені нижче команди. Основна інформація в обмеженому контексті не є привілейованою операцією.

Вивести поточну інформацію про користувача в командному рядку дуже просто за допомогою команди id. Вихідні дані будуть відрізнятися залежно від вашого ідентифікатора входу:

$ id
uid=1024(emma) gid=1024(emma) 1024(emma),20(games),groups=10240(netusers),20480(netadmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

У попередньому переліку користувач (emma) має ідентифікатори, які розбиваються таким чином:

  • 1024 = Ідентифікатор користувача (UID), за яким слідує ім’я користувача (загальне ім’я або ім’я для входу) у дужках.

  • 1024 = основний ID групи (GID), за яким слідує назва групи (загальна назва) у дужках.

  • Список додаткових GID (імен груп), до яких також належить користувач.

Виведення інформації щодо останнього входу користувачів у систему, виконується за допомогою команди last:

$ last
emma     pts/3        ::1              Fri Jun 14 04:28   still logged in
reboot   system boot  5.0.17-300.fc30. Fri Jun 14 04:03   still running
reboot   system boot  5.0.17-300.fc30. Wed Jun  5 14:32 - 15:19  (00:46)
reboot   system boot  5.0.17-300.fc30. Sat May 25 18:27 - 19:11  (00:43)
reboot   system boot  5.0.16-100.fc28. Sat May 25 16:44 - 17:06  (00:21)
reboot   system boot  5.0.9-100.fc28.x Sun May 12 14:32 - 14:46  (00:14)
root     tty2                          Fri May 10 21:55 - 21:55  (00:00)
	...

Інформація, наведена в стовпцях, може відрізнятися, але ряд важливих записів в списку вище означає:

  • Користувач (emma) увійшов до системи через мережу (псевдо TTY pts/3) і все ще залишається у системі.

  • Вказано час поточного завантаження разом із ядром. У наведеному вище прикладі приблизно за 25 хвилин до входу користувача.

  • Суперкористувач (root) заходив до системи через віртуальну консоль (TTY tty2) близько середини травня.

Варіантом команди last є команда lastb, яка містить список усіх останніх невдалих спроб входу.

Команди who та w перераховують лише активних користувачів, що знаходяться у поточний час у системі:

$ who
emma  pts/3        2019-06-14 04:28 (::1)

$ w
 05:43:41 up  1:40,  1 user,  load average: 0.25, 0.53, 0.51
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
emma  pts/3     04:28    1:14m  0.04s  0.04s -bash

Обидві команди містять деяку однакову інформацію. Наприклад, один користувач (emma) увійшов у систему за допомогою псевдоттерміналу TTY (pts/3), а час входу – 04:28.

Команда w містить додаткову інформацію, а саме:

  • Поточний час і тривалість роботи системи.

  • Скільки користувачів підключено.

  • Середнє навантаження за останні 1, 5 та 15 хвилин.

І додаткова інформація для кожного активного сеансу користувача.

  • Виберіть загальний час використання ЦП (IDLE, JCPU і PCPU)

  • Поточний процес (-bash). Загальний час використання ЦП цього процесу є останнім елементом (PCPU).

Обидві команди мають додаткові параметри для відображення різноманітної додаткової інформації.

Переключення між користувачами і підвищення привілеїв

В ідеальному світі користувачам ніколи не потрібно буде підвищувати привілеї для виконання своїх завдань. Система завжди “просто працює” і все налаштовано на різний доступ.

На щастя для нас, Linux після встановлення працює так для більшості користувачів, які не є системними адміністраторами, незважаючи на те, що ця ОС завжди дотримується моделі безпеки найменших привілеїв.

Однак існують команди, які дозволяють підвищити привілеї, коли це необхідно. Дві найважливіших з них - su та sudo.

У більшості систем Linux сьогодні команда su використовується лише для підвищення привілеїв до рівня root, який є користувачем за замовчуванням, якщо ім’я користувача не вказано після імені цієї команди. Хоча цю команду можна використовувати для переходу до іншого користувача, це не є правильною практикою: користувачі повинні входити з іншої системи, через мережу, або фізичну консоль або термінал у системі.

emma ~$ su -
Password:
root ~#

Після введення пароля суперкористувача (root) звичайний користувач отримує оболонку суперкористувача (зверніть увагу на # в кінці командного рядку) і всі права суперкористувача (root).

Спільний доступ до паролів є неправильною практикою безпеки, тому в сучасній системі Linux має бути дуже мало потреби в команді su.

Символ долару ($) повинен завершувати підказку командного рядка для оболонки непривілейованого користувача, тоді як символ фунта (#) повинен завершувати підказку командного рядка для командної оболонки суперкористувача (root). Наполегливо рекомендуємо, щоб кінцевий символ будь-якої підказки ніколи не змінювався з цього “універсально зрозумілого” стандарту, оскільки ця специфікація використовується в навчальних матеріалах, включно з цим курсом.

Warning

Ніколи не перемикайтеся на суперкористувача (root), не передавши параметр оболонки входу (-). Якщо ОС або постачальник програмного забезпечення не вказує інше, коли потрібне su, завжди виконуйте su - з надзвичайно обмеженими винятками. Середовища користувача можуть спричинити небажані зміни конфігурації та проблеми при використанні режиму повних привілеїв в якості суперкористувача.

Яка найбільша проблема з використанням su для перемикання на суперкористувача (root)? Якщо сеанс звичайного користувача було скомпрометовано, пароль суперкористувача (root) може бути перехоплений. Ось в чому полягає різниця між “Змінити користувача” та “Зробити себе суперкористувачем”:

$ cat /sys/devices/virtual/dmi/id/board_serial
cat: /sys/devices/virtual/dmi/id/board_serial: Permission denied

$ sudo cat /sys/devices/virtual/dmi/id/board_serial
[sudo] password for emma:
/6789ABC/

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

Однак, використовуючи sudo, користувач вводить свій власний пароль, щоб підтвердити, хто він є. Якщо він був авторизований у конфігурації sudoers для виконання цієї команди з привілеями, з дозволеними параметрами, вона спрацює.

Tip

За замовчуванням перша авторизована команда sudo автентифікує наступні команди sudo протягом (дуже короткого) періоду часу. Цей період налаштовує системний адміністратор.

Файли контролю доступу

Майже всі операційні системи мають набір місць для зберігання засобів контролю доступу. У Linux це, як правило, текстові файли, розташовані в каталозі /etc, де повинні зберігатися файли конфігурації системи. За замовчуванням цей каталог доступний для читання всім користувачам системи, але доступний для запису лише для користувача root.

Основні файли, пов’язані з обліковими записами користувачів, атрибутами та контролем доступу:

/etc/passwd

У цьому файлі зберігається основна інформація про користувачів у системі, включаючи UID і GID, домашній каталог, оболонка тощо. Незважаючи на назву, паролі тут не зберігаються.

/etc/group

У цьому файлі зберігається основна інформація про всі групи користувачів у системі, такі як назва групи, GID та учасники групи.

/etc/shadow

Тут зберігаються паролі користувачів. Для безпеки вони хешовані.

/etc/gshadow

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

Warning

Ці файли не призначені для редагування і ніколи не повинні редагуватися безпосередньо. У цьому уроці розглядається лише інформація, що зберігається в цих файлах, а не редагування цих файлів.

За замовчуванням кожен користувач може зайти до /etc і прочитати файли /etc/passwd і /etc/group. Також за замовчуванням жоден користувач, крім root, не може читати файли /etc/shadow або /etc/gshadow.

Існують також файли, пов’язані з основним підвищенням привілеїв у системах Linux, такі команди як su та sudo. За замовчуванням вони доступні лише для користувача root.

/etc/sudoers

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

/etc/sudoers.d

Цей каталог може містити файли, які доповнюють налаштування у файлі sudoers.

З точки зору іспиту LPI Linux Essentials, просто знайте шлях та ім’я файлу конфігурації sudo за замовчуванням, /etc/sudoers. Його конфігурація виходить за рамки цих матеріалів.

Warning

Незважаючи на те, що /etc/sudoers є текстовим файлом, його ніколи не слід редагувати безпосередньо. Якщо потрібні якісь зміни до його вмісту, їх слід внести за допомогою утиліти visudo.

/etc/passwd

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

Типовий синтаксис рядка в цьому файлі такий:

USERNAME:PASSWORD:UID:GID:GECOS:HOMEDIR:SHELL

Де:

USERNAME

Ім’я користувача або логін (ім’я), наприклад, root, nobody, emma.

PASSWORD

Застаріле розташування хешу пароля. Майже завжди x, що вказує на те, що пароль зберігається у файлі /etc/shadow.

UID

Ідентифікатор користувача (UID), наприклад, 0, 99, 1024.

GID

Ідентифікатор групи (GID), наприклад, 0, 99, 1024.

GECOS

Список CSV інформації про користувача, включаючи ім’я, місцезнаходження, номер телефону. Наприклад: Emma Smith, 42 Douglas St, 555.555.5555

HOMEDIR

Шлях до домашнього каталогу користувача, наприклад /root, /home/emma тощо.

SHELL

Оболонка за замовчуванням для цього користувача, наприклад /bin/bash, /sbin/nologin, /bin/ksh тощо.

Наприклад, наступний рядок описує користувача emma:

emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555:/home/emma:/bin/bash
Розуміння поля GECOS

Поле GECOS містить три (3) або більше полів, розділених комою (,), відомий як список значень, розділених комами (CSV, Comma Separated Values). Хоча примусового стандарту немає, поля зазвичай розташовані в такому порядку:

ІМ'Я, МІСЦЕ РОЗТАШУВАННЯ, КОНТАКТНА ІНФОРМАЦІЯ

Де:

ІМ’Я

це “Повне ім’я” користувача або “Назва програмного забезпечення”, у випадку облікового запису служби.

МІСЦЕ РОЗТАШУВАННЯ

зазвичай це фізичне місцезнаходження користувача в будівлі, номер кімнати або контактний відділ чи особа у випадку облікового запису служби.

КОНТАКТНА ІНФОРМАЦІЯ

перелічує контактну інформацію, наприклад домашній чи робочий номер телефону.

Додаткові поля можуть містити додаткову контактну інформацію, наприклад, домашній номер або адресу електронної пошти. Щоб змінити інформацію в полі GECOS, скористайтеся командою chfn і дайте відповіді на запитання, як показано нижче. Якщо після імені команди не вказано ім’я користувача, ви зміните інформацію для поточного користувача:

$ chfn

Changing the user information for emma
Enter the new value, or press ENTER for the default
	Full Name: Emma Smith
	Room Number []: 42
	Work Phone []: 555.555.5555
	Home Phone []: 555.555.6666

/etc/group

Файл /etc/group містить поля, які завжди розділені двокрапкою (:), зберігаючи основну інформацію про групи в системі. Іноді його називають “файлом груп”. Синтаксис кожного рядка такий:

NAME:PASSWORD:GID:MEMBERS

Де:

NAME

це назва групи, наприклад,root, users, emma тощо.

PASSWORD

застаріле розташування додаткового хешу пароля групи. Майже завжди x, що вказує на те, що пароль (якщо визначено) зберігається у файлі /etc/gshadow.

GID

ID групи (GID), наприклад,0, 99, 1024.

MEMBERS

розділений комами список імен користувачів, які є членами групи, наприклад jsmith,emma.

У прикладі нижче показано рядок, що містить інформацію про групу students:

students:x:1023:jsmith,emma

Користувача не потрібно вказувати в полі членів групи, якщо група є основною групою для користувача. Якщо користувач зазначений у списку, це є зайвим, тобто функціональність не змінюється, вказаний він в групі чи ні.

Note

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

/etc/shadow

У наступній таблиці перелічено атрибути, які зберігаються у файлі /etc/shadow, який зазвичай називають "файлом тіні". Файл містить поля, які завжди розділені двокрапкою (:). Хоча файл містить багато полів, більшість із них виходять за рамки цього уроку, окрім перших двох.

Основний синтаксис рядку в цьому файлі:

USERNAME:PASSWORD:LASTCHANGE:MINAGE:MAXAGE:WARN:INACTIVE:EXPDATE

Де:

USERNAME

Ім’я користувача (так само, як в /etc/passwd), наприклад, root, nobody, emma.

PASSWORD

Односторонній хеш пароля, включаючи додавання солі. Наприклад: !!, !$1$01234567$ABC…​, $6$012345789ABCDEF$012…​.

LASTCHANGE

Дата останньої зміни пароля у днях після “епохи”, наприклад, 17909.

MINAGE

Мінімальний термін дії пароля у днях.

MAXAGE

Максимальний термін дії пароля у днях.

WARN

Період попередження до закінчення терміну у днях дії паролю.

INACTIVE

Максимальний термін дії пароля у днях після закінчення терміну дії.

EXPDATE

Дата закінчення терміну дії пароля у днях після епохи.

У наведеному нижче прикладі ви можете побачити зразок запису з файлу /etc/shadow. Зауважте, що деякі значення, такі як INACTIVE і EXPDATE, не визначені.

emma:$6$nP532JDDogQYZF8I$bjFNh9eT1xpb9/n6pmjlIwgu7hGjH/eytSdttbmVv0MlyTMFgBIXESFNUmTo9EGxxH1OT1HGQzR0so4n1npbE0:18064:0:99999:7:::

“Епохою” системи POSIX визначено опівніч (0000) за універсальним часом (UTC, Universal Coordinate Time) четвер, 1 січня 1970 року. Більшість дат і часу POSIX вказано в секундах з моменту “епохи” або в регістрі файлу /etc/shadow у днях після “епохи”.

Note

Файл тіні призначений для читання лише суперкористувачем і вибраними основними службами аутентифікації системи, які перевіряють односторонній хеш паролю під час входу або в інший час автентифікації.

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

В більшості випадків метод грубої сили потрібен для перебору хешів всіх комбінацій паролю, доки один не підійде. Щоб зменшити проблему зламу хешу пароля в одній системі, системи Linux використовують випадкову “сіль” для хешу кожного пароля користувача. Таким чином, хеш для пароля користувача в одній системі Linux зазвичай не буде таким, як в іншій системі Linux, навіть якщо пароль той самий.

У файлі /etc/shadow пароль може мати кілька форм. Ці форми зазвичай включають наступне:

!!

Це означає, що обліковий запис “вимкнено” (автентифікація неможлива), без збереженого хешу пароля.

!$1$01234567$ABC…​

“Вимкнений” обліковий запис (через початковий знак оклику) із попередньою функцією хешування, збереженими хеш-сіллю та хеш-рядком.

$1$0123456789ABC$012…​

“Ввімкнений” обліковий запис із збереженою хеш-функцією, хеш-сіллю та хеш-рядком.

Хеш-функції, хеш-сіль і хеш-рядок розташовані попереду і після символу долара ($). Довжина хеш-солі має становити від восьми до шістнадцяти (8-16) символів. Приклади трьох найпоширеніших:

$1$01234567$ABC…​

Хеш-функція MD5 (1) з прикладом довжини хешування вісім.

$5$01234567ABCD$012…​

Хеш-функція SHA256 (5) з прикладом довжини хеша дванадцять.

$6$01234567ABCD$012…​

Хеш-функція SHA512 (6) з прикладом довжини хеша дванадцять.

Note

Хеш-функція MD5 вважається криптографічно незахищеною з сучасним (2010-і роки і пізніше) рівнем ASIC і навіть загальною продуктивністю SIMD обчислень. Наприклад, Федеральні стандарти обробки інформації США (FIPS, Federal Information Processing Standards) не дозволяють використовувати MD5 для будь-яких криптографічних функцій, лише для обмежених випадків, але не для перевірки цілісності цифрових підписів або схожих цілей.

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

Вправи до посібника

  1. Розглянемо наступне виведення команди id:

    $ id emma
    uid=1000(emma) gid=1000(emma) groups=1000(emma),4(adm),5(tty),10(uucp),20(dialout),27(sudo),46(plugdev)

    У яких файлах зберігаються наступні атрибути?

    UID and GID

    Groups

    • Крім того, в якому файлі зберігається пароль користувача?

  2. Який із наведених нижче типів криптографії використовується за замовчуванням для локального зберігання паролів у системі Linux?

    • Асиметричний

    • Односторонній хеш

    • Симетричний

    • ROT13

  3. Якщо обліковий запис має ідентифікатор користувача (UID), за значенням менше ніж 1000, який це тип облікового запису?

  4. Як ви можете отримати список активних логінів у вашій системі та їх кількість?

  5. За допомогою команди grep ми отримали результат нижче з інформацією про користувача emma.

    $ grep emma /etc/passwd
    emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555,:/home/emma:/bin/ksh

    Заповніть пропуски таблиці відповідною інформацією, використовуючи результати попередньої команди.

    Ім’я користувача

    Пароль

    UID

    Основний GID

    GECOS

    Домашній каталог

    Оболонка

Дослідницькі вправи

  1. Порівняйте результати last з w і who. Які деталі відсутні в кожній із команд порівняно з іншими?

  2. Спробуйте виконати команди who та w -his.

    • Яку інформацію було видалено з виведення команди w з параметрами “no header” (-h) і “short” (-s)?

    • Яку інформацію було додано у вихідні дані команди w з опцією “ip address” (-i)?

  3. Який файл є файлом, що зберігає односторонній хеш пароля облікового запису користувача?

  4. Який файл містить список груп, членом яких є обліковий запис користувача? Яку логіку можна використати для складання списку груп, членом яких є обліковий запис користувача?

  5. Один або більше (1+) з наступних файлів за замовчуванням недоступні для читання звичайними непривілейованими користувачами. Який?

    • /etc/group

    • /etc/passwd

    • /etc/shadow

    • /etc/sudoers

  6. Як змінити оболонку входу поточного користувача на оболонку Корна (/usr/bin/ksh) у неінтерактивному режимі?

  7. Чому домашній каталог користувача root не розміщено в каталозі /home?

Підсумки

У цьому уроці ми відкрили для себе базу даних користувачів і груп Linux. Ми дізналися про найважливіші властивості користувачів і груп, включаючи їх імена та числові ідентифікатори. Ми також дослідили, як хешування паролів працює в Linux і як користувачів призначають до груп.

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

/etc/passwd

Всі атрибути POSIX облікового запису локального системного користувача, окрім хешу пароля, доступні для читання всіма.

/etc/group

Усі атрибути POSIX облікового запису локальної системи доступні всім.

/etc/shadow

Усі хеші паролів локальних системних користувачів (та інформація про закінчення терміну дії), недоступні для читання нікому (лише обраним процесам).

/etc/sudoers

Містить всю інформацію про підвищення/дозвіл локальних привілеїв системи за допомогою команди sudo.

На цьому уроці розглядались наступні команди:

id

Виводить реальні (або ефективні) ідентифікатори користувачів і груп.

last

Виводить список користувачів, які входили останніми.

who

Виводить список користувачів, які наразі ввійшли в систему.

w

Подібно до who, але виводить ще додаткову інформацію.

su

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

sudo

Змінює користувача (або суперкористувача), якщо у вас є на це права, поточний користувач вводить свій власний пароль (якщо потрібно), щоб підвищити привілеї.

chsh

Змінює оболонку користувача.

chfn

Змінює інформацію про користувача в полі GECOS.

Відповіді до вправ посібника

  1. Розглянемо наступне виведення команди id:

    $ id emma
    uid=1000(emma) gid=1000(emma) groups=1000(emma),4(adm),5(tty),10(uucp),20(dialout),27(sudo),46(plugdev)

    У яких файлах зберігаються наступні атрибути?

    UID and GID

    /etc/passwd

    Groups

    /etc/group

    • Крім того, в якому файлі зберігається пароль користувача?

      Хешований пароль користувача зберігається в /etc/shadow.

  2. Який із наведених нижче типів криптографії використовується за замовчуванням для локального зберігання паролів у системі Linux?

    За замовчуванням для зберігання паролів використовується односторонній хеш.

  3. Якщо обліковий запис має ідентифікатор користувача (UID), за значенням менше ніж 1000, який це тип облікового запису?

    Облікові записи з UID нижчим за 1000, як правило, є системними обліковими записами.

  4. Як ви можете отримати список активних логінів у вашій системі та їх кількість?

    Використовуйте команду w. Окрім списку всіх активних логінів, вона також покаже інформацію, таку як кількість користувачів, які ввійшли в систему, завантаження системи та час роботи.

  5. За допомогою команди grep ми отримали результат нижче з інформацією про користувача emma.

    $ grep emma /etc/passwd
    emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555,:/home/emma:/bin/ksh

    Заповніть пропуски таблиці відповідною інформацією, використовуючи результати попередньої команди.

    Ім’я користувача

    emma

    Пароль

    x - завжди має бути x для дійсного, активного входу користувача

    UID

    1000

    Основний GID

    1000

    GECOS

    Emma Smith,42 Douglas St,555.555.5555

    Домашній каталог

    /home/emma

    Оболонка

    /bin/ksh

Відповіді до дослідницьких вправ

  1. Порівняйте результати last з w і who. Які деталі відсутні в кожній із команд порівняно з іншими?

    Інструменти w та who виводять лише поточних користувачів, які ввійшли в систему, тоді як last також містить список користувачів, які відключилися. Команда w виводить інформацію про використання системи, а команда who – ні.

  2. Спробуйте виконати команди who та w -his.

    • Яку інформацію було видалено з виведення команди w з параметрами “no header” (-h) і “short” (-s)?

      Заголовок не друкується, що корисно для синтаксичного аналізу, і, відповідно, час входу та інформація про вибір ЦП не відображаються.

    • Яку інформацію було додано у вихідні дані команди w з опцією “ip address” (-i)?

      Ця команда виводить IP-адресу, замість того, щоб спробувати застосувати DNS-резольвер та вивести ім’я хоста. Опція w надає кращий результат при виведенні інформації за замовчуванням для команди last.

  3. Який файл є файлом, що зберігає односторонній хеш пароля облікового запису користувача?

    У файлі /etc/shadow зберігається односторонній хеш пароля облікового запису користувача, оскільки він не читається звичайним непривілейованим обліковим записом користувача, на відміну від файлу /etc/passwd.

  4. Який файл містить список груп, членом яких є обліковий запис користувача? Яку логіку можна використати для складання списку груп, членом яких є обліковий запис користувача?

    Файл /etc/group містить CSV-список імен користувачів, які зазначені в останньому полі “members” будь-якого рядка файлу.

    Будь-який рядок у файлі /etc/group, де користувач зазначений в останньому полі “members”, означатиме, що користувач є членом цієї групи - за умови правильного форматування (розділений CSV). Крім того, членство в основній групі користувача у файлі /etc/passwd також матиме відповідний запис у файлі /etc/group як для назви групи, так і для GID.

  5. Один або більше (1+) з наступних файлів за замовчуванням недоступні для читання звичайними непривілейованими користувачами. Який?

    • /etc/group

    • /etc/passwd

    • /etc/shadow

    • /etc/sudoers

      Файли /etc/shadow і /etc/sudoers за замовчуванням недоступні для читання, за винятком окремих служб або суперкористувача. Ці відповіді будуть залежати від систем та імен користувачів, які використовуються в лабораторії.

  6. Як змінити оболонку входу поточного користувача на оболонку Корна (/usr/bin/ksh) у неінтерактивному режимі?

    $ chsh -s /usr/bin/ksh
  7. Чому домашній каталог користувача root не розміщено в каталозі /home?

    Тому що обліковий запис root необхідний для усунення несправностей та виправлення помилок, які можуть включати проблеми файлової системи, пов’язані з каталогом /home. У таких випадках root має бути повністю функціональним, навіть якщо файлова система /home ще недоступна.

Linux Professional Institute Inc. Всі права захищені. Відвідайте веб-сайт навчальних матеріалів: https://learning.lpi.org
Ця робота ліцензована відповідно до міжнародної ліцензії Creative Commons Attribution-некомерційна-NoDerivatives 4.0.

Наступний Урок

5.2 Створення користувачів та груп (5.2 Урок 1)

Прочитайте наступний урок

Linux Professional Institute Inc. Всі права захищені. Відвідайте веб-сайт навчальних матеріалів: https://learning.lpi.org
Ця робота ліцензована відповідно до міжнародної ліцензії Creative Commons Attribution-некомерційна-NoDerivatives 4.0.

LPI є некомерційною організацією.

© 2022 Linux Professional Institute (LPI) - це глобальний стандарт сертифікації та організація підтримки кар'єри для професіоналів з відкритим вихідним кодом. Маючи понад 200 000 власників сертифікатів, це перший і найбільший в світі незалежний від постачальників орган з сертифікації Linux і з відкритим вихідним кодом. LPI має сертифікованих фахівців в більш ніж 180 країнах, здає іспити на декількох мовах і має сотні партнерів по навчанню.

Наша мета-надати економічні та творчі можливості для всіх, зробивши сертифікацію знань і навичок з відкритим вихідним кодом загальнодоступною.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Зв'яжіться з нами
  • Політика конфіденційності та Cookie-файлів

Помітили помилку або хочете допомогти поліпшити цю сторінку? Просимо дайте нам знати.

© 1999–2022 Linux Professional Institute Inc. Всі права захищені.