Como executar o comando antes do login do usuário no linux
772
Essa é uma pergunta que já vi várias vezes para vários tipos de Linux, então vamos tentar ser exaustivos.
Qual é o método para executar script/comando/programa antes e depois do login do usuário em sua sessão da área de trabalho?
Para executar um programa em ambiente gráfico antes de um usuário efetuar login em um ambiente gráfico, depende do seu gerenciador de exibição. Um gerenciador de exibição é responsável por fornecer uma interface de login e configurar seu ambiente gráfico uma vez conectado. os mais importantes são os seguintes:
LightDM é um gerenciador de exibição cross-desktop, pode usar vários front-ends escritos em qualquer kit de ferramentas.
LXDM é o gerenciador de exibição LXDE, mas independente do ambiente de desktop LXDE.
SDDM é um gerenciador de exibição moderno para X11 e Wayland com o objetivo de ser rápido, simples e bonito.
Vamos revisar como configurar a execução do comando quando o gerenciador de exibição aparecer antes de qualquer usuário logado e como executar algo quando alguém finalmente estiver logado.
IMPORTANTE
Antes de começar, você vai editar o arquivo que, exceto se mencionar executar o comando como root. Não remova as coisas existentes nesses arquivos, exceto se você souber o que está fazendo e tenha cuidado com o que coloca nesses arquivos. Isso pode remover sua capacidade de fazer login.
GDM
Tenha cuidado com o GDM, ele executará todos os scripts como `root`, um código de erro diferente de 0 pode limitar sua capacidade de login e o GDM aguardará seu script terminar, tornando-o irresponsivo enquanto seu comando for executado. Para uma explicação completa [leia a documentação][5].
Antes de entrar
Se você precisar executar comandos antes de um usuário logar, você pode editar o arquivo: `/etc/gdm3/Init/Default`. Este arquivo é um script de shell que será executado antes que o gerenciador de exibição seja exibido ao usuário.
Após o login
Se você precisar executar coisas uma vez que um usuário tenha logado mas antes que sua sessão tenha sido inicializada edite o arquivo: `/etc/gdm3/PostLogin/Default` Se você deseja executar o comando após a sessão de inicialização da sessão (env, ambiente gráfico , login...) edite o arquivo: `/etc/gdm3/PreSession/Default`
LightDM
Vou falar sobre lightdm.conf e não sobre /etc/lightdm.conf.d/*.conf. Você pode fazer o que quiser, o importante é conhecer as opções que você pode usar. Tenha cuidado com o lightDM, você já pode ter vários outros scripts iniciando você deve ler precisamente seu arquivo de configuração antes de editá-lo. também a ordem em que você coloca esses scripts pode influenciar a maneira como a sessão é carregada.
O LightDM funciona um pouco diferente dos demais você colocará opções nos arquivos de configuração principais para indicar o script que será executado.
Edite o arquivo conf principal do lightDM /etc/lightdm/lightdm.conf.
Versões posteriores do lightdm (15.10 em diante) substituíram o obsoleto [SeatDefaults] por [Seat:*]
Antes de entrar
Adicione uma linha `greeter-setup-script=/my/path/to/script` Este script será executado quando o lightDM mostrar a interface de login.
Após o login
Adicione uma linha `session-setup-script=/script/to/start/script` Isso executará o script como `root` após um usuário logado com sucesso.
LXDM
Antes de entrar
Se você quiser executar o comando antes de qualquer pessoa logada, você pode editar o script de shell: `/etc/lxdm/LoginReady`
Após o login
Se você quiser executar o comando depois de alguém logado, mas como root, você pode editar o script shell: `/etc/lxdm/PreLogin` E se você quiser executar o comando como o usuário logado, você pode editar o script: `/ etc/lxdm/PostLogin`
SDDM
Antes de entrar
Modifique o script localizado em /usr/share/sddm/scripts/Xsetup. Este script é executado antes que a tela de login apareça e é usado principalmente para ajustar as exibições do monitor no X11. Não tenho certeza qual seria o equivalente para wayland
Após o login
sddmagora originará o script localizado em /usr/share/sddm/scripts/Xsession, que por sua vez originará os dotfiles do usuário, dependendo de seu shell padrão.
Para bash shell, ele será fonte ~/.bash_profile(entre outros) e para zsh, fonte ${ZDOTDIR:-$HOME}/.zprofile(entre outros). Você pode aproveitar esta oportunidade para modificar esses arquivos para também executar qualquer outro comando necessário após o login.
Eu precisava configurar meu mouse antes de fazer login para que todos os usuários pudessem se beneficiar dele. Encontrei a solução lendo esta pergunta . Achei que deveria olhar para configurá-lo pelo GDM, mas para configurar no início de qualquer sessão, tive que configurá-lo através do autostart do XDG. Em /etc/xdg/autostart, existem vários arquivos .desktop que são executados no momento do login para cada xsessions (no meu sistema ubuntu).
Introdução
Para executar um programa em ambiente gráfico antes de um usuário efetuar login em um ambiente gráfico, depende do seu gerenciador de exibição. Um gerenciador de exibição é responsável por fornecer uma interface de login e configurar seu ambiente gráfico uma vez conectado. os mais importantes são os seguintes:Vamos revisar como configurar a execução do comando quando o gerenciador de exibição aparecer antes de qualquer usuário logado e como executar algo quando alguém finalmente estiver logado.
Se você não sabe qual deles está executando, pode consultar esta pergunta:
Existe um comando linux simples que me diga qual é o meu gerenciador de exibição?
IMPORTANTE
Antes de começar, você vai editar o arquivo que, exceto se mencionar executar o comando como
root
. Não remova as coisas existentes nesses arquivos, exceto se você souber o que está fazendo e tenha cuidado com o que coloca nesses arquivos. Isso pode remover sua capacidade de fazer login.GDM
Tenha cuidado com o GDM, ele executará todos os scripts como `root`, um código de erro diferente de 0 pode limitar sua capacidade de login e o GDM aguardará seu script terminar, tornando-o irresponsivo enquanto seu comando for executado. Para uma explicação completa [leia a documentação][5].Antes de entrar
Se você precisar executar comandos antes de um usuário logar, você pode editar o arquivo: `/etc/gdm3/Init/Default`. Este arquivo é um script de shell que será executado antes que o gerenciador de exibição seja exibido ao usuário.Após o login
Se você precisar executar coisas uma vez que um usuário tenha logado mas antes que sua sessão tenha sido inicializada edite o arquivo: `/etc/gdm3/PostLogin/Default` Se você deseja executar o comando após a sessão de inicialização da sessão (env, ambiente gráfico , login...) edite o arquivo: `/etc/gdm3/PreSession/Default`LightDM
Vou falar sobre lightdm.conf e não sobre /etc/lightdm.conf.d/*.conf. Você pode fazer o que quiser, o importante é conhecer as opções que você pode usar. Tenha cuidado com o lightDM, você já pode ter vários outros scripts iniciando você deve ler precisamente seu arquivo de configuração antes de editá-lo. também a ordem em que você coloca esses scripts pode influenciar a maneira como a sessão é carregada.O LightDM funciona um pouco diferente dos demais você colocará opções nos arquivos de configuração principais para indicar o script que será executado.
Edite o arquivo conf principal do lightDM
/etc/lightdm/lightdm.conf
.Você deve adicionar a primeira linha com
[Seat:*]
, conforme indicado aqui :Antes de entrar
Adicione uma linha `greeter-setup-script=/my/path/to/script` Este script será executado quando o lightDM mostrar a interface de login.Após o login
Adicione uma linha `session-setup-script=/script/to/start/script` Isso executará o script como `root` após um usuário logado com sucesso.LXDM
Antes de entrar
Se você quiser executar o comando antes de qualquer pessoa logada, você pode editar o script de shell: `/etc/lxdm/LoginReady`Após o login
Se você quiser executar o comando depois de alguém logado, mas como root, você pode editar o script shell: `/etc/lxdm/PreLogin` E se você quiser executar o comando como o usuário logado, você pode editar o script: `/ etc/lxdm/PostLogin`SDDM
Antes de entrar
Modifique o script localizado em
/usr/share/sddm/scripts/Xsetup
. Este script é executado antes que a tela de login apareça e é usado principalmente para ajustar as exibições do monitor no X11. Não tenho certeza qual seria o equivalente para waylandApós o login
sddm
agora originará o script localizado em/usr/share/sddm/scripts/Xsession
, que por sua vez originará os dotfiles do usuário, dependendo de seu shell padrão.Para bash shell, ele será fonte
~/.bash_profile
(entre outros) e para zsh, fonte${ZDOTDIR:-$HOME}/.zprofile
(entre outros). Você pode aproveitar esta oportunidade para modificar esses arquivos para também executar qualquer outro comando necessário após o login.Eu precisava configurar meu mouse antes de fazer login para que todos os usuários pudessem se beneficiar dele. Encontrei a solução lendo esta pergunta . Achei que deveria olhar para configurá-lo pelo GDM, mas para configurar no início de qualquer sessão, tive que configurá-lo através do autostart do XDG. Em /etc/xdg/autostart, existem vários arquivos .desktop que são executados no momento do login para cada xsessions (no meu sistema ubuntu).