OVH Cloud OVH Cloud

Rendre un process tuable par un autre utilisateur?

4 réponses
Avatar
chbrosso
Bonjour,

J'utilise un programme qui tourne en tâche de fond, pilotable en telnet,
et qui a le bon goût de se mettre en mode "je répond plus à personne",
auquel cas le seul moyen de résoudre le problème est de le killer puis
de le relancer.

Seulement nous sommes 2 sur ma machine, et l'autre utilisateur ne peux
pas devenir super-utilisateur. Ainsi quand le programme est bloqué cette
personne doit attendre mon retour pour pouvoir relancer la chose,
puisqu'elle ne peut pas killer un process que j'ai créé.

Y'a-t-il un quelconque moyen pour rendre ce processus tuable par
n'importe quelle personne?

Merci d'avance

--
Charles

4 réponses

Avatar
Vincent Bernat
OoO En ce doux début de matinée du mardi 26 octobre 2004, vers 08:00,
(Charles Brossollet) disait:

J'utilise un programme qui tourne en tâche de fond, pilotable en telnet,
et qui a le bon goût de se mettre en mode "je répond plus à personne",
auquel cas le seul moyen de résoudre le problème est de le killer puis
de le relancer.

Seulement nous sommes 2 sur ma machine, et l'autre utilisateur ne peux
pas devenir super-utilisateur. Ainsi quand le programme est bloqué cette
personne doit attendre mon retour pour pouvoir relancer la chose,
puisqu'elle ne peut pas killer un process que j'ai créé.

Y'a-t-il un quelconque moyen pour rendre ce processus tuable par
n'importe quelle personne?


Un programme comme sudo ou super permet de donner des droits
supplémentaires à certaines personnes. Ils conviendraient parfaitement
ici.
--
printk("Penguin %d is stuck in the bottle.n", i);
2.0.38 /usr/src/linux/arch/sparc/kernel/smp.c

Avatar
Stephane Chazelas
2004-10-26, 08:00(+02), Charles Brossollet:
J'utilise un programme qui tourne en tâche de fond, pilotable en telnet,
et qui a le bon goût de se mettre en mode "je répond plus à personne",
auquel cas le seul moyen de résoudre le problème est de le killer puis
de le relancer.
[...]


Tu peux utiliser un wrapper qui fait:

#! /bin/sh
mkfifo -m 620 /tmp/.wrapper || exit
chgrp le-groupe-qui-a-le-droit-d-arreter-le-prog /tmp/.wrapper || exit
(ton_programme; echo OK > /tmp/.wrapper) &
read < /tmp/.wrapper
case $REPLY in
OK) ;;
*) kill "$!";;
esac

Et il suffit de faire un

echo STOP > /tmp/.wrapper

pour arreter le programme.

--
Stephane

Avatar
andrea ferraris
Stephane Chazelas wrote:
2004-10-26, 08:00(+02), Charles Brossollet:

J'utilise un programme qui tourne en tâche de fond, pilotable en telnet,
et qui a le bon goût de se mettre en mode "je répond plus à personne",
auquel cas le seul moyen de résoudre le problème est de le killer puis
de le relancer.


[...]

Tu peux utiliser un wrapper qui fait:

#! /bin/sh
mkfifo -m 620 /tmp/.wrapper || exit
chgrp le-groupe-qui-a-le-droit-d-arreter-le-prog /tmp/.wrapper || exit
(ton_programme; echo OK > /tmp/.wrapper) &
read < /tmp/.wrapper
case $REPLY in
OK) ;;
*) kill "$!";;
esac

Et il suffit de faire un

echo STOP > /tmp/.wrapper

pour arreter le programme.


Ce n'est pas semantiquement correct.
Si tu fais
echo "Ne tue pas mon prog" > /tmp/.wrapper
il le tue ;-)

Andrea


Avatar
nicolas vigier
On 2004-10-26, Charles Brossollet wrote:
Bonjour,

J'utilise un programme qui tourne en tâche de fond, pilotable en telnet,
et qui a le bon goût de se mettre en mode "je répond plus à personne",
auquel cas le seul moyen de résoudre le problème est de le killer puis
de le relancer.

Seulement nous sommes 2 sur ma machine, et l'autre utilisateur ne peux
pas devenir super-utilisateur. Ainsi quand le programme est bloqué cette
personne doit attendre mon retour pour pouvoir relancer la chose,
puisqu'elle ne peut pas killer un process que j'ai créé.

Y'a-t-il un quelconque moyen pour rendre ce processus tuable par
n'importe quelle personne?


En creant un script perl qui se charge de killer ton processus, et en
mettant ce script en suid (avec suidperl).

--
gpg fp: 8a7e 9719 b38d 97c6 6af0 d345 12a0 3708 2c8c 3c11
http://boklm.mars-attacks.org/