工作正在进行中

工作正在进行中

我有一台 15.10 64 位计算机,有多个用户帐户。
通常,我在 GRUB 中选择 Ubuntu,它会启动并显示登录屏幕,我选择一个帐户,输入密码并启动我的应用程序。

这是可以的并且应该保持这种状态,但我希望在 GRUB 菜单中有另一个选项:

如果我选择那个,它应该启动相同的 Ubuntu 安装,但会自动登录一个特定的用户帐户(受密码保护)并启动一个脚本,如果我正常登录,该脚本可能不会启动。
由于自动登录绕过了帐户密码,所以我也想用密码保护这个 GRUB 启动选项,这样我就必须在 GRUB 启动这个单一选项之前输入我的密码(或其他密码)。

是否可以进行这样的设置?我该怎么做?

答案1

工作正在进行中

这可以通过使用以下方法实现:

  1. 自定义 X 会话,启动基本窗口管理器并运行脚本
  2. LightDM 的自定义配置将自动登录你的用户并使用上述会话
  3. 为 LightDM 定制一个服务,它将使用上述配置
  4. 适当的内核参数来禁用正常的 LightDM 服务并启动自定义服务
  5. 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.serviceat的默认值的自定义副本/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 配置

有待确定。

相关内容