Comment lancer un processus non-root

Résolu
Dawid Messages postés 432 Date d'inscription   Statut Membre Dernière intervention   -  
Dawid Messages postés 432 Date d'inscription   Statut Membre Dernière intervention   -
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...
A voir également:

5 réponses

ns50
 
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   Statut Membre Dernière intervention   62
 
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   Statut Contributeur Dernière intervention   501
 
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   Statut Membre Dernière intervention   62
 
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   Statut Contributeur Dernière intervention   501
 
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   Statut Membre Dernière intervention   62
 
C'est une autre possibilité qui est intéressante.
0