: Doublon avec script_init_wrapper
Aujourd'hui au boulot : install d'un logiciel privateur sur une Debian. Cette solution install un script dans /etc/init.d/ Je vais l'appeler ici MACHINAgent
J'ai donc mon beau script /etc/init.d/MACHINAgent
Le pb c'est qu'il démarre le processus avec les privilèges root
Une solution serait d'utiliser crontab sous un compte utilisateur.
@reboot /etc/init.d/MACHINAgent start
Je crée un utilisateur système. Mais la crontab, ce n'est pas une bonne idée :
Lancement du serveur MACHIN sous un compte utilisateur (non-root) sous Debian.
Dans notre exemple il s’agit de « machin »
/etc/init.d/MACHINWrapper
#! /bin/bash # chkconfig: 35 85 15 # description: Startup script for MACHIN Agent Wrapper ### BEGIN INIT INFO # Provides: MACHINWrapper # Required-Start: $network $local_fs $remote_fs $time $syslog # Required-Stop: $network $local_fs $remote_fs $time $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Wrapper pour lancer les scripts sysVinit avec un compte utilisateur (non root) # Description: Wrapper pour lancer les scripts sysVinit avec un compte utilisateur (non root) ### END INIT INFO MACHIN_USER=machin MACHIN_INITSCRIPT=/etc/init.d/MACHINAgent su - $MACHIN_USER -c "$MACHIN_INITSCRIPT $*"
Les commentaires servent !
Note : Les commentaires du scripts sont nécessaire. Voir https://wiki.debian.org/LSBInitScripts http://linux.die.net/man/8/chkconfig
Placer les droits d’exec :
chmod +x /etc/init.d/MACHINWrapper
Désactivation du démarrage de l’ancien script.
update-rc.d MACHINAgent remove
Activation du nouveau script
update-rc.d MACHINWrapper defaults
On vérifie :
find /etc/rc* -iname "*MACHIN*"
Arrêt process lancé en root
/etc/init.d/MACHINAgent stop
Ici l’utilisateur machin devient le nouveau propriétaires des fichiers
chown machin: /opt/machin/ -R
On démarre MACHINWrapper
/etc/init.d/MACHINWrapper start
Refaire point 3 et 4. Idem si application patch.
NB : il convient dans la supervision de s’assurer que le process tourne sous le bon compte.
Exemple :
pgrep -u machin nomDuProcess && echo OK || echo NOK