hostprofi.ru
Подобрать хостинг
Термин·буква П

Права доступа (chmod)

краткое определение

Права доступа (chmod) — система разрешений Unix/Linux, определяющая, кто может читать (r), записывать (w) и исполнять (x) файл или директорию. Задаются для трёх групп: владелец, группа, остальные.

Права доступа (file permissions) — механизм контроля доступа к файлам и директориям в UNIX/Linux. Каждый файл имеет три набора прав для трёх категорий субъектов: Owner (владелец), Group (группа) и Others (все остальные). Команда chmod (change mode) изменяет эти права.

Структура прав доступа

Вывод ls -l показывает: -rwxr-xr--. Расшифровка:

  • - — тип: - файл, d директория, l симлинк
  • rwx — Owner: чтение (r=4), запись (w=2), выполнение (x=1)
  • r-x — Group: чтение, нет записи, выполнение
  • r-- — Others: только чтение
# Числовой (восьмеричный) формат
chmod 755 script.sh    # rwxr-xr-x — типичные права для исполняемых файлов
chmod 644 index.html   # rw-r--r-- — типичные права для файлов контента
chmod 600 .env         # rw------- — секретные файлы (ключи, пароли)
chmod 777 /tmp/cache   # rwxrwxrwx — полный доступ (ОПАСНО для продакшна)

# Символьный формат
chmod u+x script.sh    # добавить право выполнения владельцу
chmod go-w /var/www    # убрать право записи у группы и остальных
chmod -R 755 /var/www  # рекурсивно для всей директории

Специальные биты

  • SetUID (4000): процесс выполняется с правами владельца файла. chmod u+s /usr/bin/passwd
  • SetGID (2000): новые файлы в директории наследуют группу директории. chmod g+s /var/www
  • Sticky bit (1000): удалить файл из директории может только его владелец. chmod +t /tmp

История

Система прав доступа UNIX разработана Кеном Томпсоном (Ken Thompson) и Деннисом Ричи (Dennis Ritchie) в Bell Labs при создании UNIX (1969–1971). Три категории (owner/group/others) и три права (read/write/execute) стали стандартом POSIX. setUID-бит добавлен позже для запуска программ с повышенными привилегиями (ping, passwd, sudo). Linux с версии 2.6 добавил ACL (Access Control Lists) через расширенные атрибуты — более гибкий механизм поверх стандартных UNIX-прав.

Права в контексте веб-хостинга

Типичная рекомендация для WordPress на VPS: файлы — 644, директории — 755, wp-config.php — 600. PHP-FPM запускается от пользователя www-data (Debian/Ubuntu) или nginx (RHEL). Директория wp-content/uploads требует права записи для веб-сервера: chown -R www-data:www-data /var/www/html. На shared-хостинге права управляются через панель управления или FTP-клиент.

На что обращать внимание

Никогда не ставь 777 в продакшне на файлы конфигурации — это открывает запись всем пользователям системы. Проверяй права вместе с владельцем файла (chown): права 644 у файла www-data:www-data дают PHP запись, а права 644 у файла root:root — не дают. Команда find /var/www -type f -perm 777 находит все файлы с полными правами — делай аудит периодически. На SELinux-системах (RHEL, Fedora) помимо UNIX-прав работают SELinux-контексты безопасности.

История прав доступа UNIX

Система прав доступа UNIX разработана Деннисом Ритчи и Кеном Томпсоном в Bell Labs в 1969–1973 годах при создании UNIX. Базовая модель (owner/group/others × read/write/execute) сохранялась без изменений 50+ лет. POSIX стандартизировал chmod и связанные системные вызовы в 1988 году (IEEE Std 1003.1). ACL (Access Control Lists) добавлены в Linux 2.6 (2003) через setfacl/getfacl для более гранулярного контроля — когда базовых прав недостаточно.

Права доступа и веб-сервер

Стандартные права для файлов Nginx/Apache:

chown -R www-data:www-data /var/www/example.com
find /var/www/example.com -type d -exec chmod 755 {} \;
find /var/www/example.com -type f -exec chmod 644 {} \;

Для WordPress директория загрузок должна быть доступна для записи веб-серверу: chmod 775 wp-content/uploads (группа www-data) или chmod 777 (не рекомендуется). Файл wp-config.php: chmod 600 — только владелец. Никогда не ставь chmod 777 на корень сайта — это открывает запись для всех процессов системы.

На что обращать внимание

Команда chmod +x script.sh — добавить бит выполнения. chmod -x script.sh — убрать. Право setuid (4xxx) на бинарниках позволяет запускать файл от имени владельца — используется для sudo, passwd. Sticky bit (1xxx) на директории запрещает пользователям удалять чужие файлы — установлен на /tmp. Аудит: find /var/www -type f -perm 777 — найти файлы с полными правами.

Другие термины