/etc/lightdm/lightdm.conf*
[Seat:*] greeter-session=lightdm-gtk-greeter
/etc/lightdm/lightdm-gtk-greeter.conf*
[SeatDefaults] allowguest=true autologin-guest=true greeter-setup-script=/usr/bin/numlockx on
sudo mkdir /etc/guest-session
sudo ln -s /home/guest_config /etc/guest-session/skel
/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 )
/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)
#!/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
#!/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”
#!/bin/bash
session-cleanup-script.sh
systemctl poweroff
- Forcer l'activation des imprimantes cupsenable IMPRIMANTE en début de session
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 :
#!/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"
Créer un lanceur sur le bureau pour éteindre le PC “Éteindre l'ordinateur en partant”
#!/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
Configuration Programmes
#!/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
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.
#!/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
dpkg --configure -a
30 15 * * 1 root /usr/local/bin/dpkg_clean.sh
fichier à copier dans /etc/systemd/system
# 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
# 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
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 :
#!/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
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.