*Cube-Host– облачный хостинг!!

Права доступа к файлам в Linux

File permissions in Linux

Контроль доступа, защищающий ваш сервер Linux в реальных условиях

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

В этом руководстве объясняется, как работают права доступа, как их читать и как безопасно настраивать с помощью chmod, chown, групп, umask и ACL — с практическими примерами для хостинга и веб-серверов.

Пользователи, группы и три области прав доступа

Каждый файл и каталог принадлежит:

  1. Владельцу (пользователю) — основной учетной записи, которая «владеет» файлом.
  2. Группе — группе пользователей, которые могут совместно пользоваться контролируемым доступом.
  3. Другие — все остальные пользователи системы.

Существует три основных права:

  • r = чтение
  • w = запись
  • x = выполнение

Эти правила необходимы в любой многопользовательской системе, включая хостинговые среды и VPS-серверы, где сосуществуют несколько сервисов и пользователей.

Как прочитать права доступа из ls -l

ls -l

Пример вывода:

-rw-r-----  1 alice  dev  2048 Mar 10 12:00 config.php
drwxr-xr-x  2 root   root 4096 Mar 10 12:00 /var/www

Разбор -rw-r-----:

  • Первый символ: означает файл, d — каталог, l — символическая ссылка.
  • Следующие 3: rw- = права владельца
  • Следующие 3: r— = права группы
  • Следующие 3: = права других пользователей

Совет от профессионала: для получения более подробной информации (включая числовые режимы) используйте:

stat filename

Важный нюанс: права доступа к каталогам НЕ совпадают с правами доступа к файлам

В каталогах r/w/x ведут себя по-разному:

ПравоДля файлаНа каталоге
rЧтение содержимого файлаВывести список элементов каталога (ls)
wРедактировать содержимое файлаСоздать/удалить/переименовать файлы внутри (если в сочетании с x)
xЗапустить файл как программу/скриптВвод/доступ к элементам внутри (cd, открыть файлы)

Вот почему возникает ситуация «Я вижу папку, но не могу открыть файлы»: в каталоге может быть установлен флаг r без x.

Символьный и числовой режимы

Вы увидите права доступа в двух основных форматах:

  • Символический (удобный для чтения): rwxr-xr-x
  • Числовой (используется с chmod): 755, 644, 600

Числовые значения представляют собой суммы:

  • r = 4
  • w = 2
  • x = 1

Итак:

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

Основные команды: chmod, chown, chgrp

Эти команды — незаменимый инструментарий для управления правами доступа на хостингах и VPS-серверах под управлением Linux.

chmod — изменение прав доступа

# Numeric mode:
chmod 644 index.html
chmod 755 script.sh

# Symbolic mode:
chmod u=rw,g=r,o=r config.ini
chmod u x deploy.sh
chmod g w uploads

Будьте осторожны с рекурсивным chmod: каталоги и файлы часто требуют разных режимов (например, 755 для каталогов, 644 для файлов). Вместо chmod -Rбезопаснее использовать find:

# Set directories to 755
find /var/www/site -type d -exec chmod 755 {} ;

# Set files to 644
find /var/www/site -type f -exec chmod 644 {} ;

chown — изменение владельца

# Change owner only
chown alice file.txt

# Change owner and group
chown alice:dev file.txt

# Recursive ownership change (use carefully!)
chown -R www-data:www-data /var/www/site

chgrp — изменение группы

chgrp dev file.txt

Специальные биты: SUID, SGID, Sticky Bit

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

  • SUID (Set User ID): исполняемый файл запускается с привилегиями владельца (chmod u s).
  • SGID (Set Group ID): в каталогах новые файлы наследуют группу каталога (chmod g s).
  • Sticky Bit: пользователи не могут удалять файлы, не принадлежащие им, в общих каталогах (часто используется для /tmp) — chmod t.
# Sticky bit on shared folder
chmod  t /shared

# SGID on a team directory (keeps consistent group ownership)
chmod g s /var/www/team_project

На хостингах и веб-серверах SGID особенно полезен при командных развертываниях, когда несколько пользователей редактируют один и тот же проект, не занимаясь постоянной настройкой групповой собственности.

Права доступа по умолчанию: umask (и почему это важно)

umask определяет права доступа по умолчанию для вновь создаваемых файлов и каталогов. Это критически важно на серверах: без безопасного значения umask новые файлы могут оказаться слишком открытыми.

# View current umask
umask

# Example: safer defaults (common on servers)
umask 027

При umask 027 типичные значения по умолчанию становятся:

  • Новые файлы: 640
  • Новые каталоги: 750

ACL: детальный контроль доступа для конкретных пользователей (помимо владельца/группы/прочих)

Иногда необходимо предоставить доступ одному пользователю, не меняя владельца/группу. Именно в таких случаях ACL (списки контроля доступа) — подходящий инструмент.

# View ACL
getfacl file.txt

# Give user bob read/write access
setfacl -m u:bob:rw file.txt

# Give group qa read access
setfacl -m g:qa:r file.txt

# Default ACL for a directory (new files inherit it)
setfacl -d -m g:dev:rwX /var/www/team_project

ACL очень удобен на VPS-хостинге, где вы управляете несколькими сервисами/пользователями и хотите обеспечить строгий контроль без постоянных изменений владельца.

Настройки прав доступа, которые можно реально использовать

Это общие, безопасные исходные настройки (настройте их, если вашему приложению требуется другое поведение):

  • Папка SSH: ~/.ssh700, ключи → 600
  • Веб-каталоги: 755
  • Веб-файлы: 644
  • Конфигурация с секретами: 600 (или 640 с контролируемой группой)
  • Каталог загрузок: часто требует прав на запись для группы (избегайте 777; используйте групповую стратегию SGID/ACL)

Избегайте chmod 777. Это самое распространённое «быстрое решение», которое становится уязвимостью — особенно в общих средах и неправильно настроенных веб-приложениях.

Мониторинг изменений и обнаружение проблем с правами

Права доступа — это лишь часть безопасности сервера. Вам также нужна видимость:

  • auditd — аудит доступа к критически важным файлам и каталогам
  • journalctl — проверка системных журналов
  • lsof — просмотр того, какие процессы используют какие файлы
  • ps aux — обнаружение подозрительных процессов

Если вы хостите веб-сайты или сервисы, сочетание правильных прав доступа с мониторингом сделает вашу среду Linux значительно более стабильной и безопасной.

Заключение

Права доступа к файлам в Linux просты в теории, но эффективны на практике. Научитесь читать ls -l, стратегически использовать группы, избегать рискованных рекурсивных изменений, устанавливать безопасный umask и применять ACL, когда требуется точный контроль. Такой подход необходим на любом VPS под Linux и помогает поддерживать стабильность и безопасность вашей хостинговой среды.

Prev
Menu