зачем используется sticky бит для каталогов

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

Содержание

Вступление

В Unix каждому файлу соответствует набор прав доступа, представленный в виде 9-ти битов режима. Он определяет, какие пользователи имеют право читать файл, записывать в него данные или выполнять его. Вместе с другими тремя битами, влияющими на запуск исполняемых файлов, этот набор образует код режима доступа к файлу. Двенадцать битов режима хранятся в 16-битовом поле индексного дескриптора вместе с 4-мя дополнительными битами, определяющими тип файла. Последние 4 бита устанавливаются при создании файлов и не подлежат изменению. Биты режима (далее права) могут изменяться либо владельцем файла, либо суперпользователем с помощью команды chmod.

Существует три пути управления доступом к файлу или каталогу. Было определено, что каждый файл должен иметь владельца (owner), группового владельца (group owner), а также может потребоваться доступ для всех остальных пользователей (everyone). Эти названия обычно приводятся как пользователь/группа/остальные (user/group/others) или коротко ugo. Реализация управления доступом к файлам и каталогам в Unix позволяет или запрещает доступ по трем флагам: флаг чтения (Read), флаг записи (Write), флаг выполнения (eXecute). Они представляются следующим образом:

Флаг типа (flag) может быть одним из следующих:

Права доступа

Посмотреть права доступа на объекты можно командой ls c ключем -l («л»). Также можно добавить ключ -a, для того,чтобы были отображены скрытые объекты:

Рассмотрим таблицу, чтобы было понятнее:

Для администрирования часто удобнее использовать не буквенное представление прав, а цифровое, в восьмеричном представлении (оно короче). Так, например, права на файл всем и вся, соответствуют записи 777 (что аналогично символьному представлению rwxrwxrwx).

Существуют также специальные биты, такие как SUID, SGID и Sticky-бит. SUID, SGID влияют на запуск файла, а Sticky влияет на определение владельца объектов в каталоге. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую, в различной технической литературе права обозначаются именно 4-мя цифрами, например 0744. Многие стараются не использовать специальные биты, сетуя на безопасность (и не без основательно), но, в некоторых ситуациях без них не обойтись. Поговорим о них несколько позже.

Давайте рассмотрим пример, итак:

Восьмеричное обозначение прав для файла pro_ubuntu.zip: 0700.

Для второй строки (это каталог, о чем свидетельствует флаг «d»), по аналогии:

Восьмеричное обозначение в этом примере: 0755.

На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (—).

Но не надо думать, что такой каталог полноценно заменяет крипто-контейнер (т.е. может использоваться для хранения очень секретных данных). Да, имен объектов из такого каталога никак не получить, однако если попытаться создать объект с именем, которое уже существует, то такая операция закончится неудачей (т.е. мы получим подтверждение, что такое имя уже есть). Так же можно пытаться открыть (как файл или как каталог) объект с произвольным именем, если такого имени нет, то мы получим ошибку. Безусловно имя может быть очень длинным и шансы угадать его могут быть не велики, но не надо забывать, что права доступа могут сменить как владелец каталога так root. Да и пути доступа могут сохраниться в различных логах и файлах истории.

Команда chmod

Права устанавливаются командой chmod. Команда chmod поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа).

Синтаксис команды прост:

chmod

Опции

Из самых полезных и часто используемых опций можно выделить одну:

Права

Права можно записывать как в восьмеричном представлении так и в символьном. В восьмеричном представлении, для стандартных прав, указываются 3 восьмеричные цифры (1-я для владельца, 2-я для группы, 3-я для всех остальных. См. таблицу выше).

Для назначения прав используются три знака: минус, плюс или равно:

Использование символьного представления позволяет редактировать права файлов более гибко:

Символьное назначение окажет неоценимую услугу, если требуется добавить права на объект к уже существующим правам.

Массовое назначение прав

Иногда, бывает, нужно массово установить права на определенный тип объектов, например, только на каталоги или только на файлы. Простое использование опции -R (рекурсия) здесь не поможет т.к. chmod будет проходить по всем объектам удовлетворяющим маске, что иногда вовсе не то, что нужно.

Итак, чтобы массово установить права на определенный тип объектов можно использовать один из вариантов (вообще, их очень много):

Более длинный вариант аналогичной операции:

Биты SUID, SGID и Sticky

Если при создании пользователя основная группа не указана явно, то основной группой пользователя будет группа с тем же именем, что и имя пользователя. Например:

Что касается процессов, то с ними связано не два идентификатора, а 4-е: реальный и эффективный пользовательский (UID), а также реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов, а эффективные для определения прав доступа к процессам. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы, а также изменять приоритет.

Вобщем, одним словом установка битов SUID или SGID позволит пользователям запускать исполняемые файлы от имени владельца (или группы) запускаемого файла. Например, как говорилось выше, команду chmod по умолчанию может запускать только root. Если мы установим SUID на исполняемый файл /bin/chmod, то обычный пользователь сможет использовать эту команду без использования sudo, так, что она будет выполнятся от имени пользователя root. В некоторых случаях очень удобное решение. Кстати по такому принципу работает команда passwd, c помощью которой пользователь может изменить свой пароль.

Однако, в системе FreeBSD, если скомпилировать ядро с поддержкой suiddir, а так же смонтировать раздел с этой опцией, то, все объекты создаваемые в каталоге где установлен SUID будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью.

Установить SUID и SGID можно командой chmod:

Источник

Рассматриваем вопрос прав доступа более подробно

Оригинал: Gettin’ Sticky with It
Автор: Shawn Powers
Дата публикации: 11 июня 2015 г.
Перевод: А.Панин
Дата перевода: 2 августа 2015 г.

Рассматриваем вопрос прав доступа более подробно

В номере журнала за прошлый месяц я рассказывал о механизме прав доступа к элементам файловой системы в Linux (Обратитесь к статье «It’s Better to Ask Forgiveness. » в разделе UpFront за май 2015 года, см. перевод на нашем сайте). Я мог бы рассказать о битах SUID, GUID и sticky в той же статье, но мне показалось, что в этом случае информации было бы слишком много для одного материала. Исходя из этого, в данной статье я буду описывать специальные типы прав доступа к элементам файловой системы в Linux. Ввиду того, что механизм стандартных прав доступа является интуитивно понятным, механизм специальных прав доступа может показаться на первый взгляд не имеющим особого смысла. Но после того, как вы узнаете о предназначении данного механизма, вы поймете, что он является не настолько запутанным, как кажется.

Но ведь больше нет места для дополнительных значений прав доступа!

В процессе изучения методики установки битов чтения, записи и исполнения для файлов и директорий вы, скорее всего, обратили внимание на то, что были задействованы все доступные «ячейки» для вывода битов прав доступа. Следовательно, при манипуляции специальными правами доступа к элементам файловой системы, вы в каком-то смысле повторно используете существующие биты прав доступа. Они используются аналогично любым другим атрибутам доступа к файлам, но отображаются немного по-другому.

Каждая из секций строки прав доступа к элементам файловой системы (для пользователя, группы пользователей и других пользователей) имеет дополнительные биты «специальных» прав доступа, значения которых устанавливаются по аналогии со значениями битов rwx. Указание на состояние этих битов выводится в рамках части строки, выделенной для вывода состояния битов исполнения. Например:

Если установлен бит sticky, при выводе бита исполнения в секции прав доступа других пользователей будет использован символ t вместо x.

Еще не запутались? Ниже приведено несколько примеров:

Обратите внимание на то, что в последнем примере используется символ S в верхнем регистре. Это сделано для указания на тот факт, что необходимый бит исполнения не установлен. В том случае, если для указания на установку бита SUID используется символ в нижнем регистре, можно сделать вывод о том, что необходимый бит исполнения установлен. Если же используется символ в верхнем регистре, бит SUID установлен, но необходимый бит исполнения не установлен.

Для чего предназначены эти биты?

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

Установка бита SUID для директорий не приводит к какому-либо эффекту.

GUID: при установке бита GUID для исполняемых файлов будет достигаться такой же эффект, как и в случае установки бита SUID, за тем исключением, что вместо прав доступа пользователя, владеющего файлом, в процессе исполнения файла устанавливаются права доступа группы пользователей, владеющей файлом. Данный бит не используется достаточно часто, но в некоторых многопользовательских окружениях его установка может оказаться желательной.

Бит GUID используется главным образом по отношению к директориям. В том случае, если для директории устанавливается бит GUID, создаваемые в директории файлы наследуют идентификатор группы пользователей, владеющей директорией. Данный механизм очень полезен в случае работы группы пользователей с файлами из одной и той же директории. В обычных условиях при создании файла используется основной идентификатор группы пользователя. В рамках директории с установленным битом GUID пользователь все так же будет являться владельцем файла, но принадлежность к группе пользователей устанавливается автоматически на уровне системы, следовательно, все другие пользователи из данной группы также будут иметь доступ к созданному файлу.

Бит sticky: в первую очередь я хотел бы сказать о том, что я даже не представляю, по какой причине бит sticky обозначается с помощью символа t, а не символа s. Я искал информацию об этом во многих источниках и спрашивал многих специалистов. Оказалось, что никто не знает об этом. Возможно, кто-то из читателей журнала Linux Journal знает ответ на данный вопрос и может просветить меня. (В том случае, если я получу сообщение с ответом на данный вопрос, я приведу его текст в рубрике «Письма редактору»). В любом случае, бит sticky является специальным битом доступа, который устанавливается для директорий. Фактически, он не оказывает какого-либо воздействия в случае установки для файла.

Установка специальных прав доступа к элементам файловой системы

Установка специальных прав доступа для файла или директории осуществляется таким же образом, как и установка обычных прав доступа. Вы можете использовать утилиту chmod, к примеру, следующим образом:

Специальные права доступа также могут устанавливаться вместе с обычными правами доступа, следовательно, аналогичные команды являются полностью корректными:

И как и в случае со стандартными правами доступа, имеется возможность (использование которой является предпочтительным) установки специальных прав доступа с использованием восьмеричной нотации. Для этого используется четвертое поле. При установке прав доступа аналогичным образом:

также присутствует четвертое поле, которое не используется и считается, что его значение равно нулю. Следовательно, данная команда полностью аналогична следующей команде:

Поле с нулевым значением, расположенное перед полями с значениями стандартных прав доступа, используется для установки специальных прав доступа. В том случае, если вы отбрасываете данное поле, его значение считается равным нулю и специальные права доступа не устанавливаются. Однако, в том случае, если вы знаете о его существовании, вам будет проще понять методику его использования. Если вы читали упомянутую статью о правах доступа к элементам файловой системы из выпуска журнала за предыдущий месяц, вы наверняка обратили внимание на раздел с описанием методики использования восьмеричной нотации, информацию из которого можно с легкостью применить и к специальным правам доступа. На Рисунке 1 показано распределение значений между битами специальных прав доступа.

зачем используется sticky бит для каталогов. 11858stickyf1 ru. зачем используется sticky бит для каталогов фото. зачем используется sticky бит для каталогов-11858stickyf1 ru. картинка зачем используется sticky бит для каталогов. картинка 11858stickyf1 ru.

Рисунок 1. Восьмеричная нотация

Таким образом, для установки прав доступа для чтения/записи содержимого директории пользователем вместе с битом GUID вы можете использовать следующую команду:

Как и при установке стандартных прав доступа к элементам файловой системы, в случае необходимости установки нескольких битов специальных прав доступа, вы можете просто складывать соответствующие значения. К примеру, для установки битов SUID и sticky вы должны будете использовать значение 5 четвертого восьмеричного поля. Обычно для определенного файла или директории устанавливается лишь один бит специальных прав доступа, но благодаря возможности использования восьмеричной нотации вы можете устанавливать их в любом кажущемся вам подходящем сочетании.

Источник

🧟♀️ StickyBit, SUID и SGID в Linux с примерами

зачем используется sticky бит для каталогов. stickybit suid sgid linux. зачем используется sticky бит для каталогов фото. зачем используется sticky бит для каталогов-stickybit suid sgid linux. картинка зачем используется sticky бит для каталогов. картинка stickybit suid sgid linux.

В этой статье мы расскажем о специальных разрешениях, которые работают с файлами и каталогами, которые называются Stickybit, SUID и SGID.

Sticky работает только для каталогов.

Если пользователь хочет создать или удалить файл / каталог в каком-либо каталоге, ему нужно разрешение на запись в этот каталог.

Разрешение на запись в каталог дает пользователю право создавать файл, а также право удалять его.

Каталог /tmp – это каталог для временных файлов / каталогов.

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

Но так как пользователи имеют разрешение на запись в этот каталог, они могут удалить любой файл в этом каталоге.

Разрешения этого файла не влияют на удаление.

Но с установленным в каталоге стики битом любой может создать в нем файл / каталог, но может удалить только свои собственные файлы.

Файлы, принадлежащие другим пользователям, не могут быть удалены.

stickybit – Как просмотреть и установить

Вы можете заметить, что тег t добавлен в каталог /tmp, и это означает, что для этого каталога установлен бит.

В Linux стики бит может быть установлен командой chmod.

Примечание. В ОС Unix stickybit имеет другое назначение, но мы не обсуждаем его здесь.

Что такое SUID бит и как его установить

Когда исполняемый файл запускается, он запускается под управлением пользователя, который его выполнил.

Это означает, что когда пользователь student запускает команду ls, соответствующий процесс будет выполняться под управлением пользователя student.

Бит SUID, также известный как бит установки идентификатора пользователя, перезаписывает это поведение.

Если в программе установлен бит SUID, то эта программа будет работать как владелец этого файла, независимо от того, кто его выполняет.

У команды passwd в Linux установлен бит SUID.

Это можно увидеть в третьем поле прав доступа. ‘S’ вместо ‘x’ указывает, что установлен бит SUID.

С установленным битом SUID, когда обычный пользователь (скажем, student) запускает команду passwd, команда запускается с владельцем «root», а не с учетной записью student, поскольку root является владельцем этого файла.

Это необходимо, потому что пароли хранятся в файле /etc/shadow, который не имеет разрешения на групповом или другом уровне.

Вы должны понимать, что все пользователи не могут получить разрешение на чтение или запись этого файла по соображениям безопасности; в противном случае они будут читать / изменять пароли других пользователей.

Таким образом, это вызывает проблему: если у пользователей нет прав доступа к этому файлу, как они будут изменять свои собственные пароли?

SUID немного решает проблему.

У команды passwd установлен бит SUID, поэтому, когда обычные пользователи выполняют эту команду, они запускают ее под владельцем root, то есть владельцем команды passwd.

Как установить и сбросить бит SUID

Следует отметить, что бит SUID работает только с файлами.

Чтобы установить бит SUID на файл, используйте команду chmod следующим образом

Числовой метод для изменения разрешений также может быть использован.

Предположим, что если обычные разрешения для файла равны 744, то с установленным битом SUID они станут 4744.

Бит SUID имеет значение 4.

Как SGID Bit работает с файлами и каталогоми

В отличие от бита SUID, бит SGID работает как с файлами, так и с каталогами, но в обоих случаях он имеет различное значение.

По файлам:

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

Например, файл /sbin/netreport имеет установленный бит SGID, который можно увидеть в «s» вместо «x» в разрешениях группы.

Этот файл имеет групповое владение группой root.

Таким образом, когда пользователь (скажем, student) выполняет его, соответствующий процесс не будет принадлежать группе student, а будет принадлежать группе root.

По каталогам:

Теперь поговорим о SGID в каталогах.

SGID для каталогов используется для создания совместных каталогов.

Чтобы понять бит SGID для каталогов, рассмотрим следующий сценарий:

Предположим, что три пользователя Джек, Джонс и Дженни вместе работают над каким-то проектом.

Все они принадлежат к группе под названием javaproject.

Для выполнения проекта им необходимо предоставить общий доступ ко всем файлам, связанным с проектом.

Все они должны видеть файлы друг друга.

Это можно сделать, просто предоставив разрешение на чтение на уровне группы.

Далее, предположим, что каталогом, используемым для проекта, является “/javaproject”.

Здесь возникает проблема: когда файл создается, он принадлежит к основной группе пользователя, создавшего файл.

Таким образом, когда разные пользователи создают свои файлы в этом каталоге, эти файлы не будут принадлежать группе javaproject group.

Что мы делаем для решения нашей проблемы, так это то, что мы устанавливаем группу каталога /javaproject равной группе javaproject, и устанавливаем бит SGID.

Когда в каталоге установлен бит SGID, все файлы и каталоги, созданные в нем, имеют групповое владение группой, связанной с этим каталогом.

Это означает, что после установки бита SGID в каталоге /javaproject все файлы и каталоги, создаваемые в этом каталоге, будут принадлежать группе «javaproject».

Более того, это поведение является рекурсивным, то есть в каталогах, созданных в этом каталоге, также будет установлен бит SGID.

Права у нового каталога также будут такими же, как и у каталога /javaproject.

Бит SGID может быть установлен командой chmod следующим образом:

Теперь, когда пользователь jones создает файл в этом каталоге, он создается под владельцем группы javaproject.

Числовое значение, соответствующее биту SGID, равно 2. Поэтому, чтобы численно добавить бит SGID, используйте следующую команду:

Источник

linux-notes.org

зачем используется sticky бит для каталогов. Standartny e prava Unix SUID SGID Sticky bity. зачем используется sticky бит для каталогов фото. зачем используется sticky бит для каталогов-Standartny e prava Unix SUID SGID Sticky bity. картинка зачем используется sticky бит для каталогов. картинка Standartny e prava Unix SUID SGID Sticky bity.

Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux

Использование «sticky bit» прав в Unix/Linux

Unix является многопользовательской ОС и в основном, устроен так, что несколько пользователей могут работать одновременно. Таким образом, программа которая находится в памяти требует меньше времени чтобы начать свою работу. Таким образом, когда один пользователь только что использовал программу, а затем новый пользователь хочет использовать ту же самую программу, то 2-й юзверь не будет иметь временной задержки для инициализации утилиты.

Установка Sticky Bit

Выставляем sticky bit на файл:

Или можно еще использовать следующую команду:

Sticky bit, в основном используется в общих каталогах, таких как /var или /tmp, поскольку пользователи могут создавать файлы, читать и выполнять их, принадлежащие другим пользователям, но не могут удалять файлы, принадлежащие другим пользователям. Например, если пользователь (предположим bob) создает файл с именем /tmp/bob, то другой пользователь (допустим tom) не может удалить этот файл, даже если в каталоге /tmp есть разрешение 777. Если sticky bit не установлен, то tom юзер может удалить /tmp/bob, так как файл /tmp/bob наследует разрешения родительского каталога.

Использование SUID ( Set User ID) прав в Unix/Linux

setuid (сокращения от англ. set user ID upon execution — «установка ID пользователя во время выполнения) являются флагами прав доступа в Unix, которые разрешают пользователям запускать исполняемые файлы с правами владельца исполняемого файла. Иногда файлы требуют разрешения на выполнение для пользователей, которые не являются членами группы владельца, в этом случае вам потребуется предоставить специальные разрешения на выполнение. Когда SUID установлен, пользователь может запускать любую программу, такую как владелец программы.

Установка SUID бит на файл.

Если SUID бит установлен на файл и пользователь выполнил его. Процесс будет иметь те же права что и владелец файла.

Например: команда passwd имеет SUID bit. Когда обычный пользователь захочет изменит свой пароль в файле /etc/passwd или /etc/shadow, то у него ничего не получиться, т.к нужны права суперпользователя (процесс командны PASSWD всегда работает с правами суперюзера).

Предположим, что я получил исполняемый файл «filename», и мне нужно установить SUID на этот файл, перейдите в командную строку и выпуск команду:

Теперь проверьте разрешения на файл с командой:

Наблюдайте за «s» буквой, которая была добавлена ​​для SUID бита:

Чтобы выставить SUID для всех папок и файлов, используем:

Найти SUID файлы

Найти все SUID файлы для «root» пользователя:

Найти все SUID и SGID файлы:

Использование SGID ( Set Group ID ) прав в Unix/Linux

setgid (сокращения от англ. set group ID upon execution — «установка ID группы во время выполнения») являются флагами прав доступа в Unix, которые разрешают пользователям запускать исполняемые файлы с правами группы исполняемого файла.

зачем используется sticky бит для каталогов. lazy placeholder. зачем используется sticky бит для каталогов фото. зачем используется sticky бит для каталогов-lazy placeholder. картинка зачем используется sticky бит для каталогов. картинка lazy placeholder.

Установка бита SUID / SGID

Если SGID бит установлен на любой каталог, все подкаталоги и файлы, созданные внутри получат те же пермишены что и группы в качестве основного каталога.

Устанавливаем SGID на директорию:

Теперь, переключаемся на другого пользователя и создаем файл в папке /home/captain/test_dir:

В приведенном выше примере test_file.txt создался с группой root.

Чтобы выставить SGID для всех папок и файлов, используем:

Найти SGID файлы

Найти все файлы с использованием SGID бита, для root пользователя:

Найти все SUID и SGID файлы:

Зачем нужены SUID и SGID?

Есть достаточно много программ и файлов, которые должны принадлежать пользователю root, и в то же время – простые пользователи должны иметь возможность выполнять его. Для примера – утилита passwd, которая находится в каталоге /usr/bin/passwd и которая имеет дело с файлом /etc/passwd, редактировать который может только пользователь root.

Вот еще полезное чтиво:

Команда chmod также может использоваться для установки или отмены следующих значений в качестве префикса для обычных трех числовых привилегий:

Тема «Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux» завершена.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *