Gdm

如何在Linux上使用者登錄之前執行命令

  • December 1, 2021

這是我在幾個 Linux 風格中多次看到的問題,所以讓我們盡量詳盡。

在使用者登錄其桌面會話之前和之後執行腳本/命令/程序的方法是什麼?

介紹

在使用者登錄圖形環境之前在圖形環境中執行程序取決於您的顯示管理器。顯示管理器負責為您提供登錄界面並在登錄後設置您的圖形環境。最重要的是以下幾點:

  • GDM是 GNOME 顯示管理器。
  • LightDM是一個跨桌面的顯示管理器,可以使用任何工具包編寫的各種前端。
  • LXDM是 LXDE 顯示管理器,但獨立於 LXDE 桌面環境。
  • SDDM是 X11 和 Wayland 的現代顯示管理器,旨在快速、簡單和美觀。

我們將回顧如何在任何使用者登錄之前彈出顯示管理器時設置命令的執行,以及當有人最終登錄時如何執行某些操作。

如果你不知道你執行的是哪一個,你可以參考這個問題:

有沒有簡單的 linux 命令可以告訴我我的顯示管理器是什麼?

重要

在開始之前,您將編輯文件,除非提到執行命令為root. 不要刪除這些文件中的現有內容,除非您知道自己在做什麼並且小心您放入這些文件中的內容。這可能會導致您無法登錄。

GDM

小心 GDM,它將以“root”身份執行所有腳本,與 0 不同的錯誤程式碼可能會限制您的登錄能力,只要您的命令執行,GDM 就會等待您的腳本完成使其無響應。為了完整的解釋$$ read the documentation $$$$ 5 $$. 登錄前

如果您需要在使用者登錄之前執行命令,您可以編輯文件:/etc/gdm3/Init/Default。該文件是一個 shell 腳本,將在顯示管理器顯示給使用者之前執行。 登錄後

如果您需要在使用者登錄後但在其會話初始化之前執行操作,請編輯文件:/etc/gdm3/PostLogin/Default 如果您想在會話初始化會話之後執行命令(env,圖形環境, login…) 編輯文件:/etc/gdm3/PreSession/Default


光DM

我將討論 lightdm.conf 而不是 /etc/lightdm.conf.d/*.conf。你可以做你想做的事,重要的是知道你可以使用的選項。小心使用 lightDM,您可能已經啟動了其他幾個腳本,您應該在編輯之前準確閱讀您的配置文件。您放置這些腳本的順序也可能會影響會話載入的方式。 LightDM 的工作方式與您將在主配置文件中放置選項以指示將要執行的腳本的其他方式有所不同。

編輯主 lightDM conf 文件/etc/lightdm/lightdm.conf

您應該添加第一行[Seat:*]如下所示

更高版本的 lightdm(15.10 及更高版本)已取代過時的

$$ SeatDefaults $$和$$ Seat:* $$

登錄前

添加一行greeter-setup-script=/my/path/to/script 這個腳本會在lightDM顯示登錄界面時執行。

登錄後

添加一行 session-setup-script=/script/to/start/script 這將在使用者成功登錄後以 root 身份執行腳本。


LXDM

登錄前

如果你想在任何人登錄之前執行命令,你可以編輯 shell 腳本:/etc/lxdm/LoginReady 登錄後

如果你想在有人登錄後以 root 身份執行命令,你可以編輯 shell 腳本:/etc/lxdm/PreLogin 如果你想以登錄使用者身份執行命令,你可以編輯腳本:/等/lxdm/PostLogin


SDDM

登錄前

修改位於 的腳本/usr/share/sddm/scripts/Xsetup。此腳本在登錄螢幕出現之前執行,主要用於調整 X11 中的顯示器顯示。不確定 Wayland 的等價物是什麼

登錄後

sddm現在將獲取位於 的腳本/usr/share/sddm/scripts/Xsession,這反過來將根據使用者的預設 shell獲取使用者的點文件。

對於 bash shell,它將 source ~/.bash_profile(等等),對於 zsh,它將 source ${ZDOTDIR:-$HOME}/.zprofile(等等)。您可以藉此機會修改這些文件,以便在登錄後也執行您需要的任何其他命令。

引用自:https://unix.stackexchange.com/questions/450835