Вики / Пользователи и права
Права доступа (rwx, SUID, sticky)
Модель прав Unix — чтение/запись/исполнение, владелец/группа/другие, спецбиты.
У каждого файла есть владелец, группа и три набора прав: для владельца (u), группы (g) и остальных (o). Права: r (чтение), w (запись), x (исполнение; для каталога — вход/проход).
-rwxr-x--- 1 alice devs ...
│└┬┘└┬┘└┬┘ │ └ группа
│ u g o └ владелец
└ тип (- файл, d каталог, l ссылка)
Числовая запись: r=4, w=2, x=1. 750 = rwx r-x ---. Подробнее о смене прав —
chmod-chown.
| Восьмерич. | Права | Типично для |
|---|---|---|
644 |
rw-r--r-- | обычные файлы |
600 |
rw------- | секреты, ключи |
755 |
rwxr-xr-x | скрипты, бинарники, каталоги |
700 |
rwx------ | приватные каталоги |
775 |
rwxrwxr-x | общий каталог группы |
1777 |
rwxrwxrwt | общий со sticky (как /tmp) |
ls -l file # показать права/владельца
chmod 640 file # u=rw g=r o=
chmod u+x,go-w file # символьно: +x владельцу, убрать w у g/o
chmod -R u+rwX dir # рекурсивно; X = x только каталогам/уже-исполняемым
umask # маска для новых файлов (022 → файлы 644, каталоги 755)
| Бит | На файле | На каталоге | Запись |
|---|---|---|---|
| SUID (4xxx) | запуск с правами владельца файла | — | chmod u+s |
| SGID (2xxx) | запуск с правами группы | новые файлы наследуют группу каталога | chmod g+s |
| sticky (1xxx) | — | удалять может только владелец файла (как /tmp) |
chmod +t |
ls -l /usr/bin/passwd # -rwsr-xr-x ← s = SUID
ls -ld /tmp # drwxrwxrwt ← t = sticky
chmod 2775 /shared # SGID: общий каталог, файлы наследуют группу
find / -perm -4000 -type f 2>/dev/null # аудит всех SUID-бинарей (безопасность)
Permission denied при запуске скрипта
Нет бита x: chmod +x script.sh. Либо файл на noexec-разделе (mount | grep noexec,
см. mount). Либо неверный shebang.
Не могу записать в каталог, хотя есть w на файл
Для создания/удаления/переименования файла важны права на каталог (w+x), не на сам файл. И наоборот: удалить файл можно без прав на него, если есть w на каталог.
Веб-сервер не читает файлы (403)
nginx работает от www-data — нужен r на файлы и x на все каталоги пути.
namei -l /var/www/site/index.html покажет, где именно прав не хватает.
Доступ должен быть, но его нет
Возможно, действуют ACL (символ + в ls -l) или AppArmor
(в журнале apparmor ... DENIED). Классических прав мало для полной картины.
SGID-каталог: новые файлы не той группы
SGID наследует группу для новых, но уже существующие надо перевести вручную
(chgrp -R), и проверь umask.
ls -l ; namei -l /path/to/file # права / где теряются по пути
chmod 640 file ; chmod 600 secret ; chmod 755 script
chmod u+x,go-w file # символьно
chmod 2775 dir # SGID (общая группа) ; 1777 — sticky
chown user:grp file # см. chmod-chown
find / -perm -4000 -type f 2>/dev/null # аудит SUID
См. также
- sudo — Пользователи и права
- Пользователи и группы — Пользователи и права
- chmod / chown — Пользователи и права