Ubuntu Server - адміністративні права користувачів. Управління користувачами Видалення користувача ubuntu

Тепер трохи поговоримо про розмежування прав доступу до різних елементів. Описаний в цій статті механізм є основоположним в Linux і відповідно в Ubuntu, так що читайте уважно.

Користувачі і групи

Linux в цілому і Ubuntu зокрема - системи розраховані на багато користувачів, тобто на одному комп'ютері може бути кілька різних користувачів, кожен зі своїми власними настройками, даними і правами доступу до різних системних функцій.

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

Наприклад, в Ubuntu є одна дуже корисна група: admin. Будь-член цієї групи отримує необмежені адміністративні привілеї. Я вже розповідав про роль адміністратора в Ubuntu, так що якщо ви вже встигли забути хто це, можете освіжити свої знання. Створюваний при установці Ubuntu користувач автоматично стає членом групи admin.

Керувати користувачами і групами можна за допомогою спеціального інструменту, що знаходиться в меню Система → Адміністрування → Користувачі і групи.

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

Права доступу в Linux

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

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

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

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

Робиться це за допомогою утиліти sudo і її похідних. sudo - це консольна утиліта. Вона дозволяє «прикинутися» рутом при виконанні конкретної команди, таким чином, отримавши необмежені права. Наприклад, команда

Sudo aptitude update

оновить дані про доступні вам додатках (навіщо це потрібно я поясню в статті про управління програмами). Сама по собі команда

Aptitude update

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

Через термінал можна зробити все, що завгодно, так що маючи можливість стати рутом ви можете виконати всі необхідні вам налаштування. Однак іноді зручно використовувати графічні додатки, при цьому маючи правами рута. Наприклад, якщо вам треба скопіювати файли в системні каталоги. Для запуску графічних додатків від імені root відкрийте діалог запуску GNOME сполучення клавіш Alt + F2 і введіть

Gksudo імя_пріложенія

Наприклад, для запуску файлового менеджера Nautlus треба ввести

Gksudo nautilus

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

Будьте гранично уважні при використанні Nautilus з правами root! Ви зможете без жодних попереджень безповоротно видалити будь-який системний файл, що спокійно може привести до непрацездатності всієї системи.

Редагування конфігураційних файлів

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

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

Звичайно, можна відкривати конфігураційні файли з правами root через діалог запуску додатків командою

Gksudo gedit / шлях / до / файлу

Gedit - це стандартний текстовий редактор Ubuntu.

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

Врахуйте, що sudo - це чисто консольна утиліта, тому використовувати її в діалозі запуску додатків можна, хоча з терміналу через неї можна запускати графічні додатки. А gksudo навпаки, утиліта графічна, тому її не варто використовувати в терміналі, хоча це і не заборонено.

В результаті відкриється редактор з можливістю збереження змін.

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

Працюємо з користувачами і групами, вчимося керувати, створювати користувачів, групи, переміщати по групам і інші інші маніпуляції з групами в Ubuntu Linux.

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

Додавання користувача здійснюється за допомогою команди useradd. Приклад використання:

Sudo useradd vasyapupkin

Ця команда створить в системі нового користувача vasyapupkin. Щоб змінити налаштування створюваного користувача, ви можете використовувати такі ключі:

ключ опис
-b Базовий каталог. Це каталог, в якому буде створена домашня папка користувача. За замовчуванням / home
Коментар. У ньому ви можете надрукувати будь-який текст.
-d Назва домашнього каталогу. За замовчуванням назва збігається з ім'ям створюваного користувача.
-e Дата, після якої користувач буде відключений. Здається в форматі РРРР-ММ-ДД. За замовчуванням вимкнено.
-f Блокування облікового запису. Якщо значення дорівнює 0, то запис блокується відразу після старіння пароля, при -1 - не блокується. За замовчуванням -1.
-g Первинна група користувача. Можна вказувати як GID, так і ім'я групи. Якщо параметр не заданий буде створена нова група назва якої збігається з ім'ям користувача.
-G Список груп в яких буде знаходиться створюваний користувач
-k Каталог шаблонів. Файли і папки з цього каталогу будуть поміщені в домашню папку користувача. За замовчуванням / etc / skel.
-m Ключ, який вказує, що необхідно створити домашню папку. За замовчуванням домашня папка не створюється.
-p Пароль користувача. За замовчуванням пароль не ставить.
-s Оболонка, яка використовується користувачем. За замовчуванням / bin / sh.
-u Вручну задати UID користувачеві.

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

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

Useradd -D

Результат буде приблизно наступний:

GROUP = 100HOME = / home INACTIVE = -1EXPIRE = SHELL = / bin / shSKEL = / etc / skel CREATE_MAIL_SPOOL = no

Якщо вас не влаштовують такі настройки, ви можете поміняти їх виконавши

Useradd -D-m-s / bin / bash

де -m і -s це ключі, взяті з таблиці вище.

зміна користувача

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

Sudo usermod -c "Ця команда змінить коментар користувачеві" vasyapupkin

usermod використовує ті ж опції, що і useradd.

Зміна пароля

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

Sudo passwd vasyapupkin

Основні ключі passwd:

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

    w - виведення інформації (ім'я користувача, оболонка, час входу в систему і т. п.) про всі перелічені систему користувачів.

    whoami - висновок вашого імені користувача.

    users - висновок імен користувачів, які працюють в системі.

    groups имя_пользователя - виведення списку груп створені учасником.

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

Для того, щоб видалити користувача скористайтеся утилітою userdel. Приклад використання:

Sudo userdel vasyapupkin

userdel має всього два основних ключа:

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

створення групи

Програма groupadd створює нову групу згідно із зазначеними значеннями командного рядка і системним значенням за замовчуванням. Приклад використання:

Sudo groupadd testgroup

Основні ключі:

зміна групи

Змінити назву групи, її GID або пароль можна за допомогою groupmod. приклад:

Sudo groupmod -n newtestgroup testgroup # Назва групи змінено з testgroup на newtestgroup

Опції groupmod:

видалення групи

Видалення групи відбувається так:

Sudo groupdel testgroup

groupdel не має ніяких додаткових параметрів.

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

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

/ Etc / passwd

У файлі / Etc / passwdзберігається вся інформація про користувачів крім пароля. Один рядок з цього файлу відповідає опису одного користувача. Приблизний зміст рядка таке:

Vasyapupkin: x: 1000: 1000: Vasya Pupkin: / home / vpupkin: / bin / bash

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

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

/ Etc / group

В / Etc / group, Як очевидно з назви зберігається інформація про групи. Вона записана в аналогічному / Etc / passwdвигляді:

Vasyapupkin: x: 1000: vasyapupkin, petya

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

/ Etc / shadow

файл / Etc / shadowзберігає в собі паролі, з цього права, встановлені на цей файл, не дають вважати його простому користувачеві. Приклад однієї із записів з цього файлу:

Vasyapupkin: $ 6 $ Yvp9VO2s $ VfI0t.o754QB3HcvVbz5hlOafmO.LaHXwfavJHniHNzq / bCI3AEo562hhiWLoBSqxLy7RJJNm3fwz.sdhEhHL0: 15803: 0: 99999: 7 :::

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

У поточній версії Ubuntu відсутня штатна утиліта управління групами користувачів системи, тому за замовчуванням всі дії з групами необхідно виконувати в консолі. Однак для цих цілей існує спеціальна утиліта «Користувачі та групи».

Установка графічної GUI утиліти для управління групами

Пакет gnome-system-tools знаходиться в репозиторії Ubuntu, тому ставиться однією командою:

Sudo apt-get install gnome-system-tools

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

Для додавання, видалення груп, а також додавання \ видалення користувачів в \ з конкретних груп, необхідно перейти в Меню Ubuntu / Dash - Системні утиліти - Адміністрування - Користувачі і групи, після в даному вікні натиснувши кнопку «Управління групами», ви побачите вікно, відображає всі присутні в системі групи:

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

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

В основі механізмів розмежування доступу лежать імена користувачів і імена груп користувачів. Ви вже знаєте, що в Linux кожен користувач має унікальне ім'я, під яким він входить в систему (логіруется). Крім того, в системі створюється певна кількість груп користувачів, причому кожен користувач може бути включений в одну або кілька груп. Створює і видаляє групи привілейований користувач, він же може змінювати склад учасників тієї чи іншої групи. Члени різних груп можуть мати різні права щодо доступу до файлів, наприклад, група адміністраторів може мати більше прав, ніж група програмістів.

В індексному дескрипторі кожного файлу записано ім'я так званого власника файлу і групи, яка має права на цей файл. Спочатку, при створенні файлу його власником оголошується той користувач, який цей файл створив. Точніше - той користувач, від чийого імені запущений процес, який створює файл. Група теж призначається при створенні файлу - за ідентифікатором групи процесу, що створює файл. Власника та групу файлу можна поміняти в ході подальшої роботи за допомогою команд chownі chgrp(Докладніше про них буде сказано трохи пізніше).

Тепер давайте ще раз виконаємо команду ls -l. Але задамо їй в якості додаткового параметра ім'я конкретного файлу, наприклад, файлу, що задає саму команду ls. (Зверніть, до речі, увагу на цю можливість команди ls -l- отримати інформацію про конкретний файл, а не про всіх файлах каталогу відразу).

$ Ls -l / bin / ls

Ви бачите, що в даному випадку власником файлу є користувач root і група root. Але нас зараз у висновку цієї команди більше цікавить перше поле, що визначає тип файлу і права доступу до файлу. Це поле в наведеному прикладі представлено ланцюжком символів -rwxr-xr-x. Ці символи можна умовно розділити на 4 групи.

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

    - = - звичайний файл;

    d =- каталог;

    b =- файл блочного пристрою;

    c =- файл символьного пристрою;

    s =- доменне гніздо (socket);

    p =- іменований канал (pipe);

    l =- символічна посилання (link).

Далі йдуть три групи по три символи, які і визначають права доступу до файлу відповідно для власника файлу, для групи користувачів, яка порівняна даного файлу, і для всіх інших користувачів системи. У нашому прикладі права доступу для власника визначені як rwx, що означає, що власник ( root) Має право читати файл (r), проводити запис в цей файл (w), і запускати файл на виконання (x). Заміна будь-якого з цих символів прочерком означатиме, що користувач позбавляється відповідного права. У тому ж прикладі ми бачимо, що всі інші користувачі (включаючи і тих, які увійшли до групи root) Позбавлені права записи в цей файл, т. Е. Не можуть файл редагувати і взагалі якось змінювати.

Взагалі кажучи, права доступу та інформація про тип файлу в UNIX-системах зберігаються в індексних дескрипторах в окремій структурі, що складається з двох байтів, т. Е. З 16 біт (це природно, адже комп'ютер оперує битами, а не символами r, w, x). Чотири біта з цих 16-ти відведені для кодованої записи про тип файлу. Наступні три біта задають особливі властивості виконуваних файлів, про які ми скажемо трохи пізніше. І, нарешті, що залишилися 9 біт визначають права доступу до файлу. Ці 9 біт поділяються на 3 групи по три біта. Перші три біта задають права користувача, наступні три біта - права групи, останні 3 біта визначають права всіх інших користувачів (т. Е. Всіх користувачів, за винятком власника файлу і групи файлу).

При цьому, якщо відповідний біт має значення 1, то право надається, а якщо він дорівнює 0, то право не надається. У символьній формі записи прав одиниця замінюється відповідним символом (r, w або x), а 0 представляється прочерком.

Право на читання (r) файлу означає, що користувач може переглядати вміст файлу за допомогою різних команд перегляду, наприклад, командою moreабо за допомогою будь-якого текстового редактора. Але, підредагувавши вміст файлу в текстовому редакторі, ви не зможете зберегти зміни у файлі на диску, якщо не маєте права на запис (w) в цей файл. Право на виконання (x) означає, що ви можете завантажити файл в пам'ять і спробувати запустити його на виконання як виконувану програму. Звичайно, якщо в дійсності файл не є програмою (або скриптом shell), то запустити цей файл на виконання не вдасться, але, з іншого боку, навіть якщо файл дійсно є програмою, але право на виконання для нього не встановлено, то він теж не запуститься.

Ось ми і дізналися, які файли в Linux є виконуваними! Як бачите, розширення імені файлу тут ні до чого, все визначається установкою атрибута "виконуваний", причому право на виконання може бути надано не всім!

Якщо виконати ту ж команду ls -l, Але в якості останнього аргументу їй вказати не ім'я файлу, а ім'я каталогу, ми побачимо, що для каталогів теж визначені права доступу, причому вони задаються тими ж самими символами rwx. Наприклад, виконавши команду ls -l /, ми побачимо, що каталогом bin відповідає рядок:

Природно, що по відношенню до каталогів трактування понять "право на читання", "право на запис" і "право на виконання" дещо змінюється. Право на читання по відношенню до каталогів легко зрозуміти, якщо згадати, що каталог - це просто файл, який містить список файлів в даному каталозі. Отже, якщо ви маєте право на читання каталогу, то ви можете переглядати його вміст (цей самий список файлів в каталозі). Право на запис теж зрозуміло - маючи таке право, ви зможете створювати і видаляти файли в цьому каталозі, т. Е. Просто додавати в каталог або видаляти з нього запис, що містить ім'я якогось файлу і відповідні посилання. Право на виконання інтуїтивно менш зрозуміло. Воно в даному випадку означає право переходити в цей каталог. Якщо ви, як власник, хочете дати доступ іншим користувачам на перегляд якогось файлу в своєму каталозі, ви повинні дати їм право доступу в каталог, т. Е. Дати їм "право на виконання каталогу". Більш того, треба дати користувачеві право на виконання для всіх каталогів, що стоять в дереві вище даного каталогу. Тому в принципі для всіх каталогів за умовчанням встановлюється право на виконання як для власника і групи, так і для всіх інших користувачів. І, вже якщо ви хочете закрити доступ в каталог, то позбавите всіх користувачів (включаючи групу) права входити в цей каталог. Тільки не позбавляйте і себе такого права, а то доведеться звертатися до суперкористувачеві! (Прімеч.11)

Після прочитання попереднього абзацу може здатися, що право на читання каталогу не дає нічого нового в порівнянні з правом на виконання. Однак різниця в цих правах все-таки є. Якщо задати тільки право на виконання, ви зможете увійти в каталог, але не побачите там жодного файлу (цей ефект особливо наочно проявляється в тому випадку, якщо ви користуєтеся якимось файловим менеджером, наприклад, програмою Midnight Commander). Якщо ви маєте право доступу в якомусь із підкаталогів цього каталогу, то ви можете перейти в нього (командою cd), Але, як то кажуть "наосліп", по пам'яті, тому що списку файлів і підкаталогів поточного каталогу ви не побачите.

Алгоритм перевірки прав користувача при зверненні до файлу можна описати таким чином. Система спочатку перевіряє, чи збігається ім'я користувача з ім'ям власника файлу. Якщо ці імена збігаються (т. Е. Власник звертається до свого файлу), то перевіряється, чи має власник відповідне право доступу: на читання, на запис або на виконання (не дивуйтеся, привілейований користувач може позбавити деяких прав і власника файлу). Якщо право таке є, то відповідна операція дозволяється. Якщо ж потрібного права власник не має, то перевірка прав, наданих через групу або через групу атрибутів доступу для інших користувачів, вже навіть не перевіряються, а користувачеві видається повідомлення про неможливість виконання затребуваного дії (зазвичай щось на кшталт "Permission denied").

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

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

$ Chmod wXp назва_пакунка

де замість символу wпідставляється

    або символ u(Т. Е. Користувач, який є власником);

    або g(Група);

    або o(Всі користувачі, що не входять в групу, якій належить даний файл);

    або a(Всі користувачі системи, т. Е. І власник, і група, і всі інші).

замість Xставиться:

    або + (Надаємо право);

    або - (Позбавляємо відповідного права);

    або = (Встановити зазначені права замість наявних),

замість p- символ, що позначає відповідне право:

    r(Читання);

    w(Запис);

    x(Виконання).

Ось кілька прикладів використання команди chmod:

$ Chmod a + x file_name

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

$ Chmod go-rw file_name

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

$ Chmod ugo + rwx file_name

дає всім права на читання, запис і виконання.

Якщо опустити вказівку на те, кому надається дане право, то мається на увазі, що мова йде взагалі про всіх користувачів, т. Е. Замість $ Chmod a + x file_name

можна записати просто

$ Chmod + x file_name

Другий варіант завдання команди chmod(Він використовується частіше) заснований на цифровому поданні прав. Для цього ми кодируем символ r цифрою 4, символ w - цифрою 2, а символ x - цифрою 1. Для того, щоб надати користувачам якийсь набір прав, треба скласти відповідні цифри. Отримавши, таким чином, потрібні цифрові значення для власника файлу, для групи файлу і для всіх інших користувачів, задаємо ці три цифри в якості аргументу команди chmod(Ставимо ці цифри після імені команди перед другим аргументом, який задає ім'я файлу). Наприклад, якщо треба дати повне право власнику (4 + 2 + 1 = 7), право на читання і запис - групі (4 + 2 = 6), і не давати ніяких прав іншим, то слід дати таку команду:

$ Chmod 760 file_name

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

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

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

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

Зазвичай, коли користувач запускає деяку програму на виконання, ця програма отримує ті ж права доступу до файлів і каталогів, які має користувач, що запустив програму. Якщо ж встановлено "біт зміни ідентифікатора користувача", то програма отримає права доступу до файлів і каталогів, які має власник файлу програми (таким чином, розглянутий атрибут краще називати "бітом зміни ідентифікатора власника"). Це дозволяє вирішувати деякі завдання, які інакше було б важко виконати. Найхарактерніший приклад - команда зміни пароля passwd. Всі паролі користувачів зберігаються в файлі / etc / passwd, власником якого є привілейований користувач root. Тому програми, запущені звичайними користувачами, в тому числі команда passwd, Не можуть виробляти запис в цей файл. А, значить, користувач як би не може змінювати свій власний пароль. Але для файлу / usr / bin / passwd встановлений "біт зміни ідентифікатора власника", яким є користувач root. Отже, програма зміни пароля passwdзапускається з правами rootі отримує право записи в файл / etc / passwd (вже засобами самої програми забезпечується те, що користувач може змінити тільки один рядок в цьому файлі).

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

# Chmod + s file_name

Аналогічним чином працює "біт зміни ідентифікатора групи".

Ще один можливий атрибут виконуваного файлу - це "біт збереження завдання" або "sticky bit" (дослівно - "біт прилипчивости"). Цей біт вказує системі, що після завершення програми треба зберегти її в оперативній пам'яті. Зручно включити цей біт для задач, які часто викликаються на виконання, так як в цьому випадку економиться час на завантаження програми при кожному новому запуску. Цей атрибут був необхідний на старих моделях комп'ютерів. На сучасних швидкодіючих системах він використовується рідко.

Якщо використовується цифровий варіант завдання атрибутів в команді chmod, То цифрове значення цих атрибутів має передувати цифрам, що задає права користувача:

# Chmod 4775 file_name

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

    4 - "біт зміни ідентифікатора користувача",

    2 - "біт зміни ідентифікатора групи",

    1 - "біт збереження завдання (sticky bit)".

Якщо якісь з цих трьох бітів встановлені в 1, то кілька змінюється висновок команди ls -lв частині відображення встановлених атрибутів прав доступу. Якщо встановлений в 1 "біт зміни ідентифікатора користувача", то символ "x" в групі, яка визначає права власника файлу, замінюється символом "s". Причому, якщо власник має право на виконання файлу, то символ "x" замінюється на маленьке "s", а якщо власник не має права на виконання файлу (наприклад, файл взагалі не виконується), то замість "x" ставиться "S". Аналогічні заміни мають місце при завданні "бита зміни ідентифікатора групи", але замінюється символ "x" в групі атрибутів, які задають права групи. Якщо дорівнює 1 "біт збереження завдання (sticky bit)", то замінюється символ "x" в групі атрибутів, що визначає права для всіх інших користувачів, причому "x" замінюється символом "t", якщо всі користувачі можуть запускати файл на виконання, і символом "T", якщо вони такого права не мають.

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

# Ls -l prim1

В. Костромін (kos at rus-linux dot net) - 4.5. Права доступу до файлів і каталогів

Опція -c - додати коментар до користувача
опція -g sudo - доабавіть користувача в групу sudo.
Опція -s встановить користувачеві в якості shell "а / bin / bash

опція -d використовується для вказівки домашньої папки користувача
опція -m вкаже на те що папку потрібно створити негайно:

Sudo useradd -c "Comment for user" -g sudo -d / home / NameUser -m -s / bin / bash NameUser

Встановимо пароль для користувача NameUser:

Sudo passwd NameUser

Додаємо пользоваетля командою adduser

sudo useradd -c "Comment for user" -g sudo -d / home / NameUser -m -s / bin / bash NameUser

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

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

sudo passwd NameUser

Додаємо користувача в групу sudo

usermod -a -G sudo NameUser

Додаємо користувача / групу користувачів в Sudores безпосередньо:

відредагуємо файл /etc/sudores.tmpредактором visudo

Sudo visudo

Дамо root-права користувачеві з ім'ям user_name

User_name ALL = (ALL: ALL) ALL

Дамо root-права групі користувачів group_name, Додавши лінію в файл sudoers -

Group_name ALL = (ALL: ALL) ALL

Користувач і його групи

Дивимося доступні групи на хості

Cat / etc / group

Перевіряємо існування групи examplegroup на хості, де examplegroup цікавить вас група

Grep examplegroup / etc / group

Перевіряємо / Дізнаємося в жодних гуртах користувачів учасником (а так само його uid, gid)

Id NameUser

Додаємо існуючого користувача NameUser в існуючу групу examplegroup

Usermod -g examplegroup NameUser

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

Використовуємо команду, папка користувача не буде видалена

Sudo userdel NameUser

Видаляємо папку якщо це необхідно

Sudo rm -r / home / NameUser /

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

Sudo grep -R NameUser / etc / passwd --color

Вивксті список всіх локальних пользоваетелей

sudo cat / etc / passwd sudo cat / etc / shadow

Для більш детального виводу інформації про користувача встановимо пакет finger

Sudo apt-get install finger

Для перегляду інформації про пользоваетеле NameUser виконаємо команду

Finger NameUser

Для виведення інформації про всіх користувачів в файл infoaboutalluser.txtстворимо скрипт finger.sh

#! / Bin / bash n = `cat / etc / passwd | cut -d: -f1` for i in $ n; do echo "=============================================== ================ "finger $ i done

Виконаємо скрипт finger.shі збережемо його вміст в файл infoaboutalluser.txt

./finger.sh infoaboutalluser.txt

Вивести всіх привілейованих користувачів:

egrep ": 0: 0:" / etc / passwd

або НЕ привілейованих

Egrep -v ": 0: 0:" / etc / passwd

Вивести всіх користувачів, імена яких починаються з літер abcd:

Cat / etc / passwd | grep "^. *"

Май 3, 2016 12:20 пп 27 946 views | коментарів немає

Управління користувачами - один з найважливіших навичок системного адміністратора оточення Linux. Як правило, в новій системі за замовчуванням існує тільки один користувач - root.

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

Даний посібник навчить створювати акаунти нових користувачів, передавати права sudo і видаляти користувачів.

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

Щоб додати нового користувача в сесії root, введіть:

Перебуваючи в сесії не- root користувача з доступом sudo, можна додати нового користувача за допомогою команди:

sudo adduser newuser

Команда запропонує:

  • Встановити і підтвердити пароль.
  • Ввести додаткові дані про користувача. Це опціонально; щоб прийняти інформацію за замовчуванням, просто натисніть Enter.
  • Підтвердити правильність наданої інформації (натисніть Enter).

Останній зареєстрований учасник готовий! Тепер можна підключитися до сервера з його допомогою.

Налаштування прав доступу sudo

Щоб мати можливість використовувати новий аккаунт для виконання завдань адміністратора, потрібно дозволити користувачеві доступ до команди sudo. Це можна зробити двома способами:

  1. Додати користувача до групи sudo
  2. Відредагувати налаштування sudo в файлі / etc / sudoers

Додавання користувача до групи sudo

В системі Ubuntu 16.04 всі користувачі, що входять до групи sudo, за замовчуванням мають доступ до команди sudo.

Щоб дізнатися, в які групи входить новий користувач, введіть:

Команда поверне:

newuser: newuser

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

usermod -aG sudo newuser

Прапор -aG додає користувача в перелічені групи.

тестування налаштування

Тепер потрібно переконатися, що новий користувач має доступ до команди sudo.

За замовчуванням команди в сесії нового користувача запускаються так:

Щоб виконати команду з правами адміністратора, додайте sudo в початок команди:

sudo some_command

При цьому система запросить пароль поточного користувача.

Редагування файлу / etc / sudoers

Альтернативний спосіб розширити привілеї користувача - відредагувати файл sudoers. Для цього використовується команда visudo яка дозволяє відкрити файл / etc / sudoers в редакторі і явно вказати привілеї кожного системного користувача.

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

Якщо ви перебуваєте в сесії root, введіть:

У сесії не-root користувача з доступом до sudo введіть:

Як правило, visudo відкриває / etc / sudoers в редакторі vi, який може здатися складним для новачків. За замовчуванням в нових установках Ubuntu visudo використовує більш знайомий редактор nano. Для переміщення курсору за допомогою клавіш зі стрілками. Знайдіть рядок:

root ALL = (ALL: ALL) ALL

Скопіюйте цей рядок і вставте її нижче, замінивши root ім'ям користувача, якому потрібно передати права суперкористувача.

root ALL = (ALL: ALL) ALL
newuser ALL = (ALL: ALL) ALL

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

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

Непотрібні акаунти можна видалити.

Щоб видалити користувача, залишивши його файли, введіть:

як root
deluser newuser
як звичайний користувач з розширеними привілеями:
sudo deluser newuser

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

в сесії користувача root
deluser --remove-home newuser
в сесії користувача з розширеними привілеями:
sudo deluser --remove-home newuser

Якщо віддалений користувач мав правами суперкористувача, необхідно відняти ці права, відредагувавши файл:

visudo
або
sudo visudo
root ALL = (ALL: ALL) ALL
newuser ALL = (ALL: ALL) ALL # видалите цей рядок

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

висновок

Управління користувачами - необхідний навик при адмініструванні сервера Ubuntu 16.04. Він дозволить відокремити користувачів і дати їм тільки необхідний для роботи доступ.

Для отримання додаткових відомостей про настроювання sudo, ознайомтеся з нашим.

Tags:,
Сподобалася стаття? Поділіться з друзями!