Права доступа к файлам — фундаментальный механизм безопасности Linux. Неправильные права могут привести к утечке конфигов с паролями или позволить злоумышленнику выполнять код.
Числовая нотация chmod
| Число | Права | Применение |
|---|---|---|
| 777 | rwxrwxrwx | Никогда! Опасно |
| 755 | rwxr-xr-x | Директории, скрипты |
| 644 | rw-r--r-- | Файлы HTML, PHP |
| 600 | rw------- | Приватные ключи, конфиги |
| 400 | r-------- | Только чтение владельцем |
find /var/www -type f -exec chmod 644 {} \;
find /var/www -type d -exec chmod 755 {} \;
chmod u+x script.sh
chmod g-w config.php
chown -R www-data:www-data /var/www/site/
Специальные биты: SUID, SGID, Sticky
# SUID — запуск с правами владельца файла
chmod u+s /usr/bin/program # chmod 4755
# ls: -rwsr-xr-x
# SGID — наследование группы директории
chmod g+s /shared/dir # chmod 2755
# Sticky bit — только владелец удаляет файл
chmod +t /tmp # chmod 1777
# ls: drwxrwxrwt
# Найти SUID-файлы (потенциальная угроза)
find / -perm -4000 -type f 2>/dev/null
ACL — расширенные права
apt install acl -y
setfacl -m u:deploy:rw /var/www/config.php
setfacl -Rm g:devteam:rwx /var/www/project/
getfacl /var/www/config.php
setfacl -b /var/www/config.php # Удалить ACL
Золотое правило: Принцип минимальных привилегий — давайте только необходимые права. Для веб-сервера: файлы 644, директории 755, конфиги 600. Никогда не 777.