message_logout_cybersalle.zip

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)

  1. lprm
  2. 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

  1. Gestionnaire de fichiers
    1. enlever suppression directe
    2. 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)
    3. Supprimer les “entrée inutiles” des menus contextuels, (terminal, lancer en admin…)
  1. Bureau
    1. Enlever l'ajustement automatique (pour centrer les icones)
    2. configuration raccourcis Bureau
  2. Applications Démarrage
    1. Enlever
      1. Gestionnaire de mises à jour
      2. Relevés du système
      3. mintwelcome
    2. Ajouter
      1. message d'accueil personnalisé
      2. extinction automatique
  3. Verrouillage et session
    1. Désactiver la veille et le verrouillage écran
    2. Enlever possibilité verrouillage session menu
    3. Ajouter applet extinction dans la bare des tâches

Configuration Programmes

  1. Firefox
    1. 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)
    2. Extension contre la publicité
    3. raccourcis FLE
    4. Paramétrages
      1. Suppression des cookies en fin de session
      2. Ne pas proposer l'enregistrement des mots de passes
      3. Ne pas sauvegarder l'historique
      4. Navigation
        1. Retirer recommander des extensions en cours de navigation
        2. Retirer recommandes des fonctionnalités en cours de navigation
    5. Ajout raccourci zoom impression outil copier coller
    6. Lancer une fenêtre d'enregistrement de fichier pour laisser uniquement le dossier bureau comme possibilité d'enregistrement
  2. Libreoffice
    1. Grammalecte
  3. Simple Scan
    1. Configurer le scanner en A4 par défaut
  1. Autres
    1. lancer une première fois
      1. pour éviter les messages d'accueil
      2. pour maximiser les fenêtres
    2. Avant finalisation préparation de session lancer bleachbit pour nettoyage cache & co
  1. Post Clonage
    1. 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