Что такое sticky bit

linux-notes.org

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

Стандартные права (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 bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

Установка бита 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» завершена.

Источник

Специальные разрешения для файлов в Linux. SUID, GUID и Sticky Bit

Главное меню » Linux » Специальные разрешения для файлов в Linux. SUID, GUID и Sticky Bit

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

Обычные права доступа к файлам

Помимо этих обычных разрешений, есть несколько специальных разрешений для файлов, и не многие пользователи Linux знают об этом.

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

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

Теперь мы покажем вам некоторые специальные разрешения с новыми буквами в файловой системе Linux.

В этом примере команда passwd, отвечающая за изменение пароля пользователя, имеет букву s в том же месте, которое мы ожидаем увидеть, x или – для прав пользователя. Важно отметить, что этот файл принадлежит пользователю root и корневой группе.

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

Что такое SUID?

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

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

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

Это означает, что любой пользователь, выполняющий команду passwd, будет запускать ее с теми же правами, что и root.

В чем выгода? Команде passwd необходимо отредактировать файлы, такие как /etc/passwd, /etc/shadow, чтобы изменить пароль. Эти файлы принадлежат пользователю root и могут быть изменены только пользователем root. Но благодаря флагу setuid (бит SUID) обычный пользователь также сможет изменять эти файлы (принадлежащие пользователю root) и менять свой пароль.

По этой причине вы можете использовать команду passwd для изменения собственного пароля, несмотря на тот факт, что файлы, которые изменяет эта команда, принадлежат пользователю root.

Источник

Использование SETUID, SETGID и Sticky bit для расширенной настройки прав доступа в операционных системах Linux

2922 просмотров 4 2021-03-25 2021-03-30

В этой статье мы расскажем, как использовать специальные биты разрешений в операционных системах Linux.
Речь пойдет о трех битах – Setuid, Setgid и Sticky Bit. Это специальные типы разрешений позволяют задавать расширенные права доступа на файлы или каталоги.
Статья будет полезна пользователям и администраторам, которые уже знакомы с настройкой базовых прав в операционных системах Linux. Итак, давайте преступим.

Коротко о правах доступа в Linux

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

В операционных системах Linux используются 3 базовых права доступа – на чтение (read), запись (write) и исполнение (execute). Соответственно, права назначаются пользователю (user), группе (group) и всем остальным (world). Рассмотрим их символьные обозначения:

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

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

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

Настройка Setuid

Setuid – это бит разрешения, который позволяет пользователю запускать исполняемый файл с правами владельца этого файла. Другими словами, использование этого бита позволяет нам поднять привилегии пользователя в случае, если это необходимо. Классический пример использования этого бита в операционной системе это команда sudo.

Как мы видим на месте, где обычно установлен классический бит x (на исполнение), у нас выставлен специальный бит s. Это позволяет обычному пользователю системы выполнять команды с повышенными привилегиями без необходимости входа в систему как root, разумеется зная пароль пользователя root.
Установка бита setuid не представляет сложности. Для этого используется команда:

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

Обратим внимание, что вместо ожидаемой буквы «s», видим заглавную «S». Почему? Это случается, если setuid установлен, но сам владелец файла не имеет прав на его выполнение. Добавим это разрешение с помощью команды chmod u + x.

Настройка Setgid

Выполним команду chmod g + s и посмотрим результаты.

Как разобрались выше, меняем заглавную « S » путем выдачи прав на исполнение группе-владельцу:

Настройка Sticky Bit

Символ «t» указывает, что на папку установлен Sticky Bit.

Удаление специальных битов разрешений

Вывод

Мы разобрали что из себя представляют специальные биты разрешений Setuid, Setgid и Sticky bit в операционных системах Linux и как ими пользоваться на практике. Умение использовать эти биты позволит вам произвести более гибкую настройку прав доступа к ресурсам вашего сервера.

Источник

Права доступа 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:

Источник

Права доступа к файлам в Linux

И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему. Но новым пользователям могут показаться очень сложными новые права на файлы в linux, которые очень сильно отличаются от того, что мы привыкли видеть в Windows. В этой статье мы попытаемся разобраться в том как работают права файлов в linux, а также как их изменять и устанавливать.

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

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

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

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

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

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.

Как посмотреть права доступа к файлам в Linux

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категория действие флаг файл

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

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

Дадим группе право на чтение и выполнение:

Остальным пользователям только чтение:

Для файла test6 установим SUID:

Посмотрим что получилось:

Что такое sticky bit. Смотреть фото Что такое sticky bit. Смотреть картинку Что такое sticky bit. Картинка про Что такое sticky bit. Фото Что такое sticky bit

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

Выводы

Вот и все, теперь вы знаете не только что такое права доступа к файлам в Linux, но и как их посмотреть, и даже как их изменить. Это очень важная тема, в которой действительно стоит разобраться новичкам, чтобы использовать свою систему более полноценно. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение хочу предложить неплохое видео про права доступа в Linux:

Источник

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

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