소개하다

소개하다

여러 Linux 버전과 관련된 이 질문을 여러 번 보았으므로 자세히 설명하겠습니다.
사용자가 데스크톱 세션에 로그인하기 전후에 스크립트/명령/프로그램을 실행하는 방법은 무엇입니까?

답변1

소개하다

사용자가 그래픽 환경에 로그인하기 전에 그래픽 환경에서 프로그램을 실행하는 것은 디스플레이 관리자에 따라 다릅니다. 디스플레이 관리자는 로그인 인터페이스를 제공하고 로그인 후 그래픽 환경을 설정하는 일을 담당합니다. 가장 중요한 것들은 다음과 같습니다:
  • GDM그놈 디스플레이 관리자입니다.
  • 광DM모든 툴킷으로 작성된 다양한 프런트 엔드와 함께 사용할 수 있는 크로스 데스크탑 디스플레이 관리자입니다.
  • LXDMLXDE 디스플레이 관리자이지만 LXDE 데스크탑 환경과 독립적입니다.
  • SDDM빠르고 간단하며 아름답게 디자인된 X11 및 Wayland용 최신 디스플레이 관리자입니다.

사용자가 로그인하기 전에 디스플레이 관리자가 팝업될 때 명령 실행을 설정하는 방법과 누군가가 최종적으로 로그인할 때 특정 작업을 수행하는 방법을 검토하겠습니다.

어떤 것을 실행하고 있는지 모르는 경우 다음 질문을 참조할 수 있습니다.
내 디스플레이 관리자가 무엇인지 알려주는 간단한 Linux 명령이 있습니까?

중요한
시작하기 전에 실행 명령이 언급되지 않는 한 파일을 편집합니다 root. 수행 중인 작업을 알지 못하는 경우에는 이 파일의 기존 콘텐츠를 삭제하지 말고 파일에 무엇을 넣을지 주의하세요. 이로 인해 로그인이 차단될 수 있습니다.

GDM

GDM을 사용할 때는 주의하세요. 모든 스크립트가 "루트"로 실행되고, 0이 아닌 오류 코드로 인해 로그인 기능이 제한될 수 있으며, GDM은 스크립트가 완료될 때까지 기다리므로 명령이 실행되는 동안 응답하지 않게 됩니다. 전체 지침을 보려면 [문서를 읽어보세요][5].

로그인하기 전에

사용자가 로그인하기 전에 명령을 실행해야 하는 경우 `/etc/gdm3/Init/Default` 파일을 편집할 수 있습니다. 이 파일은 디스플레이 관리자가 사용자에게 표시되기 전에 실행될 쉘 스크립트입니다.

로그인 후

사용자 로그인 후 세션 초기화 전에 작업을 실행해야 하는 경우 `/etc/gdm3/PostLogin/Default` 파일을 편집합니다. 세션 초기화 세션 후 명령(env, 그래픽 환경)을 실행하려면 로그인... )파일 편집: `/etc/gdm3/PreSession/Default`

광DM

/etc/lightdm.conf.d/*.conf보다는 lightdm.conf에 대해 논의하겠습니다. 원하는 대로 할 수 있습니다. 사용 가능한 옵션을 이해하는 것이 중요합니다. lightDM을 사용할 때 주의하십시오. 여러 다른 스크립트가 시작되었을 수 있으므로 구성 파일을 편집하기 전에 이를 정확하게 읽어야 합니다. 또한 이러한 스크립트를 배치하는 순서는 세션이 로드되는 방식에 영향을 미칠 수 있습니다.

LightDM은 다른 것과 약간 다르게 작동합니다. 기본 구성 파일에 옵션을 넣어 실행될 스크립트를 나타냅니다.

기본 lightDM conf 파일을 편집합니다 /etc/lightdm/lightdm.conf.

첫 번째 줄에 다음을 추가해야 합니다 [Seat:*].여기에 표시된 대로:

최신 버전의 lightdm(15.10 이상)은 더 이상 사용되지 않는 [SeatDefaults]를 [Seat:*]로 대체했습니다.

로그인하기 전에

`greeter-setup-script=/my/path/to/script` 줄을 추가하세요. 이 스크립트는 lightDM이 로그인 인터페이스를 표시할 때 실행됩니다.

로그인 후

사용자가 성공적으로 로그인한 후 스크립트를 `root`로 실행하는 `session-setup-script=/script/to/start/script` 줄을 추가합니다.

LXDM

로그인하기 전에

누군가 로그인하기 전에 명령을 실행하려면 쉘 스크립트 `/etc/lxdm/LoginReady`를 편집하면 됩니다.

로그인 후

누군가 루트로 로그인한 후 명령을 실행하려면 쉘 스크립트 `/etc/lxdm/PreLogin`을 편집하면 됩니다. 로그인한 사용자로 명령을 실행하려면 스크립트를 편집하면 됩니다: ` /etc/lxdm/login` 이후`

SDDM

로그인하기 전에

에 있는 스크립트를 수정합니다 /usr/share/sddm/scripts/Xsetup. 이 스크립트는 로그인 화면이 나타나기 전에 실행되며 주로 X11에서 모니터 디스플레이를 조정하는 데 사용됩니다.Wayland에 해당하는 것이 무엇인지 잘 모르겠습니다.

로그인 후

sddm/usr/share/sddm/scripts/Xsession이제 사용자의 정보를 얻을 수 있는 스크립트를 얻게 됩니다.파일 클릭기본 쉘에 따라 다릅니다.

bash 쉘의 경우 (및 기타)를 얻을 것이고 ~/.bash_profile, zsh의 경우 (및 기타)를 얻을 것입니다 ${ZDOTDIR:-$HOME}/.zprofile. 이 기회에 로그인 후 필요한 다른 명령을 실행하도록 이러한 파일을 수정할 수 있습니다.

답변2

모든 사용자가 혜택을 누릴 수 있도록 로그인하기 전에 마우스를 구성해야 합니다. 이 글을 읽고 해결책을 찾았습니다질문. GDM을 통해 구성하는 것을 고려해 봐야 할 것 같은데, 세션 시작 시 설정하려면 XDG 자동 시작을 통해 설정해야 합니다. /etc/xdg/autostart에는 모든 xsessions 로그인(내 우분투 시스템)에서 실행되는 여러 개의 .desktop 파일이 있습니다.

답변3

/usr/share/gdm/greeter/autostart/GDM3를 사용하면 로그인하기 전에 실행할 스크립트(sudo 권한 필요)를 입력해야 합니다 . 예를 들어, 로그인하기 전에 키보드 백라이트를 켜려면(어두운 방에서도 비밀번호를 입력하는 키를 볼 수 있도록):

sudo nano /usr/share/gdm/greeter/autostart/led.desktop

파일에 씁니다.

[Desktop Entry]
Type=Application
Name=ledstart
Exec=xset led on
NoDisplay=true
X-GNOME-AutoRestart=true

로 시작하는 줄은 Exec=명령을 입력하는 곳입니다.

불행하게도 Gnome은 로그인 후 세션을 재설정하는 것 같아서 이 명령이 지속되지 않습니다. 그런 다음 xset led on각 사용자 로그인에 대해 새 명령을 설정해야 합니다. 해결책을 찾으면 답변을 업데이트하겠습니다.

관련 정보