107.1 Урок 2
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
107 Адміністративні завдання |
Тема: |
107.1 Керування обліковими записами користувачів і груп і відповідними системними файлами |
Урок: |
2 з 2 |
Вступ
Інструменти командного рядка, розглянуті в попередньому уроці, і графічні програми, що надаються кожним дистрибутивом, які виконують однакові завдання, оновлюють ряд файлів, які зберігають інформацію про користувачів і групи.
Ці файли розташовані в каталозі /etc/
, а саме:
/etc/passwd
-
Файл із семи полів, розділених двокрапками, що містить основну інформацію про користувачів.
/etc/group
-
Файл із чотирма полями, розділеними двокрапками, що містить основну інформацію про групи.
/etc/shadow
-
Файл з дев’яти полів, розділених двокрапками, що містить зашифровані паролі користувачів.
/etc/gshadow
-
Файл із чотирма полями, розділеними двокрапками, що містить зашифровані паролі груп.
Хоча ці чотири файли є звичайним текстом, їх не слід редагувати безпосередньо, а завжди за допомогою інструментів, наданих дистрибутивом, який ви використовуєте.
/etc/passwd
Це доступний для читання файл, який містить список користувачів, кожен в окремому рядку. Кожен рядок складається із семи полів, розділених двокрапками:
- Ім’я користувача
-
Ім’я, яке використовується під час входу користувача в систему.
- Пароль
-
Зашифрований пароль (або
x
, якщо використовуються тіньові паролі). - ID користувача (UID)
-
Ідентифікаційний номер, присвоєний користувачеві в системі.
- ID групи (GID)
-
Номер основної групи користувача в системі.
- GECOS
-
Додаткове поле коментаря, яке використовується для додавання додаткової інформації про користувача (наприклад, повне ім’я). Поле може містити кілька записів, розділених комами.
- Домашній каталог
-
Абсолютний шлях до домашнього каталогу користувача.
- Оболонка
-
Абсолютний шлях до програми, яка автоматично запускається, коли користувач входить до системи (зазвичай це інтерактивна оболонка, наприклад
/bin/bash
).
/etc/group
Це доступний для читання файл, який містить список груп, кожна в окремому рядку. Кожен рядок складається з чотирьох полів, розділених двокрапками:
- Назва групи
-
Назва групи.
- Пароль групи
-
Зашифрований пароль групи (або
x
, якщо використовуються тіньові паролі).
ID групи (GID): Ідентифікаційний номер, присвоєний групі в системі.
- Список користувачів
-
Розділений комами список користувачів, які належать до групи, за винятком тих, для яких це основна група.
/etc/shadow
Це файл, доступний для читання лише адміністратору та користувачам із привілеями root, який містить зашифровані паролі користувачів, кожен в окремому рядку. Кожен рядок складається з дев’яти полів, розділених двокрапками:
- Ім’я користувача
-
Ім’я, яке використовується під час входу користувача в систему.
- Зашифрований пароль
-
Зашифрований пароль користувача (якщо значення починається з
!
, обліковий запис заблоковано). - Дата останньої зміни пароля
-
Дата останньої зміни пароля, вказується як кількість днів з 01/01/1970 (значення 0 означає, що користувач повинен змінити пароль під час наступного входу).
- Мінімальний вік пароля
-
Мінімальна кількість днів після зміни пароля, яка має пройти, перш ніж користувачеві буде дозволено змінити пароль знову.
- Максимальний вік пароля
-
Максимальна кількість днів, яка має пройти, перш ніж потрібно змінити пароль.
- Період попередження про пароль
-
Кількість днів до закінчення терміну дії пароля, протягом яких користувач отримує попередження про необхідність зміни пароля.
- Період неактивності пароля
-
Кількість днів після закінчення терміну дії пароля, протягом яких користувач повинен оновити пароль. Після цього періоду, якщо користувач не змінить пароль, обліковий запис буде відключено.
- Термін дії облікового запису
-
Дата, виражена як кількість днів з 01.01.1970, протягом яких обліковий запис користувача буде вимкнено (пусте поле означає, що термін дії облікового запису користувача ніколи не закінчиться).
- Зарезервоване поле
-
Поле, яке зарезервовано для майбутнього використання.
/etc/gshadow
Це файл, доступний для читання лише адміністратору та користувачам із привілеями адміністратора, який містить зашифровані паролі для груп, кожен в окремому рядку. Кожен рядок складається з чотирьох полів, розділених двокрапками:
- Назва групи
-
Назва групи.
- Зашифрований пароль
-
Зашифрований пароль для групи (використовується, коли користувач, який не є членом групи, хоче приєднатися до групи за допомогою команди
newgrp
— якщо пароль починається з!
, нікому не дозволено отримати доступ до групи за допомогоюnewgrp
). - Адміністратори групи
-
Список адміністраторів групи, розділених комами (вони можуть змінювати пароль групи та можуть додавати або видаляти учасників групи за допомогою команди
gpasswd
). - Члени групи
-
Список учасників групи, розділених комами.
Фільтрація бази даних паролів і груп
Дуже часто може знадобитися переглянути інформацію про користувачів і групи, що зберігається в цих чотирьох файлах, і знайти конкретні записи. Щоб виконати це завдання, ви можете скористатися командою grep
або об’єднати cat
і grep
.
# grep emma /etc/passwd emma:x:1020:1020:User Emma:/home/emma:/bin/bash # cat /etc/group | grep db-admin db-admin:x:1050:grace,frank
Іншим способом доступу до цих баз даних є використання команди getent
. Загалом ця команда відображає записи з баз даних, які підтримуються бібліотеками Name Service Switch (NSS), і вимагає імені бази даних і ключа пошуку. Якщо ключовий аргумент не надано, відображаються всі записи у вказаній базі даних (якщо база даних не підтримує перерахування). В іншому випадку, якщо надано один або кілька ключових аргументів, база даних фільтрується відповідно.
# getent passwd emma emma:x:1020:1020:User Emma:/home/emma:/bin/bash # getent group db-admin db-admin:x:1050:grace,frank
Команда getent
не потребує прав root; вам просто потрібно мати можливість читати базу даних, з якої ви хочете отримати записи.
Note
|
Пам’ятайте, що |
Вправи до посібника
-
Подивіться на наступні вихідні дані і дайте відповідь на такі запитання:
# cat /etc/passwd | grep '\(root\|mail\|catherine\|kevin\)' root:x:0:0:root:/root:/bin/bash mail:x:8:8:mail:/var/spool/mail:/sbin/nologin catherine:x:1030:1025:User Chaterine:/home/catherine:/bin/bash kevin:x:1040:1015:User Kevin:/home/kevin:/bin/bash # cat /etc/group | grep '\(root\|mail\|db-admin\|app-developer\)' root:x:0: mail:x:8: db-admin:x:1015:emma,grace app-developer:x:1016:catherine,dave,christian # cat /etc/shadow | grep '\(root\|mail\|catherine\|kevin\)' root:$6$1u36Ipok$ljt8ooPMLewAhkQPf.lYgGopAB.jClTO6ljsdczxvkLPkpi/amgp.zyfAN680zrLLp2avvpdKA0llpssdfcPppOp:18015:0:99999:7::: mail:*:18015:0:99999:7::: catherine:$6$ABCD25jlld14hpPthEFGnnssEWw1234yioMpliABCdef1f3478kAfhhAfgbAMjY1/BAeeAsl/FeEdddKd12345g6kPACcik:18015:20:90:5::: kevin:$6$DEFGabc123WrLp223fsvp0ddx3dbA7pPPc4LMaa123u6Lp02Lpvm123456pyphhh5ps012vbArL245.PR1345kkA3Gas12P:18015:0:60:7:2:: # cat /etc/gshadow | grep '\(root\|mail\|db-admin\|app-developer\)' root:*:: mail:*:: db-admin:!:emma:emma,grace app-developer:!::catherine,dave,christian
-
Що таке ідентифікатор користувача (UID) та ідентифікатор групи (GID) для
root
іcatherine
? -
Як називається первинна група
kevin
? Чи є інші члени цієї групи? -
Яка оболонка встановлена для
mail
? Що це означає? -
Хто є членами групи
app-developer
? Хто з цих учасників є адміністраторами групи, а хто звичайними? -
Який мінімальний термін дії пароля для
catherine
? І який максимальний термін служби пароля? -
Який період неактивності пароля для
kevin
?
-
-
За домовленістю, які ідентифікатори призначаються системним обліковим записам, а які звичайним користувачам?
-
Як дізнатися, чи обліковий запис користувача, який раніше мав доступ до системи, тепер заблоковано? Припустимо, що ваша система використовує тіньові паролі.
Дослідницькі вправи
-
Створіть обліковий запис користувача під назвою
christian
за допомогою командиuseradd -m
і визначте його ідентифікатор користувача (UID), ідентифікатор групи (GID) і оболонку. -
Визначте назву первинної групи
christian
. Який висновок ви можете зробити? -
Використовуючи команду
getent
, перегляньте інформацію про старіння пароля для облікового запису користувачаchristian
. -
Додайте групу
editor
до вторинних групchristian
. Припустимо, що ця група вже міститьemma
,dave
іfrank
як звичайні члени. Як перевірити, що для цієї групи немає адміністраторів? -
Виконайте команду
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
та опишіть результат, який вона надає вам у термінах прав доступу до файлів. Які з цих чотирьох файлів затінені з міркувань безпеки? Припустімо, що ваша система використовує тіньові паролі.
Підсумки
На цьому уроці ми дізналися:
-
Розташування файлів, які зберігають інформацію про користувачів і групи.
-
Керування інформацією про користувачів і групи, що зберігається в базах даних паролів і груп.
-
Отримання інформації з баз даних паролів і груп.
У цьому уроці обговорювалися такі файли та команди:
/etc/passwd
-
Файл, що містить основну інформацію про користувачів.
/etc/group
-
Файл, що містить основну інформацію про групи.
/etc/shadow
-
Файл із зашифрованими паролями користувачів.
/etc/gshadow
-
Файл, що містить зашифровані паролі груп.
getent
-
Фільтрування бази даних паролів і груп.
Відповіді до вправ посібника
-
Подивіться на наступні вихідні дані і дайте відповідь на такі запитання:
# cat /etc/passwd | grep '\(root\|mail\|catherine\|kevin\)' root:x:0:0:root:/root:/bin/bash mail:x:8:8:mail:/var/spool/mail:/sbin/nologin catherine:x:1030:1025:User Chaterine:/home/catherine:/bin/bash kevin:x:1040:1015:User Kevin:/home/kevin:/bin/bash # cat /etc/group | grep '\(root\|mail\|db-admin\|app-developer\)' root:x:0: mail:x:8: db-admin:x:1015:emma,grace app-developer:x:1016:catherine,dave,christian # cat /etc/shadow | grep '\(root\|mail\|catherine\|kevin\)' root:$6$1u36Ipok$ljt8ooPMLewAhkQPf.lYgGopAB.jClTO6ljsdczxvkLPkpi/amgp.zyfAN680zrLLp2avvpdKA0llpssdfcPppOp:18015:0:99999:7::: mail:*:18015:0:99999:7::: catherine:$6$ABCD25jlld14hpPthEFGnnssEWw1234yioMpliABCdef1f3478kAfhhAfgbAMjY1/BAeeAsl/FeEdddKd12345g6kPACcik:18015:20:90:5::: kevin:$6$DEFGabc123WrLp223fsvp0ddx3dbA7pPPc4LMaa123u6Lp02Lpvm123456pyphhh5ps012vbArL245.PR1345kkA3Gas12P:18015:0:60:7:2:: # cat /etc/gshadow | grep '\(root\|mail\|db-admin\|app-developer\)' root:*:: mail:*:: db-admin:!:emma:emma,grace app-developer:!::catherine,dave,christian
-
Що таке ідентифікатор користувача (UID) та ідентифікатор групи (GID) для
root
іcatherine
?UID і GID
root
дорівнюють 0 і 0, а UID і GIDcatherine
— 1030 і 1025. -
Як називається первинна група
kevin
? Чи є інші члени цієї групи?Назва групи:
db-admin
. У цю групу також входятьemma
іgrace
. -
Яка оболонка встановлена для
mail
? Що це означає?mail
— це обліковий запис системного користувача, а його оболонка —/sbin/nologin
. Насправді облікові записи системних користувачів, такі якmail
,ftp
,news
іdaemon
, використовуються для виконання адміністративних завдань, тому для цих облікових записів слід заборонити звичайний вхід. Ось чому оболонка зазвичай має значення/sbin/nologin
або/bin/false
. -
Хто входить до групи
app-developer
? Хто з них є адміністраторами групи, а хто звичайними учасниками?Учасниками є
catherine
,dave
іchristian
, і всі вони є звичайними членами. -
Який мінімальний термін дії пароля для
catherine
? І який максимальний термін служби пароля?Мінімальний термін дії пароля становить 20 днів, а максимальний – 90 днів.
-
Який період неактивності пароля для
kevin
?Термін неактивності пароля - 2 дні. Протягом цього періоду
kevin
повинен оновити пароль, інакше обліковий запис буде вимкнено.
-
-
За домовленістю, які ідентифікатори призначаються системним обліковим записам, а які звичайним користувачам?
Системні облікові записи зазвичай мають UID менше 100 або між 500 і 1000, тоді як звичайні користувачі мають UID, починаючи з 1000, хоча деякі застарілі системи можуть починати нумерацію з 500.
root
має UID 0. Пам’ятайте, щоUID_MIN
іUID_MAX
значення/etc/login.defs
визначають діапазон UID, які використовуються для створення звичайних користувачів. З точки зору LPI Linux Essentials і LPIC-1, системні облікові записи мають UID менше 1000, а звичайні користувачі мають UID більше 1000. -
Як дізнатися, чи обліковий запис користувача, який раніше мав доступ до системи, тепер заблоковано? Припустимо, що ваша система використовує тіньові паролі.
Коли використовуються тіньові паролі, друге поле в
/etc/passwd
містить символx
для кожного облікового запису користувача, оскільки зашифровані паролі користувачів зберігаються в/etc/shadow
. Зокрема, зашифрований пароль облікового запису користувача зберігається у другому полі цього файлу, і якщо він починається зі знаку оклику, обліковий запис заблоковано.
Відповіді до дослідницьких вправ
-
Створіть обліковий запис користувача під назвою
christian
за допомогою командиuseradd -m
і визначте його ідентифікатор користувача (UID), ідентифікатор групи (GID) і оболонку.# useradd -m christian # cat /etc/passwd | grep christian christian:x:1050:1060::/home/christian:/bin/bash
UID та GID
christian
— 1050 і 1060 відповідно (третє і четверте поля в/etc/passwd
)./bin/bash
— це набір оболонки для цього облікового запису користувача (сьоме поле в/etc/passwd
). -
Визначте назву первинної групи
christian
. Який висновок ви можете зробити?# cat /etc/group | grep 1060 christian:x:1060:
Назва первинної групи
christian
—christian
(перше поле в/etc/group
). Таким чином, дляUSERGROUPS_ENAB
у/etc/login.defs
встановлено значення yes, щобuseradd
за замовчуванням створював групу з тим самим іменем, що має обліковий запис користувача. -
Використовуючи команду
getent
, перегляньте інформацію про старіння пароля для облікового запису користувачаchristian
.# getent shadow christian christian:!:18015:0:99999:7:::
Для облікового запису користувача
christian
не встановлено пароль, і він тепер заблокований (друге поле в/etc/shadow
містить знак оклику). Для цього облікового запису користувача немає мінімального та максимального терміну дії пароля (четверте та п’яте поля в/etc/shadow
встановлені на 0 і 99999 днів), тоді як період попередження про пароль встановлено на 7 днів (шосте поле в/etc/shadow
). Нарешті, немає періоду неактивності (сьоме поле в/etc/shadow
) і термін дії облікового запису ніколи не закінчується (восьме поле в/etc/shadow
). -
Додайте групу
editor
до вторинних групchristian
. Припустимо, що ця група вже міститьemma
,dave
іfrank
як звичайні члени. Як перевірити, що для цієї групи немає адміністраторів?# cat /etc/group | grep editor editor:x:1100:emma,dave,frank # usermod -a -G editor christian # cat /etc/group | grep editor editor:x:1100:emma,dave,frank,christian # cat /etc/gshadow | grep editor editor:!::emma,dave,frank,christian
Третє та четверте поля в
/etc/ghadow
містять адміністраторів і звичайних учасників зазначеної групи. Тому, оскільки третє поле дляeditor
порожнє, для цієї групи немає адміністраторів (emma
,dave
,frank
іchristian
є звичайними учасниками). -
Виконайте команду
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
та опишіть результат, який вона надає вам у термінах прав доступу до файлів. Які з цих чотирьох файлів затінені з міркувань безпеки? Припустимо, що ваша система використовує тіньові паролі.# ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow -rw-r--r-- 1 root root 853 mag 1 08:00 /etc/group -rw-r----- 1 root shadow 1203 mag 1 08:00 /etc/gshadow -rw-r--r-- 1 root root 1354 mag 1 08:00 /etc/passwd -rw-r----- 1 root shadow 1563 mag 1 08:00 /etc/shadow
Файли
/etc/passwd
і/etc/group
доступні для читання всіма користувачами та затінені з міркувань безпеки. Коли використовуються тіньові паролі, ви можете побачитиx
у другому полі цих файлів, оскільки зашифровані паролі для користувачів і груп зберігаються в/etc/shadow
та/etc/gshadow
, які доступні лише для читання. коренем і, у моїй системі, навіть членами, що належать до групиshadow
.