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

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

У цьому розділі ви дізнаєтесь, як керувати користувачами.


Цілі: у цьому розділі майбутні адміністратори Linux дізнаються, як:

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

🏁 користувачі

Знання: ⭐ ⭐
Складність: ⭐ ⭐

Час читання: 30 хвилин


Загальні положення

Кожен користувач повинен мати групу, яка називається основною групою користувача.

Кілька користувачів можуть входити до однієї групи.

Групи, відмінні від основної, називаються додатковими групами користувача.

Важливо

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

Групи та користувачі керуються їхніми унікальними числовими ідентифікаторами GID та UID.

  • UID: Ідентифікатор користувача. Унікальний ідентифікатор користувача.
  • GID: Ідентифікатор групи. Унікальний ідентифікатор групи.

І UID, і GID розпізнаються ядром, а це означає, що суперадміністратор не обов’язково є root користувачем, якщо uid=0 є суперадміністратором.

Файли, пов’язані з користувачами/групами:

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow
  • /etc/skel/
  • /etc/default/useradd
  • /etc/login.defs

Важливо

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

Примітка

Деякі команди в цьому розділі вимагають прав адміністратора. За домовленістю ми вказуватимемо команду sudo, коли команди мають виконуватися з правами адміністратора. Щоб приклади працювали правильно, переконайтеся, що ваш обліковий запис має право використовувати команду sudo.

Управління групою

Змінені файли, додані рядки:

  • /etc/group
  • /etc/gshadow

Команда groupadd

Команда groupadd додає групу до системи.

groupadd [-f] [-g GID] group

Приклад:

sudo groupadd -g 1012 GroupeB
Опція Опис
-g GID GID групи для створення.
-f Система обирає GID, якщо ідентифікатор, указаний параметром -g, уже існує.
-r Створює системну групу з GID від SYS_GID_MIN до SYS_GID_MAX. Ці дві змінні визначено в /etc/login.defs.

Правила іменування груп:

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

Примітка

У Debian адміністратор повинен використовувати, за винятком сценаріїв, призначених для перенесення на всі дистрибутиви Linux, команди addgroup і delgroup, як зазначено в man:

$ man addgroup
 ОПИС
 adduser і addgroup додають користувачів і групи до системи відповідно до параметрів командного рядка та конфігураційної інформації
 в /etc/adduser.conf. Вони є більш дружніми інтерфейсами для низькорівневих інструментів, таких як програми useradd, groupadd і usermod,
 за замовчуванням, вибираючи значення UID та GID, що відповідають політиці Debian, створюючи домашній каталог зі скелетною конфігурацією,
 запуск спеціального сценарію та інші функції.

Команда groupmod

Команда groupmod дозволяє вам змінити існуючу групу в системі.

groupmod [-g GID] [-n nom] group

Приклад:

sudo groupmod -g 1016 GroupP

sudo groupmod -n GroupC GroupB
Опція Опис
-g GID Новий GID групи, яку потрібно змінити.
-n name Нове ім'я.

Можна змінити назву групи, її GID або обидва одночасно.

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

sudo find / -gid 1002 -exec chgrp 1016 {} \;

Команда groupdel

Команда groupdel видаляє наявну групу в системі.

groupdel group

Приклад:

sudo groupdel GroupC

Порада

При видаленні групи можуть виникнути дві умови:

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

Приклади:

$ sudo useradd test
$ id test
uid=1000(test) gid=1000(test) group=1000(test)
$ sudo groupdel test
groupdel: cannot remove the primary group of user 'test'

$ sudo usermod -g users -G test test
$ id test
uid=1000(test) gid=100(users) group=100(users),1000(test)
$ sudo groupdel test

Підказка

Коли ви видаляєте користувача за допомогою команди userdel -r, відповідна основна група також видаляється. Ім'я основної групи зазвичай збігається з ім'ям користувача.

Підказка

Кожна група має унікальний GID. Групу можуть використовувати кілька користувачів як додаткову групу. За домовленістю GID суперадміністратора дорівнює 0. GIDS, зарезервовані для деяких служб або процесів, це 201-999, які називаються системними групами або псевдогрупами користувачів. GID для користувачів зазвичай більше або дорівнює 1000. Вони пов’язані з /etc/login.defs, про який ми поговоримо пізніше.

# Comment line ignored
shell > cat  /etc/login.defs
MAIL_DIR        /var/spool/mail
UMASK           022
HOME_MODE       0700
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

Підказка

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

Файл /etc/group

Цей файл містить інформацію про групу (розділену :).

$ sudo tail -1 /etc/group
GroupP:x:516:patrick
  (1)  (2)(3)   (4)
  • 1: Назва групи.
  • 2: Пароль групи позначається x. Пароль групи зберігається в /etc/gshadow.
  • 3: GID.
  • 4: Додаткові користувачі в групі (за винятком унікального основного користувача).

Примітка

Кожен рядок у файлі /etc/group відповідає групі. Інформація про основного користувача зберігається в /etc/passwd.

Файл /etc/gshadow

Цей файл містить інформацію про безпеку груп (розділених :).

$ sudo grep GroupA /etc/gshadow
GroupA:$6$2,9,v...SBn160:alain:rockstar
   (1)      (2)            (3)      (4)
  • 1: Назва групи.
  • 2: Зашифрований пароль.
  • 3: Ім'я адміністратора групи.
  • 4: Додаткові користувачі в групі (за винятком унікального основного користувача).

Важливо

Назви групи в /etc/group і /etc/gshadow повинні відповідати одна за одною. Тобто кожен рядок у файлі /etc/group повинен мати відповідний рядок у файлі /etc/gshadow.

! у паролі означає, що він заблокований. Таким чином, жоден користувач не може використовувати пароль для доступу до групи (оскільки членам групи він не потрібен).

Управління користувачами

Визначення

Користувач визначається наступним чином у файлі /etc/passwd:

  • 1: Логін;
  • 2: ідентифікація пароля, x вказує, що користувач має пароль, зашифрований пароль зберігається у другому полі /etc/shadow;
  • 3: UID;
  • 4: GID первинної групи;
  • 5: Коментарі;
  • 6: Домашній каталог;
  • 7: Оболонка (/bin/bash, /bin/nologin, ...).

Є три типи користувачів:

  • root(uid=0): системний адміністратор;
  • користувачі системи (uid є одним із 201~999): використовується системою для керування правами доступу до програми;
  • звичайний користувач(uid>=1000): інший обліковий запис для входу в систему.

Змінено файли, додано рядки:

  • /etc/passwd
  • /etc/shadow

Команда useradd

Команда useradd додає користувача.

useradd [-u UID] [-g GID] [-d directory] [-s shell] login

Приклад:

sudo useradd -u 1000 -g 1013 -d /home/GroupC/carine carine
Опція Опис
-u UID UID користувача, який потрібно створити.
-g GID GID основної групи. GID тут також може бути ім'ям групи.
-G GID1,[GID2]... GID додаткових груп. GID тут також може бути ім'ям групи. Можна вказати декілька додаткових груп, розділених комами.
-d каталог Створює домашній каталог.
-s оболонка Визначає оболонку користувача.
-c КОМЕНТАР Додає коментар.
-U Додає користувача до групи з однаковою назвою, створеної одночасно. Якщо не вказано, створення групи з такою ж назвою відбувається під час створення користувача.
-M Не створює домашній каталог користувача.
-r Створює системний обліковий запис.

Під час створення обліковий запис не має пароля та заблокований.

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

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

  • Створюється домашній каталог з іменем, яке збігається з іменем користувача;
  • Буде створено первинну групу з іменем, яке збігається з іменем користувача;
  • Користувачеві призначається типова оболонка, яка вказує на /bin/bash;
  • Значення UID користувача та основної групи GID виводяться автоматично. Зазвичай це унікальне значення від 1000 до 60 000.

Примітка

Параметри та значення за замовчуванням отримані з таких конфігураційних файлів:

/etc/login.defs and /etc/default/useradd

$ sudo useradd test1

$ tail -n 1 /etc/passwd
test1:x:1000:1000::/home/test1:/bin/bash

$ tail -n 1 /etc/shadow
test1:!!:19253:0:99999:7
:::

$ tail -n 1 /etc/group ; tail -n 1 /etc/gshadow
test1:x:1000:
test1:!::

Правила іменування облікових записів:

  • Допускаються малі літери, цифри та підкреслення; інші спеціальні символи, такі як зірочки, знаки відсотків і повноширинні символи, не приймаються.
  • Незважаючи на те, що ви можете використовувати ім'я користувача у RockyLinux, ми не рекомендуємо його використовувати;
  • Необов’язково: установіть параметри -u, -g, -d та -s під час створення.
  • Відрізняється від імені існуючої групи або системного файлу;
  • Ім'я користувача може містити до 32 символів.

Важливо

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

Останній каталог створюється командою useradd, яка використовує можливість копіювати файли з /etc/skel до нього.

Користувач може належати до кількох груп на додаток до основної групи.

Приклад:

sudo useradd -u 1000 -g GroupA -G GroupP,GroupC albert

Примітка

У Debian вам доведеться вказати опцію -m, щоб примусово створити каталог входу, або встановити змінну CREATE_HOME у файлі /etc/login.defs. У всіх випадках адміністратор повинен використовувати команди adduser і deluser, як зазначено в man, за винятком сценаріїв, призначених для переносу на всі дистрибутиви Linux:

$ man useradd
ОПИС
    **useradd** — це низькорівнева утиліта для додавання користувачів. У Debian адміністратори зазвичай повинні використовувати **adduser(8)**
      замість цього.

Значення за замовчуванням для створення користувача.

Модифікація файлу /etc/default/useradd.

useradd -D [-b directory] [-g group] [-s shell]

Приклад:

sudo useradd -D -g 1000 -b /home -s /bin/bash
Опція Опис
-D Встановлює значення за замовчуванням для створення користувача.
-b каталог Встановлює каталог для входу за замовчуванням.
-g група Встановлює групу за замовчуванням.
-s оболонка Встановлює оболонку за замовчуванням.
-f Встановлює кількість днів після закінчення терміну дії пароля до вимкнення облікового запису.
-e Встановлює дату відключення облікового запису.

Команда usermod

Команда usermod дозволяє змінити користувача.

usermod [-u UID] [-g GID] [-d directory] [-m] login

Приклад:

sudo usermod -u 1044 carine

Параметри, ідентичні команді useradd.

Опція Опис
-m Пов’язана з опцією -d. Переміщує вміст старого каталогу входу до нового. Якщо старий домашній каталог не існує, створення нового домашнього каталогу не відбувається; створення нового домашнього каталогу відбувається, коли він не існує.
-l login Змінює ім'я для входу. Після того, як ви змінили ім’я для входу, вам також потрібно змінити ім’я домашнього каталогу, щоб воно відповідало йому.
-e YYYY-MM-DD Змінює термін дії облікового запису.
-L Блокує обліковий запис назавжди. Тобто він додає ! на початку поля пароля /etc/shadow.
-U Розблоковує обліковий запис.
Додає додаткові групи користувача, які слід використовувати разом із опцією -G.
-G Змінює додаткові групи користувача, щоб перезаписати попередні додаткові групи.

Порада

Для внесення змін користувач має бути відключений і не мати запущених процесів.

Після зміни ідентифікатора файли, що належать користувачу, матимуть невідомий UID. Його потрібно перепризначити новому UID.

Де 1000 – це старий UID, а 1044 – новий. Приклади:

sudo find / -uid 1000 -exec chown 1044: {} \;

Блокування та розблокування облікових записів користувачів. Приклади:

$ usermod -L test1
$ grep test1 /etc/shadow
test1:!$6$n.hxglA.X5r7X0ex$qCXeTx.kQVmqsPLeuvIQnNidnSHvFiD7bQTxU7PLUCmBOcPNd5meqX6AEKSQvCLtbkdNCn.re2ixYxOeGWVFI0:19259:0:99999:7
:::

$ usermod -U test1

Різницю між параметрами -aG і -G можна пояснити на такому прикладі:

$ sudo useradd test1
$ sudo passwd test1
$ sudo groupadd groupA ; sudo groupadd groupB ; sudo groupadd groupC ; sudo groupadd groupD
$ id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1)

$ sudo gpasswd -a test1 groupA
$ id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1),1002(groupA)

$ sudo usermod -G groupB,groupC test1
$ id test1 
uid=1000(test1) gid=1000(test1) groups=1000(test1),1003(groupB),1004(groupC)

$ sudo usermod -aG groupD test1
$ id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1),1003(groupB),1004(groupC),1005(groupD)

Команда userdel

Команда userdel дозволяє видалити обліковий запис користувача.

sudo userdel -r carine
Опція Опис
-r Видаляє домашній каталог користувача та поштові файли, розташовані в каталозі /var/spool/mail/

Порада

Для видалення користувач має вийти з системи та не мати запущених процесів.

Команда userdel видаляє відповідні рядки в /etc/passwd, / etc/shadow, /etc/group, /etc/gshadow. Як згадувалося вище, userdel -r також видалить відповідну первинну групу користувача.

Файл /etc/passwd

Цей файл містить інформацію про користувача (розділену :).

$ sudo head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
(1)(2)(3)(4)(5)  (6)    (7)
  • 1: Логін;
  • 2: ідентифікація пароля, x вказує, що користувач має пароль, зашифрований пароль зберігається у другому полі /etc/shadow;
  • 3: UID;
  • 4: GID первинної групи;
  • 5: Коментарі;
  • 6: Домашній каталог;
  • 7: Оболонка (/bin/bash, /bin/nologin, ...).

Файл /etc/shadow

Цей файл містить інформацію про безпеку користувачів (розділену :).

$ sudo tail -1 /etc/shadow
root:$6$...:15399:0:99999:7
:::
 (1)    (2)  (3) (4) (5) (6)(7,8,9)
  • 1: Логін.
  • 2: Зашифрований пароль. Використовує алгоритм шифрування SHA512, визначений ENCRYPT_METHOD /etc/login.defs.
  • 3: час останньої зміни пароля, формат позначки часу, у днях. Так звана часова позначка базується на 1 січня 1970 року як стандартному часі. Щоразу, коли минає один день, мітка часу дорівнює +1.
  • 4: Мінімальний термін дії пароля. Тобто проміжок часу між двома змінами пароля (щодо третього поля), у днях. Визначається PASS_MIN_DAYS /etc/login.defs, за умовчанням дорівнює 0, тобто коли ви змінюєте пароль вдруге, обмежень немає. Але якщо він дорівнює 5, це означає, що змінювати пароль не можна протягом 5 днів, а лише через 5 днів.
  • 5: Максимальний термін дії пароля. Тобто термін дії пароля (що стосується третього поля). Визначається PASS_MAX_DAYS /etc/login.defs.
  • 6: кількість днів попередження до закінчення терміну дії пароля (пов’язано з п’ятим полем). Типовим значенням є 7 днів, визначених PASS_WARN_AGE /etc/login.defs.
  • 7: Кількість пільгових днів після закінчення терміну дії пароля (пов’язано з п’ятим полем).
  • 8: Термін дії облікового запису, формат позначки часу, у днях. Зверніть увагу, що термін дії облікового запису відрізняється від терміну дії пароля. У разі закінчення терміну дії облікового запису користувач не має права входу. У разі закінчення терміну дії пароля користувачеві заборонено ввійти за допомогою свого пароля.
  • 9: Зарезервовано для майбутнього використання.

Важливо

Для кожного рядка у файлі /etc/passwd має бути відповідний рядок у файлі /etc/shadow.

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

# Мітка часу перетворюється на дату, «17718» вказує позначку часу, яку потрібно заповнити.
$ date -d "1970-01-01 17718 days" 

# Дата перетворюється на позначку часу, «2018-07-06» вказує на дату, яку потрібно заповнити.
$ echo $(($(date --date="2018-07-06" +%s)/86400+1))

Власники файлів

Важливо

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

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

Команди модифікації

Команда chown

Команда chown дозволяє змінити власників файлу.

chown [-R] [-v] login[:group] file

Приклади:

sudo chown root myfile

sudo chown albert:GroupA myfile
Опція Опис
-R Рекурсивно змінює власників каталогу та всіх файлів у каталозі.
-v Відображає виконані зміни.

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

sudo chown albert file

Щоб змінити лише групу власників:

sudo chown :GroupA file

Зміна користувача та групи власників:

sudo chown albert:GroupA file

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

sudo chown albert: file

Змінити власника та групу всіх файлів у каталозі

sudo chown -R albert:GroupA /dir1

команда chgrp

Команда chgrp дозволяє змінити групу власників файлу.

chgrp [-R] [-v] group file

Приклад:

sudo chgrp group1 file
Опція Опис
-R Повторно змінюйте групи каталогу та всі файли під каталогом.
-v Відображає виконані зміни.

Примітка

До файлу можна застосувати власника та групу власників, взявши за посилання інші файли:

chown [options] --reference=RRFILE FILE

Наприклад:

chown --reference=/etc/groups /etc/passwd

Гостьовий менеджмент

Команда gpasswd

Команда gpasswd дозволяє керувати групою.

gpasswd [option] group

Приклади:

$ sudo gpasswd -A alain GroupA
[alain]$ gpasswd -a patrick GroupA
Опція Опис
-a USER Додає користувача до групи. Для додаткового користувача ця група є додатковою групою.
-A USER,... Встановлює список користувачів з правами адміністратора.
-d USER Видаляє користувача з групи.
-M USER,... Встановлює список учасників групи.

Команда gpasswd -M діє як модифікація, а не доповнення.

# gpasswd GroupeA
New Password:
Re-enter new password:

Примітка

Окрім використання gpasswd -a для додавання користувачів до групи, ви також можете використовувати usermod -G або usermod -AG, згадані раніше.

Команда id

Команда id відображає імена груп користувачів.

id USER

Приклад:

$ sudo id alain
uid=1000(alain) gid=1000(GroupA) groupes=1000(GroupA),1016(GroupP)

Команда newgrp

Команда newgrp може вибрати групу з додаткових груп користувача як нову тимчасову основну групу користувача. Команда newgrp кожного разу, коли ви перемикаєте основну групу користувача, створює нову дочірню оболонку (дочірній процес). Будьте обережні! дочірня оболонка та вкладена оболонка відрізняються.

newgrp [secondarygroups]

Приклад:

$ sudo useradd test1
$ sudo passwd test1
$ sudo groupadd groupA ; sudo groupadd groupB 
$ sudo usermod -G groupA,groupB test1
$ id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1),1001(groupA),1002(groupB)
$ echo $SHLVL ; echo $BASH_SUBSHELL
1
0

$ su - test1
$ touch a.txt
$ ll
-rw-rw-r-- 1 test1 test1 0 10月  7 14:02 a.txt
$ echo $SHLVL ; echo $BASH_SUBSHELL
1
0

# Generate a new child shell
$ newgrp groupA
$ touch b.txt
$ ll
-rw-rw-r-- 1 test1 test1  0 10月  7 14:02 a.txt
-rw-r--r-- 1 test1 groupA 0 10月  7 14:02 b.txt
$ echo $SHLVL ; echo $BASH_SUBSHELL
2
0

# You can exit the child shell using the `exit` command
$ exit
$ logout
$ whoami
root

Безпека

Команда passwd

Команда passwd керує паролем.

passwd [-d] [-l] [-S] [-u] [login]

Приклад:

sudo passwd -l albert

sudo passwd -n 60 -x 90 -w 80 -i 10 patrick
Опція Опис
-d Назавжди видаляє пароль. Лише для root (uid=0).
-l Назавжди блокує обліковий запис користувача. Лише для root (uid=0).
-S Відображає стан рахунку. Лише для root (uid=0).
-u Назавжди розблоковує обліковий запис користувача. Лише для root (uid=0).
-e Термін дії пароля закінчується назавжди. Лише для root (uid=0).
-n DAYS Визначає мінімальний термін дії пароля. Постійна зміна. Лише для root (uid=0).
-x DAYS Визначає максимальний термін дії пароля. Постійна зміна. Лише для root (uid=0).
-w DAYS Визначає час попередження до закінчення терміну дії. Постійна зміна. Лише для root (uid=0).
-i DAYS Визначає затримку перед дезактивацією після закінчення терміну дії пароля. Постійна зміна. Лише для root (uid=0).

Використовуйте password -l, тобто додайте "!!" на початку поля пароля користувача, що відповідає /etc/shadow.

Приклад:

  • Ален змінює свій пароль:
[alain]$ passwd
  • root змінює пароль Алана
sudo passwd alain

Примітка

Команда passwd дозволяє користувачам змінити свій пароль (запитується старий пароль). Адміністратор може змінювати паролі всіх користувачів без обмежень.

Їм доведеться дотримуватися заходів безпеки.

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

Це можна зробити, передавши пароль команді passwd.

Приклад:

sudo echo "azerty,1" | passwd --stdin philippe

Важливо

Пароль вводиться відкритим текстом, passwd шифрує його.

Команда chage

Команда chage призначена для зміни інформації про термін дії пароля користувача.

chage [-d date] [-E date] [-I days] [-l] [-m days] [-M days] [-W days] [login]

Приклад:

sudo chage -m 60 -M 90 -W 80 -I 10 alain
Опція Опис
-I DAYS Визначає дні затримки перед деактивацією, термін дії пароля закінчився. Постійна зміна.
-l Відображає деталі політики.
-m DAYS Визначає мінімальний термін дії пароля. Постійна зміна.
-M DAYS Визначає максимальний термін дії пароля. Постійна зміна.
-d LAST_DAY Визначає кількість днів після останньої зміни пароля. Ви можете використовувати стиль часової позначки дня або стиль YY-MM-DD. Постійна зміна.
-E EXPIRE_DATE Термін дії облікового запису. Ви можете використовувати стиль часової позначки дня або стиль YY-MM-DD. Постійна зміна.
-W WARN_DAYS Час попередження до закінчення терміну дії. Постійна зміна.

Приклади:

# Команда `chage` також пропонує інтерактивний режим.
$ sudo chage philippe

# Параметр `-d` змінює пароль під час входу.
$ sudo chage -d 0 philippe

Управління обліковими записами користувачів із chage

Розширене управління

Файли конфігурації:

  • /etc/default/useradd
  • /etc/login.defs
  • /etc/skel

Примітка

Редагування файлу /etc/default/useradd виконується командою useradd.

Інші файли потрібно змінити за допомогою текстового редактора.

Файл /etc/default/useradd

Цей файл містить налаштування даних за замовчуванням.

Порада

Якщо параметри не вказано під час створення користувача, система використовує значення за замовчуванням, визначені в /etc/default/useradd.

Цей файл змінено командою useradd -D (useradd -D, введене без жодного іншого параметра, відображає вміст файлу /etc/default/useradd).

Shell > grep -v ^# /etc/default/useradd 
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
Параметри Коментар
GROUP Визначає стандартний GID основної групи.
HOME Визначає шлях до каталогу верхнього рівня домашнього каталогу звичайного користувача.
INACTIVE Кількість пільгових днів після закінчення терміну дії пароля. Відповідає 7-му полю файлу /etc/shadow. Значення -1 означає, що функцію пільгового періоду вимкнено.
EXPIRE Термін дії облікового запису. Відповідає 8-му полю файлу /etc/shadow.
SHELL Інтерпретатор команд.
SKEL Скелетний каталог каталогу входу.
CREATE_MAIL_SPOOL Створення поштової скриньки у /var/spool/mail/.

Якщо під час створення користувачів вам не потрібна первинна група з однаковою назвою, ви можете зробити це:

Shell > useradd -N test2
Shell > id test2
uid=1001(test2) gid=100(users) groups=100(users)

Файл /etc/login.defs

# Comment line ignored
shell > cat  /etc/login.defs
MAIL_DIR        /var/spool/mail
UMASK           022
HOME_MODE       0700
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

UMASK 022: це означає, що дозвіл на створення файлу становить 755 (rwxr-xr-x). Проте з міркувань безпеки GNU/Linux не має дозволу x для новостворених файлів. Це обмеження стосується root (uid=0) і звичайних користувачів (uid>=1000). Наприклад:

Shell > touch a.txt
Shell > ll
-rw-r--r-- 1 root root     0 Oct  8 13:00 a.txt

HOME_MODE 0700: Дозволи домашнього каталогу звичайного користувача. Не працює для домашнього каталогу кореня.

Shell > ll -d /root
dr-xr-x---. 10 root root 4096 Oct  8 13:12 /root

Shell > ls -ld /home/test1/
drwx------ 2 test1 test1 4096 Oct  8 13:10 /home/test1/

USERGROUPS_ENAB так: «Коли ви видаляєте користувача за допомогою команди userdel -r, відповідна основна група також видаляється.» Чому? Це і є причиною.

Каталог /etc/skel

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

Ці файли автоматично копіюються з каталогу /etc/skel.

  • .bash_logout
  • .bash_profile
  • .bashrc

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

Зміна ідентифікації

Команда su

Команда su дозволяє змінити ідентифікатор підключеного користувача.

su [-] [-c command] [login]

Приклади:

$ sudo su - alain
[albert]$ su - root -c "passwd alain"
Опція Опис
- Завантажує повне середовище користувача.
-c команда Виконує команду під ідентифікацією користувача.

Якщо логін не вказано, він буде root.

Звичайним користувачам доведеться ввести пароль для нової ідентифікації.

Порада

Ви можете використати команду exit/logout, щоб вийти з користувачів, яких було переключено. Слід зазначити, що після зміни користувача не буде нової дочірньої оболонки або підоболонки, наприклад:

$ whoami
root
$ echo $SHLVL ; echo $BASH_SUBSHELL
1
0

$ su - test1
$ echo $SHLVL ; echo $BASH_SUBSHELL
1
0

Увага, будь ласка! su і su - відрізняються, як показано в наступному прикладі:

$ whoami
test1
$ su root
$ pwd
/home/test1

$ env
...
USER=test1
PWD=/home/test1
HOME=/root
MAIL=/var/spool/mail/test1
LOGNAME=test1
...
$ whoami
test1
$ su - root
$ pwd
/root

$ env
...
USER=root
PWD=/root
HOME=/root
MAIL=/var/spool/mail/root
LOGNAME=root
...

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