我有一台 CentOS 7.4 机器,需要以信息亭模式启动。该机器上连接着一个触摸屏,启动时,Google Chrome 必须以全屏模式启动并加载某个网页。
到目前为止我所做的如下:
- 安装了谷歌浏览器 70.x(yum install google-chrome-stable)
- 创建了一个没有密码的“kiosk”用户
- 我将信息亭用户设置为自动登录
创建了以下文件:
/home/kiosk/.config/autostart/chrome-kiosk.desktop
其中包含(在几行中)以下行:Exec=/usr/bin/google-chrome-stable --incognito --kiosk --disable-web-security --user-data-dir=/home/kiosk/Documents/kiosk/tmp/ --test-type file:///home/kiosk/Documents/kiosk/offline.html
当计算机启动时,信息亭用户会自动登录,并且 chrome 会全屏启动并加载 offline.html 页面,正如我在上面的配置文件中指定的那样。
到目前为止一切顺利。但问题是,在第一次加载时(将信息亭用户设置为自动登录后),系统告诉我'an application wants to create a new keyring called "Default keyring"'
。然后提示用户输入密钥环密码。
我按照这里描述的步骤解决了这个问题:http://ask.xmodulo.com/disable-entering-password-unlock-default-keyring.html。实际上,我指示机器用户执行那里描述的步骤,因为我只能通过 ssh 访问机器,而无法访问图形界面。
但我需要做的是找到一种自动化的方法来摆脱密钥环问题。我找到了很多描述如何解决这个问题的链接,但它们都需要访问图形界面,但正如我所说,我只有 ssh 访问权限。
我有一个 shell 脚本,用于安装 chrome 和其他软件包、创建 kiosk 用户、添加 /home/kiosk/.config/autostart/chrome-kiosk.desktop 配置文件等。我还想通过命令行完全修复密钥环问题。我需要在几台机器上运行该脚本。我不想指导用户执行上面链接中描述的手动步骤,而是通过命令行解决所有问题。
有什么办法吗?安全性不是问题,因为这些机器将是一些本地(离线)机器。
答案1
我通过以下方式做到这一点:
部署文件以禁用kiosk 用户的
.desktop
gnome-keyring 服务(因此:gnome-keyring-pkcs11.desktop
,gnome-keyring-secrets.desktop
, ) ,内容如下:gnome-keyring-ssh.desktop
~/.config/autostart
[Desktop Entry] Hidden=true
设置 0700 权限,
/usr/bin/gnome-keyring-daemon
以便它只能由 root 执行,并且不会在信息亭用户登录时通过 PAM 加载。
我不确定第一步是否完全必要——也许如果服务没有被禁用,当它们尝试连接到密钥环守护进程时,您只会在日志中收到错误;我还没有尝试过。
我使用 Ansible 来部署它,但是 shell 脚本或类似脚本也可以正常工作。
答案2
您可以使用此 bash 脚本创建默认密钥环:
mkdir -p /home/kiosk/.local/share/keyrings/
echo -n "Default_keyring" > /home/kiosk/.local/share/keyrings/default
cat > /home/kiosk/.local/share/keyrings/Default_keyring.keyring << EOF
[keyring]
display-name=Default keyring
ctime=0
mtime=0
lock-on-idle=false
lock-after=false
EOF
chmod og= /home/kiosk/.local/share/keyrings/
chmod og= /home/kiosk/.local/share/keyrings/Default_keyring.keyring
chown -R kiosk:kiosk /home/kiosk/.local
这将创建密钥环文件和default
指向该文件的文件,并正确设置所有者和权限。密钥环的创建没有密码保护。打开 Chromium 时,它不再提示创建密钥环。