Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:стандартные_права_unix [2014/12/13 02:43] [Права доступа] |
wiki:стандартные_права_unix [2020/10/07 17:56] (текущий) [Расширенные права] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Стандартные права Unix, SUID, SGID, Sticky биты ====== | + | ====== Права доступа Unix, SUID, SGID, Sticky биты ====== |
^ Поддерживаемые версии Ubuntu ^ | ^ Поддерживаемые версии Ubuntu ^ | ||
| Все (теоретически) | | | Все (теоретически) | | ||
Строка 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 important>Для полноценного просмотра каталога, необходимы права на чтение каталога и доступ к файлам, а главное к их атрибутам, т.е. минимальные разумные права на каталог - 5 (r-x). Прав 4 (r--) хватит только на просмотр имен файлов, без атрибутов, т.е. не будут известны размер файла, права доступа, владелец. |
На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (---).</note> | На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (---).</note> | ||
Строка 97: | Строка 97: | ||
===== Команда chmod ===== | ===== Команда chmod ===== | ||
- | Права устанавливаются командой **chmod**. По умолчанию использовать ее может только **root**. Команда **chmod** поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа). | + | Права устанавливаются командой **chmod**. Команда **chmod** поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа). |
Синтаксис команды прост: | Синтаксис команды прост: | ||
Строка 151: | Строка 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 ===== | ||
Строка 169: | Строка 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> | ||
Строка 194: | Строка 211: | ||
Однако, в системе FreeBSD, если скомпилировать ядро с поддержкой **suiddir**, а так же смонтировать раздел с этой опцией, то, все объекты создаваемые в каталоге где установлен **SUID** будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью. | Однако, в системе FreeBSD, если скомпилировать ядро с поддержкой **suiddir**, а так же смонтировать раздел с этой опцией, то, все объекты создаваемые в каталоге где установлен **SUID** будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью. | ||
- | |||
- | Замечание о **suiddir** прислал Sergey Koltogyan. | ||
</note> | </note> | ||
Строка 313: | Строка 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>Администрирование система Права_доступа }} |