Восьмеричные и символьные режимы для chmod, а также биты setuid, setgid и sticky.
У каждого файла три класса: владелец, группа и остальные. Каждый класс складывается из трёх битов: чтение — 4, запись — 2, выполнение — 1. Три восьмеричные цифры образуют режим.
Справочная таблица · 42 записи
Права доступа к файлам в LinuxExplained
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
Переключается на другую учётную запись пользователя.