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 -
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...
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:
- Comment lancer un processus non-root
- Kingo root - Télécharger - Divers Utilitaires
- Lancer une application au démarrage windows 10 - Guide
- Supprimer application préinstallée android sans root - Guide
- Fichier batch pour lancer un programme - Guide
- Passer en root linux ✓ - Forum Linux / Unix
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"
@+
chmod 775 /etc/init.d/nom_du_script
vim /etc/init.d/nom_du_script
#!/bin/bash
su -c "votre commande" "votre identifiant"
@+
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).
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).
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.
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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