Добрый день.
Система linux RedHat 5.5.
Пытаюсь красиво обойти проблему установки SUID/SGID бита на шелл-скрипты (что, как известно не работает).
sudo использовать не хочется.
Задача: разрешить пользователям, входящим в некую группу убивать (kill, kill -9) процессы, принадлежащие другим пользователям этой же группы.
Написал простой шелл testkill.sh:
#!/bin/bash
if [ $1 -gt 1 ] && [ $1 -lt 65535 ]
then
/bin/kill $1
else
echo "usage testkill <process>"
fi
Далее, в сети нашел некий компилятор шелл-скриптов — http://www.datsi.fi.upm.es/~frosal/sources/shc.html, создал с помощью него исполняемый бинарник:
//то, что получилось - действительно бинарник
# file testkill.sh.x
testkill.sh.x: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
//установлен suid-бит
# ls -l testkill.sh.x
-rwsrwxr-x 1 test test 9456 Sep 1 13:13 testkill.sh.x
//я вхожу в ту же группу, в которую входит хозяин процесса (test)
[tolik@srv1 ~]$ id
uid=500(tolik) gid=500(tolik) groups=500(tolik),603(test)
//узнаю PID, который хочу убить
[tolik@srv1 ~]$ ps -ef | grep ping
test 10975 10518 0 13:32 pts/0 00:00:00 ping localhost
//пытаюсь убить процесс
[tolik@srv1 ~]$ /test/testkill.sh.x 10975
kill 10975: Operation not permitted
Как видно, установка suid-бита на бинарник все равно игнорируется и я получаю «Operation not permitted»
Сам бинарник лежит в ФС, примонтированной без_опции nosuid.
Есть соображения, в чем может быть моя ошибка или может подскажете какой-нибудь другой рабочий вариант?