Я хотів би надати користувачу, що не є адміністратором ( nicollet
) здатність виявляти і посилати сигнал до процесів, запущених Apache2 (ці процеси є скриптами FastCGI, і сигнал дає їм можливість очистити кеш). Процеси належать користувачеві Інтернету ( www-data
), і я працюю на Debian нестабільно.
Я не можу знайти жодного способу мати nicollet
користувач бачить ці процеси.
Процеси виконуються і можуть бачити обидва root
і www-data
:
root@linux-01:~# ps -Af | grep baryton
www-data 17649 17648 0 10:27 ? 00:00:00 baryton
www-data 28145 1 0 Nov01 ? 00:00:12 baryton --bot
root 18701 18700 0 10:46 pts/0 00:00:00 grep baryton
root@linux-01:~#
Втім, запустивши таку ж команду з моїм nicollet
користувач нічого не повертає:
nicollet@linux-01:~$ ps -Af | grep baryton
nicollet 18704 18703 0 10:46 pts/0 00:00:00 grep baryton
nicollet@linux-01:~$
Я спробував створити виконуваний файл, який використовує вищезазначений запит system()
. Йому належить www-data
і має набір бітів setuid:
root@linux-01:~# which setuid-update
/usr/local/bin/setuid-update
root@linux-01:~# ls -l /usr/local/bin/setuid-update
-rwsr-xr-x 1 www-data www-data 11046 Nov 2 10:27 /usr/local/bin/setuid-update
root@linux-01:~#
Проте, я спостерігаю таку ж ситуацію: процеси є видимими root
і www-data
але ні nicollet
:
root@linux-01:~# setuid-update
www-data 17649 17648 0 10:27 ? 00:00:00 baryton
www-data 28145 1 0 Nov01 ? 00:00:13 baryton --bot
www-data 18712 18711 0 10:46 pts/0 00:00:00 sh -c ps -Af | grep baryton
www-data 18714 18712 0 10:46 pts/0 00:00:00 grep baryton
root@linux-01:~# su nicollet
nicollet@linux-01:~$ setuid-update
www-data 18716 18715 0 10:46 pts/0 00:00:00 sh -c ps -Af | grep baryton
www-data 18717 18716 0 10:46 pts/0 00:00:00 grep baryton
nicollet@linux-01:~$
Найдивніше те, що grep
процес дійсно виконується www-data
(тому що він запущений з виконуваного файлу setuid) і є видимим, але baryton
процес не є.
Що тут відбувається? Навіщо ps
керувати www-data
показувати ці процеси, але ps
запускається виконуваним файлом setuid як www-data
неможливо, коли він розпочався nicollet
?