Outils pour utilisateurs

Outils du site


issue93:kiosque_ubuntu

Table des matières

1

If you work in a place open to the public, for example a library or a hospital, sometimes it could be useful to provide a computer to the visitors. Such a computer, even if equipped with a mouse and a keyboard, must be configured in a way that people should not be able to use all the system functions, but only a limited set of them. For instance, people could use the computer to access the Internet, or only an internal website providing information related to your company or your activity. And you must configure the system in order to prevent shell access, and inhibit the launch of all the other programs you don't wish to offer to the visitors. Such a computer is a kiosk. (http://en.wikipedia.org/wiki/Interactive_kiosk). You can eventually configure a PC attached to a large TV, without keyboard and mouse, in order to show information slides or videos. To achieve this last goal, you can take a look to Xibo instead, which is a digital signage content management system (http://xibo.org.uk/).

Si vous travaillez dans un lieu ouvert au public, par exemple une bibliothèque ou un hôpital, il pourrait parfois être utile de fournir un ordinateur pour les visiteurs. Un tel ordinateur, même équipé d'une souris et d'un clavier, doit être configuré de sorte que les gens ne soient pas en mesure d'utiliser toutes les fonctions du système, mais seulement un nombre limité d'entre elles. Par exemple, les gens pourraient utiliser l'ordinateur pour accéder à Internet, ou un seul site Web fournissant des informations internes relatives à votre entreprise ou votre activité. Et il faut absolument configurer le système afin d'empêcher l'accès au shell et le lancement de tous les autres programmes que vous ne souhaitez pas offrir aux visiteurs.

Un tel ordinateur est un kiosque (http://en.wikipedia.org/wiki/Interactive_kiosk).

Vous pouvez éventuellement configurer un PC relié à une téléviseur grand écran, sans clavier ni souris, afin de montrer des diapositives d'information ou des vidéos. Pour atteindre ce dernier objectif, vous pouvez jeter un œil à Xibo, qui est un système de gestion de contenu d'affichage numérique (http://xibo.org.uk/).

Installing Let's start with installing Ubuntu server 14.04 LTS. Why Ubuntu server? Well, because, in your kiosk, you don't need a lot of software. Also note the use of the –no-install-recommends parameter used with apt-get. Please keep in mind that after the configuration of the kiosk environment, it is supposed that you will access the computer from SSH, and not from the terminal. So, let's install Ubuntu, enabling automatic security updates and installing Openssh server. After the first reboot, log in as the (administrator) user you have created during the installation and then upgrade the system: sudo apt update sudo apt upgrade And install these packages: sudo apt install –no-install-recommends xorg openbox firefox xscreensaver plymouth-theme-sabily cups Install CUPS if you plan to allow printing to your visitors. Create a user, the kiosk user. sudo useradd -m kiosk sudo mkdir /opt/kiosk

Installation

Commençons par l'installation du serveur Ubuntu 14.04 LTS. Pourquoi Ubuntu server ? Eh bien, parce que, dans votre kiosque, vous n'avez pas besoin d'un grand nombre de logiciels. Notez également l'utilisation de l'option –no-install-recommends dans la commande apt-get.

Veuillez garder à l'esprit que, après la configuration de l'environnement en kiosque, on suppose que vous aurez accès à l'ordinateur par SSH, et non à partir du terminal.

Nous allons donc installer Ubuntu, permettant des mises à jour de sécurité automatiques et l'installation d'un service OpenSSH.

Après le premier redémarrage, connectez-vous avec l'utilisateur (administrateur) que vous avez créé lors de l'installation et ensuite mettez le système à niveau :

sudo apt update

sudo apt upgrade

Et installez ces paquets :

sudo apt install –no-install-recommends xorg openbox firefox xscreensaver plymouth-theme-sabily cups

Installez CUPS si vous voulez permettre à vos visiteurs d'imprimer.

Créez un utilisateur, l'utilisateur kiosk.

sudo useradd -m kiosk

sudo mkdir /opt/kiosk

2

Set up the environment In this configuration, you will not launch a desktop manager, but you will invoke X11 and start only the Firefox executable. The script shown above will be invoked by upstart when the system boots up. It essentially replaces the kiosk user home directory before starting Firefox. And the Firefox executable is placed inside a loop, in order to relaunch it whenever it is closed. sudo chmod +x /opt/kiosk/kiosk.sh Now you need to create an upstart script: sudo vi /etc/init/kiosk.conf start on (filesystem and stopped udevtrigger) stop on runlevel [06] console output emits starting-x respawn exec sudo -u kiosk startx /etc/X11/Xsession /opt/kiosk/kiosk.sh Since X needs root privileges to start, you need to issue this command and select “Anybody”. sudo dpkg-reconfigure x11-common

Mise en place de l'environnement

Dans cette configuration, vous n'allez pas lancer de gestionnaire de bureau, mais invoquer X11 et lancer seulement l'exécutable Firefox.

Le script ci-dessus sera appelé par upstart au démarrage du système. Essentiellement, il remplace le répertoire personnel de l'utilisateur kiosque avant de lancer Firefox. Et l'exécutable Firefox est placé à l'intérieur d'une boucle, afin de se relancer chaque fois qu'il est fermé.

sudo chmod +x /opt/kiosk/kiosk.sh

Maintenant vous devez créer un script upstart :

sudo vi /etc/init/kiosk.conf

start on (filesystem and stopped udevtrigger)

stop on runlevel [06]

console output emits starting-x

respawn

exec sudo -u kiosk startx /etc/X11/Xsession /opt/kiosk/kiosk.sh

Comme X a besoin des privilèges root pour démarrer, vous devez taper cette commande et sélectionner « Anybody » (quiconque).

sudo dpkg-reconfigure x11-common

At this point we are nearly finished. You need to reboot the machine. sudo reboot And Firefox should start automatically. Make the desired changes now, like adding CA certificates, security devices, adding some kind of extensions, etc. Finally you need to install the srkiosk extension https://addons.mozilla.org/en-US/firefox/addon/srkiosk/ Please carefully read the documents (http://blogoless.blogspot.it/2012/07/firefox-srkiosk-add-on-full-screen.html), in order to understand this handcrafted item and better suit it to your needs, like changing the home page, or showing the address bar. Close Firefox. At this point Firefox will restart in a locked-down kiosk mode. To continue the configuration, you have to remotely log in via SSH.

À ce stade, nous avons presque fini. Vous devez redémarrer la machine.

sudo reboot

Et Firefox devrait démarrer automatiquement.

Apportez les modifications souhaitées maintenant, comme l'ajout de certificats de CA, les dispositifs de sécurité, l'ajout de quelques types d'extensions, etc.

Enfin, vous devez installer l'extension srkiosk https://addons.mozilla.org/en-US/firefox/addon/srkiosk/

Merci de lire les documents attentivement (http://blogoless.blogspot.it/2012/07/firefox-srkiosk-add-on-full-screen.html), afin de comprendre cet objet artisanal et de mieux l'adapter à vos besoins, comme changer la page d'accueil, ou afficher la barre d'adresses.

Fermez Firefox. À ce stade Firefox redémarrera dans un mode kiosque verrouillé.

Pour continuer la configuration, vous devez vous connecter à distance via SSH.

3

Last steps. The use of the screensaver can be useful – not only to have a nice effect on the screen after an amount of time. It is useful to “reset” the session after a period of inactivity. For instance, it is nice to go to the home page, instead of leaving the kiosk in the last visited page by the last user. So you need to configure the screensaver only if you need to reset your kiosk periodically. Place the xscreensaver configuration file in the kiosk user home directory. The timeout option is the one you need to change in order to suit your needs (in this example the kiosk will be reloaded every quarter of an hour).

Dernières étapes.

L'utilisation de l'économiseur d'écran peut être utile et pas seulement pour avoir de belles images sur l'écran après un laps de temps. Il est utile de réinitialiser la session après une période d'inactivité. Par exemple, il est agréable de retourner à la page d'accueil, au lieu de laisser le kiosque sur la dernière page consultée par le dernier utilisateur. Ainsi, vous ne devez configurer l'économiseur d'écran que si vous devez réinitialiser votre kiosque périodiquement.

Placez le fichier de configuration de xscreensaver dans le répertoire personnel de l'utilisateur kiosk. L'option de délai d'attente est celle que vous devez changer pour répondre à vos besoins (dans cet exemple le kiosque sera rechargé tous les quarts d'heure)

sudo vi /home/kiosk/.xscreensaver timeout: 0:15:00 lock: False verbose: False splash: False captureStderr: True dpmsEnabled: False dpmsQuickOff: False mode: one selected: 0 programs: resetkiosk.sh -root \n\ Next, you need the script that xscreensaver will invoke after the period of inactivity (Listing 4). As said, xscreensaver, instead of launching a real screen saver, will actually run this script. sudo vi /usr/lib/xscreensaver/resetkiosk.sh #!/bin/bash PID=`ps -u $UID -f |grep firefox |grep -v grep | awk '{ print $3 }'` kill $PID

sudo vi /home/kiosk/.xscreensaver

timeout: 0:15:00 lock: False verbose: False splash: False captureStderr: True dpmsEnabled: False dpmsQuickOff: False mode: one selected: 0 programs: resetkiosk.sh -root \n\

Ensuite, vous devez lancer le script qui sera appelé par xscreensaver après la période d'inactivité (Listing 4). Comme indiqué, au lieu de lancer un véritable économiseur d'écran, c'est en fait xscreensaver qui fera exécuter ce script.

sudo vi /usr/lib/xscreensaver/resetkiosk.sh

#!/bin/bash

PID=`ps -u $UID -f |grep firefox |grep -v grep | awk '{ print $3 }'`

kill $PID

4

Snapshot Time Finally, you need to take a snapshot of the kiosk user home directory. Such snapshot will overwrite the home directory every time the machine reboots, or when the kiosk session is reset, or when Firefox is closed. So, remember that every time you make changes to the kiosk user home directory, you will need to make a tar of that directory, and place it in the appropriate place: take a look at the kiosk.sh script (previous page, top right). rm -rf /home/kiosk/.cache/ tar cpvf /opt/kiosk/kiosk_home.tar /home/kiosk/

L'heure de la sauvegarde

Enfin, vous devez prendre une photo (snapshot) du répertoire personnel de l'utilisateur kiosk. Un tel cliché va écraser le répertoire d'accueil à chaque redémarrage ou lorsque la session de kiosk est remise à zéro, ou lorsque Firefox est fermé.

Alors, n'oubliez pas que chaque fois que vous effectuez des modifications dans le répertoire personnel de l'utilisateur kiosk, vous devez faire un tar de ce répertoire et le placer à l'endroit approprié : jetez un œil au script kiosk.sh (page précédente, en haut à droite).

rm -rf /home/kiosk/.cache/

tar cpvf /opt/kiosk/kiosk_home.tar /home/kiosk/

Configuring GRUB and disabling ttys Another useful task to accomplish is related to some hardening of the system. For instance, you can prevent naughty users from booting the system into single-user mode, or from switching between virtual consoles (the terminals you can use by pressing functions keys like CTRL+ALT+F1). Let's start with GRUB. First of all, it needs to be as quiet (less verbose) as possible, just for aesthetic purposes (Listing 5). sudo vi /etc/default/grub … GRUB_TIMEOUT=0 GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash vga=current loglevel=0” … Then, you can set a password in order to disallow users to boot Linux into single-user mode. Use the command grub-mkpasswd-pbkdf2 to create an encrypted password, then edit some files. Put the following lines at the end of /etc/grub.d/00_header cat « EOF set superusers=“root” password_pbkdf2 root <the_sting_obtained_from_the_grub-mkpasswd-pbkdf2_command> EOF

Configuration de GRUB et désactivation des ttys

Une autre tâche utile à accomplir est liée à un certain renforcement du système. Par exemple, vous pouvez empêcher des utilisateurs malins de démarrer le système en mode mono-utilisateur, ou de naviguer entre les consoles virtuelles (les terminaux que vous pouvez utiliser en appuyant sur les touches fonctions comme CTRL+ALT+F1).

Commençons par GRUB. Tout d'abord, il doit être aussi silencieux (moins verbeux) que possible, juste à des fins esthétiques (listing 5).

sudo vi /etc/default/grub

… GRUB_TIMEOUT=0 GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash vga=current loglevel=0” …

Ensuite, vous pouvez définir un mot de passe afin d'interdire aux utilisateurs de démarrer Linux en mode mono-utilisateur. Utilisez la commande grub-mkpasswd-pbkdf2 pour créer un mot de passe crypté, puis modifier certains fichiers.

Mettez les lignes suivantes à la fin de /etc/grub.d/00_header

cat « EOF

set superusers=“root”

password_pbkdf2 root <la_chaine_obtenue_de_la_commande_grub-mkpasswd-pbkdf2>

EOF

5

At this point, a user and a password will be requested for each GRUB menu entry, even for booting Linux in the normal way; that is what we don't want. So add the –unrestricted parameter (shown below in black) in each menuentry line of the configuration files. For instance in /etc/grub.d/10_linux … echo “menuentry '$(echo “$title” | grub_quote)' –unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {” | sed “s /^/$submenu_indentation/” else echo “menuentry '$(echo “$os” | grub_quote)' –unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {” | sed “s/^/$submenu _indentation/” … In this way, a user and a password will be asked only if the user tries to edit the GRUB menu entries, using the 'e' key. Now you must issue the sudo update-grub command to make the changes effective. At the end, you can disable virtual terminal consoles by deleting the tty files under the /etc/init directory: sudo rm /etc/init/tty*

À ce stade, un utilisateur et un mot de passe seront demandés pour chaque entrée du menu GRUB, même pour le démarrage de Linux de façon normale ; c'est ce que nous ne voulons pas. Ajoutez donc le paramètre -unrestricted (montré ci-dessous en noir) à chaque ligne de menu dans les fichiers de configuration. Par exemple, dans /etc/grub.d/10_linux.

 echo "menuentry '$(echo "$title" | grub_quote)' 

–unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {“ | sed “s /^/$submenu_indentation/” else

 echo "menuentry '$(echo "$os" | grub_quote)' 

–unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {” | sed “s/^/$submenu _indentation/” …

De cette façon, un utilisateur et un mot de passe seront demandés seulement si l'utilisateur tente d'éditer les entrées de menu de GRUB, en utilisant la touche « e ».

Maintenant, vous devez lancer la commande sudo update-grub pour faire les changements.

À la fin, vous pouvez désactiver les consoles de terminal virtuel en supprimant les fichiers tty dans le répertoire /etc/init :

sudo rm /etc/init/tty*

6

Further works and conclusion In order to harden the machine, you should set up a password in the BIOS, and prevent boot from CD/DVD or USB ports. And about USB, you should prevent the use of such ports at least by making the PC inaccessible from the users. Other things to do? Configure a custom theme for the boot screen. Look at ways to disable possible keyboard shortcuts. Instead of running Firefox, you might wish to run a video player or a pictures slide-show: you can give it a try by putting some other command in the while loop. This paper is based on a post found on https://thepcspy.com/read/building-a-kiosk-computer-ubuntu-1404-chrome/ Maybe a kiosk solution could be better achieved, but as far as I know, I have not found any better alternatives. This solution works for my needs: maybe it could be useful to you or it could be a starting point for a better implementation.

Autres travaux et conclusion

Pour renforcer la machine, vous devez mettre en place un mot de passe dans le BIOS et empêcher le démarrage à partir des ports de CD/DVD ou USB. Concernant l'USB, vous devez éviter l'utilisation de ces ports au moins en rendant le PC inaccessible par les utilisateurs.

D'autres choses à faire ? Configurer un thème personnalisé pour l'écran de démarrage et regarder le moyen de désactiver les raccourcis clavier éventuels.

Au lieu de lancer Firefox, vous voudrez peut-être lancer un lecteur vidéo ou un diaporama : vous pouvez faire un essai en mettant une autre commande dans la boucle while.

Cet article est basé sur un message trouvé sur https://thepcspy.com/read/building-a-kiosk-computer-ubuntu-1404-chrome/.

Peut-être qu'une solution de kiosque pourrait être mieux réalisée, mais, pour autant que je sache, je n'ai pas trouvé de meilleures alternatives. Cette solution fonctionne pour mes besoins : il pourrait éventuellement vous être utile ou ce pourrait être le point de départ pour une meilleure mise en œuvre.

issue93/kiosque_ubuntu.txt · Dernière modification : 2015/03/19 10:44 de auntiee