Права доступа в Linux

Управление правами доступа — основа безопасности Linux-систем. Эта шпаргалка содержит все команды и обозначения для работы с правами файлов и директорий.

ЧИСЛОВЫЕ И БУКВЕННЫЕ ОБОЗНАЧЕНИЯ ПРАВ

Право Число Буква Описание
Нет прав 0 --- Запрет всех действий
Выполнение 1 --x Запуск файла или вход в директорию
Запись 2 -w- Изменение содержимого
Запись+Выполнение 3 -wx Запись и выполнение
Чтение 4 r-- Просмотр содержимого
Чтение+Выполнение 5 r-x Чтение и выполнение
Чтение+Запись 6 rw- Чтение и запись
Все права 7 rwx Чтение, запись, выполнение

КАТЕГОРИИ ПОЛЬЗОВАТЕЛЕЙ

Категория Обозначение Описание
Владелец u (user) Пользователь-создатель файла
Группа g (group) Основная группа файла
Остальные o (others) Все остальные пользователи
Все a (all) Все категории (u+g+o)

КОМАНДА CHMOD (ИЗМЕНЕНИЕ ПРАВ)

Синтаксис:

chmod [опции] права файл/директория

Таблица команд chmod:

Команда Описание Пример
chmod 755 file Установить права rwxr-xr-x chmod 755 script.sh
chmod 644 file Установить права rw-r—r— chmod 644 config.conf
chmod u+x file Добавить выполнение владельцу chmod u+x program
chmod g-w file Забрать запись у группы chmod g-w document.txt
chmod o=r file Установить только чтение для остальных chmod o=r public.txt
chmod a+x file Добавить выполнение всем chmod a+x /usr/local/bin/*
chmod -R 755 dir Рекурсивно для директории chmod -R 755 /var/www/

КОМАНДА CHOWN (СМЕНА ВЛАДЕЛЬЦА)

Команда Описание Пример
chown user file Сменить владельца chown alex report.pdf
chown user:group file Сменить владельца и группу chown alex:developers app.py
chown :group file Сменить только группу chown :www-data site/
chown -R user dir Рекурсивная смена chown -R www-data /var/www/
chown --reference=src dst Копировать права из другого файла chown --reference=file1 file2

СПЕЦИАЛЬНЫЕ БИТЫ ПРАВ

Бит Число Обозначение Назначение
SUID 4000 s в позиции владельца Запуск от имени владельца
SGID 2000 s в позиции группы Запуск с правами группы
Sticky Bit 1000 t в позиции остальных Запрет удаления чужих файлов

Примеры:

chmod u+s program # Установить SUID
chmod g+s directory # Установить SGID для директории
chmod +t /tmp # Sticky bit для /tmp
chmod 4755 script # SUID + rwxr-xr-x (4755 = 4000 + 755)
chmod 2750 shared # SGID + rwxr-x— (2750 = 2000 + 750)
chmod 1777 /tmp # Sticky + rwxrwxrwx

КОМАНДА UMASK (МАСКА ПО УМОЛЧАНИЮ)

Значение umask Права файлов Права директорий
0022 (по умолчанию) 644 (rw-r—r—) 755 (rwxr-xr-x)
0002 664 (rw-rw-r—) 775 (rwxrwxr-x)
0077 600 (rw——-) 700 (rwx——)
0000 666 (rw-rw-rw-) 777 (rwxrwxrwx)

Использование:

umask # Показать текущую маску
umask 0022 # Установить маску
umask -S # Показать в символьном формате
 

РАСШИРЕННЫЕ ПРАВА (ACL — ACCESS CONTROL LISTS)

Команда Описание Пример
setfacl -m u:user:perms file Добавить права пользователю setfacl -m u:alex:rwx file
setfacl -m g:group:perms file Добавить права группе setfacl -m g:dev:rx dir
setfacl -x u:user file Удалить запись ACL setfacl -x u:alex file
getfacl file Показать ACL getfacl /shared/data
setfacl -b file Удалить все ACL setfacl -b file
setfacl -d -m u:user:perms dir Установить ACL по умолчанию setfacl -d -m u:alex:rwx /shared/

ПРАВА ДЛЯ ДИРЕКТОРИЙ

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

ПОЛЕЗНЫЕ КОМАНДЫ ДЛЯ РАБОТЫ С ПРАВАМИ

Команда Описание
ls -l Подробный список с правами
ls -ld directory Права директории (не содержимого)
stat file Детальная информация, включая права
find /path -perm 644 Найти файлы с конкретными правами
find /path -perm /u=s Найти SUID файлы
find /path -perm /g=s Найти SGID файлы
namei -l /path/to/file Показать права для всех элементов пути

БЫСТРЫЕ КОМАНДЫ «СКОПИРУЙ И ИСПОЛЬЗУЙ»

# Безопасные права для скриптов
chmod 755 script.sh # Владелец: rwx, остальные: rx
chmod 700 private.sh # Только владелец: rwx

# Веб-сервер (nginx/apache)
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html # Для статики
chmod -R 644 *.html *.css # Только чтение

# Общие директории
chmod 2775 /shared # SGID + rwxrwxr-x
chmod 1777 /tmp # Sticky bit для /tmp

# Конфигурационные файлы
chmod 600 ~/.ssh/id_rsa # Закрытый ключ SSH
chmod 644 ~/.ssh/id_rsa.pub # Открытый ключ SSH
chmod 600 /etc/secret.conf # Конфиг с паролями

ЧАСТЫЕ ОШИБКИ И КАК ИХ ИЗБЕЖАТЬ

  1. Слишком открытые права (777) — используйте 755 для программ, 644 для данных

  2. SUID на скриптах — работает только на бинарных файлах

  3. Рекурсивный chmod 777 — может сломать работу системы

  4. Забыть про sticky bit на /tmp — без него любой может удалить чужие файлы

 

Дата последнего обновления: 12/05/2025.