Перейти до змісту

Лабораторна робота 6 - Керування користувачами та групами

Цілі

Виконавши цю лабораторну роботу, ви зможете

  • Додавати та видаляти користувачів у системі
  • Додавати та видаляти групи у системі
  • Змінювати користувачів і групи в системі
  • Змінювати паролі

Приблизний час виконання цієї лабораторної роботи: 40 хвилин

Облікові записи користувачів

Керування користувачами є важливим у будь-якій багатокористувацькій мережевій операційній системі. Linux — це багатокористувацька мережева операційна система. Без користувачів не було б потреби в багатокористувацькій мережевій операційній системі!

Керування користувачами в системі тісно пов’язане з безпекою системи. Є така стара приказка:

Система безпечна настільки, наскільки безпечний її найслабший користувач.

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

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

Ми також коротко розглянемо дозволи на файли та право власності.

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

/etc/passwd

  • Призначення: інформація облікового запису користувача
  • Зміст:
    • логін
    • зашифрований пароль
    • ідентифікатор користувача (UID)
    • ідентифікатор групи (GID)
    • повне ім'я користувача
    • домашній каталог користувача
    • оболонка за замовчуванням

/etc/shadow

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

/etc/group

  • Призначення: інформація про групу
  • Зміст:
    • назва групи
    • пароль групи
    • ідентифікатор групи (GID)
    • список користувачів, що входять до групи

/etc/skel

  • Призначення: зберігає шаблони для застосування до нових облікових записів

Загальні утиліти

Кілька спільних інструментів, використовуваних в день-день користувача користувача і групового управління діяльністю, використовуються як:

useradd

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

    Usage: useradd [options] LOGIN
        useradd -D
        useradd -D [options]
    
    Options:
        --badname                 do not check for bad names
        -b, --base-dir BASE_DIR       base directory for the home directory of the new account
            --btrfs-subvolume-home    use BTRFS subvolume for home directory
        -c, --comment COMMENT         GECOS field of the new account
        -d, --home-dir HOME_DIR       home directory of the new account
        -D, --defaults                print or change default useradd configuration
        -e, --expiredate EXPIRE_DATE  expiration date of the new account
        -g, --gid GROUP               name or ID of the primary group of the new account
        -G, --groups GROUPS           list of supplementary groups of the new account
        -h, --help                    display this help message and exit
        -k, --skel SKEL_DIR           use this alternative skeleton directory
        -K, --key KEY=VALUE           override /etc/login.defs defaults
        -l, --no-log-init             do not add the user to the lastlog and faillog databases
        -m, --create-home             create the user's home directory
        -M, --no-create-home          do not create the user's home directory
        -N, --no-user-group           do not create a group with the same name as the user
        -o, --non-unique              allow to create users with duplicate (non-unique) UID
        -p, --password PASSWORD       encrypted password of the new account
        -r, --system                  create a system account
        -R, --root CHROOT_DIR         directory to chroot into
        -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
        -s, --shell SHELL             login shell of the new account
        -u, --uid UID                 user ID of the new account
        -U, --user-group              create a group with the same name as the user
        -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping
    

groupadd

  • Команда groupadd — це утиліта для керування групами користувачів у системі. Ця команда, доступна в більшості дистрибутивів Linux, дозволяє адміністраторам створювати нові групи, вказуючи такі параметри, як GID (ідентифікатор групи), назва групи та інші властивості.

    Використання: groupadd [опції] GROUP
    
    Опції:
        -f, --force                  успішний вихід, якщо група вже існує, та скасування -g, якщо GID вже використовується
        -g, --gid GID                 використовує GID для нової групи
        -h, --help                    відображає це довідкове повідомлення та завершує роботу
        -K, --key KEY=VALUE           перевизначає значення за замовчуванням /etc/login.defs
        -o, --non-unique              дозволяє створювати групи з дублікатними (неунікальними) GID
        -p, --password PASSWORD       використовує цей зашифрований пароль для нової групи
        -r, --system                  створює системний обліковий запис
        -R, --root CHROOT_DIR        каталог для chroot-системи
        -P, --prefix PREFIX_DIR        префікс каталогу
        -U, --users USERS           списки користувачів-членів цієї групи
    

passwd

  • Команда passwd — це інструмент для керування паролями користувачів. Це дозволяє користувачам змінювати власні паролі, а адміністратори (root) можуть скидати паролі інших облікових записів, керувати терміном дії паролів та налаштовувати політики безпеки.

    Використання: passwd [OPTION...] <accountName>
    
    Options:
        -k, --keep-tokens       зберігає токени автентифікації, термін дії яких не минув
        -d, --delete            видаляє пароль для вказаного облікового запису (лише root); також знімає блокування паролем, якщо таке є
        -l, --lock             блокує пароль для вказаного облікового запису (лише root)
        -u, --unlock            розблоковує пароль для вказаного облікового запису (лише root)
        -e, --expire            закінчує термін дії пароля для вказаного облікового запису (лише root)
        -f, --force             операція сил
        -x, --maximum=DAYS      максимальний термін дії пароля (лише root)
        -n, --minimum=DAYS      мінімальний термін дії пароля (лише root)
        -w, --warning=DAYS      кількість днів попередження, яке користувачі отримують до закінчення терміну дії пароля (лише для root-користувачів)
        -i, --inactive=DAYS     кількість днів після закінчення терміну дії пароля, коли обліковий запис стає деактивованим (лише для root-користувачів)
        -S, --status            повідомляє про стан пароля для вказаного облікового запису (лише root)
            --stdin            зчитує нові токени зі stdin (лише root)
    
    Help options:
        -?, --help         Показує це довідкове повідомлення
        --usage             Відображає коротке повідомлення про використання
    

Завдання

1. Створення нового користувача вручну

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

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

  • По-перше, домашній каталог користувача root — це /root.
  • По-друге, кореневий каталог — це найвищий каталог, відомий як каталог / (слеш). (/root відрізняється від / “)

У цій лабораторній роботі ви створите нового користувача під назвою «Me Mao». Ім’я користувача для «Me Mao» буде першим ім’ям – «me». Цей новий користувач належатиме до групи «me». Пароль буде “a1b2c3

Важливо

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

  1. Увійдіть на комп'ютер як root

  2. Використовуйте команду tail, щоб переглянути останні 4 записи внизу файлу /etc/passwd.

    [root@localhost root]# tail -n 4 /etc/passwd
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    gdm:x:42:42::/var/gdm:/sbin/nologin    
    

Ви відредагуєте файл passwd, використовуючи формат, показаний вище.

Створення користувача

  1. Нам потрібно буде відредагувати файл /etc/passwd.

    Запустіть обраний редактор і відкрийте файл /etc/passwd

    Додайте наведений нижче текст унизу або в кінці файлу:

    me:x:1000:1000:me mao:/home/me:/bin/bash    
    
  2. Збережіть зміни та закрийте файл etc/passwd.

  3. Далі ми відредагуємо файл /etc/shadow.
    Запустіть редактор і відкрийте файл /etc/shadow.
    Додайте новий запис, як показано нижче, внизу файлу - поставте зірочку (*) у поле пароля. Впишіть:

    bash me:x:11898:11898:99999:7 :::

  4. Збережіть зміни та закрийте тіньовий файл.

  5. Далі ми відредагуємо файл /etc/group. Запустіть редактор і відкрийте файл /etc/group. У нижній частині файлу додайте новий запис, наприклад:

    me:x:1000:me
    
  6. Збережіть зміни та закрийте файл групи.

  7. Час створити домашній каталог.

    Скопіюйте весь вміст каталогу /etc/skel до каталогу /home, перейменувавши новий каталог на ім'я користувача, тобто /home/me. Впишіть:

    [root@localhost root]# cp -r /etc/skel /home/me
    
  8. Користувач root володіє каталогом, який ви щойно створили, оскільки вона його створила. Щоб користувач “Me Mao” міг використовувати каталог, ви зміните дозволи/право власності на папку. Впишіть:

    [root@localhost root]# chown -R me:me /home/me
    
  9. Створіть пароль для користувача. Встановіть значення пароля a!b!c!d!. Ви будете використовувати утиліту passwd. Введіть “passwd me” і дотримуйтесь підказок

    [root@localhost root]# passwd me
    Changing password for user me.
        New password:
        Retype new password:
        passwd: all authentication tokens updated successfully.
    
  10. Вийдіть із системи, коли закінчите.

2. Автоматичне створення нового користувача

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

У цій вправі ми використаємо деякі звичайні утиліти для керування та спрощення процесу. Ви створите ще один обліковий запис користувача для користувача «Ying Yang», ім’я користувача для входу буде ying.
А пароль для ying буде y@i@n@g@.
Ви також створите групу під назвою «common» та додасте до неї користувача me та ying.

Для автоматичного створення нового облікового запису

  1. Увійдіть на комп'ютер як root.

  2. Ви створите користувача ying, використовуючи всі значення за замовчуванням команди useradd. Впишіть:

    [root@localhost root]# useradd -c "Ying Yang" ying
    
  3. Використовуйте команду tail, щоб перевірити додавання, яке ви щойно зробили до файлу /etc/passwd. Впишіть:

    bash flatpak:x:982:982:User for flatpak system helper:/:/sbin/nologin pesign:x:981:981:Group for the pesign signing daemon:/run/pesign:/sbin/nologin me:x:1000:1000:99999:7 ::: ying:x:1001:1001:Ying Yang:/home/ying:/bin/bash

    Питання

    Перелічити новий запис тут?

  4. Користувач ying не зможе увійти в систему, доки ви не створите для нього пароль. Установіть пароль ying на y@i@n@g@. Впишіть:

    [root@localhost root]# passwd ying
    Changing password for user ying.
        New password:   **********
        Retype new password: **********
        passwd: all authentication tokens updated successfully.
    
  5. Використовуйте утиліту id, щоб швидко переглянути інформацію про нових користувачів, яких ви щойно створили. Впишіть:

    [root@localhost root]# id me
        uid=1000(me) gid=1000(me) groups=1000(me)
    
  6. Зробіть те ж саме для користувача ying. Впишіть:

    [root@localhost root]# id ying
        uid=1001(ying) gid=1001(ying) groups=1001(ying)
    

Для автоматичного створення нової групи

  1. Скористайтеся програмою groupadd, щоб створити нову групу common.

    [root@localhost root]# groupadd common
    
  2. Перегляньте кінець файлу /etc/group, щоб побачити нове доповнення.

    Питання

    Яка команда для цього?

  3. Використовуйте команду usermod, щоб додати існуючого користувача до існуючої групи. Додамо користувача ying до групи common, яку ми щойно створили на кроці 1. Впишіть:

    [root@localhost root]# usermod -G common -a ying
    
  4. Зробіть те саме для користувача me. Впишіть:

    [root@localhost root]# usermod -G common -a me
    
  5. Знову виконайте команду id для користувачів ying та me.

    Питання

    Що змінилося?

  6. Використовуйте команду grep, щоб переглянути зміни в записі групи common у файлі. Впишіть:

    [root@localhost root]# grep common /etc/group
    common:x:1002:ying,me
    

Щоб змінити обліковий запис користувача

  1. Використовуйте команду usermod, щоб змінити поле коментаря для користувача me. Новий коментар, який ви додасте, буде “first last”. Впишіть:

    [root@localhost root]# usermod -c "first last" me
    

    Використовуйте команду tail, щоб перевірити ваші зміни у файлі /etc/passwd.

    Питання

    Напишіть змінений рядок нижче.

    Питання

    Яка оболонка входу користувача me?

  2. Знову скористайтеся командою usermod, щоб змінити оболонку входу me на оболонку csh. Впишіть:

    [root@localhost root]# usermod -s /bin/csh me
    
  3. Нарешті, скористайтеся командою usermod, щоб скасувати всі зміни, внесені до користувача me вище.

    Відновити значення (оболонку входу тощо) до їхніх початкових значень.

    Питання

    Які є команди для цього?

3. Налаштування користувача

Не завжди зручно повністю вийти з системи, щоб увійти як інший користувач. Це може бути тому, що у вас виконуються певні завдання, і ви не хочете їх завершувати. Програма su (set user) використовується для тимчасового присвоєння статусу іншого користувача. Ви можете “su” зі звичайного облікового запису користувача на обліковий запис root або навпаки.

Він змінює поточного користувача на права доступу тимчасового користувача.

Змінні середовища HOME, LOGNAME та USER за замовчуванням будуть встановлені на значення тимчасового користувача.

Щоб тимчасово стати іншим користувачем

  1. Увійшовши в систему як користувач root, перейдіть на користувача me. Впишіть:

    [root@localhost root]# su me
    [me@localhost root]$
    

    Команда su не запитала у вас пароль користувача me, оскільки ви є root-користувачем

  2. Перейдіть до домашнього каталогу me.

    [me@localhost root]$ cd
    [me@localhost me]$ cd
    
  3. Тимчасово увійшовши як me, скористайтеся su, щоб увійти як користувач ying. Впишіть:

    [me@localhost me]$ su ying
    password:
    [ying@localhost me]$
    
  4. Щоб вийти з облікового запису ying, введіть:

    [ying@localhost me]$ exit
    

    Це поверне вас до облікового запису me.

  5. Вийдіть із облікового запису me, щоб повернутися до кореневого облікового запису.

    Питання

    Що це за команда?

Змусити su успадкувати всі змінні середовища нового користувача

  1. Щоб змусити su використовувати всі змінні середовища тимчасового користувача. Впишіть:

    [root@system1 root]# su - me
    [me@system1 me]$
    

    Різниця очевидна відразу. Зверніть увагу на поточний робочий каталог.

  2. Повністю вийдіть із системи та перезавантажте машину.

  3. Ви закінчили цю лабораторну роботу!

Author: Wale Soyinka

Contributors: Steven Spencer, Ganna Zhyrnova, Franco Colussi