Групи користувачів Linux Користувачі та групи в linux. Додати видалення редагування користувачів Перевірка облікового запису

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

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

Як я вже сказав, групи в Linux з'явилися ще на самому початку розробки цієї операційної системи. Вони були розроблені для того, щоб розширити можливості керування правами. Розберемо невеликий приклад, візьмемо організацію у якій є лише один комп'ютер, у нас є адміністратори та користувачі. Кожна людина має свій акаунт на нашому комп'ютері. Адміністратори можуть налаштовувати систему, користувачам краще не давати волі, щоб щось не зламали. Тому адміністратори об'єднуються у групу admin, і їй дається доступ до всього обладнання, реально до всіх файлів в каталозі dev, а користувачі, об'єднані в групу users, і цій групі дається можливість читати і записувати файли в загальний каталог, за допомогою якого вони можуть обмінюватися результатами своєї роботи. Ми могли б призначати права для кожного користувача окремо, дозволяючи йому доступ до того чи іншого файлу, але це занадто незручно. Тому й були вигадані групи. Кажете, та нічого, можна призначити? Ну а тепер уявіть, що наші користувачі - це процеси. Ось тут вся краса груп виходить на передній план, групи використовуються не так для забезпечення доступу для користувачів, як для управління правами програм, особливо їх доступом до обладнання. Для сервісів створюються окремі групи та користувач, від імені якого він запущений, сервіс може перебувати в кількох групах, що забезпечує йому доступ до певних ресурсів.

А тепер давайте розглянемо як подивитись групи linux.

Групи в Linux

Усі групи, створені у системі, перебувають у файлі /etc/group. Переглянувши вміст цього файлу, ви можете дізнатися про список груп linux, які вже є у вашій системі. І ви будете здивовані.

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

Давайте докладніше розглянемо кожну групу, щоб краще розуміти навіщо вони потрібні:

  • daemon- від імені цієї групи і користувача daemon запускаються сервіси, яким необхідна можливість запису файлів на диск.
  • sys- група відкриває доступ до вихідників ядра та файлів include збережених у системі
  • sync- дозволяє виконувати команду /bin/sync
  • games- дозволяє іграм записувати свої файли налаштувань та історію у певну папку
  • man- дозволяє додавати сторінки до директорії /var/cache/man
  • lp- дозволяє використовувати пристрої паралельних портів
  • mail- дозволяє записувати дані в поштові ящики/var/mail/
  • proxy- використовується проксі-серверами, немає доступу запису файлів на диск
  • www-data- З цією групою запускається веб-сервер, вона дає доступ на запис /var/www, де знаходяться файли веб-документів
  • list- дозволяє переглядати повідомлення у /var/mail
  • nogroup- використовується для процесів, які не можуть створювати файли на жорсткому диску, а тільки читати, зазвичай застосовується разом з користувачем nobody.
  • adm- дозволяє читати логи з директорії /var/log
  • tty- всі пристрої /dev/vca дозволяють доступ на читання та запис користувачам із цієї групи
  • disk- відкриває доступ до жорстких дисків /dev/sd* /dev/hd*, можна сказати, що це аналог рут доступу.
  • dialout - повний доступдо серійного порту
  • cdrom- Доступ до CD-ROM
  • wheel- дозволяє запускати утиліту sudo для підвищення привілеїв
  • audio- керування аудіодрайвером
  • src- повний доступ до вихідних джерел у каталозі /usr/src/
  • shadow- дозволяє читання файлу /etc/shadow
  • utmp- дозволяє запис у файли /var/log/utmp/var/log/wtmp
  • video- дозволяє працювати з відеодрайвером
  • plugdev- дозволяє монтувати зовнішні пристрої USB, CD тощо
  • staff- дозволяє запис до папки /usr/local

Тепер, коли ви знаєте, навіщо використовувати групи в linux і які вони є за замовчуванням, розглянемо управління групами LInux.

Керування групами Linux

Керувати групами можна за допомогою графічного інтерфейсу. У KDE є програма Kuser спеціально призначена для цього, Gnome це виконується за допомогою налаштувань системи. Крім того, в популярних дистрибутивах є окремі інструменти, такі як YaST в OpenSUSE або Установки Ubuntu. Але з графічним інтерфейсомя думаю ви розберетеся. А ми розглянемо керування групами linux через термінал. Спочатку розберемося із файлами, а вже потім із користувачами.

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

Тут ви можете бачити, що власник всіх папок sergiy та група теж sergiy. Правильно, оскільки ці користувачі створили мною. Але давайте підемо далі:

Тут ми бачимо, що дисковим пристроям sd* призначена група disk, а це все означає, що користувач, який перебуває в цій групі, може отримати доступ до них. Або ще приклад:

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

chgrp ім'я_групи ім'я_файлу

Наприклад створимо файл test:

І змінимо для нього групу:

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

sudo groupadd test

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

Керування групами Linux для користувача виконується за допомогою команди usermod. Розглянемо її синтаксис та опції:

$usermod опції Ім'я користувача

  • -G- додаткові групи, до яких потрібно додати користувача
  • -gзмінити основну групу для користувача
  • -Rвидалити користувача з групи.

Додати користувача до групи можна командою usermod:

sudo usermod -G -a ім'я_групи ім'я_користувача

Можна додати користувача до групи linux тимчасово, командою newgrp. Відкриється нова оболонка, і в ній користувач матиме потрібні повноваження, але після закриття все повернеться як було:

sudo newgrp ім'я_групи

Для прикладу давайте додамо нашого користувача до групи disk, щоб мати прямий доступ до жорстких дисків без команди sudo:

sudo usermod -G -a disk sergiy

Тепер ви можете монтувати диски без команди sudo:

mount /dev/sda1 /mnt

Подивитися групи linux, в яких складається користувач, можна командою:

Можна також використовувати команду id. У першому випадку ми просто бачимо список груп linux, у другому додатково вказані id групи та користувача. Щоб увімкнути користувача до групи Linux, для основної групи використовується опція -g.

Створимо користувача vivek і додамо його до групи developers. Залогіньтесь як користувач root:

Наприклад, додамо користувача vivek:

useradd -g users -G admins,ftp,www,developers -s/bin/bash -pxxxx-d/home/ghost -m vivek

  • -dдомашній каталог
  • -sвстановити стартову оболонку (/bin/sh) - після можна змінити у файлі /etc/passwd
  • -pпароль
  • -gосновна група, до якої приписується користувач (Група має існувати)
  • -Gінші групи до якої приписується користувач
  • -mстворити для користувача домашній каталог
  • xxxx символьний пароль користувача

Переконаємося, що група developers існує:

# grep developers /etc/group

Якщо групи немає, використовуйте команду groupaddдля створення нової групи developers:

Тепер за допомогою команди usermodдодамо користувача vivek до групи developers:

# adduser vivek developers && newgrp developers

Переконаємося, що користувач доданий до групи developers:

# id vivek
Output:
uid=1122(vivek) gid=1125(vivek) groups=1125(vivek),1124(developers)

Встановимо/змінимо пароль користувача vivek:

Пограємось із групами

Зазначимо користувачеві участь лише у групі developers

usermod-G developers vivek

Вкажемо користувачеві участь тільки в групах admins, ftp, www, developers, ввівши:

# usermod -G admins,ftp,www,developers vivek

Видалимо користувача vivek із деяких груп (перепризначимо йому групи):

# usermod -G ftp, www vivek

Тепер vivek не входить до груп admins і developers.

Примітка:команда usermodне буде змінювати ім'я користувача, якщо цей користувач у Наразіпрацює у системі.

userdel- Видалити користувача

Наприклад, видалимо користувача vivek:

  • -rвидалити користувача разом із домашнім каталогом

Детальний СИНТАКСИС

useradd [-u ідентифікатор[-o] [-i]] [-g група] [-G група[[,група]. . .]] [-d каталог] [-s shell] [-c коментар] [-m [-k skel_dir]] [-f inactive] [-e expire] [-p passgen] [-a подія[, . . .]] рег_ім'я

Докладний опис

Виклик useraddзазвичай додає новий запис про користувача у файли даних системи ідентифікації та перевірки ідентичності(Identification and Authentication - I&A). Винятком є ​​користувачі мережної інформаційної служби(Network Information Service або, скорочено, NIS). Вона також дозволяє встановити приналежність до додаткових груп для користувача (опція -G) та створити для нього початковий каталог (опція -m). Нове реєстраційне ім'я блокується доти, доки не буде виконано команду passwd.

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

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

Підтримуються такі опції:

-u ідентифікатор Ідентифікаційний номер користувача (UID). Цей номер повинен бути невід'ємним цілим числом, що не перевищує MAXUID, визначений у sys/param.h. За замовчуванням використовується наступний доступний (унікальний) UID, що не застарів, більший 99. Ця опція ігнорується, якщо нове реєстраційне ім'я буде адмініструватися мережевою інформаційною службою (NIS). Докладніше про це див. у розділі "Іменні реєстраційні інформаційні служби".
-o Ця опція дозволяє дублювати UID (зробити його не унікальним). Оскільки захист системи загалом, а також цілісність контрольного журналу(audit trail) та облікової інформації(accounting information) зокрема, залежить від однозначної відповідності кожного UID певній особі, використовувати цю опцію не рекомендується (щоб забезпечити облік дій користувачів).
-i Дозволяє використовувати застарілий ідентифікатор UID.
-g група Цілочисельний ідентифікатор або ім'я символу існуючої групи. Ця опція задає основну групу(Primary group) для нового користувача. За промовчанням використовується стандартна група, вказана у файлі /etc/default/useradd
-G група [[, група] . . .] Один або кілька елементів у списку через кому, кожен з яких є цілісним ідентифікатором або символьним ім'ям існуючої групи. Цей список визначає приналежність до додаткових груп(Suplementary group membership) для користувача. Повторення ігноруються. Кількість елементів у списку не повинна перевищувати NGROUPS_MAX-1оскільки загальна кількість додаткових груп для користувача плюс основна група не повинна перевищувати NGROUPS_MAX. Ця опція ігнорується, якщо нове реєстраційне ім'я адмініструватиметься мережевою інформаційною службою (NIS). "Реєстраційні імена мережної інформаційної служби" нижче.
-d каталог Початковий каталог(home directory) нового користувача. Довжина цього поля не повинна перевищувати 256 символів. За замовчуванням використовується HOMEDIR/рег_ім'я, де HOMEDIR- базовий каталог для початкових каталогів нових користувачів, а рег_ім'я- Реєстраційне ім'я нового користувача.
-s shell Повний шлях до програми, яка використовується як початковий командний інтерпретатор для користувача відразу після реєстрації. Довжина цього поля не повинна перевищувати 256 символів. За замовчуванням це поле – порожнє, що змушує систему використовувати стандартний командний інтерпретатор /usr/bin/sh. Як значення shellповинен бути вказаний існуючий файл.
-c коментар Будь-який текстовий рядок. Зазвичай, це короткий описреєстраційного імені та використовується зараз для вказівки прізвища та імені реального користувача. Ця інформація зберігається у записі користувача у файлі /etc/passwd. Довжина цього поля не повинна перевищувати 128 символів.
-m Створює початковий каталог нового користувача, якщо він ще не існує. Якщо каталог вже існує, користувач, що додається, повинен мати права на доступ до зазначеного каталогу.
-k skel_dir Копіює вміст каталогу skel_dirу початковий каталог нового користувача, замість вмісту стандартного "скелетного" каталогу, /etc/skel. Каталог skel_dirмає існувати. Стандартний "кістяковий" каталог містить стандартні файли, що визначають середовище роботи користувача. Заданий адміністратором каталог skel_dirможе містити аналогічні файли та каталоги, створені для певної мети.
-f inactive Максимально допустима кількість днів між використанням реєстраційного імені, коли це ім'я ще не оголошується недійсним. Зазвичай як значення використовуються позитивні цілі числа.
-e expire Дата, починаючи з якої реєстраційне ім'я, більше не можна буде використовувати; після цієї дати користувач не зможе отримати доступ під цим реєстраційним ім'ям. (Ця опція зручна під час створення тимчасових реєстраційних імен.) Вводити значення аргументу expire(що представляє собою дату) можна у будь-якому форматі (крім Julian date). Наприклад, можна ввести 10/6/99 або October 6, 1999 .
-p passgen Вказує, що поле FLAG у файлі /etc/shadowмає бути встановлене у вказане значення. До цього поля звертається команда passwd, щоб визначити, чи для цього користувача діє генератор паролів. Якщо опція -pявно не задана, перевіряється запис FORCED_PASSу файлі /etc/default/useradd, щоб визначити значення для відповідного поля в /etc/shadow. Якщо записи FORCED_PASSнемає в /etc/default/useradd, у відповідному полі запису в /etc/shadowзначення не буде. Якщо значення FORCED_PASSодно 1, запис у /etc/shadowотримує значення 1. Якщо значення passgenне порожнє та не є друкованим символом ASCII, видається діагностичне повідомлення.
-a подія Список типів або класів подій через кому, що утворюють маску аудиту(Audit mask) для користувача. Відразу після встановлення системи стандартної маски аудиту для користувача немає, але її можна задати у файлі /etc/default/useraddза допомогою команди defadm. Цю опцію можна використовувати тільки якщо встановлені утиліти аудиту (Auditing Utilities). (Щоб дізнатися, які пакети встановлені в системі, виконайте команду pkginfo.)
рег_ім'я Рядок друкованих символів, що визначає реєстраційне ім'я для нового користувача. У ній не повинно бути двокрапок ( : ) та символів перекладу рядка ( \n). Вона також не повинна починатися з великої літери.

Врахуйте, що багато стандартних значень для розглянутих вище параметрів можна змінити за допомогою команди defadm, призначеної для роботи з файлом /etc/default/useradd. Ці стандартні значення використовуються лише для локальних користувачів. Для користувачів NIS стандартні значення задаються у базі даних мережної інформаційної служби. Щоб змінити стандартні значення NIS, необхідно встановити опції в командному рядку.

Реєстраційні імена мережної інформаційної служби

Якщо реєстраційне ім'я починається із символу + , (наприклад, +chris), визначенням користувача керуватиме мережева інформаційна служба (NIS). Значення за замовчуванням будуть визначатися на основі бази даних NIS, а не файлу /etc/defaults/useradd. Значення аргументів для опцій -u, -gі -Gбудуть мовчки проігноровані, якщо ці опції задано. Натомість, значення ідентифікатора користувача та ідентифікатора групи будуть взяті з бази даних NIS. Докладніше див. сторінку довідкового посібника passwd. Зверніть увагу, що при додаванні користувача NIS реєстраційне ім'я має вже існувати в базі даних NIS. Наприклад, щоб додати реєстраційне ім'я chrisяк ім'я користувача NIS, chrisвже має існувати у базі даних NIS. Потім необхідно викликати useraddз реєстраційним ім'ям +chris, щоб вказати, що потрібно додати користувача chrisяк користувача NIS, а не як локального користувача.

ФАЙЛИ

/etc/default/useradd
/etc/group
/etc/passwd
/etc/security/ia/ageduid
/etc/security/ia/audit(якщо встановлені утиліти аудиту - Auditing Utilties)
/etc/security/ia/index
/etc/security/ia/master
/etc/shadow
/etc/skel

ДІАГНОСТИКА

Команда useraddзавершується з кодом повернення 0 у разі успіху. У разі виникнення помилок можуть бути видані такі повідомлення:


Невірний синтаксис командного рядка.
Command line syntax був invalid.
В опції заданий неприпустимий аргумент.
An invalid argument був зроблений з an option.
Вказаний у опції -u ідентифікатор вже використовується, а опція -o не вказана.
uid specified with -u option is already in use and the -o option не був specified.
Зазначена в опції -g група не існує.
Group specified with -g option does not exist.
Зазначене реєстраційне ім'я не є унікальним.
Зазначений номер не є unique.
Неможливо змінити /etc/group. Реєстраційне ім'я додано у файл /etc/passwd, але не файл /etc/group.
Cannot update /etc/group. Login був приєднаний до /etc/passwd файлу, але не до /etc/group file.
Не вдалося створити початковий каталог (в опції -m) або не вдалося виконати копіювання skel_dir у початковий каталог.
Неналежним чином створити домашню директорію (з -m option) або неналежним чином зайняти копію skel_dir в домашній директорії.
Ідентифікатор недостатньо застарів. Виберіть інший.
uid не aged sufficiently. Choose another.
Було вказано неприпустиму опцію -a; системну службу не встановлено.
An invalid option -a був specified; system service not installed.
Вказано неприпустимий тип або клас аудиту.
Anvalid audit event type або class event був specified.

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

Додавання користувачів до Linux

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

$ sudo useradd john

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

John:х:535:20: :/home/john:/bin/sh

Проте, команда useraddмає куди більші можливості, наприклад:

$ sudo useradd -з "John Silver" -d /home/pirates/john -g pirates -G john -m -s /bin/bash john

Ця команда додасть в систему користувача з повним ім'ям John Silver, реєстраційним ім'ям john. Включивши його в основну групу "pirates", а також додасть його ще додаткову групу "john" і призначить йому домашній каталог за адресою /home/pirates/john. В результаті, відповідний запис у файлі /etc/passwd буде приблизно такий:

John:х:535:30:John Silver:/home/pirates/john:/bin/bash

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

Повний перелік параметрів useradd

Використання: useradd [параметри] КОРИСТУВАЧ
useradd -D
useradd -D [параметри]

Параметри:
-b, —base-dir БАЗ_КАТ базовий каталог для домашнього каталогу нової
облікового запису
-c, —comment КОМЕНТАР поле GECOS нового облікового запису
-d, —home-dir ДОМ_КАТ домашній каталог нового облікового запису
-D, —defaults показати або змінити налаштування
за замовчуванням для useradd
-e, —expiredate ДАТА_УСТ дата старіння нового облікового запису
-f, —inactive НЕАКТИВНІСТЬ період неактивності пароля нового облікового запису
-g, —gid ГРУПА ім'я або ID первинної групи нової
облікового запису
-G, —groups ГРУПИ список додаткових груп нової
облікового запису
-k, —skel КАБ_ШАБ використовувати альтернативний каталог із шаблонами
-K, —key КЛЮЧ=ЗНАЧЕННЯ замінити значення за замовчуванням
з /etc/login.defs
-l, —no-log-init не додавати користувача до баз даних lastlog і
faillog
-m, — create-home створити домашній каталог користувача
-M, -no-create-home не створювати домашній каталог користувача
-N, -no-user-group не створювати групу з тим же ім'ям що і у
користувача
-o, — non-unique дозволити створення користувачів з
повторюваними (не унікальними) UID
-p, —password ПАРОЛЬ зашифрований пароль нового облікового запису
-r, -system створити системний обліковий запис
-R
-s, -shell ОБОЛОЧКА реєстраційна оболонка нової
облікового запису
-u, —uid UID ID користувача нового облікового запису
-U, -user-group створити групу з тим же ім'ям що і у
користувача
-Z, —selinux-user SEUSER використовувати зазначений SEUSER для
користувача зіставлення SELinux

Створення та призначення домашнього каталогу користувачу

Зазвичай домашній каталог створюється автоматично при додаванні користувача до системи. Але трапляються випадки коли з якихось причин домашній каталог не створюється. А потім виникає необхідність створити його. Для створення домашнього каталогу користувача використовується стандартна команда mkdir. Після цього потрібно скопіювати необхідні конфігураційні скрипти в домашній каталог (для організації робочого середовища користувача), далі за допомогою команд chown і chmod задати власника та режими доступу до каталогу та його вмісту. Це краще зробити після того, як всі конфігураційні файли були скопійовані в цільовий каталог. Наприклад:

$ mkdir /home/john/ $ cd /etc/skel/ $ cp -Rp . /home/john/ $ chown -R john: john /home/john/ $ chmod -R 644 /home/john/ $ find /home/john/ -type d -exec chmod 755 () \;

Як видно, файли конфігурації були скопійовані з каталогу /etc/skel/ – саме тут зберігаються приклади конфігурацій запуску, які можна редагувати так, як це потрібно. До речі, модифікацію копії файлів з каталогу /etc/skel/ слід зберігати у каталозі usr/local/etc/skel. При завданні власника домашнього каталогу необхідно стежити за тим, щоб (у разі неакуратного використання команди chown) користувач не став власником псевдокаталогу «..», тобто каталог, рівнем вище, який часто є каталогом /home, що з міркувань безпеки неприпустимо.

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

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

$ sudo passwd name_of_new_user

Наприклад, для користувача jonh:

$ sudo passwd john Новий пароль: Повторіть введення нового пароля: passwd: всі дані автентифікації успішно оновлені.

Перевірка облікового запису

Перед тим, як передати новому користувачеві реквізити та початковий пароль для входу до свого облікового запису, його необхідно перевірити. Для цього необхідно завершити поточний сеанс. І увійти до системи під ім'ям нового користувача (обліковий запис якого необхідно перевірити). І послідовно виконати такі команди:

$ pwd $ ls -al

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

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

Як уже зазначалося, для управління користувачами в Linux-системах існують набори спеціалізованих утиліт для додавання, редагування та видалення облікових записів (користувачів) - useradd, usermod та userdel. Вони виконують запропонований порядок дій для досягнення кінцевої мети - наприклад, у разі додавання нового користувача, команда useraddздійснює, відповідно, весь вищеописаний «комплекс заходів». Кожну з цих утиліт можна гнучко налаштувати за допомогою файлів конфігурації, чим, до речі, дуже активно користуються розробники дистрибутивів Linux. Адже в різних Linux-системах робота цих утиліт трохи, але відрізняється, хоча утиліти, по суті, ідентичні. Нижче наведено таблицю, яка показує команди та файли конфігурації для керування користувачами для деяких систем на прикладі утиліти useradd:

Система Команди Файли конфігурації Коментар
Ubuntu useradd /etc/login.defs
adduser /etc/default/useradd Perl-версія
/etc/adduser.conf
SUSE useradd /etc/login.defs
/etc/default/useradd
/etc/default/passwd
/usr/sbin/useradd.local Локальні налаштування
/usr/sbin/userdel.local Локальні налаштування
/usr/sbin/userdel-pre.local Локальні налаштування
/usr/sbin/userdel-post.local Локальні налаштування
Red Hat useradd /etc/login.defs
/etc/default/useradd
Solaris useradd /etc/default/(login,passwd)
/etc/security/policy.conf

Видалення користувачів

Для видалення користувачів із системи використовується команда userdel, наприклад команда

Userdel john

Видалить користувача john, але найчастіше (як і команда useradd, До речі) не в «чистому» вигляді, а у вигляді Perl-оболонок з використанням сценарію видалення облікового запису. Наприклад, у дистрибутивах Ubuntu використовується команда deluser, яка є звичайним сценарієм на Perl. Який, у свою чергу, викликає саму команду userdel для видалення та очищення всього того, що було зроблено раніше командою useradd. При цьому використовується файл сценарію (зазвичай це файл /etc/deluser.conf в Ubuntu та /etc/login.defs в RedHat). Який дозволяє задати наступні опції для роботи команди userdel:

Використання: userdel [параметри] КОРИСТУВАЧ

Параметри:
-f, —force примусове видалення користувача та файлів, навіть якщо вони використовуються в даний час
-r, —remove видалити домашній каталог та поштову скриньку
-R, —root КАТ_CHROOT каталог, до якого виконується chroot
-Z, —selinux-user видалити всі користувальницькі зіставлення
SELinux для користувача

Файл /etc/passwd – опис локальних облікових записів

Якщо в системі не використовується жодна автоматизована служба керування каталогами (наприклад LDAP, NIS), то файл /etc/passwd – це саме той файл, в якому зберігається інформація про облікові записи користувачів, відомих системі. До цього файлу система звертається щоразу під час спроби авторизації користувача у пошуках необхідного ідентифікатора користувача та визначення його домашнього каталогу. Формат цього файлу полягає в тому, що кожен рядок у ньому відповідає одному конкретному користувачеві (облікового запису), в якому (у рядку) перераховані атрибути (поля) облікового запису, що поділяються символом двокрапки:

  1. Ім'я користувача.
  2. Пароль користувача (у шифрованому вигляді) або "заповнювач" пароля.
  3. Ідентифікатор користувача.
  4. Ідентифікатор групи користувача (за промовчанням).
  5. Інформація GECOS – повне ім'я, офіс, телефони тощо.
  6. Домашній каталог
  7. Реєстраційна оболонка.

Вміст файлу /etc/passwd може виглядати так: Як можна бачити, друге поле всіх записів містить символ «x» — заповнювач пароля. У Linux-системах зашифровані паролі зберігаються окремо у файлі /etc/shadow. У випадку, якщо спільно з файлом /etc/passwd використовується служба автоматизованого управління каталогами, то в цьому файлі є записи, що починаються з символу «+». Такі записи містять інструкції з інтеграції служби керування каталогами у системі. Варто коротко розглянути поля облікових записів:

  • Ім'я користувача або реєстраційне ім'я- Унікальне ім'я, яке має складатися згідно з правилами побудови реєстраційних імен для тієї чи іншої системи. Для Linux довжина реєстраційного імені може бути не більше ніж 32 символи. Допускається використання лише малих літер із включенням цифр. Починатися реєстраційне ім'я має з літери.
  • Зашифрований пароль- як зазначалося, паролі для локальних облікових записів зберігаються в /etc/shadow у зашифрованому вигляді. У Linux як криптографічні інструменти для шифрування паролів використовуються алгоритми crypt, MD5, Blowfish. Мінімальна довжина пароля становить 5 символів, максимальна 8
  • Ідентифікатор користувача- це ціле число без знака, яким система «розпізнає» окремих користувачів, тому ідентифікатори користувачів використовуються системою і програмним середовищем, тоді як імена користувачів служать наочності і зручності представлення користувачів у системі. Для користувача rootзарезервований ідентифікатор під номером 0, також рекомендується присвоювати реальним користувачам ідентифікатори, що йдуть після 500, оскільки в системі може бути багато «неперсоніфікованих» користувачів, таких як bin або daemon – це дозволить містити в порядку список користувачів та уникати плутанини. Також у Linux-системах передбачений псевдокористувач nobody, з ідентифікатором -1 або -2. Зазвичай цей псевдокористувач використовується, коли суперкористувач системи намагається отримати доступ до файлів, примонтованих з іншого комп'ютера, який не має довіри до вихідного комп'ютера.
  • Ідентифікатор групи- ціле число без знака, аналогічно ідентифікатору користувача призначено для позначення у системі унікальних груп користувачів. Під номером 0 зарезервовано групу root. Групи використовуються переважно для зручного керування та організації спільного доступу до файлів. Як і у випадку з ідентифікаторами користувачів, у системі зарезервовані групи (наприклад, bin) для використання самою системою.
  • ПолеGECOS– інформація, яка не має чітко визначеної специфікації, відображає додаткові дані про користувача: його повне ім'я, телефони, відомості про посаду та відділ тощо. Інформацію в цьому полі можна змінювати за допомогою команди chfn.
  • Домашній каталог— місце в дереві файлової системи, яке відведене для зберігання даних певного користувача. Цей каталог з міркувань безпеки повинен бути доступний лише користувачеві-власнику цього каталогу. Якщо домашній каталог відсутній на момент реєстрації, то дані користувача поміщаються в каталог /. Також, якщо у файлі /etc/login.defs у опції DEFAULT_HOME, що задає домашній каталог за замовчуванням, вказано значення no, то авторизація/реєстрація користувача буде неможливою.
  • Реєстраційна оболонка- Командна оболонка інтерпретатора команд (або будь-яка інша програма), яка запускається при вході користувача у свій обліковий запис. Для Linux використовується інтерпретатор

Файл /etc/group – створення та видалення груп користувачів

Додавання нової групи до Linux здійснюється за допомогою команди

$groupadd group_name

де group_name - назва нової групи. Ця команда створить у файлі /etc/group новий запис

Формат цього файлу такий самий як і /etc/passwd. Приклад вмісту файлу /etc/group:
Як видно, кожен рядок включає чотири поля:

  1. Назва групи.
  2. Зашифрований пароль або пароль.
  3. Унікальний ідентифікатор групи.
  4. Список користувачів, що входять до цієї групи, містить імена користувачів, розділених комами без пробілів.

Цікавим тут є поле пароля. Пароль групи призначений для того, щоб користувачі могли вступити до групи за допомогою Newgrp. Сам пароль для групи задається командою gpasswd, після чого він у зашифрованому вигляді буде зберігатися у файлі /etc/gshadow. Однак, слід зауважити, що паролі для груп використовуються дуже рідко. Системним адміністраторамслід стежити за вмістом файлів /etc/passwd та /etc/group та узгоджувати їх між собою, оскільки іноді виникають ситуації, коли користувач вказується членом групи у файлі /etc/passwd і в той же час у файлі /etc/group такого оголошення немає . Слід зауважити, що в цьому випадку користувач буде вважатися членом групи, проте настійно рекомендується узгоджувати вміст обох файлів.

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

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

$groupdel group_name

Ця команда видаляє запис із /etc/group.

Файл /etc/shadow – збереження паролів

Для зберігання прихованих чи тіньових паролів використовується окремий файл /etc/shadow. Доступ до якого доступний лише суперкористувачу. Потрібно також зауважити, що файли /etc/shadow та /etc/passwd хоч і пов'язані концептуально, проте на рівні системи між ними практично немає жодної взаємодії. За винятком того, що поле, що містить реєстраційне ім'я в shadow, береться з passwd. Тобто. при модифікації shadow, зміни не відображаються автоматично в passwd – ці файли зберігаються окремо та обробляються системою незалежно один від одного. Формат /etc/shadow аналогічний /etc/passwd і кожен рядок включає наступні поля:

  1. Реєстраційне ім'я.
  2. Пароль у зашифрованому вигляді.
  3. Дата останньої змінипароля.
  4. Мінімальна кількість днів між змінами пароля.
  5. Максимальна кількість днів між змінами пароля.
  6. Кількість днів до надання повідомлення про закінчення терміну дії пароля.
  7. Кількість днів (за закінченням терміну дії пароля) до автоматичного анулювання облікового запису.
  8. Період дії облікового запису.
  9. Зарезервоване поле.

Запис із файлу /etc/shadow виглядає так:

John:$md5$em5JhGE$a$iQhgS70sakdRaRFyy7Ppj. :14469:0:180:14: : :


Слід зазначити, що є першими два поля. Формат полів дат відповідає кількості днів, що минули першого січня 1970 року. Поле з реєстраційним ім'ям, як зазначалося, заповнюється відповідним значенням з файлу /etc/passwd. У Linux сьоме поле містить значення, яке визначає після закінчення якогось часу (у днях) після старіння пароля обліковий запис буде автоматично відключений. Ця інтерпретація відрізняється від тієї, яка використовується у системах Solaris та HP-UX. У восьмому полі, для встановлення дати закінчення терміну дії облікового запису можна використовувати команду usermod у форматі рргг-мм-чч.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.




Top