PQ
PQ.Hosting

Валюта

Права доступа к файлам в Linux: ls -l, chmod, chown и специальные биты

Автор
PQ
04 марта 2026
5 мин чтения
393 просмотров
Права доступа к файлам в Linux: ls -l, chmod, chown и специальные биты

Права доступа в Linux — не просто формальность. Именно они определяют, сможет ли веб-сервер прочитать конфиг, сможет ли скрипт записать лог, и сможет ли злоумышленник выполнить файл, который не должен запускаться никем кроме root. Разобраться в правах один раз — значит избавиться от половины типичных проблем с «Permission denied».

Посмотреть права: ls -l

Самый быстрый способ — команда ls -l:

ls -l /etc/nginx/nginx.conf

Вывод будет примерно таким:

-rw-r--r-- 1 root root 2893 Feb 01 14:22 nginx.conf

Разберём каждое поле слева направо.

Как читать строку прав

-rw-r--r--  1  root  root  2893  Feb 01  nginx.conf

Первый символ — тип файла:

  • - — обычный файл
  • d — директория
  • l — символическая ссылка
  • c — символьное устройство
  • b — блочное устройство

Следующие 9 символов — три группы по три:

rw-   r--   r--
 │     │     └── остальные (others)
 │     └──────── группа (group)
 └────────────── владелец (user)

Каждая группа содержит три флага: r (read — чтение), w (write — запись), x (execute — выполнение). Дефис - означает что право отсутствует.

Пример rw-r--r--:

  • владелец: читать + писать, выполнять нельзя
  • группа: только читать
  • остальные: только читать

Число после прав — количество жёстких ссылок на файл.

Два следующих поля — имя владельца и группы.

Числовые права (octal)

Каждый флаг имеет числовое значение:

Символ Значение
r 4
w 2
x 1
- 0

Права каждой группы — сумма значений. Примеры:

Число Символы Значение
7 rwx полный доступ
6 rw- чтение и запись
5 r-x чтение и выполнение
4 r-- только чтение
0 --- нет доступа

Полные права 755 означают: владелец — rwx (7), группа — r-x (5), остальные — r-x (5).

Посмотреть права в числовом виде:

stat -c "%a %n" /etc/nginx/nginx.conf

Посмотреть подробные метаданные: stat

stat показывает всё сразу — права в обоих форматах, владельца, группу, inode, размер, временны́е метки:

stat /etc/nginx/nginx.conf
  File: /etc/nginx/nginx.conf
  Size: 2893      Blocks: 8      IO Block: 4096  regular file
Device: 802h  Inode: 786435   Links: 1
Access: (0644/-rw-r--r--)  Uid: (0/root)  Gid: (0/root)
Access: 2026-02-28 10:15:00
Modify: 2026-02-01 14:22:10
Change: 2026-02-01 14:22:10

Строка Access: (0644/-rw-r--r--) даёт права сразу в обоих форматах.

Посмотреть права на директорию

Для директорий флаг x означает не «выполнить», а «войти» — без него нельзя перейти в директорию командой cd или обратиться к файлам внутри.

Посмотреть права директории (не её содержимого):

ls -ld /var/www/html

Флаг -d показывает саму директорию как объект, а не выводит её содержимое.

Изменить права: chmod

Символьный способ (добавить, убрать, задать):

chmod u+x script.sh      # добавить выполнение владельцу
chmod g-w file.txt       # убрать запись у группы
chmod o=r file.txt       # задать для остальных только чтение
chmod a+x script.sh      # добавить выполнение всем (a = all)

Числовой способ (задать сразу для всех групп):

chmod 755 script.sh      # rwxr-xr-x
chmod 644 config.conf    # rw-r--r--
chmod 600 id_rsa         # rw------- (только владелец читает/пишет)
chmod 777 shared/        # rwxrwxrwx (опасно на продакшене)

Рекурсивно для всей директории:

chmod -R 755 /var/www/html

Изменить владельца: chown

Изменить владельца файла:

sudo chown www-data file.txt

Изменить владельца и группу одновременно:

sudo chown www-data:www-data /var/www/html

Рекурсивно:

sudo chown -R www-data:www-data /var/www/html

Изменить только группу (без смены владельца):

sudo chgrp developers project/

Специальные права: setuid, setgid, sticky bit

setuid (SUID)

Файл запускается с правами его владельца, а не того, кто его запускает. Используется в системных утилитах — например passwd запускается от любого пользователя, но меняет /etc/shadow, принадлежащий root.

chmod u+s /path/to/binary

В выводе ls -l вместо x у владельца появляется s: -rwsr-xr-x

setgid (SGID)

На файле: запускается с правами группы файла.

На директории: новые файлы внутри наследуют группу директории (а не группу создателя). Полезно для общих рабочих папок команды.

chmod g+s /shared/teamfolder

В выводе: drwxrwsr-x

Sticky bit

На директории: пользователь может удалить только свои файлы, даже если имеет право записи в директорию. Классический пример — /tmp: любой может создавать файлы, но удалить чужой нельзя.

chmod +t /tmp

В выводе: drwxrwxrwt

Посмотреть все файлы с setuid в системе:

find / -perm -4000 -type f 2>/dev/null

Типичные комбинации прав

Права Назначение
600 Приватный SSH-ключ (~/.ssh/id_rsa)
644 Конфиг, веб-страница (читают все, пишет только владелец)
700 Скрипт только для владельца
755 Исполняемый файл, публичная директория
750 Директория группы без доступа посторонних
777 Полный доступ всем — избегать на сервере

Шпаргалка

Задача Команда
Посмотреть права ls -l filename
Права в числовом виде stat -c "%a %n" filename
Подробные метаданные stat filename
Права директории ls -ld /path/
Изменить права (символьно) chmod u+x filename
Изменить права (числом) chmod 755 filename
Рекурсивно chmod -R 755 /path/
Изменить владельца sudo chown user:group filename
Установить setuid chmod u+s filename
Установить setgid chmod g+s directory
Установить sticky bit chmod +t directory
Найти файлы с setuid find / -perm -4000 -type f 2>/dev/null

Поделиться статьей

Похожие статьи