本文的對目前我們的業務應用開發最值得關注的是隐藏使用者清單、設定手動登入、通過LightDM的機制讓使用者自動登入。
什麼是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是由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
display-setup-script
在X伺服器啟動後、使用者會話/greeter程式運作之前運作。如果需要在X伺服器中配置任何特殊内容,請設定此選項。它作為root運作。如果該指令傳回錯誤代碼,則X伺服器将停止。
display-stopped-script
display-stopped-script
在X伺服器退出後以root身份運作。
greeter-setup-script
greeter-setup-script
是在greeter開始前運作的。它作為root運作。如果該指令傳回一個錯誤代碼,引導程式将無法啟動(這将導緻LightDM停止)。
session-setup-script
session-setup-script
在使用者會話開始之前運作。如果這個指令傳回一個錯誤,會話将不會啟動(使用者傳回到一個greeter界面)。
session-cleanup-script
session-cleanup-script
在greeter或者使用者會話停止時運作,以root身份運作。
session-wrapper
session-wrapper
是為會話運作的指令。此指令作為使用者運作,需要執行參數中傳遞的指令以完成會話的運作。如果需要為使用者會話進行特殊設定,請使用此選項。注意,預設值是
lightdm-session
”`,是以如果需要覆寫該設定,應該連結到該設定。
greeter-wrapper
greeter-wrapper
是一個運作greeter的指令行。它相當于greeter的
session-wrapper
。
求助!我看不到我的桌面
在
graphics stack
(圖形堆棧)中很多事情都可能出錯。如果你看不到任何圖形或者損壞的圖檔,下列嘗試也許可以幫助你:
- 你可以按
得到文本終端ctrl+alt+f1
- 檢查LightDM的日志,位于
/var/log/lightdm
- 停止LightDM,運作
sudo systemctl stop lightdm
- 嘗試再次啟動LightDM:
sudo systemctl start lightdm
- 如果你有另外一個顯示管理器,你可以去啟動它,比如運作:
sudo systemctl start gdm
- 你可以設定預設的顯示管理器,運作
sudo dpkg-reconfigure lightdm
- 檢查系統的最新更新日期,特别是視訊驅動。
- 檔案記錄這個BUG。如果您不确定原因在哪裡(
/lightdm
/unity-greeter
/unity
/X
),那麼針對lightdm的檔案和錯誤将被篩選和重新配置設定(譯者注:意思是多試幾次,縮小問題範圍)。kernel
報告問題
存檔一個BUG可以從終端運作下面的指令行:
ubuntu-bug lightdm
所有合适、合法的資訊、日志都會添加到錯誤報告中。