Базовые знания Linux админа

 

Примечание

В данной серии не будет теории и прочего

Это абсолютный базис-гайд по установке ОС и базовым навыкам в терминале

В конце будет рассмотрено несколько современных технологий в простых реализациях

После прохождения гайда у вас будет машина и несколько популярных сервисов

Все. Дальше - сами, книги, видео, стажировка

Этот гайд - выжимка на многолетние накопления вопросов на канале и сайте

Гайд будет доступен на моем сайте:

http://snakeproject.ru

Видео будут доступны на моем канале YouTube:

https://www.youtube.com/channel/UCR6j95DKI80MFXIw2iJ3f1w

 

План:

 

3 часть — пользователи и права доступа

 

О пользователях в Linux-системах

 

Логически опишем 3 вида пользователей в Linux:

 

1) Учетная запись пользователя системы, который вводит логин и пароль, работает с системой

2) Учетная запись суперпользователя системы (администратор или root)

3) Учетная запись службы (демона), псевдопользователь, от которого служба выполняет действия

 

Под пользователями служб по умолчанию нельзя выполнять вход в систему

 

Для выполнения действий, связанных с администрированием сервера и служб требуются права суперпользователя

 

Для этого в обычной учетной записи используется команда sudo или su

 

Работа под суперпользователем в Linux опасна и часто по умолчанию запрещена

 

По умолчанию для нового пользователя создается одноименная, основная группа

 

Пользователя помимо основной группы можно добавить в другие

 

Например группа - sudo, дает право ее членам выполнять команды от имени суперпользователя

 

Любой процесс в Linux (запущенная пользователем программа или служба демона) получают UID (User ID) и GID (Group ID)

 

UID для суперпользователя равен 0, UID обычных пользователей начинаются обычно с 1000

 

Система Linux оперирует не именем пользователя, а именно идентификаторами UID и GID

 

 

Файл с учетных записей - /etc/passwd

 

По умолчанию доступен всем пользователям в режиме чтения

Не имеет паролей учетных записей

 

Файл passwd можно рассматривать как таблицу, где колонки разделены двоеточиями

 

Описание полей файла /etc/passwd :

Первое поле - имя учетной записи (логин)

Второе поле - x (в старых версиях был хеш пароля)

Третье поле - UID учетной записи

Четвертое поле -  GID учетной записи (в passwd указывается основная группа, остальные группы пользователя указываются в файле /etc/groups)

Пятое поле -  доп. информация (можно указать что угодно, например ФИО и телефон)

Шестое поле - домашняя директория (рабочий каталог)

Седьмое поле - рабочая оболочка (запускается при входе в систему), например, /bin/bash

 

У псевдопользователей указана псевдооболочка - /usr/sbin/nologin

 

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

 

Файл паролей - /etc/shadow

 

Хранит хеши паролей, доступен только суперпользователю

 

Хеш - результат превращения пароля в набор символов определенной длины

 

Процесс хеширования является необратимым, по хешу невозможно восстановить пароль

 

Существует возможность подбора пароля по хешу, для усложнения попытки подбора, функция хеширования использует соль (salt)

 

Соль - случайное число, генерируемое при создании хеша, хранится вместе с хешем в файле /etc/shadow

 

Поля, разделенные двоеточиями /etc/shadow:

1) Имя учетной записи

2) Хеш пароля и соль (* - вход запрещен, ! - учетная запись заблокирована)

3) Дата последней смены пароля, в днях от 1 января 1970 года (0 необходима смена пароля, пустое поле - проверка устаревания отключена)

4) Количество дней, через которое пользователь может поменять пароль (0 - без ограничений)

5) Количество дней, после которого необходимо будет сменить пароль

6) Количество дней до наступления устаревания, когда придет уведомление  

7) Количество дней после наступления устаревания, когда пароль еще будет приниматься

8) Дата устаревания учетной записи в днях от 1 января 1970 года (пользователь не сможет войти в систему в принципе)

9) Не используется

 

Содержимое /etc/shadow:

 

Файл групп - cat /etc/group

 

Поля, разделенные двоеточиями /etc/shadow:

1) Имя группы

2) Аналогично полю пароля из /etc/passwd

3) GID-идентификатор

4) Участники группы

 

Вывод созданного при установке пользователя:

 

Узнать свое GID и UID с помощью команды id:

 

О правах суперпользователя и утилите sudo

 

Утилита sudo имеет root в качестве владельца исполняемого файла

 

Для проверки доступа сверяется с файлом /etc/sudoers

 

Если пользователю предоставлен доступ, предлагается ввести его пароль (проверка чтоб никто в отсутствии пользователя не воспользовался его терминалом)

После ввода правильного пароля запускает команду с правами суперпользователя (EUID=0)

 

Файл - /etc/sudoers

 

Редактирование происходит с помощью команды:

sudo visudo

 

Формат файла (пользователь хост=(пользователь:группа) команды):

user host=(user:group) command

 

Пример 1:

ALL ALL=(ALL) ALL

Где:

1е ALL - разрешить для всех пользователей

2е ALL - разрешить со всех хостов

3е ALL - разрешить вход под любой учетной записью

4е ALL - разрешить выполнить любою команду

 

Пример 2:

%sudo ALL=(root:sudo) /sbin/mount, /sbin/umount

Где:

%sudo - разрешить для учеток в группе sudo

ALL - разрешить со всех хостов

(root:sudo) - разрешить вход под root или из учеток в группе sudo

/sbin/mount, /sbin/umount - разрешить выполнить перечисленные команды

 

Пример 3:

user_name ALL=NOPASSWD: /sbin/shutdown

Где:

Разрешим пользователю user_name выполнять команду shutdown без запроса пароля

 

Пример 4:

%sudo ALL=(ALL:ALL) ALL

Где:

Все члены группы sudo могут выполнять любые команды

 

Запуска команды "ls -l" от имени пользователя "user_name":

sudo -u user_name

 

Создание группы и учетной записи

 

Создание новой группы "test_group":

sudo groupadd test_group

 

Создание нового пользователя "test_user":

sudo useradd -m -G test_group -s /bin/bash test_user

 

-m - создать домашний каталог (по умолчанию /home/имя_учетной_записи)

-G - добваить в группу

-s - задание рабочей оболочки

 

Установить пароль учетной записи "test_user":

sudo passwd test_user

 

Удалить пользователя и группу:

sudo userdel test_user

sudo groupdel test_group

 

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

 

Посмотрим права на файл:

Символы -rw-r----- поделим условно на 4 группы:

 -|rw-|r--|---

 

Первая группа - один символ, определяет тип файла

-  — обычный файл

d  — каталог

b  — файл блочного устройства

c  — файл символьного устройства

s  — сокет (socket)

p  — именованный канал (pipe)

l  — символическая ссылка (link)

 

Три остальные группы по три символа (rwx) указывают на права доступа к файлу

1я группа - владелец файла

2я группа - группа пользователей

3я группа - все остальные пользователи системы

 

Значение символов доступа:

r - чтение

w - запись

x - исполнение

 

Изменение прав на файлы и каталоги: утилита chmod

 

Формат:

 chmod <категория> <действие> <права> <имя_файла>

 

Категория:

u - пользователь - владелец

g - группа - владелец

o - пользователи, не входящие в группу-владельца данного файла

a - все пользователи

 

Действие:

либо + добавить право

либо – удалить право

либо = заментить право

 

Символьное представление прав:

r - чтение

w - запись

x – выполнение

 

Числовое представление прав:

0 ---  - нет прав

1 --x - выполнение

2 -w- - запись

3 -wx - запись + выполнение

4 r-- - чтение

5 r-x - чтение + выполнение

6 rw- - чтение + запись

7 rwx - все права

 

Представление в виде таблицы:

0

x

1

w

2

wx

3

r

4

rx

5

rw

6

rwx

7

 

Примеры chmod:

chmod g+x file

chmod go-rw file

chmod ugo+rwx file

 

chmod 660 file - равносильно chmod ug+rw file

chmod +rw file - равносильно chmod a+rw file

chmod -R 660 /dir - задать права доступа для каталога и содержимого

 

Смена владельца или группы владельцев

 

Назначить владельца файла:

chown user_name file_name

 

Назначить группу  (равносильно chown :group_name file_name):

chgrp group_name file_name

 

Назначить владельца на каталог и рекурсивно вложенные подкаталоги и файлы:

chown -R user_name /dir_name

 

Назначить группу на каталог и рекурсивно вложенные подкаталоги и файлы (равносильно chown -R :group_name /dir_name ):

chgrp -R group_name /dir_name

 

Назначить владельца и группу на файл:

chown user_name:group_name file_name

 

Назначить владельца и группу рекурсивно на каталог:

chown -R user_name:group_name /dir_name

 

Задачи для самостоятельной работы

Создайте каталог и файлы, нового пользователя и группу, самостоятельно добавьте пользователя в группу и попробуйте разные виды доступов

Поработайте с visudo, попробуйте задать отдельно право запуска на любую утилиту и добавить нового пользователя в группу "sudo"