Когда вы запускаете исполняемый файл в Linux, он обычно запускается с текущим идентификатором пользователя и группы. Однако бывают случаи, когда вам нужно запустить этот файл от имени другого пользователя (например, root). Вместо переключения учетной записи пользователя вы можете использовать setuid для запуска исполняемого файла от имени владельца файла, а не от текущего пользователя. Здесь мы объясним, как работает setuid и как он позволяет пользователям запускать исполняемые и двоичные файлы с повышенными привилегиями.
Как работает setuid?
Setuid означает SET User ID при выполнении. Допустим, у нас есть исполняемый файл под названием «identity», созданный пользователем root. Когда вы запустите его, он будет работать с вашим идентификатором пользователя, идентификатором группы и привилегиями пользователя. Если бит setuid установлен в файле «identity», при его запуске он будет запускаться от имени пользовател
Contents
Как работает setuid?
ователя.В качестве иллюстрации мы можем сначала проверить право собственности на файл «identity» и убедиться, что он принадлежит пользователю root. Строка разрешений также показывает биты исполняемого файла (x), установленные для пользователя, группы и других.
Пользователь «john1» запускает файл «identity», который при выполнении становится процессом. Как показано в списке процессов, процесс создается и запускается под именем пользователя и идентификатором пользователя «john1».
Далее, как пользователь root, мы устанавливаем бит setuid файла «identity»:
chmod u+s /usr/bin/identity
“u” означает, что бит setuid (+s) должен быть установлен только для пользователя.
Для владельца в исполняемой части строки разрешения мы видим, что «x» заменено на «s». Всякий раз, когда вы встречаете букву «s» для исполняемого файла, это означает, что для него установлен бит setuid.
Числовой вариант команды chmod
также можно использовать, как показано ниже.
chmod 4755 /usr/bin/identity
Добавление 4 в числовую строку разрешения означает включение бита setuid.
Вот что происходит, когда «john1» снова выполняет файл «identity». Глядя на список запущенных процессов, мы теперь видим, что процесс создается и запускается пользователем «root», а не «john1».
Важное использование бита setuid
В большинстве случаев эксперты говорят, что не следует запускать приложения от имени пользователя root. Однако бывают случаи, когда определенные файлы необходимо запускать с правами root. Например, в утилите passwd
, которая по умолчанию устанавливается в системах Linux, установлен бит setuid.
Причина проста: Информация о пароле пользователя сохраняется в файлах «/etc/passwd» и «/etc/shadow», которые могут быть изменены только «root». Когда «john1» попытается сменить пароль для себя, ему потребуется разрешение на изменение информации в двух вышеупомянутых файлах. Установка бита setuid на passwd
позволяет «john1» временно иметь права root для изменения пароля пользователя, а также обновления информации в двух файлах.
Угроза безопасности Setuid
Если вы не будете осторожны, злоумышленник может использовать двоичные файлы setuid для контроля над вашей системой. Обычно пользователям не следует устанавливать программы setuid, особенно setuid для других пользователей. Самое главное: в вашей домашней папке не должно быть двоичных файлов с поддержкой setuid для пользователя root. Обычно это трояны или вредоносные программы.
Заключение
Setuid можно установить только для исполняемых файлов. Аналогичным образом можно установить бит setgid
, который позволяет всем членам группы запускать исполняемый файл с разрешениями владельца.
Обратите внимание, что биты setuid
и setgid
чувствительны к безопасности и должны использоваться только квалифицированными
Важное использование бита setuid
ong>Читать далее:- Как использовать Sticky Bit для управления файлами в общих каталогах в Linux
- Как выполнить проверку правописания в терминале Linux
- Использование команды find, найдите, какие и где находятся команды для поиска файлов в Linux