我有一台 15.10 64 位计算机,有多个用户帐户。
通常,我在 GRUB 中选择 Ubuntu,它会启动并显示登录屏幕,我选择一个帐户,输入密码并启动我的应用程序。
这是可以的并且应该保持这种状态,但我希望在 GRUB 菜单中有另一个选项:
如果我选择那个,它应该启动相同的 Ubuntu 安装,但会自动登录一个特定的用户帐户(受密码保护)并启动一个脚本,如果我正常登录,该脚本可能不会启动。
由于自动登录绕过了帐户密码,所以我也想用密码保护这个 GRUB 启动选项,这样我就必须在 GRUB 启动这个单一选项之前输入我的密码(或其他密码)。
是否可以进行这样的设置?我该怎么做?
答案1
工作正在进行中
这可以通过使用以下方法实现:
- 自定义 X 会话,启动基本窗口管理器并运行脚本
- LightDM 的自定义配置将自动登录你的用户并使用上述会话
- 为 LightDM 定制一个服务,它将使用上述配置
- 适当的内核参数来禁用正常的 LightDM 服务并启动自定义服务
- GRUB 配置为使用上述参数自动创建条目,并带有密码保护
在此示例中,我将展示如何使用 Google Chrome 设置信息亭模式。
剧本
#! /bin/sh
metacity &
while true
do
google-chrome --start-maximized
if zenity --question --text='Do you want to logout?' --title='Logout'
then
exit
fi
done
将其保持在,例如/usr/local/bin/chrome-kiosk.sh
,使其可执行。请注意,我使用metacity
一个简单的窗口管理器,它为我提供了可行的设置,而无需进一步配置。
X 会议
[Desktop Entry]
Name=Chrome
Comment=This session logs runs a Google Chrome kiosk
Exec=/usr/local/bin/chrome-kiosk.sh
Icon=google-chrome
Type=Application
X-LightDM-DesktopName=Chrome
将其保存在/usr/share/xsessions/chrome.desktop
。如果您使用不同的脚本,请至少Exec
相应地更改该行。
LightDM 配置
[Seat:*]
autologin-guest=false
autologin-user=username
autologin-user-timeout=0
autologin-session=chrome
将其另存为/etc/lightdm/autologin-lightdm.conf
。替换username
为您想要的用户名。
LightDM 服务
systemctl cat lightdm.service |
sed '/ExecStart/s/$/ --config=/etc/lightdm/autologin-lightdm.conf' |
sudo tee /etc/systemd/system/autologin-lightdm.service
lightdm.service
这将创建一个名为autologin-lightdm.service
at的默认值的自定义副本/etc/systemd/system
,并将ExecStart
行更改为:
ExecStart=/usr/sbin/lightdm --config /etc/lightdm/autologin-lightdm.conf
内核参数
要测试这一点,请在 GRUB 菜单中按e编辑 Ubuntu 条目。找到该linux
行并附加:
systemd.mask=display-manager.service systemd.wants=autologin-lightdm.service
(您可以省略.service
扩展名。)
按CtrlX。您应该已登录用户并拥有最大化的 Google Chrome 窗口。
GRUB 配置
有待确定。