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.
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
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.
/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 ""
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