Есть 3 типа прав:
чтение(r),запись(w),выполнение(x)
Права определяются для 3-х типов пользователей:
владельца(u), группы(g), всех других (o)
итак права каждого файла, это 9 бит информации (3 типа прав * 3 типа пользователей), соответственно каждый бит может быть установлен (=1) доступ разрешен, или сброшен(=0) доступ запрещен.
при назначении прав принято использовать восьмеричную(octal) систему счисления.
текстовое представление прав(10 символов):
- rwxr- - r - -
0123456789
символ в позиции 0:
"-" - обычный файл, "d" - папка, "l" - ссылка
символы в позиции 1-3:
"rwx" - права владельца
символы в позиции 4-6:
"r - -" - права для группы
символы в позиции 7-9:
"r - -" - права для всех остальных
таблица для определения прав:
восьмеричное | текстовое | двоичное | описание |
---|---|---|---|
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 | Все типы доступа разрешены |
Как видно из таблицы, права легко вычисляются
простым суммированием. 1=выполнение, 2=запись, 4=чтение.
например требуется выполнение(1) и чтение(4), получаем 1+4=5
пример 644:
- владелец(u) чтение и запись
- группа(g) только чтение
- другие(o) только чтение
пример 755:
- владелец(u) все права
- группа(g) чтение и выполнение
- другие(o) чтение и выполнение
в языках программирования например таких как C,
к правам добавляют 0 в начале каждого числа, что означает, что число восьмеричное, т.е. пишут 0644 вместо 644. При изменении прав с коммандной строки как правило этого не требуется.
Четырехзначное представление прав(4755), дополнительные права
биты SUID, SGID, sticky:
- SUID или setuid: изменить "User ID" во время выполнения
- SGID или setgid: изменить "Group ID" во время выполнения
- sticky бит: запрещает удаление для всех пользователей кроме владельца. Ранее бит означал "держаться" в памяти после завершения процесса
Таблица. Числовое представление дополнительных прав:
восьмеричное | двоичное | описание |
---|---|---|
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 | Все дополнительные права разрешены |
Текстовое представление дополнительных бит:
дополнительные биты обозначаются следующими символами:
"S","s" - SUID, SGID
"T","t" - sticky бит
позиция этих бит, совпадает с позициями (3,6,9) прав выполнения "x"
впри этом, если прав на выполнение нет используется "верхний регистр" т.е. большие символы. Если права на выполнение установлены используются "нижний регистр" т.е. маленькие символы.
примеры:
установлен 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 бит, но не уст. выполнение для других
отличия действия прав, при установке на файлы и папки:
права | файлы | папки |
---|---|---|
чтение | чтение содержимого | получение списка файлов |
запись | запись содержимого | изменение списка файлов (создание,удаление,переименование) |
выполнение | файл можно выполнить | пользователь или процесс, может сделать папку "текущей/рабочей" |
SUID | Установить "User ID" при выполнении | Перекрыть идентификатор пользователя при создании файла/папки (использовать идентификатор владельца корневой папки) |
SGID | Установить "Group ID" при выполнении | Перекрыть идентификатор группы при создании файла/папки (использовать идентификатор группы корневой папки) |
sticky | запретить удаление всем, кроме владельца | запретить удаление всем, кроме владельца |
команда изменеия прав chmod:
chmod [-R] права файл/папка
"-R" применить права рекурсивно ко всем файлам и подпапкам
примеры:
chmod -R 755 folder/
chmod 644 file
и т.д.
есть возможность менять права не целиком, а лишь добавлять или отменять права только определенным группам пользователей
используя символы вместо восьмеричных чисел.
"u" - пользователь/владелец
"g" - группа пользователей
"o" - остальные пользователи
"a" - все группы пользователей
формат прав [ugoa][[+-=][perms], ...
примеры:
chmod -R a+x folder/ выполнение для всех групп рекурсивно
chmod a+rx file чтение и выполнение для всех
chmod u+rx,g-rx file добавить чтение и выполнение для владельца, и
отозвать права для группы
chmod a+r,o= file добавить чтение для всех типов групп и отозвать
все права у всех других пользователей
команда изменения владельца chown:
chown [-R] владелец:группа файл/папка
примеры:
chown -R 0:0 folder/ установить владельца/группу = root рекурсивно
chown myuser:mygroup file установить myuser/mygroup для файла
PS:
источник
Комментариев нет:
Отправить комментарий