Какие есть виды прав доступа у файла в Linux?

«Какие есть виды прав доступа у файла в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Linux права доступа к файлам и директориям управляются тремя базовыми разрешениями для трех категорий пользователей.

Базовые разрешения (в octal-нотации):

  • Чтение (r, значение 4): Для файла — просмотр содержимого. Для директории — чтение списка файлов (ls).
  • Запись (w, значение 2): Для файла — изменение содержимого. Для директории — создание, удаление, переименование файлов внутри неё.
  • Исполнение (x, значение 1): Для файла — возможность запустить его как программу или скрипт. Для директории — право войти в неё (cd).

Категории пользователей:

  1. Владелец (user/u) — пользователь, которому принадлежит файл.
  2. Группа (group/g) — группа-владелец файла.
  3. Остальные (others/o) — все остальные пользователи системы.

Примеры и команды:

# Установить права: владелец — читает/пишет/исполняет, группа — читает/исполняет, остальные — только читают.
chmod 754 myscript.sh  # Результат: rwxr-xr--

# Посмотреть права в детальном листинге
ls -l myscript.sh
# -rwxr-xr-- 1 devops ops 120 May 15 10:00 myscript.sh

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

  • SUID (Set User ID, значение 4000): Файл с установленным SUID выполняется с правами своего владельца, а не запустившего его пользователя. Пример — /usr/bin/passwd.
    chmod u+s /path/to/binary  # или chmod 4755
  • SGID (Set Group ID, значение 2000): Для файла — аналогично SUID, но для группы. Для директории — новые файлы внутри наследуют группу директории, а не создателя.
  • Sticky Bit (значение 1000): Для директории (например, /tmp) файлы внутри может удалить только их владелец или root.
    chmod +t /shared_directory  # или chmod 1777

В сценариях DevOps я часто использую chmod для настройки прав на скрипты развертывания, конфигурационные файлы (например, 640 для конфигов с секретами) и общие директории для данных приложений.