Configuration du gestionnaire de connexion LightDM
Changer le moteur de theme lightdm
/etc/lightdm/lightdm.conf*
[Seat:*] greeter-session=lightdm-gtk-greeter
Activer la session guest
/etc/lightdm/lightdm-gtk-greeter.conf*
[SeatDefaults] allowguest=true autologin-guest=true greeter-setup-script=/usr/bin/numlockx on
Créer une session de configuration guest
- Créer une session d'utilisateur par exemple guest_config pour configurer graphiquement un certain nombre de programmes
- Créer le dossier /etc/guest-session si non présent
sudo mkdir /etc/guest-session
- Créer le lien /etc/guest-session/skel vers /home/gest_config
sudo ln -s /home/guest_config /etc/guest-session/skel
Cacher des utilisateurs (LightDm)
/etc/lightdm/users.conf
Créer un fichier portant le nom de l'utilisateur à cacher XXX /var/lib/AccountsService/users/XXX
et y mettre le code suivant
[User] SystemAccount=true
Cacher notamment les comptes administrateurs et de configuration de session invité ( /var/lib/AccountsService/users/guest_config )
Nettoyage post-session
/etc/lightdm/lightdm.conf
[SeatDefaults] session-setup-script = Script to run when starting a user session (runs as root) session-cleanup-script = Script to run when quitting a user session (runs as root)
- Nettoyage de la file d'impression (éviter le lancement d'impressions intempestives)
- lprm
- cleanall_printer_tasks.sh
#!/bin/bash for d in `lpq -a | sed -n '2,$'p | sed -e 's/ \s*/,/g' | cut -d, -f 3` do lprm $d done cancel -a
- session-cleanup-script.sh
#!/bin/bash # # Script de Nettoyage de fin de session # # - Supprimer les fichier utilisateurs # - Afficher notification de suppression et de mise à jour # - Lancer les mises à jour a la fermeture invité # DIR_LOGOUT_MSG=/usr/share/backgrounds/message_logout_cybersalle/ # # Bypass bug de lancement de ce script à l'écran de login pour l'invité # timeloged=$(ps -o etime,cmd,user= ax | grep [c]innamon-launcher | grep ${USER} | head -n 1 | sed -e 's/ *//' -e 's/://' -e 's/ .*//') if [ -z $timeloged ] then exit 0 fi # # Suppression des files d'impression # for d in `lpq -a | sed -n '2,$'p | sed -e 's/ \s*/,/g' | cut -d, -f 3` do lprm $d done cancel -a if $(echo $USER | grep "^guest-" | grep -qv "guest-config") then # # Suppression des donnees utilisateur·ices avant mise à jour # guestpath=/home/${USER} if [ -d ${guestpath} ] then echo rm -rf ${guestpath}/* ${guestpath}/.mozilla fi timeloged=$(ps -o etime,cmd,user= ax | grep [c]innamon-launcher | grep ${USER} | head -n 1 | sed -e 's/ *//' -e 's/://' -e 's/ .*//') # # Affichage du message de destruction des données # xviewer -f ${DIR_LOGOUT_MSG}/message_logout_suppr_datas.svg & idsupprdata=$$ sleep 3 # # Ne pas lancer les mises à jour si logout trop rapide (3 min après login) # if [ $timeloged -lt 300 ] then killall -9 xviewer exit 0 fi # # Reparation dpkg si besoin # if $(grep -q "dpkg \-\-configure \-a" /var/log/mintupdate.log) \ && $(ps -aux | grep -vq "synapti[c] \|apt[t] \|dpkg[g] ") then xviewer -f ${DIR_LOGOUT_MSG}/message_logout_dpkg_configure.svg & dpkg --configure -a fi # # Premiere passe de mise à jour # xviewer -f ${DIR_LOGOUT_MSG}/message_logout_maj_recherche.svg & mintupdate-cli -r update xviewer -f ${DIR_LOGOUT_MSG}/message_logout_maj_install.svg & mintupdate-cli -r upgrade -y >> /var/log/logoutupdate.log # # Seconde passe de mise à jour si mintupdate a été mis à jour # if [ $(grep -q "mintupdate" /var/log/logoutupdate.log ) ] then xviewer -f ${DIR_LOGOUT_MSG}/message_logout_maj_recherche.svg & mintupdate-cli -r update xviewer -f ${DIR_LOGOUT_MSG}/message_logout_maj_install.svg & mintupdate-cli -r upgrade -y fi # # Fin de cinnamon pour éviter de revoir le bureau # pidtokill=$(ps -e -o pid,cmd | sed -e 's/ */ /g' -e 's/^ *//' | grep "[c]innamon --replace" | cut -d " " -f 1) if [ ! -z $pidtokill ] then echo "kill ${pidtokill}" kill ${pidtokill} fi # # fin des utilitaires utilisés # killall -9 zenity killall -9 xviewer fi
Modifier la commande d'extinction de l'applet “Menu Éteindre avec boutons”
- session-cleanup-script-and-shutdown.sh
#!/bin/bash session-cleanup-script.sh systemctl poweroff
- Forcer l'activation des imprimantes cupsenable IMPRIMANTE en début de session
Configurer la session guest
Personnalisation du message d'accueil
Supprimer l'avertissement en anglais en créant ~/.skip-guest-warning-dialog
touch /home/guest_config/.skip-guest-warning-dialog
Dans les préférences→applications au démarrage créer une entrée avec lançant le script :
- bonjour_cybersalle.sh
#!/bin/bash zenity --title "ATTENTION" --text="Cette session est temporaire et sera effacée à l'extinction. Sauvegardez vos documents sur clée USB et non sur le bureau." --width=400 --warning --ok-label="J'ai compris"
Bouton extinction sur le bureau
Créer un lanceur sur le bureau pour éteindre le PC “Éteindre l'ordinateur en partant”
- button_desktop_shutdown.sh
#!/bin/sh zenity --question \ --title "Confirmation d'extinction" \ --cancel-label="NON je dois enregistrer mon travail !" \ --ok-label="OUI et j'éteints également l'écran" \ --text="<big><b>Éteindre cet ordinateur maintenant ? \n\nMerci d'éteindre ensuite l'écran</b></big>" if [ $? = 0 ] then systemctl poweroff else echo "Annulation de l'extinction" sleep 3 fi
Checklist modifs paramètre bureau
- Gestionnaire de fichiers
- enlever suppression directe
- garder uniquement le dossier Bureau et supprimer les marques pages correspondants (voire linker tous les dossiers classiques vers le bureau - vérifier le comportement de la fenêtre d'enregistrements des fichiers des navigateurs)
- Supprimer les “entrée inutiles” des menus contextuels, (terminal, lancer en admin…)
- Bureau
- Enlever l'ajustement automatique (pour centrer les icones)
- configuration raccourcis Bureau
- Applications Démarrage
- Enlever
- Gestionnaire de mises à jour
- Relevés du système
- mintwelcome
- Ajouter
- message d'accueil personnalisé
- extinction automatique
- Verrouillage et session
- Désactiver la veille et le verrouillage écran
- Enlever possibilité verrouillage session menu
- Ajouter applet extinction dans la bare des tâches
Configuration Programmes
- Firefox
- configuration policies (pour éviter les messages des mises à jours) (cf : https://wiki.desclicks.net/doku.php?id=linux:custom_firefox:cybersalle à terminer dans /etc/firefox/policies)
- Extension contre la publicité
- raccourcis FLE
- Paramétrages
- Suppression des cookies en fin de session
- Ne pas proposer l'enregistrement des mots de passes
- Ne pas sauvegarder l'historique
- Navigation
- Retirer recommander des extensions en cours de navigation
- Retirer recommandes des fonctionnalités en cours de navigation
- Ajout raccourci zoom impression outil copier coller
- Lancer une fenêtre d'enregistrement de fichier pour laisser uniquement le dossier bureau comme possibilité d'enregistrement
- Libreoffice
- Grammalecte
- Simple Scan
- Configurer le scanner en A4 par défaut
- Autres
- lancer une première fois
- pour éviter les messages d'accueil
- pour maximiser les fenêtres
- Avant finalisation préparation de session lancer bleachbit pour nettoyage cache & co
- Post Clonage
- macchanger
Configuration install
- Nettoyage des guest-XYZK fantômes
- clean-guest-phantom.sh
#!/bin/bash for user in `cat /etc/passwd | grep "guest-" | grep -v "guest-config" | sed -e 's/:.*//'` do if ! $(who | grep -q $user) then userdel -r $user else echo "not destroying connected $user" fi done
Nettoyage dpkg
Les PC peuvent être amené à être éteints de manière non conventionnelle par les utilisateur·ices. Pour éviter un blocage des mises jours suite à une arrêt des configurations par dpkg, nous pouvons en attendant une prise en charge native réparer l'erreur lorsque nécessaire.
- desclicks-dpkg-clean.sh
#!/bin/bash if $(grep -q "dpkg \-\-configure \-a" /var/log/mintupdate.log) \ && $(ps -aux | grep -vq "synapti[c] \|apt[t] \|dpkg[g] ") then dpkg --configure -a fi
Lancé via un tâche cron ou mieux avec un service au démarrage
- Tâche cron 1x semaine pour éviter le blocage des mises à jours suite à un arrêt en force
dpkg --configure -a
30 15 * * 1 root /usr/local/bin/dpkg_clean.sh
- Service systemd
fichier à copier dans /etc/systemd/system
- desclicks-update-automation-cleanup-dpkg.service
# cleanup in case mintupdate automation was interrupted [Unit] Description=Update Manager Automation Cleanup of dpkg error configure after fail [Service] Type=oneshot CPUQuota=50% CPUWeight=20 IOWeight=20 ExecStart=/usr/local/bin/desclicks-dpkg-clean.sh #ExecStart=grep -q "dpkg \-\-configure \-a" mintupdate.log && dpkg --configure -a [Install] WantedBy=multi-user.target
et à activer
systemctl enable desclicks-update-automation-cleanup-dpkg.service
Nettoyage file d'impression
- desclicks-cleanup-printlist.service
# cleanup printlist startup [Unit] Description=Clean printer list [Service] Type=oneshot CPUQuota=50% CPUWeight=20 IOWeight=20 ExecStart=/usr/local/bin/cleanup_printlist.sh After=cups.service [Install] WantedBy=multi-user.target
HP clones
Blacklister mei_me
via /etc/modprobe.d/blacklist.conf
# Intel VPRO remote access technology driver blacklist mei_me
pour les sessions live décharger le module via la commande
rmmod mei_me
dans le cas contraire, un message d'erreur du type suivant apparait sur les terminaux virtuels toutes les 5s :
mei_me 0000:00:03.0: reset: connect/disconnect timeout.
script de post_clonage de la cybersalle :
- postclonage.sh
#!/bin/bash nbpc=0 echo " ======================================== " echo " ! LANCEZ CE SCRIPT EN ROOT ! " echo " \$ sudo -i " echo " Les actions suivantes ne pourront " echo " etre realisees dans le cas contraire : " echo " - modification de l'adresse MAC " echo " ======================================= " echo "Entrez le numero du pc" read nbpc nbpc=$(echo $nbpc | bc) if [ $nbpc -lt 10 ] then nbpc="0$nbpc" fi service network-manager stop echo " =================================== " echo " Modification du nom de la machine : " echo DesclicksXub$nbpc echo " =================================== " name=DesclicksXub${nbpc} echo -e "${name}\n" > /etc/hostname hostname ${name} sed -e "s/^127.0.1.1\s*\(Desclicks\|cyberlis\).*/127.0.1.1 ${name}/" -i /etc/hosts echo " =================================== " echo " Modification de l adresse MAC" echo " =================================== " eth=`ip link show | grep -o eth[0-9][0-9]*` echo ip link set dev $eth address 00:00:00:00:0D:$nbpc ip link set dev $eth address 00:00:00:00:0D:$nbpc if grep -qe '^hwaddress ether' /etc/network/interfaces then sed -e "s/\(hwaddress ether\).*/\1 00:00:00:00:0d:$nbpc/" -i /etc/network/interfaces else echo -e "hwaddress ether 00:00:00:00:0d:$nbpc\n" >> /etc/network/interfaces fi service network-manager start
Session temporaire avec patron & auto lancement après délai
Résumé: nous allons créer un compte-patron, le configurer, activer le compte invité temporaire, créer un lien symbolique du compte-patron au compte temporaire, changer l'annonce du compte invité, activer le lancement automatique du compte temporaire après un délai défini puis cacher le compte-patron.
Créez un utilisateur qui servira de patron à la session temporaire (ici nommée guest_config). NE PAS l'appeler SKEL !
Dans les administration→écran de connexion onglet UTILISATEURS activez AUTORISEZ LES INVITES À SE CONNECTER\\.
sudo ln -s /home/guest_config /etc/guest-session/skel <code> sudo nano /etc/lightdm/lightdm.conf
Rentrez/modifiez les lignes suivantes:
autologin-guest=true #autologin-user= autologin-guest=true autologin-user-timeout=15
Avec ces commandes l'utilisateur invité temporaire sera lancé après 15 secondes. À noter que le décompte commence AVANT le lancement de l'interface graphique !
Note : il est possible que le fond d'écran proposé par lightDM ne corresponde pas à celui du compte dans ce cas écraser l'image correspondante située dans usr/share/backgrounds/linuxmint/default_background par l'image désirée.
Sources
- Session logout script :
- Sécuriser physiquement : cadenas
- Polices Microsoft :