Skip to content

Права доступа к файлам в Linux объяснённые

Восьмеричные и символьные режимы для chmod, а также биты setuid, setgid и sticky.

У каждого файла три класса: владелец, группа и остальные. Каждый класс складывается из трёх битов: чтение — 4, запись — 2, выполнение — 1. Три восьмеричные цифры образуют режим.

Справочная таблица · 42 записи
42 of 42 rows
Числовые (восьмеричные)
Владелец получает полный доступ; группа и остальные — чтение и выполнение.chmod 755 script.sh
Владелец читает и пишет; группа и остальные — только читают.chmod 644 notes.txt
Только владелец читает и пишет; у остальных доступа нет.chmod 600 ~/.ssh/id_rsa
Полный доступ только у владельца; у остальных доступа нет.chmod 700 ~/.ssh
Полный доступ для всех. Риск для безопасности.chmod 777 shared/
Все читают и пишут. Бит выполнения не установлен.chmod 666 log.txt
Владелец — полный доступ; группа — чтение и выполнение; остальные — ничего.chmod 750 app/
Только выполнение, для всех классов. По каталогу можно проходить, но перечислить его содержимое нельзя.chmod 111 dir/
Нет доступа ни для одного класса. Root всё равно может прочитать файл.chmod 000 private.key
Владелец и группа получают полный доступ плюс setgid; типовой режим общего каталога команды.chmod 2775 /srv/team
Результаты umask
Маска по умолчанию. Новые файлы получают 644; новые каталоги — 755.umask 022
Приватная маска. Новые файлы получают 600; новые каталоги — 700.umask 077
Символьные
Добавить выполнение для владельца.chmod u+x deploy.sh
Забрать запись у группы.chmod g-w config.yml
Забрать чтение у остальных.chmod o-r secret.env
Установить только чтение для всех классов.chmod a=r readme.md
Выдать все права всем классам.chmod ugo+rwx public/
Специальные биты
Установлен бит setuid. Бинарник выполняется от имени владельца файла.chmod 4755 /usr/bin/passwd
Установлен бит setgid. Новые файлы и подкаталоги наследуют группу каталога.chmod 2755 /shared
Установлен бит sticky. Удалять может только владелец файла.chmod 1777 /tmp
Бит sticky на обычном файле. Устаревший намёк на хранение в swap, который современный Linux игнорирует.chmod 1755 legacy.sh
Команды
Изменяет биты режима файла.chmod 755 file
Меняет владельца и группу файла.chown user:group file
Меняет группу-владельца файла.chgrp devs file
Задаёт маску прав по умолчанию для новых файлов.umask 022
Выводит файлы с правами в длинном формате.ls -l /etc
Показывает записи POSIX ACL файла.getfacl report.pdf
Задаёт или изменяет записи POSIX ACL.setfacl -m u:alice:rw report.pdf
Ищет файлы, биты прав которых совпадают с режимом.find / -perm /4000
Выводит метаданные файла, включая восьмеричный режим.stat -c '%a %n' file
Показывает права каждого компонента пути.namei -l /var/www/index.html
Меняет атрибут файла, например immutable.chattr +i /etc/resolv.conf
Выводит атрибуты файлов.lsattr /etc/resolv.conf
Показывает capabilities, выданные файлу.getcap /usr/bin/ping
Выдаёт файлу capability без setuid.setcap 'cap_net_raw=+ep' /usr/bin/ping
Выводит capabilities, действующие в текущей оболочке.capsh --print
Показывает идентификатор пользователя, идентификатор группы и состав групп пользователя.id alice
Выводит группы, в которых состоит пользователь.groups alice
Выполняет команду от другого пользователя согласно политике sudoers.sudo systemctl restart nginx
Редактирует файл sudoers с проверкой синтаксиса.visudo
Переключается на другую учётную запись пользователя.su - deploy
Запускает оболочку с другой основной группой.newgrp developers