Не разрешать пользователю убивать программу, запущенную другим пользователем с помощью бита 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-права владение процессом, а просто в повышении привилегий, а в том, чтобы оставить процесс, принадлежащий исполняющему пользователю. И я сомневаюсь, что вы можете изменить его независимо от того, нравится вам это или нет (кроме как взломать ядро или около того?).