Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
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>Администрирование система Права_доступа }} | ||