воскресенье, 27 октября 2013 г.

шпора по правам доступа на файловой системе

Немного капитанства и плавный переход на биты наследования.

Ваш КО

 
права файла описываются в последовательности: права владельца - права группы - права остальных

Расшифровка для chmod

0 - - - 000 Все типы доступа запрещены
1 - - x 001 Разрешено выполнение
2 - w- 010 Разрешена запись
3 - wx 011 Разрешена запись и выполнение
4 r - - 100 Разрешено чтение
5 r - x 101 Разрешено чтение и выполнение
6 r w- 110 Разрешено чтение и запись
7 rwx 111 Все типы доступа разрешены

Расшифровка для chown

"u" - пользователь/владелец
"g" - группа пользователей
"o" - остальные пользователи
"a" - все группы пользователей

Примеры

chmod -R 755 folder/
chown myuser:mygroup file установить myuser/mygroup для файла

Популярные значения с вики

Про наследство

Допустим нужно при работе в каталоге, владелец которой является другой пользователь/группа, что бы файлы твой пользователь мог читать, писать и исполнять.

Например: для того что бы nginx или питон могли достучаться до нужных им файлам можно сделать так, что бы при создании файла/папки она автоматом числилась за dev01:devgroup.
 
Для этого используются дополнительные биты прав:
SUID (копируются права на пользователя, setuid ставит бит = 4);
SGID (копируются права на группу, setgid ставит бит = 2)
sticky (можно писать в чужие файлы, но нельзя их удалить; бит = 1).

Расшифровка дополнительных битов

восьмеричное    двоичное    описание
0                          000             Нет дополнительных прав
1                          001             Установлен sticky бит
2                          010             Установлен setgid бит
3                          011             Установлены sticky и setgid биты
4                          100             Установлен setuid бит
5                          101             Установлены setuid и sticky биты
6                          110             Установлены setuid и setgid биты
7                          111             Все дополнительные права разрешены

Примеры команд


chmod 4755 file - устанавливает бит SUID и заменяет обычные права на 755 (rwxr-xr-x).
chmod u+s file - тоже самое, только обычные права не перезаписываются.
chmod 2755 file - устанавливает на файл бит SGID и заменяет обычные права на 755 (rwxr-xr-x).
chmod g+s file - тоже самое, только обычные права не перезаписываются

установленный SUID:
- r w  s -  -  -  -  -  -   установлены биты SUID и выполнение для владельца
- r  -  S -  -  -  -  -  -   установлен бит SUID, не установлен бит выполнения

установленный SGID:
- r w x r w s  -  -  -   установлены биты SGID и выполнение для группы
- r w x r -  S  -  -  -   установлен бит SGID, не установлен бит выполнения для группы

установленный sticky бит:
- r w x r w x r w t   установлены биты sticky и выполнение для других
- r w x r w x r  - T   установлен sticky бит, но не установлен бит выполнения для других

Примеры использования


Теперь, если у вас есть каталог,
- в котором хранятся проекты,
- которые ковыряют несколько админов
, то можно создать группу devs с нужными правами, в нее включить участников dev01, dev02 и srv01 (для nginx). А потом на каталог с проектами поставить chmod 6775

Частые вопросы


Где искать к какой группе принадлежит пользователь?
groups %username%

Какие вообще есть группы?
cat /etc/group

Какие есть пользователи в системе
sudo cat /etc/passwd
 
Как добавить группу?
groupadd %grouname%

как добавить пользователя (существующего) в группу (вторичную)?
usermod -a -G %groupname% %username%