Перейти к содержанию

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

Калькулятор прав


Справочник

Обозначения

-rwxr-xr-x  1  david  users  4096  Jun 1  file.txt
│└──────────┘  └─────┘└─────┘
│  права        владелец группа
└─ тип: - файл, d каталог, l ссылка, c символьное уст-во, b блочное уст-во

Права для файлов

Символ Число Для файла Для каталога
r 4 Чтение содержимого Список файлов (ls)
w 2 Запись / изменение Создание и удаление файлов
x 1 Выполнение Вход (cd), обращение к файлам

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

Символьная Числовая Описание
rwxrwxrwx 777 Все права всем
rwxr-xr-x 755 Стандарт для исполняемых файлов и каталогов
rw-r--r-- 644 Стандарт для файлов данных
rw------- 600 Приватный файл
rwx------ 700 Приватный каталог
r-------- 400 Только чтение для владельца

Специальные биты

Бит Символ Число Применение
SUID s в позиции x владельца 4xxx На исполняемых: запуск от имени владельца файла
SGID s в позиции x группы 2xxx На исполняемых: от имени группы; на каталогах: новые файлы наследуют группу
Sticky t в позиции x others 1xxx На каталогах: удалять файл может только владелец
chmod 4755 /usr/bin/passwd   # SUID + 755
chmod 2775 /shared/          # SGID + 775 (на каталоге)
chmod 1777 /tmp              # Sticky + 777

В символьной записи: chmod u+s file, chmod g+s dir, chmod +t /tmp


Команды

chmod

# Числовая запись
chmod 755 file.txt
chmod -R 644 /var/www/html/    # рекурсивно

# Символьная запись
chmod u+x script.sh            # добавить execute владельцу
chmod g-w file.txt             # убрать write у группы
chmod o=r file.txt             # установить only read для других
chmod a+r file.txt             # добавить read всем (a = ugo)
chmod u=rwx,g=rx,o=r file.txt  # несколько сразу

chown / chgrp

chown david file.txt            # сменить владельца
chown david:users file.txt      # владелец и группа
chown :developers /project/     # только группа
chown -R www-data /var/www/     # рекурсивно
chgrp docker /usr/bin/docker    # только группа

umask

umask определяет права по умолчанию при создании файлов.

Файл: 666 - umask = итоговые права
Каталог: 777 - umask = итоговые права
umask Файл (666−) Каталог (777−)
022 644 (rw-r--r--) 755 (rwxr-xr-x)
027 640 (rw-r-----) 750 (rwxr-x---)
077 600 (rw-------) 700 (rwx------)
002 664 (rw-rw-r--) 775 (rwxrwxr-x)
umask             # показать текущую маску
umask 022         # установить на сессию
umask -S          # символьный вид: u=rwx,g=rx,o=rx

Постоянно: добавить в ~/.bashrc или /etc/profile.


ACL (расширенные права)

getfacl file.txt              # просмотр ACL
setfacl -m u:alice:rw file    # дать alice rw
setfacl -m g:team:r  file     # дать группе team r
setfacl -x u:alice   file     # убрать ACL для alice
setfacl -b           file     # удалить все ACL
setfacl -R -m u:alice:rw dir/ # рекурсивно

# Дефолтные ACL для новых файлов в каталоге:
setfacl -d -m u:alice:rw /shared/