Управление правами в Linux: Раз и навсегда разбираемся с chmod и chown

Классическая картина: начинающий администратор разворачивает сайт на WordPress или переносит скрипты, и внезапно сталкивается со сбоем — веб-сервер не может загрузить картинку, обновить плагин или выплевывает ошибку доступа Permission Denied. Самое частое и худшее «решение», которое советуют на сомнительных форумах — бахнуть команду chmod -R 777 на всю директорию.

Давать полные права на чтение, запись и выполнение абсолютно всем пользователям в системе — это должностное преступление против безопасности сервера. Любой уязвимый скрипт или загруженный шелл получит полный контроль над вашими файлами. Безопасность и стабильность Linux начинаются с жесткой дисциплины прав доступа. Сегодня мы разберем физику работы утилит chown и chmod, чтобы вы навсегда забыли про слепое выставление трех семерок.

Часть 1: Разделяй и властвуй — Утилита chown

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

  • Конкретный пользователь (User / Owner)
  • Группа пользователей (Group)

Если вы залили файлы сайта на сервер под учетной записью root, то веб-сервер (который в Debian / Ubuntu обычно работает от имени системного пользователя www-data) физически не сможет с ними работать. Ему просто запрещено трогать чужую собственность.

Чтобы сменить владельца, используется команда chown (Change Owner). Флаг -R отвечает за рекурсивный обход, то есть применяет изменения ко всем вложенным папкам и файлам:

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

Синтаксис простой: сначала пишем целевого пользователя, затем через двоеточие — целевую группу, и в конце — путь к директории. Теперь веб-сервер имеет полное законное право работать с этой папкой.

Часть 2: Магия цифр — Утилита chmod

Когда владельцы распределены правильно, мы настраиваем, что именно им разрешено делать. За это отвечает команда chmod (Change Mode). Права кодируются тремя цифрами (например, 755 или 644).

Каждая цифра в этой тройке отвечает за свой уровень доступа:

  1. Первая цифра — права для Владельца (Owner).
  2. Вторая цифра — права для членов Группы (Group).
  3. Третья цифра — права для Всех остальных в системе (Others).

Сама же цифра собирается как конструктор из суммы трех базовых прав доступа:

  • 4 — Чтение (Read / **r**)
  • 2 — Запись (Write / **w**)
  • 1 — Выполнение (Execute / **x** — для запуска скриптов или захода внутрь папок)
  • 0 — Полный запрет любых действий.

Хотите дать владельцу полные права (чтение + запись + выполнение)? Складываем: 4 + 2 + 1 = 7.
Хотите дать группе только чтение и выполнение? Складываем: 4 + 1 = 5.
Хотите дать остальным только чтение? Оставляем просто 4.
В итоге получаем классическую маску прав: 754.

Инженерный стандарт для веб-серверов

Запомните железное правило разграничения прав для веб-директорий (того же WordPress или кастомных php/python проектов):

Для всех директорий (папок) стандарт — 755:
Владелец может делать всё, группа и остальные — могут читать файлы и заходить в папку, но не имеют права ничего там изменять или создавать вредоносные конфиги.

sudo find /var/www/html/ -type d -exec chmod 755 {} \;

Для всех обычных файлов стандарт — 644:
Владелец (веб-сервер) может читать и редактировать файлы, а весь остальной мир — только читать. Выполнять файлы как бинарники запрещено, что на корне отсекает запуск загруженных хакерами скриптов.

sudo find /var/www/html/ -type f -exec chmod 644 {} \;

Утилита find в этих примерах сама находит строго папки (-type d) или строго файлы (-type f) и точечно накатывает на них правильные маски, избавляя вас от необходимости править всё руками.

Ультимативная шпаргалка по маскам прав chmod

Маска в цифрах Буквенный вид (rwx) Кому и зачем выставлять
600 -rw------- **Максимальная изоляция.** Читать и писать может только владелец. Идеально для приватных SSH-ключей (в папке .ssh/id_rsa) и конфигурационных файлов с паролями от баз данных. Без этих прав OpenSSH просто откажется работать с ключом.
644 -rw-r--r-- **Системный стандарт для файлов.** Идеально для конфигураций веб-серверов, исходного кода скриптов, картинок и статики сайтов. Скрипт работает, но защищен от перезаписи извне.
700 -rwx------ Права только для владельца. Применяется для приватных bash-скриптов автоматизации в домашней папке, которые не должен видеть или запускать никто другой.
755 -rwxr-xr-x **Системный стандарт для папок и исполняемых скриптов.** Позволяет системе корректно читать структуру каталогов и запускать бинарные файлы на выполнение.

Заключение

Наведение порядка в правах доступа — это не разовая акция, а постоянная гигиена сисадмина. Понимание разницы между chown (кто владеет) и chmod (что разрешено) защищает сервер от взломов, изоляцию процессов — от пересечений, а вас — от глупых ошибок конфигурации.

Никаких 777!

👁️ 13

Управление правами в Linux: Раз и навсегда разбираемся с chmod и chown: 1 комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

двадцать − 19 =

root@phoenix901:~# connect
[×]

Получай дайджест раз в неделю.
Без спама.