tech:scriptinitsysvroot
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tech:scriptinitsysvroot [2025/03/24 15:06] – créée - modification externe 127.0.0.1 | tech:scriptinitsysvroot [2026/07/16 15:22] (Version actuelle) – Jean-Baptiste | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | # Script initV | ||
| + | |||
| + | FIXME : Doublon avec [[script_init_wrapper]] | ||
| + | |||
| + | |||
| + | Aujourd' | ||
| + | Cette solution install un script dans / | ||
| + | |||
| + | J'ai donc mon beau script / | ||
| + | |||
| + | Le pb c'est qu'il démarre le processus avec les privilèges root | ||
| + | |||
| + | Une solution serait d' | ||
| + | ~~~ | ||
| + | @reboot / | ||
| + | ~~~ | ||
| + | |||
| + | Je crée un utilisateur système. Mais la crontab, ce n'est pas une bonne idée : | ||
| + | * Il ne ferme pas l' | ||
| + | * Logiquement tous les scripts / | ||
| + | |||
| + | Lancement du serveur MACHIN sous un compte utilisateur (non-root) sous Debian. | ||
| + | |||
| + | |||
| + | |||
| + | ## 1) Création d’un nouvel utilisateur dédie au serveur MACHIN. | ||
| + | |||
| + | Dans notre exemple il s’agit de « machin » | ||
| + | |||
| + | |||
| + | |||
| + | ## 2) Création du script | ||
| + | |||
| + | |||
| + | `/ | ||
| + | ~~~bash | ||
| + | #! /bin/bash | ||
| + | # chkconfig: 35 85 15 | ||
| + | # description: | ||
| + | ### BEGIN INIT INFO | ||
| + | # Provides: | ||
| + | # Required-Start: | ||
| + | # Required-Stop: | ||
| + | # Default-Start: | ||
| + | # Default-Stop: | ||
| + | # Short-Description: | ||
| + | # Description: | ||
| + | ### END INIT INFO | ||
| + | MACHIN_USER=machin | ||
| + | MACHIN_INITSCRIPT=/ | ||
| + | su - $MACHIN_USER -c " | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Explications | ||
| + | |||
| + | Les commentaires servent ! | ||
| + | |||
| + | * Ligne 1 : c'est le [Shebang](https:// | ||
| + | * Ligne 2 : **chkconfig** sert pour Redhat/ | ||
| + | * Ligne 3 : **description** sert aussi pour chkconfig !? | ||
| + | * Ligne 4 à 12 : C'est la même chose que chkconfig, mais pour la plupart des distros. C'est une norme [LSB](https:// | ||
| + | * Ligne 13 à FIN : C'est le code. | ||
| + | * Ligne 13 : Variable **MACHIN_USER** qui contient le nom du compte dédié au service. | ||
| + | * Ligne 14 : Variable **MACHIN_INITSCRIPT** qui contient le chemin complet de l' | ||
| + | * Ligne 15 FIN: On utilise la commande **su** pour changer de compte. Puis $* représente tous les arguments. Dans le cas d'un script init : start, stop, status, restart et éventuellement d' | ||
| + | |||
| + | Voir http:// | ||
| + | |||
| + | Note : Les commentaires du scripts sont nécessaire. Voir https:// | ||
| + | |||
| + | |||
| + | ## 3) Gestion des services | ||
| + | |||
| + | Placer les droits d’exec : | ||
| + | |||
| + | ~~~bash | ||
| + | chmod +x / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Désactivation du démarrage de l’ancien script. | ||
| + | |||
| + | ~~~bash | ||
| + | update-rc.d MACHINAgent remove | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | Activation du nouveau script | ||
| + | |||
| + | ~~~bash | ||
| + | update-rc.d MACHINWrapper defaults | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | On vérifie : | ||
| + | ~~~bash | ||
| + | find /etc/rc* -iname " | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | ## 4) Fin | ||
| + | |||
| + | Arrêt process lancé en root | ||
| + | |||
| + | ~~~bash | ||
| + | / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | Ici l’utilisateur **machin** devient le nouveau propriétaires des fichiers | ||
| + | |||
| + | ~~~bash | ||
| + | chown machin: / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | On démarre MACHINWrapper | ||
| + | |||
| + | ~~~bash | ||
| + | / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | ## En cas de Pb : | ||
| + | |||
| + | Refaire point 3 et 4. | ||
| + | Idem si application patch. | ||
| + | |||
| + | |||
| + | ## Notes | ||
| + | NB : il convient dans la supervision de s’assurer que le process tourne sous le bon compte. | ||
| + | |||
| + | Exemple : | ||
| + | |||
| + | ~~~bash | ||
| + | pgrep -u machin nomDuProcess && echo OK || echo NOK | ||
| + | ~~~ | ||
