Quiosque com o Chrome em 16.04

5

Como posso configurar o 16.04 como um "quiosque" baseado no Chrome? Ou seja:

  • chrome --kiosk como o único aplicativo visível para o usuário,
  • o usuário só pode clicar no que é exibido pelo Chrome (sem configurações, Unity ou outros aplicativos ou outros URLs),
  • idealmente, o usuário tem privilégios maximamente limitados,
  • o usuário tem "autologin" (sem senha obrigatória) ativado,
  • admin / superusuário pode fazer login com alguma combinação de teclas mágicas ou algo assim (por exemplo, Ctrl-Alt-F1 + login + senha) e alternar para "desktop totalmente amigável".

O googling básico e outras respostas do AskUbuntu me levam apenas a alguns guias antigos, ~ 14.04 ou mais antigo , que eu tenho dificuldade em aplicar em 16.04 por causa de muitas diferenças entre as distribuições (systemd vs. init antigo, também grandes mudanças nas GUIs, especialmente para configurações do sistema).

editar: Idealmente, eu preferiria um guia baseado em script / console, para que eu pudesse automatizá-lo em muitos computadores. Mas um guia baseado em GUI ainda seria melhor que nada.

    
por akavel 13.12.2016 / 13:24

2 respostas

2

Abaixo está o que eu consegui construir no final, juntando vários recados e dicas que eu pude encontrar, além de algumas "pesquisas originais" minhas. Eu considero isso muito rude e francamente feio em alguns lugares, mas eu preciso de alguma solução, e parece funcionar por enquanto. Dedos cruzados ...

POR FAVOR, NOTE que você também deve considerar o fortalecimento do seu Linux para segurança ,
que é absolutamente não coberto pelo script apresentado!

#!/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."

Para voltar ao "usuário normal", pressione Alt-F4 para fechar o Chrome; LightDM irá mostrar, onde você pode acessar seu administrador "normal" / root / ... (super) usuário. Para voltar ao "quiosque", execute:

sudo killall lightdm

TODO: ainda não desativou o protetor de tela (ou foi?).
Além disso, sem garantia, ele pode soltar sua perna, fazer sua lição de casa, etc, etc.

    
por akavel 14.12.2016 / 16:39
0

1) Chrome no quiosque Defina um cronjob para iniciar o chrome como modo de quiosque e inicia sempre que o sistema é iniciado. por exemplo. // Arquivo: chrome

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

Copie este arquivo para /etc/cron.d /

Alternativamente, você pode criar um lançador (um arquivo .desktop) com o comando

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

e copie isso para

/ home / [USER] /. config / autostart

Isso permite a inicialização automática do navegador chrome somente para esse usuário.

2) AutoLogin Abrir este arquivo:

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

Crie se não existir.

Em seguida, adicione estas linhas a este arquivo.

[Seat:*]
greeter-session=lightdm-gtk-greeter
autologin-user=[USER]  

Salve este arquivo e reinicie. Isso permite que o usuário faça login automaticamente. Este usuário tem, é claro, privilégios limitados.

3) Login do superusuário Use CTRL + ALT + T, isso abre o terminal

gnome-session-quit --logout --force

Em seguida, faça o login como superusuário.

    
por krishna 13.12.2016 / 13:53

Tags