les scripts startup et logon dans les clinux

  • Principe des scripts

Le mécanisme de scripts logon et startup permet une gestion avancée du système.

On distingue ceux qui sont lancés à chaque démarrage, avec des droits root (les scripts startup) et ceux qui sont lancés à chaque logon d'un utilisateur, qui s'éxécutent donc avec des droits utilisateurs classiques.

Ces scripts sont à placer dans un dossier situé dans /etc/sambaedu/applications/ . Chaque script doit avoir des droits www-admin:root en droits 750

les scripts sont en bash, sans entête, impérativement non interactifs et sans erreurs ( mettre || true à la fin des commandes pour ne pas que le script s'arrête en cas d'erreur)

De même :pas de commande exit dans les scripts ; sinon tout le mécanisme est stoppé lors d'un exit.

  • Quelques indications concernant les scripts et leurs domaines d'applications
nom_du_script droits applications
startup.linux droits root exécuté à chaque boot
startup-once.linux droits root exécuté une seule fois
startup@parc.linux droits root exécuté à chaque boot sur un parc
startup@machine.linux droits root exécuté à chaque bootsur une machine
nom_du_script droits applications
logon.linux droits de l'user au logon de l'user
logoff.linux droits de l'user à la déconnexion de l'user

On peut mettre, pour des actions ciblées :

logon@Eleves.linux, logon@Profs.linux, logon@Classe_3A.linux, et même logon@prenom.nom.linux pour uniquement un compte

les -once ne sont pas gérés pour les groupes

  • Quelques exemples de scripts:
  1. Config d'Openboard

Voici le contenu du fichier /etc/sambaedu/applications/config_openboard/startup.linux

cp /opt/install/packages/OpenBoard/OpenBoard.configlinux /etc/openboard/OpenBoard.config ||true

Ici, le fichier de config d'openboard placé sur le se4fs est copié à chaque démarrage pour qu'openboard aille chercher les documents stockés dans le home de l'user, comme indiqué dans le fichier openboard.config du dépot Sambaédu. cette config serait écrasée en cas de MAJ d'openboard.

  1. Configuration d'Arduino Voici le contenu du fichier /etc/sambaedu/applications/arduino/logon.linux
    usermod --append --groups dialout $LOGIN ||true

    Ici, l'user est ajouté au groupe dialout et va ainsi pourvoir utiliser arduino correctement.

Ce script sera couplé avec un script startup:

Par exemple, voici le contenu d'un fichier /etc/sambaedu/applications/arduino/startup-once.linux qui va permettre d'ajouter l'user courant au groupe dialout, nécéssaire pour utiliser le logiciel Arduino.

echo "*;*;*;Al0000-2400;dialout" > /etc/security/group.conf
#
echo "Name: activate /etc/security/group.conf
#Default: yes
#Priority: 900
#Auth-Type: Primary
#Auth:   required                        pam_group.so use_first_pass" > /usr/share/pam-configs/my_groups

#debconf-set-selections <<EOF
#libpam-runtime    libpam-runtime/override    boolean    false
#libpam-runtime    libpam-runtime/profiles    multiselect my_groups, pam_script, unix, ldap, systemd, gnome-keyring
#EOF
    LIGNE=`grep -n 'success=3' /etc/pam.d/common-auth | cut -d: -f1`
    EXISTE=`grep "pam_group.so" /etc/pam.d/common-auth`
    if [ -z "$EXISTE" ]; then
        sed -i "${LIGNE}i auth    required pam_group.so use_first_pass" /etc/pam.d/common-auth
    fi
#     echo ""
  1. Ajout de clefs pour installer un logiciel

Ici, voici le code contenu dans le fichier /etc/sambaedu/applications/install_pycharm/startup-once.linux qui va mettre en place les sources pour installer le logiciel Pycharm (éditeur python utilisé en NSI).

curl -s https://s3.eu-central-1.amazonaws.com/jetbrains-ppa/0xA6E8698A.pub.asc | gpg --dearmor | sudo tee /usr/share/keyrings/jetbrains-ppa-archive-keyring>
echo "deb [signed-by=/usr/share/keyrings/jetbrains-ppa-archive-keyring.gpg] http://jetbrains-ppa.s3-website.eu-central-1.amazonaws.com any main" | sudo tee>

Il ne reste plus qu'à ajouter le nom du paquet dans le fichier packages.list

Remarque: Ici, c'est un script once, il n'est executé qu'une seule fois. Si on modifie ce fichier, alors il sera exécuté à nouveau. Comment ça marche? C'est simple, le md5sum du script éxécuté est placé dans /etc/sambaedu/applications du client Linux. Si on modifie le script, alors son md5sum est modifié et le script est exécuté à nouveau

md5-once.png