📚 Как работают права доступа в Linux

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

Обозначение Кто это Пример
u (user) Владелец файла пользователь, создавший файл
g (group) Члены владеющей группы группа developers
o (others) Все остальные любые другие пользователи системы
a (all) Все три категории сразу используется для массовых изменений

Три базовых типа прав:

Право Символ Числовое значение Что разрешает
Чтение r 4 Просмотр содержимого файла / список файлов в директории
Запись w 2 Изменение файла / создание и удаление файлов в директории
Выполнение x 1 Запуск файла как программы / вход в директорию
🔍 Важно: Для директорий право x означает возможность войти в неё (использовать в пути), даже если нет права r.

📚 Команда chmod: два режима работы

Режим 1: Символьный (символьные обозначения)

Синтаксис:

chmod [кому][операция][права] путь_к_файлу

Компоненты:

Примеры:

# Дать владельцу право на запись
chmod u+w file.txt

# Убрать у всех право на чтение
chmod a-r file.txt

# Установить для группы права "чтение + выполнение", остальные права группы удалить
chmod g=rx script.sh

# Дать владельцу полные права, группе и остальным — только чтение и выполнение
chmod u=rwx,g=rx,o=rx project/

# Комбинированное изменение: добавить выполнение владельцу, убрать запись у остальных
chmod u+x,o-w app.bin

Режим 2: Числовой (восьмеричный)

Каждому типу прав соответствует число: r=4, w=2, x=1.
Права складываются для каждой категории пользователей.

Алгоритм расчёта:

  1. Определите нужные права для владельца, группы и остальных
  2. Сложите числа для каждой категории
  3. Запишите три цифры подряд: owner-group-others

Примеры расчёта:

Права Расчёт Цифра
rwx 4+2+1 7
rw- 4+2+0 6
r-x 4+0+1 5
r-- 4+0+0 4
-wx 0+2+1 3
-w- 0+2+0 2
--x 0+0+1 1
--- 0+0+0 0

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

# Владелец: всё, группа: чтение+выполнение, остальные: только чтение
chmod 754 file.txt

# Только владелец имеет полный доступ, остальные — ничего
chmod 700 private/

# Все могут читать и выполнять, но писать — только владелец
chmod 755 script.sh

# Владелец и группа могут читать и писать, остальные — только читать
chmod 664 document.txt
💡 Совет: Числовой режим удобен для точной установки прав, символьный — для точечных изменений.

📚 Дополнительные возможности chmod

Рекурсивное изменение прав: флаг -R

Применяет права ко всем файлам и поддиректориям внутри указанной директории:

chmod -R 755 /var/www/html/
chmod -R u+w,g-w projects/
⚠️ Внимание: Используйте -R осторожно — можно случайно открыть доступ к системным файлам.

Проверка результата: ls -l

Вывод команды показывает права в символьном формате:

-rwxr-xr-- 1 student developers 1024 Mar 25 10:00 script.sh
│││││││││
││││││││└─ остальные: r-- (4)
││││││└── группа: r-x (5)  
│││││└─── владелец: rwx (7)
││││└──── тип: - (файл), d (директория)

Практический пример разбора:

drwxr-x--- 2 student developers 4096 Mar 25 09:00 myproject/

📚 Алгоритм проверки прав при доступе к файлу

Когда пользователь пытается получить доступ к файлу, система проверяет права последовательно:

  1. Пользователь — владелец файла?
    → Применяются права категории user (u). Проверка завершена.
  2. Пользователь входит в владеющую группу?
    → Применяются права категории group (g). Проверка завершена.
  3. Ни то, ни другое?
    → Применяются права категории others (o).
🔍 Ключевой момент: Система останавливается на первом совпадении. Даже если пользователь входит в несколько групп, проверяется только основная группа файла.

Пример:
Файл с правами rw-r----- (640), владелец alice, группа devs.


✅ Ключевые термины для запоминания: