16.04 上带有 Chrome 的自助服务终端

aka*_*vel 5 kiosk 16.04

如何将 16.04 设置为基于 Chrome 的“信息亭”?IE:

  • chrome --kiosk 作为唯一对用户可见的应用程序,
  • 用户只能点击 Chrome 显示的内容(没有设置、Unity 或其他应用程序或其他 URL),
  • 理想情况下,用户拥有最大限制的权限,
  • 用户已启用“自动登录”(无需密码),
  • 管理员/超级用户可以使用一些神奇的组合键或其他东西(例如 Ctrl-Alt-F1 + 登录名 + 密码)登录并切换到“完全友好的桌面”。

基本的谷歌搜索和其他 AskUbuntu 答案只引导我找到一些旧指南,~14.04更旧,由于发行版之间的许多差异(systemd 与旧 init,GUI 也有很大变化,尤其是系统),我无法在 16.04 中应用这些指南设置)。

编辑:理想情况下,我更喜欢基于控制台/脚本的指南,以便我可以在多台计算机上实现自动化。但是基于 GUI 的指南仍然比没有好。

aka*_*vel 2

下面是我最终设法构建的内容,将我能找到的各种碎片和提示以及我自己的一些“原创研究”缝合在一起。我认为它在某些地方非常粗糙和丑陋,但我需要一些解决方案,而且它现在似乎有效。手指交叉...

警告:   请注意,您还应该考虑强化 Linux 的安全性
而所提供的脚本绝对没有涵盖这一点!

#!/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."
Run Code Online (Sandbox Code Playgroud)

要返回“普通用户”,请按Alt-F4关闭 Chrome;LightDM 将显示您可以在其中登录“普通”admin/root/...(超级)用户。要返回“kiosk”,请运行:

sudo killall lightdm
Run Code Online (Sandbox Code Playgroud)

TODO:还没有禁用屏幕保护程序(或者已经禁用了?)。
另外,没有保修,它可能会射断你的腿,吃掉你的作业等等。


kri*_*hna 0

1) Kiosk 中的 Chrome定义一个 cronjob 以将 Chrome 作为 kiosk 模式启动,并在每次系统启动时启动。例如 //文件:chrome

外壳=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot [用户] google-chrome --kiosk --incognito [URL]

将此文件复制到/etc/cron.d/

或者,您可以使用命令创建启动器(.desktop 文件)

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

并将其复制到

/home/[用户]/.config/autostart

这将为该用户启用 Chrome 浏览器的自动启动。

2)自动登录 打开此文件:

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

如果不存在则创建。

然后将这些行添加到该文件中。

[座位:*]
问候语会话=lightdm-gtk-greeter
自动登录用户=[用户]  

保存该文件并重新启动。这使用户能够自动登录。当然,该用户的权限有限。

3)超级用户登录使用 CTRL+ALT+T,这将打开终端

gnome-session-quit --logout --force

然后以超级用户身份登录。


归档时间:

查看次数:

18447 次

最近记录:

5 年,7 月 前