Специальные права доступа к файлам в Linux (SUID, SGID и Sticky Bit)

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

В моей предыдущей статье я объяснил как работает разрешение Linux и я прошу вас сначала прочитать это руководство.

Вступление

Честно говоря, большую часть времени, когда вы работаете с разрешениями в системе Linux, вы будете работать со стандартными разрешениями на чтение, запись и выполнение.

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

Теперь имейте в виду, что вы, вероятно, не будете часто использовать эти разрешения.

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

Итак, убедитесь, что вы знаете, что делаете, прежде чем приступать к их настройке.

Объяснение специальных разрешений

Теперь эти особые разрешения перечислены здесь.

Разрешение Эффект при применении к файлу Эффект при применении к каталогу
ЮГ Пользователь, который запускает файл, временно становится владельцем файла. Никто
SGID Пользователь, который запускает файл, временно становится членом группы владельцев файла. Когда пользователь создает файл в каталоге, группа-владелец устанавливается равной группе-владельцу родительского каталога.
Липкий бит Никто Пользователи могут удалять файлы только в том каталоге, владельцем которого они являются, или в самом каталоге.

бит setuid (SUID)

В первую очередь мы хотим взглянуть на SUID, который расшифровывается как Set user ID.

Теперь разрешение «Установить идентификатор пользователя» можно применить только к двоичному исполняемому файлу в файловой системе.

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

Теперь, если вы назначаете разрешение «Установить идентификатор пользователя» исполняемому файлу, а затем пользователь запускает этот файл, то пользователь, запустивший файл, временно становится владельцем этого файла.

Как мы уже говорили, вы не можете применить это разрешение к каталогу.

бит setgid (SGID)

Есть еще одно специальное разрешение, которое вам нужно знать с разрешением SGID, которое означает «Установить идентификатор группы».

Теперь, как и разрешение «Установить идентификатор пользователя», разрешение «Установить идентификатор группы» применяется к двоичным исполняемым файлам или каталогам в файловой системе.

Если вы назначаете разрешение «Установить идентификатор группы» исполняемому файлу, а затем пользователь запускает этот исполняемый файл, пользователь, запустивший файл, временно становится членом группы владельцев файлов.

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

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

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

Липкий бит

Последнее специальное разрешение, на которое мы хотим обратить внимание, – это Sticky Bit.

Теперь Sticky Bit назначается только каталогам, которые не назначены файлам.

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

И это очень важно, потому что это в основном сводит на нет эффект наличия правильного разрешения для каталога.

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

если вы хотите предотвратить это, назначьте этому каталогу разрешение Sticky Bit.

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

Числовые обозначения

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

Разрешение Ценить
ЮГ 4
SGID 2
Липкий бит 1

Установить идентификатор пользователя имеет числовое значение 4, Установить идентификатор группы имеет числовое значение 2, а значение Sticky Bit равно 1.

Как установить SUID и SGID в Linux

Например, предположим, что мы хотим добавить разрешения SUID (Set User ID) и SGID (Set Group ID) к файлу в моем домашнем каталоге.

Это исполняемый файл с именем script.

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

Я хочу, чтобы группа имела права на чтение и выполнение для файла, чтобы мы могли 5 и я хочу, чтобы другие аутентифицированные пользователи просто имели разрешение на чтение файла, чтобы они получили 4. им не позволят запустить его.

Так что помните, что SUID имеет числовое значение 4 а SGID имеет числовое значение 2 поэтому, чтобы назначить как Set User ID (SUID), так и Set Group ID (SGID) один и тот же файл, я бы объединил эти два, чтобы получить значение 6 и укажите его как первое число в режиме.

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

Итак, в этом случае я бы ввел следующую команду в приглашении оболочки.

# chmod 6554 script

# ls -l script
-r-sr-sr--. 1 linuxadmin developer 0 Mar 18 06:08 script

Читайте также: Примеры команд ls в Linux

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

Обратите внимание, что в выводе команды у нас есть s теперь, когда у нас должен быть x как для собственника, так и для группы.

Если ты видишь s для владельца, вы знаете, что у нас есть разрешение Set UserID, если вы видите s для группы вы знаете, что у вас есть набор разрешений Set Group ID.

Как установить Sticky Bit в Linux

Давайте посмотрим на другой пример.

Предположим, мы предоставили владельцу и группе права на чтение, запись и выполнение для каталога с именем мои данные.

Итак, мы бы использовали 7 для владельца и 7 для группы как читать 4, напишите 2 и выполнить это 1 так что у нас есть сумма 7 как для собственника, так и для группы.

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

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

Мы назначаем разрешение Sticky Bit мои данные каталог.

Помните, что значение Sticky Bit равно 1.

Итак, первое число в режиме – это 1 затем следуют чтение, запись и выполнение для пользователя и чтение, запись и выполнение для группы, и мы вообще не хотим, чтобы другие имели доступ к каталогу.

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

В результате вы заметите, что в режиме теперь есть:

  • Чтение, запись и выполнение для пользователя
  • Чтение, запись и выполнение для группы
  • Нет разрешений для других
  • И у нас есть T в конце режима.

Когда вы видите T последняя цифра режима указывает на то, что установлен Sticky Bit.

# chmod 1770 mydata/

# ls -l
drwxrwx--T. 2 linuxadmin developer 6 Mar 18 06:27 mydata

Символические обозначения

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

Разрешение Ценить
ЮГ s
SGID s
Липкий бит т

Возьмем несколько примеров.

1. Установите разрешение SUID для файла.

# chmod u+s file

# ls -l
-rwsrwxr--. 1 root root 0 Mar 18 08:01 file

2. Удалить разрешение SUID из файла.

# chmod u-s file

3. Установите разрешение SGID для файла.

# chmod g+s file

# ls -l
-rwxrwsr--. 1 root root 0 Mar 18 08:01 file

4. Удалить разрешение SGID из файла.

# chmod g-s file

5. Установите для файла разрешение Sticky Bit.

# chmod +t mydata/

# ls -l
drwxr-xr-t. 2 root root 6 Mar 18 08:29 mydata

6. Удалить разрешение Sticky Bit из файла.

# chmod -t mydata/

Быстрый контрольный список:

  • SUID работает только с файлами.
  • Вы можете применять SGID к каталогам и файлам.
  • Вы можете применить бит залипания только к каталогам.
  • Если s, g, или t индикаторы отображаются в верхнем регистре, исполняемый бит (x) не было установлено.

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

Заключение

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

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

Ссылка:

ДЕЙВ МАККЕЙ (26 февраля 2020 г.). Как использовать SUID, SGID и Sticky Bits в Linux.
https://www.howtogeek.com/656646/how-to-use-suid-sgid-and-sticky-bits-on-linux/

Похожие записи

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

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