Что означают права доступа 777 для файла в Linux?

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

Ответ

Права 777 — это восьмеричное (octal) представление полных разрешений на чтение (r), запись (w) и выполнение (x) для трех категорий пользователей: владельца, группы и всех остальных (others).

Разбивка: 7 = 4 (r) + 2 (w) + 1 (x)

# Структура: владелец|группа|остальные
#            rwx   | rwx  | rwx
#            421    | 421  | 421
#            7      | 7    | 7

$ ls -l script.sh
-rwxrwxrwx 1 user group 123 Apr 10 10:00 script.sh  # Права 777

Практическое значение и риски: В DevOps-практике такие права почти всегда недопустимы по соображениям безопасности:

  1. Слабый контроль доступа: Любой пользователь системы может изменить или удалить файл.
  2. Уязвимость исполняемых файлов: Если скрипт или бинарный файл с правами 777 содержит уязвимость или его содержимое может быть подменено, злоумышленник может выполнить произвольный код.
  3. Нарушение принципа наименьших привилегий.

Правильная альтернатива:

# Исполняемый скрипт: владелец — полные права, группа и остальные — только выполнение.
chmod 755 /usr/local/bin/myscript  # rwxr-xr-x

# Конфигурационный файл: владелец — чтение/запись, группа — чтение, остальные — нет прав.
chmod 640 /etc/app/config.yaml     # rw-r-----

Я всегда явно задаю минимально необходимые права через chmod с числовым или символьным синтаксисом (u=rw,go=r).