web-dev-qa-db-fra.com

Kiosque avec Chrome au 16.04

Comment configurer 16.04 en tant que "kiosque" basé sur Chrome? C'est à dire.:

  • chrome --kiosk en tant que seule application visible pour l'utilisateur,
  • l'utilisateur peut uniquement cliquer sur ce qui est montré par Chrome (pas de paramètres, Unity ou d'autres applications ou d'autres URL),
  • idéalement, l'utilisateur a des privilèges limités au maximum,
  • la connexion automatique (aucun mot de passe requis) est activée,
  • l’administrateur/superutilisateur peut se connecter avec une combinaison de clé magique ou autre (par exemple, Ctrl-Alt-F1 + login + mot de passe) et basculer sur "Bureau convivial".

Les recherches de base sur Google et d’autres réponses à AskUbuntu ne me conduisent qu’à certains anciens guides, ~ 14.04 ou ancien , que j’ai du mal à appliquer en 16.04 en raison de nombreuses différences entre les distributions (systemd vs old init, également de gros changements dans les interfaces graphiques, en particulier pour les paramètres système).

modifier: Idéalement, je préférerais une console/un guide basé sur un script afin de pouvoir l'automatiser sur de nombreux ordinateurs. Mais un guide basé sur une interface graphique serait toujours mieux que rien.

5
akavel

Vous trouverez ci-dessous ce que j’ai réussi à construire à la fin, en assemblant diverses notes et astuces que je pourrais trouver, ainsi que des "recherches originales" par moi-même. Je le trouve très rude et carrément moche par endroits, mais il me faut une solution, et cela semble fonctionner pour le moment. Doigts croisés...

Warning: VEUILLEZ NOTER que vous devriez également envisager de renforcer votre sécurité Linux pour la sécurité ,
qui est absolument pas couvert par le script présenté!

#!/bin/bash
if [ $# -ne 0 ]; then
    echo "USAGE: mkkiosk.sh"
    echo "Create new user 'kiosk' and configure LightDM to auto-login this user to a X session running only Chrome"
    echo "in --kiosk mode."
    exit 1
fi

set -x; set -e
date

# Try to make current user (admin/...) prefer 'ubuntu' to 'kiosk' for session type.
# TODO: currently doesn't seem to work, lightdm still suggests 'kiosk' session and requires manual clicking to change.
cat > ~/.dmrc << EOF
[Desktop]
Session=ubuntu
EOF

# Auto-create user 'kiosk'.
# http://askubuntu.com/a/321943/111779
# NOTE: auto-login is enabled later (autologin-user)
getent group kiosk || (
    Sudo su -c "groupadd kiosk"
    Sudo su -c "useradd kiosk -s /bin/bash -m -g kiosk"
)

# Install Chrome
# http://askubuntu.com/a/510186/111779
# TODO: somehow pin Chrome version? reportedly, cmdline flags are
# unofficial and can change; OTOH, security updates... though in kiosk, we show
# only one webpage; but admin user also may use Chrome.
grep chrome /etc/apt/sources.list.d/google-chrome.list >&/dev/null || (
    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | Sudo apt-key add -
        Sudo sh -c 'echo "deb [Arch=AMD64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
    Sudo apt-get update && Sudo apt-get install -y --no-install-recommends \
        google-chrome-stable
)

# https://wiki.archlinux.org/index.php/Display_manager#Session_configuration
#
# - For Chrome flags, see:
#   - http://peter.sh/experiments/chromium-command-line-switches/
#     (via http://askubuntu.com/a/423632/111779)
# - TryExec:
#   not sure what it does, but apparently must be just binary name if present.
#   (see: https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Additions/linux/lightdm-greeter/liblightdm-gobject-1.5.0/session.c)
#   TODO: test if we can remove TryExec
# - IMPORTANT NOTE: If below settings are invalid, the session may just
#   silently disappear as a choice in LightDM. You can then try to confirm this
#   by looking in /var/log/lightdm/seat0-greeter.log for message "Ignoring
#   sesion kiosk".
Sudo bash -c 'cat > /usr/share/xsessions/kiosk.desktop' << EOF
[Desktop Entry]
Encoding=UTF-8
Name=Kiosk
Comment=Start a Chrome-based kiosk session
Exec=/usr/bin/google-chrome --kiosk --window-size=1281,1025 --window-position=0,0 --no-first-run --incognito --no-default-browser-check --disable-translate http://stackoverflow.com
TryExec=/usr/bin/google-chrome
Icon=google-chrome
EOF
Sudo -u kiosk bash -c 'cat > ~kiosk/.dmrc' << EOF
[Desktop]
Session=kiosk
EOF
# See LightDM "help" in: /usr/share/doc/lightdm/lightdm.conf.gz
Sudo bash -c 'cat > /usr/share/lightdm/lightdm.conf.d/99-kiosk.conf' << EOF
[Seat:*]
user-session=kiosk
EOF
# Setting below options in only 99-kiosk.conf doesn't seem enough (conflicts on autologin-user).
Sudo bash -c 'cat > /etc/lightdm/lightdm.conf' << EOF
[Seat:*]
autologin-guest=false
autologin-user=kiosk
autologin-user-timeout=0
EOF

echo "Done."

Pour revenir à "utilisateur normal", appuyez sur Alt-F4 fermer Chrome; LightDM indiquera où vous pouvez vous connecter à votre (super) utilisateur "normal" admin/root/.... Pour revenir au "kiosque", lancez:

Sudo killall lightdm

TODO: n'a pas encore désactivé l'économiseur d'écran (ou l'a-t-il fait?).
En outre, aucune garantie, il peut vous blesser aux jambes, manger vos devoirs, etc., etc.

2
akavel

1) Chrome in Kiosk Définissez une tâche cron pour lancer chrome en mode kiosk et se lancer à chaque démarrage du système. par exemple. // Fichier: chrome

 Shell =/bin/sh 
 PATH =/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
 @ reboot [USER] google-chrome --kiosk --incognito [URL] 

Copiez ce fichier dans /etc/cron.d/

Vous pouvez également créer un programme de lancement (un fichier .desktop) avec la commande

 google-chrome --kiosk --incognito [URL] 

et copier ceci pour

/home/[USER]/.config/autostart

Cela active le démarrage automatique du navigateur chrome uniquement pour cet utilisateur.

2) AutoLogin Ouvrir ce fichier:

 Sudo vi /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf

Créer si n'existe pas.

Ajoutez ensuite ces lignes à ce fichier.

 [Seat: *] 
 Greeter-session = lightdm-gtk-greeter 
 Connexion automatique à l'utilisateur = [USER] 

Enregistrez ce fichier et redémarrez. Cela permet à l'utilisateur de se connecter automatiquement. Cet utilisateur a bien sûr des privilèges limités.

3) Connexion superutilisateur Utilisez CTRL + ALT + T, cela ouvre le terminal

 gnome-session-quit --logout --force 

Puis connectez-vous en tant que superutilisateur.

0
krishna