web-dev-qa-db-fra.com

Est-il possible d'ajouter un profil GRUB pour se connecter automatiquement à un utilisateur et démarrer un script (15.10)?

J'ai une machine 15.10 64 bits avec plusieurs comptes d'utilisateurs.
Normalement, je sélectionne Ubuntu dans GRUB, il démarre et me montre l'écran de connexion, je sélectionne un compte, saisis le mot de passe et démarre mes applications.

C'est ok et devrait rester ainsi, mais j'aimerais avoir une autre option dans le menu GRUB:

Si je sélectionne celui-ci, il devrait démarrer la même installation Ubuntu, mais se connecter automatiquement à un compte d'utilisateur spécifique (protégé par mot de passe) et démarrer un script, qui peut ne pas être lancé si je me connecte normalement.
Comme la connexion automatique contourne le mot de passe du compte, j'aimerais également protéger par mot de passe cette option de démarrage GRUB, afin que je doive entrer mon mot de passe (ou un autre) dans GRUB avant de démarrer cette seule option.

Est-il possible de mettre en place quelque chose comme ça? Comment devrais-je le faire?

1
Byte Commander

Travail en cours

Cela peut être accompli en utilisant:

  1. une session X personnalisée qui démarre un gestionnaire de fenêtres de base et exécute le script
  2. une configuration personnalisée pour LightDM qui ouvrira automatiquement votre session utilisateur et utilisera la session ci-dessus
  3. un service personnalisé pour LightDM qui utilisera la configuration ci-dessus
  4. paramètres de noyau appropriés pour désactiver le service LightDM normal et démarrer le service personnalisé
  5. Configuration GRUB pour créer automatiquement des entrées avec les paramètres ci-dessus, avec protection par mot de passe

Pour cet exemple, je vais montrer comment configurer un mode kiosque à l'aide de Google Chrome.

Le script

#! /bin/sh
metacity &
while true
do 
    google-chrome --start-maximized
    if zenity --question --text='Do you want to logout?' --title='Logout'
    then
        exit
    fi
done

Gardez-le à, dites /usr/local/bin/chrome-kiosk.sh, rendez-le exécutable. Notez que j'utilise metacity pour un simple gestionnaire de fenêtres qui me fournit une configuration fonctionnelle sans configuration supplémentaire.

La session X

[Desktop Entry]
Name=Chrome
Comment=This session logs runs a Google Chrome kiosk
Exec=/usr/local/bin/chrome-kiosk.sh
Icon=google-chrome
Type=Application
X-LightDM-DesktopName=Chrome

Enregistrez-le à /usr/share/xsessions/chrome.desktop. Si vous utilisez un script différent, modifiez au moins la ligne Exec en conséquence.

La configuration LightDM

[Seat:*]
autologin-guest=false
autologin-user=username
autologin-user-timeout=0
autologin-session=chrome

Enregistrez-le sous /etc/lightdm/autologin-lightdm.conf. Remplacez username par le nom d'utilisateur souhaité.

Le service LightDM

systemctl cat lightdm.service | 
  sed '/ExecStart/s/$/ --config=/etc/lightdm/autologin-lightdm.conf' |
  Sudo tee /etc/systemd/system/autologin-lightdm.service

Cela crée une copie personnalisée de la valeur par défaut lightdm.service nommé autologin-lightdm.service à /etc/systemd/system, avec la ligne ExecStart remplacée par:

ExecStart=/usr/sbin/lightdm --config /etc/lightdm/autologin-lightdm.conf

Les paramètres du noyau

Pour tester cela, dans le menu GRUB, appuyez sur e pour modifier l'entrée Ubuntu. Recherchez la ligne linux et ajoutez:

systemd.mask=display-manager.service systemd.wants=autologin-lightdm.service

(Vous pouvez omettre le .service extensions.)

Presse CtrlX. Vous devez être connecté à l'utilisateur et avoir une fenêtre Google Chrome Chrome maximisée.

Configuration de GRUB

À déterminer.

2
muru