uz
KA
июня 23, 2025
Обновлено февраля 2, 2026

chmod в Linux: как изменить права на файлы и директории

Linux VPS

Введение

В большинстве UNIX-подобных систем по умолчанию используется механизм Discretionary Access Control (DAC), отвечающий за управление правами доступа. Он определяет, какие действия пользователь может выполнять с процессами и файлами. В Linux под файлом понимается практически любой объект системы: устройство, обычный файл, каталог, ссылка и другие типы. Для всех них применяются атрибуты, включающие владельца, группу, тип, размер и дополнительные характеристики. Именно по владельцу и группе можно определить, кто и в каком объёме имеет доступ к конкретному объекту.

Требования

  • Права root или эквивалентные;
  • Debian 12 или более новая версия;
  • Базовое понимание принципов работы операционной системы;
  • Активное интернет-соединение.

Разрешения и атрибуты

Посмотреть текущие права доступа и атрибуты файлов в Linux можно с помощью команды:

ls -l

Если требуется получить информацию только по одному конкретному файлу, используется команда:

ls -l /etc/network/interfaces

Разберём, что означает каждая часть вывода:

  • В начале отображаются три группы символов — триплеты прав доступа. Первый символ указывает тип объекта: дефис обозначает обычный файл, d — каталог, l — символическую ссылку;
  • Следующие символы rw- относятся к владельцу файла и определяют права на чтение, запись и выполнение. Аналогичные триплеты далее описывают права группы и остальных пользователей;
  • Число 1 показывает количество жёстких ссылок на файл;
  • Значения root root указывают имя владельца и его группу;
  • В конце указываются размер файла, дата последнего изменения и его имя.

Каждый файл в системе связан с конкретным пользователем и группой. По умолчанию владельцем становится тот, кто создал файл, а группа назначается автоматически. В Linux права доступа разделяются на три категории: владелец, группа и остальные пользователи. Для каждой из них можно отдельно задать разрешения на чтение, запись и выполнение. Управление этими правами осуществляется с помощью утилиты chmod при наличии соответствующих полномочий.

Права также можно задавать в числовом формате, где каждому действию соответствует значение: 4 — чтение, 2 — запись, 1 — выполнение. Комбинируя их, задают итоговый уровень доступа:

chmod 755 interfaces

Если требуется полностью закрыть доступ к файлу для всех категорий пользователей, применяется следующая команда:

chmod 000 interfaces

Команда chmod поддерживает не только числовой, но и символьный формат. Например, команда chmod u+w filename добавляет владельцу право на запись. Здесь u обозначает владельца, g — группу, o — остальных пользователей, а a — всех сразу. Символы +, – и = используются для добавления, удаления или точного задания прав.

chmod u+rwx interfaces && chmod go-rwx interfaces

Аналогичного результата можно добиться, используя оператор равенства:

chmod u=rwx, go= interfaces

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

chmod +t interfaces

Практические примеры

Ниже — несколько типовых сценариев, где права доступа в Linux действительно решают: от защиты конфигов до корректной работы веб-сервера и автоматизации.

Пример 1 — Защитить конфигурационный файл (доступ только для root)

Если конфигурация содержит пароли, токены или ключи, логично закрыть её от чтения другими пользователями:

chmod 600 /etc/app/config.conf

Такой режим оставляет чтение/запись только владельцу (обычно root), а всем остальным запрещает доступ.

Пример 2 — Правильные права для каталога сайта

Частая задача — чтобы владелец мог обновлять файлы, а веб-сервер — только читать их (без права изменять):

chmod 755 /var/www/site
chmod 644 /var/www/site/index.html

В итоге каталог доступен для обхода (execute), а файлы — читаются, но не перезаписываются посторонними.

Пример 3 — Сделать скрипт исполняемым

Когда вы добавляете утилиту или деплой-скрипт, ему нужно право на выполнение:

chmod +x deploy.sh

Проверьте результат:

ls -l deploy.sh

Пример 4 — Общая папка для нескольких пользователей (группа + setgid)

Если несколько пользователей работают в одном каталоге (например, команда DevOps), удобно назначить группу и включить наследование группы для новых файлов:

chgrp -R devops /srv/shared
chmod 2775 /srv/shared

Флаг 2 (setgid) помогает сохранять единый групповой доступ внутри папки — новые файлы будут создаваться с группой devops.

Пример 5 — Защита от удаления в общем каталоге (sticky bit)

Если каталог общий и у всех есть запись, но вы хотите, чтобы каждый мог удалять только свои файлы:

chmod +t /srv/public

Это типичный подход для временных и общих директорий (аналогично тому, как устроен /tmp).

Типичные ошибки при работе с правами доступа

Ошибки в chmod и правах доступа часто приводят либо к уязвимостям, либо к «сломавшимся» сервисам. Ниже — самые распространённые случаи и как их избежать.

Ошибка 1 — Назначать chmod 777 «на всякий случай»

chmod 777 filename

Это открывает полные права всем пользователям и процессам — риск подмены файлов, внедрения вредоносного кода и компрометации сервера. Вместо этого задавайте минимально необходимые права, например 644 для файлов и 755 для каталогов.

Ошибка 2 — Убирать execute у каталогов и терять доступ

Для каталогов право x — это возможность «войти» внутрь и просматривать содержимое по пути. Если сделать так:

chmod 644 /var/www/site

каталог станет недоступен для обхода. Для каталогов обычно используются 755 или 750.

Ошибка 3 — Случайно закрыть конфиг и сломать сервис

Иногда права делают слишком жёсткими, и сервисный пользователь больше не может читать конфигурацию:

chmod 600 /etc/nginx/nginx.conf

Если процесс не запускается под root, он потеряет доступ. Проверьте, под каким пользователем работает сервис, и задавайте права с учётом этого (или корректно настраивайте владельца/группу).

Ошибка 4 — Путать файл и каталог

Одинаковые числа для файлов и каталогов работают по-разному. Например, 644 обычно норм для файла, но для каталога — почти всегда проблема, потому что нет execute.

Ошибка 5 — Не проверять результат после изменений

После chmod лучше сразу убедиться, что права стали именно такими, как нужно:

ls -l /path/to/file

И если речь о сервисах — перезапустить и проверить статус (например, systemctl status).

Краткий справочник по правам доступа

Права в Linux часто задают в числовом виде: каждое действие имеет «вес», а итоговая цифра получается их суммой.

Значение Право Что означает на практике
4 Чтение (r) Можно просматривать содержимое файла
2 Запись (w) Можно изменять файл или записывать новые данные
1 Выполнение (x) Можно запускать файл как программу/скрипт (для каталогов — «входить» внутрь)
7 rwx (4+2+1) Полный доступ: чтение, запись и выполнение
6 rw- (4+2) Чтение и запись без выполнения
5 r-x (4+1) Чтение и выполнение без записи
4 r– Только чтение
0 Нет доступа

Пример: chmod 755 означает: владелец — 7 (rwx), группа — 5 (r-x), остальные — 5 (r-x).

Заключение

Понимание прав доступа и атрибутов файлов в Linux — основа безопасной и стабильной работы серверов. Грамотная настройка разрешений позволяет защитить систему от несанкционированного доступа, минимизировать риски удаления или изменения данных и упростить администрирование. Используя команды ls и chmod, можно гибко управлять доступом к файлам и каталогам, адаптируя систему под конкретные задачи. Эти навыки особенно важны при работе с серверной инфраструктурой, где ошибки в правах доступа напрямую влияют на безопасность и устойчивость всей системы.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 11
100029 Ташкент Улица Якка Чинар, дом 2/1
ООО «ИТГЛОБАЛКОМ ЛАБС»

Вам также может быть интересно...