Comment lancer un processus non-root

Résolu/Fermé
Dawid Messages postés 432 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 24 décembre 2011 - 14 mai 2006 à 12:55
Dawid Messages postés 432 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 24 décembre 2011 - 13 mai 2009 à 21:20
Bonjour,

Je souhaiterais lancer fetchmail sous le compte d'un utilisateur normal (nommé fetchmail, dont le répertoire est /var/fetchmail).

J'ai essayé le script :
/etc/init.d/fectchmail suivant:
------------------------------------------------------------------------------------
#!/sbin/runscript

depend() {
need net
use mta
}

checkconfig() {
if [ ! -f /var/fetchmail/.fetchmailrc ]; then
eerror "Configuration file /etc/fetchmailrc not found"
return 1
fi
}

start() {
checkconfig || return 1

ebegin "Starting fetchmail"
start-stop-daemon --start --quiet -c fetchmail --exec /usr/bin/fetchmail \
-- -d ${polling_period} -f /var/fetchmail/.fetchmailrc
eend ${?}
}

stop() {
ebegin "Stopping fetchmail"
start-stop-daemon --stop --quiet --pidfile /var/run/fetchmail.pid
eend ${?}
}
---------------------------------------------------------------------------------------

Apparemment le paramètre -c fetchmail n'est pas le bon, car j'obtiens le message:
fetchmail: lstat: /root/.fetchids: Permission non accordée
quand j'essaie de lancer le service.

Si j'enlève le -c fetchmail , et que je rends root propriétaire du fichier /var/fetchmail/.fetchmailrc, il n'y a plus de problème...

5 réponses

touch /etc/init.d/nom_du_script
chmod 775 /etc/init.d/nom_du_script

vim /etc/init.d/nom_du_script

#!/bin/bash
su -c "votre commande" "votre identifiant"

@+
1
Dawid Messages postés 432 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 24 décembre 2011 62
13 mai 2009 à 21:20
Oui, c'est déja cette solution que j'utilise, mais elle n'est pas tout à fait satisfaisante.

Ce qui est bien, c'est qu'elle me lance bien fetchmail avec l'utilisateur fetchmail.

Ce qui est moins bien, c'est que mon script ne s'arrête pas "proprement".
(Quand je fais un /etc/init.d/fetchmail stop, j'ai le message :

* Stopping fetchmail...
* fetchmail: caught SIGTERM, aborting
0
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
14 mai 2006 à 14:06
Pour lancer un processus sur l'id d'un utilisateur tu peux faire:

su -c "commande" "utilisateur"

Apres c'est a toi de voir comment mettre ca dans le script.

Personnellement ca ne me parrait pas une bonne strategie de faire un "daemon" fetchmail a demarrer au boot. Si tu souhaite que la recuperation du mail soit automatique tu peux le mettre dans ~/.bashrc du l'utilisateur (si c'est pour une fois apres un login) ou tu mettras une ligne genre:

su -c /usr/bin/fetchmail toto

dans crontab, disons toutes les heures ou toutes les 15 minutes comme tu veux (editer le fichier /etc/contrab).
0
Dawid Messages postés 432 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 24 décembre 2011 62
14 mai 2006 à 16:55
Salut.

Merci pour ton message.
Il m'a fait penser à une commande qui se trouve dans les scripts Mandriva.

J'ai donc remplacé les lignes :
start-stop-daemon --start --quiet --exec /usr/bin/fetchmail \
-- -d ${polling_period} -f /var/fetchmail/.fetchmailrc

par :
su - fetchmail -c "cd /var/fetchmail ; /usr/bin/fetchmail -f /var/fetchmail/.fetchmailrc"
>/dev/null

(dans la section start)

Et dans la section stop, j'ai remplacé :
start-stop-daemon --stop --quiet --pidfile /var/run/fetchmail.pid
par un simple
killall fetchmail

C'est peut-être un peu bricolé, mais ça me donne le résultat que je voulais, à savoir lancer un démon fetchmail avec comme proprio quelqu'un d'autre que le root.

Ta solution du crontab est-elle préférable (il y a bien un démon qui gère le cron ?)
Sinon, faire une vérification des mails uniquement à la connexion d'un utilisateur particulier (en utilisant .bashrc), ça ne me convient pas trop : je veux vérifier mon courier tous les 5 minutes).

Encore merci pour m'avoir aidé à trouver la solution.
0
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
14 mai 2006 à 18:36
Ta solution du crontab est-elle préférable (il y a bien un démon qui gère le cron ?)

Bien sur il y a daemon qui gere le cron (c'est "crond", il y a un script de demarrage dans: /etc/rc.d/init.d/...) et normalement il est bien demarre dant tout systeme Linux. Pour appeler un programme de facon periodique tu peux ajouter une ligne dans /etc/crontab ou plus facilement deposer un script dans un des repertoires: /etc/cron.hourly/..., /etc/cron.daily/... etc.
Le /etc/cron.hourly/... correspond a une execution toutes les heures mais pour 5 minutes tu dois modifier le /etc/crontab.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dawid Messages postés 432 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 24 décembre 2011 62
14 mai 2006 à 20:26
C'est une autre possibilité qui est intéressante.
0