Script au démarrage avec systemd?

Résolu/Fermé
Utilisateur anonyme - Modifié par orinym le 21/01/2014 à 21:45
 Falko - 16 janv. 2018 à 15:27
Bonjour,

En vue d'apprendre à sécuriser un serveur, je souhaite exécuter un script activant des règles
iptables
au démarrage.

Je suis sous archlinux (ARM, j'utilise un raspberry pi). Et les scripts de démarrage sont apparemment gérés par
systemd
.

J'aurais besoin d'éclaircissements quant à la création d'un script au démarrage.

Où doit se trouver ce script? Dans un répertoire particulier?
Dois-je l'activer avec
systemctl start/enable <mon_script>
comme je le ferais avec un service? J'applique donc cette commande directement sur le script?

J'ai peut-être trouvé un début d'explication sur cet ensemble de 3 articles :
https://www.alionet.org/content.php?194-Systemd-comment-ca-marche
https://www.alionet.org/content.php?198-Systemd-comment-ca-marche-Partie-2
https://www.alionet.org/content.php?228-Systemd-comment-%E7a-marche-3%E9me-et-derni%E8re-partie

Dans le deuxième article il est question d'un fichier de la forme :
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/init.d/ufw Compatibility
After=syslog.target network.target
ConditionFileIsExecutable=/etc/init.d/ufw

[Service]
Type=oneshot
ExecStart=/etc/init.d/ufw start
ExecStop=/etc/init.d/ufw stop
TimeoutSec=0
StandardOutput=syslog
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target


Dans cet exemple il s'agit du fichier
/lib/systemd/system/ufw.service
.
Dans ce cas, ce service est-il associé à l'exécutable
/etc/init.d/ufw
?
Je n'ai pas de dossier
/etc/init.d
mais j'ai un dossier
/etc/rc.d
. Dois-je donc utiliser ce dossier
/etc/rc.d
comme le dossier
 /etc/init.d/
est utilisé dans l'exemple?

Quels sont donc les étapes pour créer un script qui s'exécutera au démarrage?

Écrire mon script (
firewall
) dans
/etc/rc.d
/ ?
Puis écrire le
firewall.service
correspondant, selon le modèle que j'ai recopié plus haut, dans
/lib/systemd/system/
? (en faisant attention à ce qu'il n'existe pas déjà un tel fichier?)
Exécuter
systemctl start firewall.service
? Ou est-ce
systemctl enable firewall service
?

Cela suffirait-il ou ai-je oublié quelque-chose?

Je vous remercie par avance pour vos lumières. :)
Bien cordialement,
Orinym.
A voir également:

1 réponse

Utilisateur anonyme
22 janv. 2014 à 14:38
J'ai finalement trouvé une réponse bien détaillée et très compréhensible, je la joins au cas où ça intéresserait d'autres personnes. (en Anglais).

https://unix.stackexchange.com/questions/47695/how-to-write-startup-script-for-systemd

Ce n'est pas pour les iptables mais pour un script éteignant une carte graphique superflue, donc en fait un script s'exécutant au boot, par conséquent dans des conditions similaires!

Bonne lecture si ça vous intéresse :)
7
Merci d'être revenu donner la solution !
0