Bonjour à tous,
je suis débutant sous linux, et je suis en train de créer des services dans /etc/init.d
voilà rien de très compliqué pour le moment après ça se complique (du moins pour moi!!!), je vais essayer de vous décrire mon problème le plus précisément possible:
J'ai un script dans mon répertoire /opt/appi/appi.sh
ce script permet de faire un status/start/stop/restart de mon application, mais il ne peut être exécuter seulement avec mon utilisateur (tata par exemple), si je le start/restart en root l'appli ne se lance pas correctement (pas du tout même)
je souhaiterais créer mon service "appi" dans /etc/init.d pour qu'il aille chercher ce script
Je souhaiterais avoir dans mon script de service, un controle de l'utilisateur, si je suis tata "OK je le lance", si je suis root (ou autre) "je le lance avec l'utilisateur tata"
Mais je ne sais pas faire un controle avant de type:
if $user=tata
"ok je lance le service"
else "je lance le service en tant que tata"
Je ne sais pas si je me suis bien fais comprendre, mais si quelqu'un aurait une idée, ce serait avec plaisir.
Merci d'avance
Franck
# id
Posté par gaaaaaAab . Évalué à 2.
avec la commande id, tu peux faire des vérifications sur l'utilisateur
tu peux aussi récupérer l'id/nom du groupe avec -g/-gn
du coup, je ne sais pas si je répond à côté :)
[^] # Re: id
Posté par skank75 . Évalué à 1.
Merci déjà pour ta réponse,
j'ai bien compris la notion de UID GID mais en faite je n'arrive pas à l'appliquer dans mon cas, concrètement si je fais en root:
service appi start
je souhaiterais qu'il lance l'appli mais dans les process de tata (UID et le GID de tata est 20001 pour les deux)
[^] # Re: id
Posté par skank75 . Évalué à 1.
Re (dslé)
Donc il faudrait lors de la création du service faire un controle de l'utilisateur pour dire quand c'est tata OK, on restart
et si c'est root qui demande un service appi restart (ok on restart, mais en lançant sur le process de tata)
Mais ça je ne sais pas faire
[^] # Re: id
Posté par gaaaaaAab . Évalué à 2.
pour lancer la commande cmd en tant que tata quand tu es root,
pour décider si tu lances cmd ou su -c cmd, quelque chose comme:
avec ces quelques briques, tu devrais pouvoir avancer vers (voire atteindre) ton objectif
[^] # Re: id
Posté par gaaaaaAab . Évalué à 1.
ah oui, pour tout ça, man est ton ami, même si je veux bien admettre que le man de bash (ou autre shell) est un peu touffu :)
[^] # Re: id
Posté par skank75 . Évalué à 1.
Merci en tout cas de ta réponse, je vais essayer de me débrouiller avec ça.
Juste quelques précisions dans ton code:
dans
if [ $(id -nu) -eq 0 ]; then
su - tata -c cmd
Si je suis root je lance avec tata, c'est ça?
donc si je vais en quelques sortes l'inverse (id de tata = 20001)
comme:
if [ $(id -nu) -eq 20001 ]; then
cmd
else
su - tata -c cmd
fi
là je fais un controle si je suis tata je lance, sinon je lance en tant que tata, c'est ça?
en tout cas merco
[^] # Re: id
Posté par Michaël (site web personnel) . Évalué à 3.
Il y a probablement plus de deux utilisateurs sur ton système … je veux dire des UIDs autres que 0 et 20001, il faudrait donc faire deux tests.
[^] # Re: id
Posté par totof2000 . Évalué à 3.
il y a une variable d'environnement $USER en shell : pas besoin de se compliquer la vie à coup de awk dorsal.
[^] # Re: id
Posté par gaaaaaAab . Évalué à 2.
c'est vrai, mais il y a des pièges vicieux avec les variables d'environnement :
# Lancer en tant que tata dans tous les cas
Posté par Floris DUBREUIL . Évalué à 1.
Pourquoi ne pas lancer le script en tant que tata tout le temps ?
# sécurite
Posté par eric gerbier (site web personnel) . Évalué à 0.
Il y a pas mal de services qui fonctionnent comme cela, pour ne pas avoir une démon qui tourne sous le compte root : postgresql par exemple (du moment qu'ils n'ont pas besoin d'ouvrir un port < 1024). Tu peux prendre exemple sur leurs scripts de démarrage.
Les plus sécurisé effectuent en plus un chroot pour éviter la corruption de la racine, en cas d'attaque.
# résolu
Posté par skank75 . Évalué à 0.
Merci à tous pour vos réponses,
j'ai résolu mon problème est mon service se lance bien avec mon utilisateur.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.