Права доступа Unix, SUID, SGID, Sticky биты Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:стандартные_права_unix [2014/12/13 01:32]
[Стандартные права]
wiki:стандартные_права_unix [2020/10/07 17:56] (текущий)
[Расширенные права]
Строка 1: Строка 1:
-====== ​Стандартные ​права Unix, SUID, SGID, Sticky биты ======+====== ​Права доступа Unix, SUID, SGID, Sticky биты ======
 ^  Поддерживаемые версии Ubuntu ​ ^ ^  Поддерживаемые версии Ubuntu ​ ^
 |  Все (теоретически) ​ |  ​ |  Все (теоретически) ​ |  ​
Строка 24: Строка 24:
 |  s  |Unix сокет (unix domain socket)| |  s  |Unix сокет (unix domain socket)|
  
-===== Стандартные права доступа =====+===== Права доступа =====
  
 Посмотреть права доступа на объекты можно командой **ls** c ключем **-l** ("​л"​). Также можно добавить ключ **-a**, для того,​чтобы были отображены скрытые объекты:​ Посмотреть права доступа на объекты можно командой **ls** c ключем **-l** ("​л"​). Также можно добавить ключ **-a**, для того,​чтобы были отображены скрытые объекты:​
Строка 58: Строка 58:
 Для администрирования часто удобнее использовать не буквенное представление прав, а цифровое,​ в восьмеричном представлении (оно короче). Так, например,​ права на файл всем и вся, соответствуют записи **777** (что аналогично символьному представлению **rwxrwxrwx**). Для администрирования часто удобнее использовать не буквенное представление прав, а цифровое,​ в восьмеричном представлении (оно короче). Так, например,​ права на файл всем и вся, соответствуют записи **777** (что аналогично символьному представлению **rwxrwxrwx**).
  
-Существуют также специальные биты, такие как **SUID**, **SGID** и **Sticky**-бит. ​Они ​влияют на запуск файла. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую,​ в различной технической литературе права обозначаются именно 4-мя цифрами,​ например **0744**. Многие стараются не использовать специальные биты, сетуя на безопасность (и не без основательно),​ но, в некоторых ситуациях без них не обойтись. Поговорим о них несколько позже.+Существуют также специальные биты, такие как **SUID**, **SGID** и **Sticky**-бит. ​**SUID**, **SGID** ​влияют на запуск файла, а **Sticky** влияет на определение владельца объектов в каталоге. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую,​ в различной технической литературе права обозначаются именно 4-мя цифрами,​ например **0744**. Многие стараются не использовать специальные биты, сетуя на безопасность (и не без основательно),​ но, в некоторых ситуациях без них не обойтись. Поговорим о них несколько позже.
  
 Давайте рассмотрим пример,​ итак: Давайте рассмотрим пример,​ итак:
Строка 84: Строка 84:
 Восьмеричное обозначение в этом примере:​ **0755**. Восьмеричное обозначение в этом примере:​ **0755**.
  
-<note important>​Для полноценного просмотра каталога,​ необходимы права на чтение каталога и доступ к файлам,​ а главное к их атрибутам,​ т.е. минимальные разумные права на каталог - 5 (r-x). Прав 4 (r - - ) хватит только на просмотр имен файлов,​ без атрибутов,​ т.е. не будет известен ни размер файла, ни его тип (что даже не позволит отличить директории от файлов).</​note>​+<note important>​Для полноценного просмотра каталога,​ необходимы права на чтение каталога и доступ к файлам,​ а главное к их атрибутам,​ т.е. минимальные разумные права на каталог - 5 (r-x). Прав 4 (r--) хватит только на просмотр имен файлов,​ без атрибутов,​ т.е. не будут известны размер файла, права доступа,​ владелец. 
 + 
 +На практике для каталогов используется только три режима:​ 7 (rwx), 5 (r-x) и 0 (---).</​note>​ 
 + 
 +<note tip>Очень любопытный режим доступа к каталогу - 3 (-wx): он позволяет делать в директории все, что угодно,​ но не позволяет прочитать имена объектов в директории. Т.е. если вам не известны названия объектов в этом каталоге, то вы сделать с ними ничего не сможете (даже удалить по маске * т.к. маску не к чему применять - имена то недоступны).  
 + 
 +В каталоге с режимом доступа 3 (-wx) можно создавать новые, переименовывать и удалять ​файлы и каталоги (если вы знаете их имя); читатьизменять, запускать файл (если достаточно на него ​прав, и опять же - вы знаете его ​имя). Можно даже менять ​права доступа на файлы и каталоги ​(если вы знаете имя). Но самое интересное, ​что ​если вы сможете перейти (по cd((Хотя графические файловые менеджеры могут и отказаться открывать такой подкаталог.))) в подкаталог такого каталога (а для этого вам опять нужно знать ​его имя), то там у вас будет "​все в ожуре"​ (если конечно у этого ​подкаталога будет нормальный режим доступа). 
 + 
 +Никакой рекурсивный поиск/​удаление тоже не сможет ​залезть ​внутрь такого каталога - ему ведь нужны названия - а их из такого каталога - никак не получить.  
 + 
 +Но не надо думать,​ что такой каталог полноценно заменяет крипто-контейнер (т.е. может использоваться для хранения очень секретных данных). Да, имен объектов из такого каталога никак не получить,​ однако если попытаться создать объект с именем,​ которое уже существует,​ то такая операция закончится неудачей (т.е. мы получим подтверждение,​ что такое имя уже есть). Так же можно пытаться открыть (как ​файл или как каталогобъект с произвольным именем,​ если такого имени нет, то мы получим ошибку. Безусловно имя может быть очень длинным и шансы угадать его могут быть не велики,​ но не надо забывать,​ что права доступа могут сменить как владелец каталога так root. Да и пути доступа могут сохраниться в различных логах и файлах истории.</​note>​
 ===== Команда chmod ===== ===== Команда chmod =====
  
-Права устанавливаются командой **chmod**. По умолчанию использовать ее может только **root**. Команда **chmod** поддерживает установку прав как в восьмеричном представлении,​ так и в символьном (маска режима доступа).+Права устанавливаются командой **chmod**. Команда **chmod** поддерживает установку прав как в восьмеричном представлении,​ так и в символьном (маска режима доступа).
  
 Синтаксис команды прост: Синтаксис команды прост:
Строка 141: Строка 151:
  
 Символьное назначение окажет неоценимую услугу,​ если требуется добавить права на объект к уже существующим правам. Символьное назначение окажет неоценимую услугу,​ если требуется добавить права на объект к уже существующим правам.
 +
 +=== Массовое назначение прав ===
 +
 +Иногда,​ бывает,​ нужно массово установить права на определенный тип объектов,​ например,​ только на каталоги или только на файлы. Простое использование опции **-R** (рекурсия) здесь не поможет т.к. chmod будет проходить по всем объектам удовлетворяющим маске, что иногда вовсе не то, что нужно. ​
 +
 +Итак, чтобы массово установить права на определенный тип объектов можно использовать один из вариантов (вообще,​ их очень много):​
 +
 +  * **chmod -R 770 $(find . -type d)** 
 +
 +где **-type d** - каталоги,​ **-type f** - файлы. В данном примере chmod установит,​ начиная от текущего каталога((О чем сообщает точка после **find**.)), ​ права на все каталоги (включая подкаталоги) разрешения 770 (rwx rwx- - -) при этом не трогая права на другие объекты. ​
 +
 +Более длинный вариант аналогичной операции:​
 +
 +  * **find ./ -type f -exec sudo chmod 775 {} \;**
 +
 +где **-type d** - каталоги,​ **-type f** - файлы. В данном варианте chmod установит разрешения 775 на все файлы включая файлы в подкаталогах начиная от текущего.
 +
  
 ===== Биты SUID, SGID и Sticky ===== ===== Биты SUID, SGID и Sticky =====
Строка 159: Строка 186:
 </​code>​ </​code>​
  
-**1000** - идентификатор (GID) дополнительной группы allexserv пользователя **allexserv**((Обратите внимание,​ в этом примере основная группа пользователя **allexserv** - это группа **root** (идентификатор 0), а группа **allexserv** (1000) - считалась бы дополнительной. В данном примере ​пользователь **allexserv** не входит ​больше в группу **allexserv** (видимо я, при создании себя вручную изменил принадлежность к группам), так что группа ​**allexserv** на данный момент пуста.))+**1000** - идентификатор (GID) дополнительной группы allexserv пользователя **allexserv**((Обратите внимание,​ в этом примере основная группа пользователя **allexserv** - это группа **root** (идентификатор 0) - при создании этого пользователя ему была явно указана принадлежность к группе **root**.))
  
-Зачастую, ​при создании пользователя, если не указано иноеидентификатор группы пользователя равен идентификатору ​пользователя. Например:​+Если при создании пользователя ​основная группа ​не указана явно, то основной ​группой пользователя ​будет группа с тем же именем, что и имя пользователя. Например:​
  
 <​code>​ <​code>​
Строка 184: Строка 211:
  
 Однако,​ в системе FreeBSD, если скомпилировать ядро с поддержкой **suiddir**,​ а так же смонтировать раздел с этой опцией,​ то, все объекты создаваемые в каталоге где установлен **SUID** будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью. Однако,​ в системе FreeBSD, если скомпилировать ядро с поддержкой **suiddir**,​ а так же смонтировать раздел с этой опцией,​ то, все объекты создаваемые в каталоге где установлен **SUID** будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью.
- 
-Замечание о **suiddir** прислал Sergey Koltogyan. 
 </​note>​ </​note>​
  
Строка 303: Строка 328:
 В больших сетях, ​ с многоуровневыми схемами доступа применяется более гибкая реализация назначения прав, именуемая как **ACL** - [[access_control_list|Списки контроля доступа]]. ​   В больших сетях, ​ с многоуровневыми схемами доступа применяется более гибкая реализация назначения прав, именуемая как **ACL** - [[access_control_list|Списки контроля доступа]]. ​  
  
-<style right> --- //​[[allexmail@pisem.net|Соловьев Алексей aka allexnew]] upd 07.12.2014 14:08// </​style>​+<style right> --- //​[[allexmail@yandex.ru|Соловьев Алексей aka allexnew]] upd 07.10.2020 17:56// </​style>​
  
 {{tag>​Администрирование система Права_доступа }} {{tag>​Администрирование система Права_доступа }}