Керування користувачами. Ubuntu Server - адміністративні права користувачів Редагування конфігураційних файлів

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

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

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

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

$ ls -l /bin/ls

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

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

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

    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. Права доступу до файлів та каталогів

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

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

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

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

Sudo useradd 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::99

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

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

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

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

Sudo apt-get install gnome-system-tools

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

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

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

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

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

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

Як додати користувача

# adduser newuser

Якщо для створення нового користувача ви хочете використовувати користувача з sudo-правами, тоді команда виглядатиме трохи інакше:

$ sudo adduser newuser

(При цьому замість newuser ви можете вказати інше слово, так як це буде ім'я нового користувача.)

Після введення команди вам потрібно буде послідовно відповісти на кілька запитань, а саме:

  • ввести та підтвердити пароль для нового користувача;
  • написати додаткову інформацію про нового користувача. Робити це необов'язково; якщо не хочете нічого додавати, просто натисніть клавішу Enter;
  • нарешті, вам потрібно буде підтвердити коректність всієї введеної раніше інформації - для цього треба натиснути y (yes - так).

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

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

Як наділити користувача правами sudo

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

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

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

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

$groups newuser

В результаті ви побачите на екрані:

Newuser: newuser

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

$usermod -aG sudo newuser

(Нагадую, що замість newuser вам потрібно написати ім'я користувача, якого ви хочете перемістити до групи з адміністративними правами.)

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

Перевірка наявності sudo-прав

Тепер необхідно перевірити, чи ваш користувач може виконувати адміністративні команди.

$ команда

Ви можете виконати цю команду, але з адміністративними правами, якщо напишете на початку sudo:

$ sudo команда

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

Уточнення прав користувача в /etc/sudoers

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

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

Якщо ви використовуєте користувача з sudo-правами, тоді потрібна вам команда виглядатиме так:

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

Root ALL=(ALL:ALL) ALL

Скопіюйте цей текст трохи нижче і замість "root" напишіть ім'я користувача, якого ви хочете наділити правом виконувати sudo-команди. Це буде виглядати приблизно так:

Root ALL=(ALL:ALL) ALL newuser ALL=(ALL:ALL) ALL

Для кожного нового користувача необхідно додавати новий рядок. Після того, як ви внесете всі необхідні зміни, збережіть та закрийте файл, натиснувши Ctrl-X, потім Y та Enter для підтвердження.

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

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

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

# deluser newuser

Якщо ви використовуєте користувача з sudo-правами, тоді команда буде виглядати так:

$ sudo deluser newuser

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

# deluser --remove-home newuser

Для користувачів із sudo-правами:

$ sudo deluser --remove-home newuser

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

(якщо від суперкористувача)
або

(якщо від користувача з sudo-правами)

Root ALL=(ALL:ALL) ALL newuser ALL=(ALL:ALL) ALL # Видаліть цей рядок.

Це потрібно для того, щоб надалі створений користувач з таким самим ім'ям не отримав випадково sudo-права.

Висновок

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

User management is a critical part of maintaining a secure system. Ineffective user and privilege management often lead many systems into being compromised. Там, це важливо, що ви вважаєте, що ви можете захистити ваш сервер через простий і ефективний user account management techniques.

Ubuntu developers зроблено conscientious decision до disable the administrative root account by default in all Ubuntu installations. Це не означає, що root аккаунт не може бути deleted or that it не може бути accessed. Це merely has been given a password which matches no possible encrypted value, вонине може не log in directly by itself.

Instead, users є спрямовані на те, щоб використовувати інструмент з name of sudo to carry out system administrative duties. Судно дозволяє авторизованому користувачеві вчасно збільшити свої привілеї за допомогою їхнього свого word-swords, щоб мати змогу password belonging to root account. Це прямий ефективний методологія забезпечує об'ємність для всіх своїх дій, і забезпечує керуючого контролем над якими діями може бути прийнята з привілеями.

    Якщо у вас є те, що ви збираєтеся запустити аккаунт, simply give it a password:

    Configurations with root passwords не підтримуються.

    sudo passwd

    Sudo will prompt you for your password, and then ask you to supply a new password for root as shown below:

    Password for username: (Виберіть свій password) Enter new UNIX password: (enter a new password for root) Retype new UNIX password: (repeat new password for root) passwd: password updated successfully

    Для того, щоб запустити акаунт password, використовуйте наступний passwd syntax:

    sudo passwd -l root

    However, disable the root account itself, use the following command:

    usermod --expiredate 1

    You should read more on Sudo by reading the man page:

    man sudo

Залежно від того, автентичне користувачеві створено за допомогою Ubuntu installer є членом групи "sudo", який є адресованим файлом /etc/sudoers як authorized sudo user. Якщо ви збираєтеся за будь-який інший рахунок повного access root через sudo , simply add them to sudo group.

Adding and Deleting Users

Процеси для управління локальними користувачами і групами є правильнимизавданнями і різними дуже мало від інших GNU/Linux операційних систем. Ubuntu та інші Debian засновані на розповсюдженні використання "adduser" package for account management.

    Щоб отримати доступ до свого користувача, використовувати наступні syntax, а потім записи про те, як password and identifiable characteristics, such as full name, phone number, etc.

    sudo adduser username

    Для того, щоб скористатися користувачем користувача і його першою групою, використовуйте наступні syntax:

    sudo deluser username

    Утискання аккаунт не забороняє їхній respectiv home folder. Це буде те, що ви або не збираєтеся в'язнити те, що викладено manually або keep це в залежності від вашої запозиченої ретенції policies.

    Remember, any user added later on with same UID/GID as the previous owner will now have access to this folder if you not take the necessary precautions.

    Ви можете помітити, що ці UID/GID варіюються на деякі більше відповідні, так само, як браузер акаунта, і повторюють все, що встановлюють folder to avoid future conflicts:

    sudo chown -R root:root /home/username/ sudo mkdir /home/archived_users/ sudo mv /home/username /home/archived_users/

    Для того, щоб тимчасово lock або unlock a user account, use the following syntax, respectively:

    sudo passwd -l username sudo passwd -u username

    Для того, щоб усунути або персоналізувати групу, використовувати наступні syntax, respectively:

    sudo addgroup groupname sudo delgroup groupname

    Щоб отримати доступ до користувача, використовуючи наступні syntax:

    sudo adduser username groupname

User Profile Security

Коли новий користувач створюється, то adduser utility створюється за допомогою нової домашній directory named /home/username . Більшість profile is modeled after the contents found in directory of /etc/skel , which includes all profile basics.

Якщо ваш сервер буде вдома для багатьох користувачів, ви повинні заплатити зайвий дохід до вашого користувача в Інтернеті, щоб схвалювати впевненість. Залежно від того, user home directories в Ubuntu є створеним з світом read/execute permissions. Це означає, що всі користувачі можуть користуватися і використовувати вміст інших веб-серверів. Це не може бути надійним для вашого середовища.

    Щоб зробити ваш поточний user home directory permissions, використовуйте наступні syntax:

    ls -ld /home/username

    Наступні випадки shows that the directory /home/username has world-readable permissions:

    drwxr-xr-x 2 username username 4096 2007-10-02 20:03 username

    Ви можете скористатися world readable-permissions using the following syntax:

    sudo chmod 0750 /home/username

    Кілька людей стежать за використанням recursive option (-R) indiscriminatelne які modified all child folders and files, but this is not necessary, and mai yield other undesirable results. Прес-релізи також є достатньою для того, щоб гарантувати необхідний доступ до будь-якої сторони.

    Найбільш ефективний приклад до матір повинен бути модифікований Adduser global default permissions when creating user home folders. Використовуйте лише файл /etc/adduser.conf і змінюйте параметр DIR_MODE до деякого відповіді, так що всі нові домашні directories будуть отримувати відповідні зміни.

    Після коректування directory permissions using any of the previously mentioned techniques, verify the results using the following syntax:

    ls -ld /home/username

    results below show that world-readable permissions have been removed:

    drwxr-x--- 2 username username 4096 2007-10-02 20:03 username

Password Policy

Стрункий password policy є одним з найбільш важливих аспектів вашої охорони здоров'я. Багато успішних проблем breaches involve simple brute force and dictionary attacks against weak passwords. Якщо ви встановлюєте будь-яку форму remote access involving your local password system, make sure you address address minimum password complexity requirements, maximum password lifetimes, і frequent audits of your authentication systems.

Minimum Password Length

By default, Ubuntu requires a minimum password length of 6 characters, as well as some basic entropy checks. Ці параметри є контрольованими в файлі /etc/pam.d/common-password , які is outlined below.

password pam_unix.so obscure sha512

Якщо ви збираєтеся змінити мінімальний рівень до 8 параметрів, зміна відповідності variable до min=8. The modification is outlined below.

password pam_unix.so obscure sha512 minlen=8

Основні дані натискають кнопки та мінімальні строки правил, які не можуть бути використані в режимі літератури, щоб вибрати нові рівні команди.

Password Expiration

Коли створюють user accounts, ви повинні робити це policy, щоб minimum і maximum password age forcing users до зміни своїх passwords when they expire.

    Для того, щоб побачити поточний статус користувача, використовуючи наступний syntax:

    sudo chage -l username

    output below shows interesting facts about user account, namely that there no no policies applied:

    Last password change: Jan 20, 2015 Password expires: never Password inactive: never Account expires: never Minimum number of days password change: 0 Maximum number of days between password change: 99999

    Для того, щоб встановити будь-яку ціну, тільки використовувати following syntax, і follow the interactive prompts:

    sudo chage username

    Наступним є також те, як ви можете автоматично змінити explicit expiration date (-E) to 01/31/2015, мінімальний password age (-m) of 5 days, maximum password age (-M) of 90 days, inactivity період (-I) of 5 days po password expiration, і warning time period (-W) of 14 days before password expiration:/home/username/.ssh/authorized_keys .

    Замовити або зателефонувати directory .ssh/ в user's home folder to prevent further SSH authentication capabilities.

    Будь-яка check for any established SSH connections by the disabled user, as it is possible they may have existing inbound or outbound connections. Kill any that are found.

    who | grep username (до get the pts/# terminal) sudo pkill -f pts/#

    Відповідь SSH access to тільки user accounts that should have it. Для прикладу, ви можете створити групу, названу "sshlogin" і призначити групу name як значення, згруповане з пункту Параметри групи, розташовані в файлі /etc/ssh/sshd_config .

    AllowGroups sshlogin

    Примітка, що ваші SSH використовуються в групі "sshlogin", і restart SSH Service.

    sudo adduser username sshlogin sudo systemctl restart sshd.service

    External User Database Authentication

    Більшість підприємств мережі потребує централізованого визнання і доступу до контролю за всіма системними ресурсами. Якщо ви налаштовані на вашому сервері, щоб authenticate users до external databases, be sure to disable the user accounts both externally and locally. Це означає, що місцеві fallback authentication is not possible.

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

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

Спочатку кожен файл мав три параметри доступу. Ось вони:

  • Читання- дозволяє отримувати вміст файлу, але запис немає. Для каталогу дозволяє отримати список файлів та каталогів, розташованих у ньому;
  • Запис- дозволяє записувати нові дані у файл або змінювати існуючі, а також дозволяє створювати та змінювати файли та каталоги;
  • Виконання- ви не можете виконати програму, якщо вона не має прапора виконання. Цей атрибут встановлюється для всіх програм та скриптів, саме за допомогою нього система може зрозуміти, що цей файл потрібно запускати як програму.

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

  • Власник- Набір прав для власника файлу, користувача, який його створив або зараз встановлений його власником. Зазвичай власник має всі права, читання, запис та виконання.
  • Група- будь-яка група користувачів, що існує в системі та прив'язана до файлу. Але це може бути лише одна група і зазвичай це група власника, хоча файлу можна призначити й іншу групу.
  • Інші- усі користувачі, крім власника та користувачів, що входять до групи файлу.

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

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

Спеціальні права доступу до файлів у Linux

Для того, щоб дозволити звичайним користувачам виконувати програми від імені суперкористувача без знання його пароля, була придумана така річ, як SUID і SGID біти. Розглянемо ці повноваження докладніше.

  • SUID- якщо цей біт встановлений, то при виконанні програми, ID користувача, від якого вона запущена замінюється на ID власника файлу. Фактично це дозволяє звичайним користувачам запускати програми від імені суперкористувача;
  • SGID- цей прапор працює аналогічно, тільки різниця в тому, що користувач вважається членом групи, з якою пов'язаний файл, а не груп, до яких він дійсно належить. Якщо прапорець SGID встановлено на каталог, всі файли, створені в ньому, будуть пов'язані з групою каталогу, а не користувача. Така поведінка використовується для організації спільних папок;
  • Sticky-bit- Цей біт також використовується для створення спільних папок. Якщо він встановлений, користувачі можуть лише створювати, читати та виконувати файли, але не можуть видаляти файли, що належать іншим користувачам.

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

Як переглянути права доступу до файлів у Linux

Звичайно, ви можете переглянути права доступу до файлів у Linux за допомогою файлового менеджера. Всі вони підтримують цю функцію, але ви отримаєте неповну інформацію. Для максимально докладної інформації про всі прапори, зокрема спеціальні, потрібно використовувати команду ls з параметром -l. Усі файли з каталогу будуть виведені у вигляді списку, і там будуть показані всі атрибути та біти.

Щоб дізнатися права на файл linux, виконайте таку команду, у папці де знаходиться цей файл:

За права файлів в linux тут відповідають риси. Перший тип файлу, який розглянутий в окремій статті. Далі йдуть групи прав спочатку для власника, для групи та для всіх інших. Усього дев'ять рис на права і одна на тип.

Розглянемо докладніше, що означає умовні значення прапорів прав:

  • --- - немає прав, зовсім;
  • --x- дозволено лише виконання файлу, як програми, але не зміна і не читання;
  • -w-- дозволено лише запис та зміну файлу;
  • -wx- дозволено зміну та виконання, але у випадку з каталогом, ви не можете переглянути його вміст;
  • r--- права лише читання;
  • r-x- Тільки читання та виконання, без права на запис;
  • rw-- права на читання та запис, але без виконання;
  • rwx- Усі права;
  • --s- встановлений SUID або SGID біт, перший відображається у полі для власника, другий для групи;
  • --t- встановлений sticky-bit, а значить, користувачі не можуть видалити цей файл.

У нашому прикладі, файл test1 має типові дозволи для програм, власник може все, група тільки читання та виконання, а решта - тільки виконання. Для test2 додатково встановлено прапорець SUID та SGID. А для папки test3 встановлено Sticky-bit. Файл test4 доступний для всіх. Тепер ви знаєте, як подивитися права на файл linux.

Як змінити права файлу на Linux

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

$ chmod опції категорія дія прапорець файл

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

  • u- Власник файлу;
  • g- Група файлу;
  • o- Інші користувачі.

Дія може бути одна з двох або додати прапор "+", або прибрати прапор - "-". Що ж до самих прав доступу, всі вони аналогічні висновку утиліти ls: r - читання, w - запис, x - виконання, s - suid/sgid, залежно від категорії, на яку ви його встановлюєте, t - встановлює sticky-bit. Наприклад, усім користувачам повний доступ до файлу test5:

chmod ugo+rwx test5

Або заберемо всі права у групи та інших користувачів:

chmod go-rwx test5

Дамо групі право на читання та виконання:

chmod g+rx test5

Іншим користувачам лише читання:

Для файлу test6 встановимо SUID:

А для test7 - SGID:

Подивимося що вийшло:

Як бачите, змінити права на файл у linux дуже просто. До того ж, ви можете змінити основні права за допомогою файлового менеджера.

Висновки

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

На завершення хочу запропонувати непогане відео про права доступу до linux: