В предыдущем материале мы освоили базовые команды Linux. Теперь разберём фундамент безопасности: модель прав доступа. Понимание chmod, chown, групп и специальных битов позволяет строить системы, где скрипты не рушат лог-файлы, а атака на веб-приложение не даёт злоумышленнику корневые права. Ниже — подробный, практический и живой гид, рассчитанный и на начинающих, и на тех, кто автоматизирует деплой на сотни серверов.
Зачем вообще нужны права
Любой объект файловой системы — это данные и метаданные. Права решают четыре ключевые задачи:
- Конфиденциальность — доступ получают только уполномоченные.
- Целостность — ошибочный скрипт не затрёт конфиг, к которому не имеет прав.
- Изоляция — взлом одного сервиса не равен компрометации всей ОС.
- Аудит — легко понять, кто владеет ресурсом и кого спрашивать при инциденте.
 	Без строгих разрешений DevOps-конвейер превращается в минное поле: umask 000 в одном шаге CI/CD — и приватные артефакты читаются из контейнера любым пользователем. 
 
Пользователи и группы: основы модели безопасности
Linux связывает процессы с числовыми идентификаторами:
- UID (User ID) — владелец процесса или файла.
- GID (Group ID) — основная группа владельца.
- Дополнительные группы — список, расширяющий доступ без смены владельца.
 	Данные хранятся в /etc/passwd и /etc/group. UID 0 — это root, остальные делятся на системные (обычно 1–999) и «живые» (1000 +). Каждый дочерний процесс наследует UID/GID родителя, если только код не вызывает setuid()/setgid(). 
 
Три набора разрешений и девять классических битов
Каждый файл или каталог хранит 12 битов прав. Первые девять распределяются по трём категориям:
- User (u) — владелец.
- Group (g) — пользователи, входящие в основную группу файла.
- Others (o) — все прочие аккаунты.
Действия кодируются значениями: read = 4, write = 2, execute = 1. Сумма трёх чисел для каждой категории образует «оценку» от 0 до 7:
- rw-= 6 — чтение и запись;
- r-x= 5 — чтение и выполнение;
- ---= 0 — никаких прав.
 	Команда ls -l показывает их в человекочитаемом виде:
 
-rwxr-x--- 1 alice devops 12288 Apr 30 10:41 deploy.sh
 |   | |  |
 |   | |  ----> группа-владелец
 |   | -------> пользователь-владелец
 |   ----------> права (u rwx, g r-x, o ---)
 --------------> тип (- файл, d каталог, l ссылка)chmod: задаём и меняем права
Октальная (числовая) форма
Используется в скриптах, Ansible-плейбуках, Dockerfile:
chmod 640 secrets.yml   # владелец rw-, группа r--, остальные ---
 chmod 0755 /usr/local/bin/tool   # 0 — спецбиты не трогаем, 755 для ugoСимвольная форма
Удобна в интерактивной сессии:
- chmod u+x build.sh— позволяет владельцу запускать скрипт;
- chmod g-w,o-rwx *.conf— убирает запись у группы и все права у остальных;
- chmod a=rx public— всем разрешено только читать и проходить в каталог.
Три специальных бита: setuid, setgid, sticky
- setuid (4 000) — процесс запускается с UID владельца файла. Пример: /usr/bin/passwd, который позволяет обычным пользователям менять пароли.
- setgid (2 000) — аналогично для групп. На каталогах наследует группу для новых объектов.
- sticky (1 000) — запрещает удалять файл в общем каталоге, если вы не владелец. Классический пример — /tmp.
 	Установить: chmod 4775 script, снять: chmod u-s script. 
 
chown и chgrp: меняем владельца и группу
Только root может отдавать файлы другому пользователю, но любой владелец вправе передавать объект другой группе, если входит в неё:
sudo chown bob:designers design.psd
 sudo chown -R root:admins /srv/api
 sudo chgrp marketing report*.odt
 	Для пакетных задач полезен флаг --reference: chown --reference=/var/www index.html копирует владельца/группу с эталонного файла. 
 
umask: права по умолчанию
 	Ядро берёт 666 для файла (777 для каталога) и вычитает umask. При значении 022 получаем 644/755. Проверьте своё значение:
 
$ umask
 0022
 	В CI-конвейере явно выставляйте umask 027, чтобы лог-файлы не были читаемы всеми. 
 
ACL: когда u-g-o недостаточно
Access Control Lists дают тонкую грануляцию:
sudo setfacl -m u:qa:r /var/log/app
 getfacl /var/log/appFACL-ы поддерживаются на ext4, xfs, btrfs и даже tmpfs. На виртуальных хостингах это спасает от хаоса, когда одним файлом должны пользоваться десятки сервисных аккаунтов.
Linux Capabilities: современная альтернатива setuid
Вместо полного UID 0 процессу можно дать ровно столько прав, сколько нужно:
# слушать 80/443 без root
 sudo setcap cap_net_bind_service+ep /usr/local/bin/myserverСписок 40+ возможностей описан в man 7 capabilities.
Практические сценарии
1. Безопасный каталог .ssh
chmod 700 ~/.ssh
 chmod 600 ~/.ssh/id_ed25519OpenSSH откажется от ключа с более широкими правами.
2. Совместная разработка сайта
- Создаём группу www-data, включаем nginx и php-fpm.
- chown -R root:www-data /var/www/site
- chmod 2755 /var/www/site— setgid обеспечивает наследование группы.
3. Ограничение прав бэкапа
useradd -r -s /usr/sbin/nologin backup
 setfacl -Rm u:backup:rx /etc
 setfacl -m default:u:backup:rx /etcДемон бэкапа видит конфиги, но не может их менять.
4. Мини-аудит лишних setuid
#!/usr/bin/env bash
 find / -xdev -perm -4000 -type f 2>/dev/null | while read -r f; do
     echo "$(date +%F) SUSPECT $f" >> /var/log/setuid-check.log
 doneТипичные ошибки и как их избежать
- chmod 777 «для теста» — под производственной нагрузкой никто не вспомнит, что «временное» осталось.
- Копирование под root — файл меняет владельца; используйте --preserve=ownershipв cp.
- Забытый setgid на скрипте — процесс запускается с привилегиями группы; лучше capabilities.
- umask 000 в Dockerfile — любой контейнер-peer увидит созданный файл.
Чек-лист при деплое
- Перед монтированием съёмных дисков задайте uid/gid/umask.
- Абстрагируйте роли через группы: веб, база, лог-аудит.
- Пройдитесь find /var/www -type f -perm /g=w,o=wи уберите лишнее.
- Поднимите SELinux/AppArmor-профиль для сервисов, если доступ к ядру не нужен.
Полезные ресурсы
Итоги
 	Модель прав Linux строится на простых числах, но открывает глубокие возможности: от классических rwx до cap_sys_admin. Освоив chmod, chown и группы, вы защищаете конфиденциальность, снижаете ущерб от уязвимостей и упрощаете совместную разработку. Делайте изоляцию принципом по умолчанию: минимум прав — максимум спокойствия. 
 
 
		        
		        
		