Базовые знания Linux админа
Примечание
В данной серии не будет теории и прочего
Это абсолютный базис-гайд по установке ОС и базовым навыкам в терминале
В конце будет рассмотрено несколько современных технологий в простых реализациях
После прохождения гайда у вас будет машина и несколько популярных сервисов
Все. Дальше - сами, книги, видео, стажировка
Этот гайд - выжимка на многолетние накопления вопросов на канале и сайте
Гайд будет доступен на моем сайте:
Видео будут доступны на моем канале 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"