本文的对当前我们的业务应用开发最值得关注的是隐藏用户列表、设置手动登录、通过LightDM的机制让用户自动登录。
LightDM是运行在Debian系列操作系统上的桌面显示管理器,它的全名是Light Display Manager,表面含义是轻量级桌面显示管理器。它是FreeDesktop工程的一部分。FreeDesktop是一个致力于Linux和其他类Unix上的X窗口系统的桌面环境之间的互操作性和基础技术共享的项目,由Red Hat公司的Havoc Pennington于2000年3月创立。官方网站是:https://www.freedesktop.org。最初的名称叫XDesktopGroup(X桌面工作组),其缩写"XDG"在现在的桌面开发的工作中仍然经常被用到。Ubuntu 16.04 LTS版本使用LightDM作为默认的窗口管理器。
LightDM配置由下列位置的文件提供:
/usr/share/lightdm/lightdm.conf.d/*.conf
/etc/lightdm/lightdm.conf.d/*.conf
/etc/lightdm/lightdm.conf
最新版本的LightDM把过时的配置节SeatDefaults
替换为Seat:*
。
系统提供的配置保存在/usr/share/lightdm/lightdm.conf.d/*.conf
,普通用户不可编辑。系统管理员可以使用配置文件/etc/lightdm/lightdm.conf.d/*.conf
和/etc/lightdm/lightdm.conf
覆盖系统配置。举例来说,如果你想覆盖系统配置的默认会话配置(/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
提供),那么你可以新建一个文件/etc/lightdm/lightdm.conf.d/50-myconfig.conf
,写入如下代码:
[Seat:*]
user-session=mysession
有一个示例配置文件展示了LightDM可能识别的所有的配置,它压缩保存在:/usr/share/doc/lightdm/lightdm.conf.gz
。
这里还有一个额外的配置文件:/etc/lightdm/users.conf
。但是如果AccountsService
在你的系统上运行,那么这个配置文件将被忽略。如果你不确定配置文件是否已被忽略,可以运行:ps -aef | grep -i AccountsService
。
默认配置下,Ubuntu系统的Unity Greeter(或者一些其它系统的Greeter)展示所有可能的用户帐号列表。如果你想禁用这个功能(可能你有太多的用户或者基于安全考虑),使用以下配置。
[Seat:*]
greeter-hide-users=true
你也许需要显式启用手动登录以配合这个特性。
默认配置下,Ubuntu系统的Unity Greeter(或者一些其它系统的Greeter)不允许用户手动输入用户名登录到系统。你可以用以下配置启用它:
[Seat:*]
greeter-show-manual-login=true
临时帐户名是Guest。默认情况下LightDM允许你用Guest以临时用户的身份登录到会话中,从而进入系统,禁用方法是:
[Seat:*]
allow-guest=false
要设置系统自动启动并登入的用户,设置autologin-user
。如果设置了autologin-user-timeout
,那么greeter将在自动登录发生之前显示这么多秒。在此期间如果存在用户操作超时将会取消。配置如下:
[Seat:*]
autologin-user=username
autologin-user-timeout=delay
如果你想设置自动登录到临时帐户会话可设置:
autologin-guest=true
默认的会话是由session packages(这是一个LightDM专有名词,没想到合适的翻译)提供的配置/usr/share/lightdm/lightdm.conf.d/
设置的。如果你需要覆盖这些,你可以设置:
[Seat:*]
user-session=name
配置中的name
指的是位于/usr/share/xsessions/*.desktop
的以.dekstop
扩展名结尾的文件的名称。
默认的greeter是由greeter packages(这是一个LightDM专有名词,没想到合适的翻译)提供的位于/usr/share/lightdm/lightdm.conf.d/
的配置设置的。如果你需要覆盖这些,你可以设置:
[Seat:*]
greeter-session=name
配置中的name
指的是位于/usr/share/xgreeters/*.desktop
的以.dekstop
扩展名结尾的文件的名称。
LightDM不配置Greeter外观。合适的greeter做这个配置。Unity Greeter 默认展示当前选中的用户的背景图片。设置默认的背景图片,停止编辑/usr/share/glib-2.0/schemas/10_unity_greeter_background.gschema
开关,使用配置:
[com.canonical.unity-greeter]
draw-user-backgrounds=false
background='/foo/wallpaper.png'
并且运行sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
以应用这些设置。
对于LightDM GTK+ greeter,编辑/etc/lightdm/lightdm-gtk-greeter.conf
,修改background=/usr/share/lubuntu/wallpapers/lubuntu-default-wallpaper.png
。background
的值改为自己想要的图片。
Hook一般译作钩子。
如查你需要在X服务器和用户的会话在启动、停止时进行一些特殊的行为,你可以参考以下配置设置一些命令:
[Seat:*]
display-setup-script=command
display-stopped-script=command
greeter-setup-script=command
session-setup-script=command
session-cleanup-script=command
session-wrapper=command
greeter-wrapper=command
其中greeter-wrapper
和display-stopped-script
配置不被Ubuntu 12.04 LTS版本支持。
display-setup-script
在X服务器启动后、用户会话/greeter程序运行之前运行。如果需要在X服务器中配置任何特殊内容,请设置此选项。它作为root运行。如果该命令返回错误代码,则X服务器将停止。
display-stopped-script
在X服务器退出后以root身份运行。
greeter-setup-script
是在greeter开始前运行的。它作为root运行。如果该命令返回一个错误代码,引导程序将无法启动(这将导致LightDM停止)。
session-setup-script
在用户会话开始之前运行。如果这个命令返回一个错误,会话将不会启动(用户返回到一个greeter界面)。
session-cleanup-script
在greeter或者用户会话停止时运行,以root身份运行。
session-wrapper
是为会话运行的命令。此命令作为用户运行,需要执行参数中传递的命令以完成会话的运行。如果需要为用户会话进行特殊设置,请使用此选项。注意,默认值是lightdm-session
”`,因此如果需要覆盖该设置,应该链接到该设置。
greeter-wrapper
是一个运行greeter的命令行。它相当于greeter的session-wrapper
。
在graphics stack
(图形堆栈)中很多事情都可能出错。如果你看不到任何图形或者损坏的图片,下列尝试也许可以帮助你:
ctrl+alt+f1
得到文本终端/var/log/lightdm
sudo systemctl stop lightdm
sudo systemctl start lightdm
sudo systemctl start gdm
sudo dpkg-reconfigure lightdm
lightdm
/unity-greeter
/unity
/X
/kernel
),那么针对lightdm的文件和错误将被筛选和重新分配(译者注:意思是多试几次,缩小问题范围)。存档一个BUG可以从终端运行下面的命令行:ubuntu-bug lightdm
所有合适、合法的信息、日志都会添加到错误报告中。