Rechercher : dans
Par :

Comment lancer un processus non-root

Dernière réponse le 13 mai 2009 à 21:20:41 Dawid, le 14 mai 2006 à 12:55:22 
 Signaler ce message aux modérateurs

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...

Configuration: GENTOO

Meilleures réponses pour « Comment lancer un processus non root » dans :
Processus de Windows VoirVous vous demandez certainement quels sont tous ces horribles processus qui tournent quand vous ouvrez le gestionnaire des tâches... Ici, une tentative d'explication : Csrss.exe Csrss signifie Client Server Run-time Subsystem. C'est un sous...
[Logiciels] Modifier la priorité d'une application VoirIntroduction Méthode de modification de la priorité Lancer un processus via l'invite de commande Lancer un processus via le menu contextuel Introduction Windows NT (version 3.51 & 4), 2000, XP et Vista attribuent automatiquement aux...
Il n'y a pas de compte root sous Ubuntu VoirMythe Il n'y a pas de compte root sous Ubuntu. Réalité FAUX. Explications Si si. Le compte root existe. Faites un simple cat /etc/passwd pour vous en convaincre. En fait, le compte root existe, mais possède un mot de passe vide. Et comme...

1

kmf31, le 14 mai 2006 à 14:06:49

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).

Répondre à kmf31

2

Dawid, le 14 mai 2006 à 16:55:48

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.

Répondre à Dawid

3

kmf31, le 14 mai 2006 à 18:36:31

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.

Répondre à kmf31

4

Dawid, le 14 mai 2006 à 20:26:31

C'est une autre possibilité qui est intéressante.

Répondre à Dawid

5

ns50, le 11 mai 2009 à 21:11:33
  • +1

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"

@+

Répondre à ns50

6

 Dawid, le 13 mai 2009 à 21:20:41

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

Répondre à Dawid