Вы наверняка встречали в сети «универсальный» совет: если веб-сервер не может записать файл или скрипт отказывается запускаться, просто выполните chmod 777. Новички часто используют эту команду как магическую таблетку, радуясь мгновенному результату. Однако на практике chmod 777 — это все равно что раздать ключи от своего дома всем прохожим. В этой статье мы разберем, как устроены права доступа в Linux и почему избыточные полномочия опасны для системы.

Три уровня владения файлами

В операционной системе Linux каждый объект (файл или директория) управляется тремя категориями субъектов:

  • Владелец (User) — обычно это создатель файла.
  • Группа (Group) — объединение пользователей, которым предоставлен доступ к объекту (например, команда разработчиков или процесс веб-сервера).
  • Остальные (Others) — все прочие пользователи в системе, не входящие в первые две категории.

Основные действия: r, w, x

Для каждой из вышеперечисленных групп можно определить три типа прав:

  • r (read) — чтение содержимого файла (для папок — возможность просмотра списка файлов).
  • w (write) — изменение или удаление файла (для папок — создание и удаление объектов внутри).
  • x (execute) — запуск файла как программы (для папок — право входа в директорию).

Синтаксис прав: символы и цифры

Права можно записывать двумя способами.

Буквенный формат

Запись rwx r-x r-- означает:

  • Владелец: полный доступ (чтение, запись, выполнение).
  • Группа: чтение и выполнение (без записи).
  • Остальные: только чтение.

Числовой (октальный) формат

Каждому атрибуту присвоен вес: r=4, w=2, x=1. Для каждой группы цифры суммируются:

  • rwx = 4+2+1 = 7
  • r-x = 4+0+1 = 5
  • r— = 4+0+0 = 4

Таким образом, комбинация 754 дает владельцу полные права, группе — чтение и запуск, остальным — только чтение.

В чем опасность chmod 777?

Команда chmod 777 устанавливает режим rwx rwx rwx. Это означает, что любой пользователь в системе может прочитать, изменить или удалить ваш файл. Если злоумышленник получит доступ к системе через уязвимость в другом сервисе, файлы с правами 777 станут его первой целью, особенно если это конфигурационные файлы с паролями от баз данных.

Правильный подход: использование chown

Чаще всего проблема с доступом вызвана не отсутствием прав, а неверным владельцем. Если веб-сервер работает от имени www-data, а файлы принадлежат пользователю alex, сервер не сможет их изменить. Вместо того чтобы открывать доступ всему миру, лучше сменить владельца с помощью chown:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

В этом примере веб-сервер становится владельцем и получает полный контроль, а остальные пользователи могут только просматривать контент, не имея возможности его повредить.

Особенности прав для директорий

Важно помнить, что для папки флаг x (выполнение) означает право на вход (переход в нее). Если у папки стоят права r-- (4), вы сможете увидеть список файлов, но не сможете зайти внутрь или прочитать содержимое этих файлов. Поэтому для корректной работы веб-сервера папкам обычно назначают 755 или 775.

Полезные советы

Если вы не хотите запоминать цифры, используйте символьный режим — это безопаснее и нагляднее:

  • Добавить право на запись владельцу:
    chmod u+w file.txt
  • Забрать право на чтение у группы и остальных:
    chmod go-r file.txt

Резюме: Использование chmod 777 — это признак плохого тона в системном администрировании и потенциальная дыра в безопасности. Потратив минуту на настройку владельца и точных прав, вы избавите себя от необходимости устранять последствия взлома в будущем.