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

Владелец, группа, rwx, chmod, chown, umask, setuid, sticky bit и ACL.

Шпаргалки · Администрирование · #linux #permissions #chmod #security

Как читать права

-rwxr-xr--  1 anna dev  4096 Jan 5 10:00 script.sh
│└┬┘└┬┘└┬┘
│ │  │  └─ остальные (others)
│ │  └──── группа (group)
│ └─────── владелец (user)
└───────── тип: - файл, d папка, l ссылка
Права Файл Папка
r (4) чтение список содержимого
w (2) запись создавать и удалять файлы внутри
x (1) запуск войти в папку (cd)

Числовая запись

Сумма: r=4, w=2, x=1.

Число Права Пример
7 rwx
6 rw-
5 r-x
4 r--
755 rwxr-xr-x программы, папки
644 rw-r--r-- обычные файлы
600 rw------- ключи, секреты
700 rwx------ личные папки

chmod

chmod 755 script.sh
chmod u+x script.sh            # владельцу добавить запуск
chmod g-w,o-rwx file           # группе убрать запись, остальным всё
chmod -R 750 dir/              # рекурсивно
chmod a+r file                 # всем чтение (a = all)

Владелец и группа

chown anna file
chown anna:dev file
chown -R www-data:www-data /var/www
chgrp dev file
id; groups anna
usermod -aG docker anna        # добавить в группу (повторный вход обязателен)

umask

Определяет права новых файлов: umask 022 даёт файлам 644, папкам 755. umask 077 только владельцу.

Особые биты

Бит Число Эффект
setuid 4000 (u+s) исполняемый файл запускается с правами владельца
setgid 2000 (g+s) запуск с правами группы; новые файлы в папке наследуют группу
sticky 1000 (+t) в папке удалять файлы может только их владелец (как /tmp)
chmod 2775 /srv/shared        # общая папка команды
chmod +t /srv/drop
find / -perm -4000 -type f 2>/dev/null     # поиск setuid-файлов (аудит безопасности)

ACL (тонкие права)

setfacl -m u:anna:rw file
setfacl -m g:dev:rx dir
setfacl -d -m g:dev:rwx dir    # по умолчанию для новых файлов
getfacl file

sudo

sudo cmd выполняет от root. Настройка: visudo, файлы в /etc/sudoers.d/.

Внимание: Не ставьте chmod 777: это даёт запись всем. Найдите владельца и группу, которым права действительно нужны.