Suid guid in linux

Suid guid in linux

Библиотека сайта rus-linux.net

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

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

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

SUID: бит SUID устанавливается на исполняемые файлы. После установки данного бита программа исполняется с правами доступа и привилегиями пользователя, который владеет соответствующим бинарным файлом. Как вы можете представить, установка данного бита связана со значительным риском нарушения безопасности системы! В том случае, если владельцем бинарного файла является пользователь root, причем для файла установлен бит SUID, любой исполняющий данный файл пользователь будет иметь такие же права доступа, как и пользователь root. Как бы страшно это не звучало, существует несколько реальных вариантов использования данного механизма. Одним прекрасным примером его использования является утилита ping . Для получения доступа к сетевому аппаратному обеспечению, необходимому для отправки ping-пакетов узлу, пользователь должен обладать привилегиями пользователя root в рамках системы. Для того, чтобы все пользователи системы имели возможность использования утилиты ping , для соответствующего бинарного файла устанавливается бит SUID, после чего любой пользователь может исполнять его с теми же привилегиями, которыми обладает пользователь root в рамках системы. Проверьте специальные права доступа к бинарному файлу данной утилиты в вашей системе с помощью команды ls -l /bin/ping . Вы должны обнаружить установленный бит SUID.

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

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

Читайте также:  Vcenter vmware tools linux

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

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

В директориях, для которых установлен бит sticky, активируется дополнительный слой защиты созданных файлов. В обычных условиях при доступе множества пользователей к содержимому директории каждый пользователь имеет возможность удаления файлов другого пользователя. (Это справедливо даже для того случая, когда пользователи не имеют прав на запись содержимого этих файлов!) В случае установки бита sticky для директории файлы могут удаляться лишь теми пользователями, которые владеют ими. Данный механизм контроля доступа к элементам файловой системы может показаться излишним, но если вы рассмотрите такую директорию файловой системы многопользовательской системы Linux, как /tmp, вы сможете представить, насколько важным может оказаться бит sticky! Фактически, в том случае, если бы бита sticky не существовало, директория /tmp вашей системы превратилась бы в дикий дикий запад и гнусные стрелки могли бы вольно или невольно удалять файлы других пользователей. Вы можете обнаружить бит sticky в рамках вашей файловой системы с помощью команды ls -l / | grep tmp .

Читайте также:  Объединить разделы linux mint

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

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

  1. chmod u+s file.txt — установка бита SUID для файла с именем file.txt.
  2. chmod g-s file.txt — установка бита GUID для файла с именем file.txt.
  3. chmod o+t folder — установка бита sticky для директории с именем «folder».

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

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

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

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

Восьмеричная нотация

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

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

А результирующая строка описания прав доступа (которая выводится в результате исполнения команды ls -l ) будет выглядеть следующим образом (обратите внимание на символ s в нижнем регистре — помните, что он означает?):

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

Читайте также:  Настройка ftp клиента linux

Надеюсь, две данные статьи позволят развеять ваши заблуждения относительно механизма прав доступа к элементам файловых систем в Linux. Более сложные модели управления правами доступа к элементам файловых систем могут основываться на списках контроля доступа (Access Control Lists — ACLs), но для большинства случаев стандартные строки прав доступа — это все, что вам нужно для управления доступом к файлам и директориям вашей системы.

Источник

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

Специальные разрешения Linux: SUID, GUID и Sticky Bit

П рава доступа к файлам и владение ими — основная и все же важная концепция безопасности в Linux. Вы, наверное, уже знакомы с этими условиями. Обычно это выглядит так:

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

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

Специальные разрешения Linux: SUID, GUID и Sticky Bit

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

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

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

Что такое SUID?

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

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

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

andreyex:~$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 59640 Mar 22 2019 /usr/bin/passwd

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

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

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

Источник

Оцените статью
Adblock
detector