Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: Kryzalid


Bonjour,

Voici le problème que je rencontre :
J'administre un serveur Ultravnc et je voudrais que celui-ci relance ces deux processus en cas de panne de courant.

Sur celui-ci tourne un noip (logiciel associant un nom de domaine à une IP dynamique).

Celui-ci fonctionne sans problème en mettant la commande :
/usr/local/bin/noip2

Dans le rc.local.

Cependant, pour le serveur VNC cela n'est pas Ok car il doit par sécurité se lancer avec les droits de l'utilisateur "vnc".

Au début je me suis dis pas de problème on va le mettre dans rc.local avec ces lignes :
su - vnc
/home/vnc/vnc/./repeater &

Au démarrage le processus n'est pas chargé en mémoire.. je pense que malgré le "su - vnc" il le charge en root (ce qui le kill automatiquement).

Auriez vous une astuce s'il vous plait pour réaliser ce type d'automatatisation ?

Merci.

Poste le Tuesday 29 April 2008 11:59:35
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: P Hoquet

Salut,

Avec sudo, ce n'est pas possible ?

Poste le Tuesday 29 April 2008 13:47:31
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: Kryzalid

Merci P Hoquet,

Je viens d'essayer avec cette commande :
sudo -u vnc -b /home/vnc/vnc/./repeater

-u : pour l'utilisateur
-b : pour lui indiquer de mettre le process en bg

Rien à faire cela marche en shell mais pas au démarrage :-(

Une autre astuce ?

Poste le Tuesday 29 April 2008 14:56:52
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: P Hoquet

Et en activant le bit setuid (4000) du script repeater ?

Poste le Tuesday 29 April 2008 15:22:11
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: Kryzalid

Hum, que veux tu dire par cela ?

Le fichier en question est en droit 750.

Que puis je faire ? Je pensais que tous ce qui marchais en Shell marcherais dessus mais quelque chose m'échappe..

Poste le Wednesday 30 April 2008 11:32:10
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: oudoubah

Pour sudo, rajoute aussi l'option -H (qui lui dit d'utiliser le HOME de l'utilisateur et non pas le HOME de l'utilisateur courant).
Si vnc a besoin d'écrire dans ~/.qqch, sans l'option H cela ne fonctionnera pas.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 30 April 2008 11:58:11
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: P Hoquet

Les droits doivent devenir 4750 et vnc propriétaire du script.

Poste le Wednesday 30 April 2008 14:32:50
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: Kryzalid

J'ai ajouté cette option -H et cela donne la même chose.. ce type de chose doit pourtant être courante ? Y a t-il une autre méthode (à part les services car je ne doit pas les lancer en root) ?

Poste le Wednesday 30 April 2008 15:18:44
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: P Hoquet

Avec le bit setuid activé ça devrait fonctionner

Poste le Wednesday 30 April 2008 15:44:45
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: Kryzalid

Salut,

Je viens de faire un :
chmod 4750 repeater
chown vnc:vnc repeater

Toujours rien, je crois que je vais devenir fou.

J'ai essayé de commenter la ligne rc.local par >/home/log.log

Le fichier est créé mais vide.

J'ai aussi essayé de faire un programme en C lançant le script :

-----------------------------------------------------------------
#include <unistd.h>

int main()
{
execlp("sh", "sh", "/home/vnc/vnc/./repeater", 0);
return 1;
}
-----------------------------------------------------------------

Pareil, en shell c'est ok.. au démarrage rien.

Poste le Wednesday 30 April 2008 17:12:36
Répondre     Citer    
Re: Lancer une commande dans rc.local avec les droits d'un user
Envoyé par: oudoubah

Lorsque tu lances vnc en service, il n'est rattaché à aucune session X, donc c'est normal qu'il ne fonctionne pas.
Il faudrait plutôt que tu le lances via le ~/.xinitrc
Peut être que ça fonctionnerait si tu lui précisais le DISPLAY.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 2 May 2008 16:32:17
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Lancer une commande dans rc.local avec les droits d'un user
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons