Como posso fazer login automático na área de trabalho com o systemd?

Como posso fazer login automático na área de trabalho com o systemd?

Como posso configurar o systemd para fazer login automaticamente no meu ambiente de desktop, de preferência sem usar um gerenciador de login? Estou usando Arch Linux.

Responder1

Isto está descrito noArchWiki:

Crie um novo arquivo de serviço semelhante a [email protected]copiando-o para/etc/systemd/system/

cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]

Basicamente, isso copia o já existente [email protected]para um novo arquivo [email protected]que pode ser modificado livremente. Ele é copiado /etc/systemd/systemporque é onde os arquivos de unidade específicos do site são armazenados. /usr/lib/systemd/systemcontém arquivos unitários fornecidos por pacotes, portanto você não deve alterar nada neles.

Você terá então que criar um link simbólico [email protected]para o serviço getty do tty no qual deseja fazer login automático, por exemplo, para tty1:

ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

Até agora, este ainda é o mesmo [email protected]arquivo normal, mas a parte mais importante é modificá-lo [email protected]para fazer login automaticamente. Para fazer isso, você só precisa alterar a ExecStartlinha para ler

ExecStart=-/sbin/agetty -a USERNAME %I 38400

A diferença entre a ExecStartlinha in [email protected]e [email protected]é apenas a -a USERNAMEque diz ao agetty para logar o usuário com o nome de usuário USERNAME automaticamente.

Agora você só precisa dizer ao systemd para recarregar seus arquivos daemon e iniciar o serviço:

systemctl daemon-reload
systemctl start [email protected]

(Não tenho certeza se o serviço iniciará corretamente se você já estiver logado no tty1, a maneira mais segura provavelmente é apenas reiniciar em vez de iniciar o serviço).

Se você quiser iniciar o X automaticamente, insira o seguinte trecho em seu ~/.bash_profile(retirado dea wikide novo):

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec startx
fi

Você terá que modificar ~/.xinitrcpara iniciar seu ambiente de desktop, como fazer isso depende do DE e provavelmente também está descrito no ArchWiki.

Responder2

OMI, oArco Wikiatualmente recomenda uma solução muito mais simples:

Execute o helper ( systemctl edit getty@tty1) ou faça o que fiz manualmente:

mkdir -p /etc/systemd/system/[email protected]/
touch /etc/systemd/system/[email protected]/override.conf

O texto que você deseja inserir (por qualquer método) é (certifique-se de mudarnome de usuárioadequadamente):

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

OBSERVAÇÃO: A linha vazia é importante! A linha vazia primeiro limpará a entrada ExecStart, enquanto a próxima linha apresentará um novo comando exec.

Agora, reinicie ( shutdown -r 0) e algo semelhante ... login: username (automatic login)acontecerá onde ele bloqueou anteriormente a espera pela entrada de nome de usuário/senha


Depois de reinicializado e conectado automaticamente, se você for como eu e quiser fazer SSH neste sistema agora, provavelmente precisará executar:

systemctl enable sshd.service

O que criará o link simbólico (por exemplo ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')

Responder3

Modifique diretamente o arquivo (que é um link simbólico para ):/etc/systemd/system/getty.target.wants/[email protected]/lib/systemd/system/getty@service

Anexe -a/--autologin USERNAMEà linha:

ExecStart=-/sbin/agetty --noclear %I $TERM

Por isso:

ExecStart=-/sbin/agetty -a USERNAME %I $TERM

Você também pode remover -o '-p -- \\u'(como presente na instalação atual do Arch), pois isso iniciaria o login, USERNAMEmas ainda solicitaria a senha.

Após a reinicialização, você fará login automaticamente.

PsAltere o nome do arquivo [email protected]para o qual ttyvocê deseja fazer login.

Responder4

Você também pode usar gettyo comando (get tty), que permite fazer login automaticamente no usuário especificado, o argumento do gettypode ser --autologinou -a, estou executando o Linux Debian Ubuntu, então não sei se este comando está disponível em outras distros.

getty -a <user>

informação relacionada