Не разрешать пользователю убивать программу, запущенную другим пользователем с помощью бита setuid

У меня есть двоичный файл с разрешениями ниже. -rwsr-xr-x. 1 root root поэтому, когда какой-то пользователь X пытается выполнить двоичный файл, он запускается от имени пользователя root. Более того, пользователь может убить этот процесс (запущенный от имени пользователя root) из своего идентификатора, используя kill -9 Любой способ помешать пользователю убить процесс.

1 ответ

Пользователь может убить процесс, потому что процесс запущен с Effective UID из root но Real UID о себе. Другие пользователи не смогут убить этот процесс.

Вы можете попробовать установить бит SETUID и SETGID для id:

# chmod u+s,g+s $(which id)

а затем сравните вывод:

id

а также

sudo id

и вы увидите разницу.

Также вы можете попытаться завершить процесс, для которого установлены биты SETUID и SETGID и который запущен текущим пользователем, с помощью sudo -u SOMEOTHERUSER, Вы увидите, что его нельзя убить.

Я предполагаю, что смысл битов SETUID и SETGID состоит не в том, чтобы предоставить root-права владение процессом, а просто в повышении привилегий, а в том, чтобы оставить процесс, принадлежащий исполняющему пользователю. И я сомневаюсь, что вы можете изменить его независимо от того, нравится вам это или нет (кроме как взломать ядро ​​или около того?).

Другие вопросы по тегам