Ysa-k03-ru-v2
Глава 3: Пользователи, группы и права доступа в Unix/Linux
Введение - Unix/Linux как многопользовательская система
В Unix/Linux одна система может использоваться несколькими пользователями. Чтобы обеспечить безопасность, стабильность и порядок, необходимо **четко управлять правами доступа**: кто может входить в систему, какие файлы читать, изменять или выполнять.
В этой главе вы изучите:
- что такое пользователи и группы;
- как работают права доступа к файлам и каталогам;
- как управлять пользователями;
- как на практике настраивать права в типичных сценариях системного администратора.
Пользователи и группы
Пользователь (user)
Пользователь — это учетная запись, под которой человек работает в системе.
Каждый пользователь имеет:
- **имя пользователя** (user)
- **UID** (User ID) — числовой идентификатор
- **домашний каталог** (обычно `/home/user`)
- **основную группу**
- **оболочку (shell)** — например `/bin/bash`
Пример:
user: ivan UID: 1001 home: /home/ivan group: students shell: /bin/bash
---
Группа (group)
Группа — это набор пользователей.
Зачем нужны группы:
- упрощают управление правами;
- позволяют давать доступ нескольким пользователям одновременно.
Каждый пользователь:
- имеет **одну основную группу**
- может входить в **несколько дополнительных групп**
Примеры:
- группа sudo — пользователи, которые могут выполнять команды администратора
- группа www-data — веб-сервер
- группа students — группа учеников
Посмотреть группы пользователя:
% groups
Пример: Если пользователь ivan выполняет команду groups и получает следующий ответ, это означает, что он является участником следующих групп: students, sudo
% groups students, sudo
---
Проверка информации о пользователе
Команда id
Показывает UID, GID и группы пользователя.
id
Пример вывода:
uid=1001(ivan) gid=1001(students) groups=1001(ivan),27(sudo)
---
Команда groups
Показывает группы пользователя.
groups ivan
---
Права доступа к файлам и каталогам
Команда ls -l
Используется для просмотра прав доступа.
ls -l
Пример:
-rw-r--r-- 1 ivan developers 1234 file.txt
---
Расшифровка вывода
-rw-r--r-- │││ ││ ││ │││ ││ │└─ права для остальных (others) │││ ││ └── права для группы (group) │││ └───── права для владельца (user) ││└─────── тип файла
Типы файлов:
- `-` — обычный файл
- `d` — каталог
- `l` — символическая ссылка
---
Типы прав
- **r** — read (чтение)
- **w** — write (запись)
- **x** — execute (выполнение)
Для файлов:
- r — читать файл
- w — изменять файл
- x — выполнять файл
Для каталогов:
- r — смотреть список файлов
- w — создавать/удалять файлы
- x — входить в каталог (`cd`)
---
Изменение прав: chmod
Символьный способ
Формат:
chmod [u|g|o][+|-][rwx] файл
Примеры:
chmod u+x script.sh # дать владельцу право выполнения chmod g+w file.txt # дать группе право записи chmod o-r secret.txt # убрать чтение у остальных
---
Числовой (октальный) способ
Каждое право имеет значение:
- r = 4
- w = 2
- x = 1
Сумма:
- 7 = rwx
- 6 = rw-
- 5 = r-x
- 4 = r--
Пример:
chmod 755 script.sh
Расшифровка:
- владелец: rwx (7)
- группа: r-x (5)
- остальные: r-x (5)
---
Изменение владельца и группы: chown
Формат:
chown user:group файл
Примеры:
chown ivan file.txt chown ivan:developers project.txt
Для каталогов рекурсивно:
chown -R ivan:developers /var/www/project
---
Управление пользователями
useradd — создание пользователя
Пример:
sudo useradd ivan
Создание с домашним каталогом и shell:
sudo useradd -m -s /bin/bash ivan
---
passwd — установка пароля
sudo passwd ivan
---
Практика: работа с пользователями
Практика 1: создать пользователя
1. Создайте пользователя `student` 2. Назначьте ему пароль 3. Проверьте его UID и группы
Команды:
sudo useradd -m -s /bin/bash student sudo passwd student id student
---
Практика 2: группы
1. Создайте группу `training` 2. Добавьте пользователя `student` в эту группу 3. Проверьте результат
Подсказка:
sudo groupadd training sudo usermod -aG training student groups student
---
Практика: права доступа (основная часть)
Практика 3: общий каталог
Сценарий: Несколько пользователей работают над одним проектом.
1. Создайте каталог `/srv/project` 2. Назначьте группу `training` 3. Дайте группе права на чтение и запись 4. Проверьте доступ от имени пользователя `student`
sudo mkdir /srv/project sudo chown :training /srv/project sudo chmod 770 /srv/project
---
Практика 4: защита файлов
1. Создайте файл `secret.txt` 2. Сделайте так, чтобы только владелец мог его читать 3. Проверьте права
touch secret.txt chmod 600 secret.txt ls -l secret.txt
---
Типичные ошибки новичков
- Права `777` «на всё» — **опасно**
- Отсутствие понимания прав каталогов
- Работа под root без необходимости
- Игнорирование групп
---
10. Дополнительные материалы для самообучения
- DigitalOcean: An Introduction to Linux Permissions (англ.)
Отличное практическое объяснение модели прав доступа. https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions
- Grymoire: Unix Permissions (англ.)
Глубокое объяснение прав доступа с примерами. https://www.grymoire.com/Unix/Permissions.html
- LabEx: Права доступа к файлам в Linux
Интерактивные практические задания (лабораторная работа). https://labex.io/ru/tutorials/linux-permissions-of-files-270252
- Habr: Права доступа в Linux
Практическая статья с примерами и пояснениями. https://habr.com/ru/articles/469667/
Видео-материалы
- Linux: пользователи, группы и права доступа (русский язык)
https://www.youtube.com/watch?v=R6AegtZpklQ
- chmod и chown — практика (русский язык)
https://www.youtube.com/watch?v=6hHPnoVsJ9Q
Итог
После этой главы вы умеете:
- понимать и читать права доступа;
- безопасно изменять права файлов и каталогов;
- создавать пользователей и группы;
- настраивать доступ в реальных сценариях.
Это **ключевая основа безопасности Unix-систем** и одна из важнейших тем для системного администратора.