Slackware SEM Login

Aproveitando o sábado a noite (preciso comprar um cachorro pra levar pra passear :)) para responder alguns dos e-mails que me chegam diariamente com questionamentos diversos, achei conveniente postar aqui uma dica constantemente solicitada: Como fazer minha distribuição Slackware Linux (e seus derivados, como por exemplo o Vector Linux) fazer login automático?

O questionamento é válido, afinal muitas vezes num desktop de uso individual e intransferível, fazer login, fornecer nome de usuário e senha, pode se tornar um tanto quanto incômodo, chato mesmo! Em geral existe mais de uma forma de se conseguir implementar essa “adaptação”, na grande maioria das distribuições… Para quem tem o KDM (ou GDM) instalado ou quaisquer gerenciadores de janelas (ambiente gráfico) atual para ambiente Linux (que possua módulo de administração de usuários), você pode fazer isso com cliques de mouse.

O fato é que nem sempre você quer ter um gerenciador de janelas instalado em seu equipamento ou, simplesmente não quer configurar o runlevel para inicializar a sua distribuição Linux pelo modo gráfico. Não obstante, quando essa distribuição em questão é o Slackware Linux, fazer auto-login em ambiente texto (shell) tem algumas pequenas especificidades.

Assim sendo, vamos ao que interessa: O segredo aqui é usarmos o agetty, um gerenciador de login para o modo texto que aceita o recurso de auto-login e vem por default instalado em todas as versões do Slackware que eu me lembre. Caso, por qualquer motivo, ele não esteja presente na sua distribuição, basta baixar o tgz do pacote e instalar via installpkg ou slapt-get.

O que precisamos fazer é basicamente editar o arquivo /etc/inittab, que é um arquivo lido pelo processo init (inicializador) no Linux e contém diversas informações importantes para a carga do sistema. Dentre as configurações presentes nesse arquivo, estão as referentes aos ttys (terminais). Se correr o arquivo, no seu editor de textos predileto (edite o arquivo como root), vai ver uma estrutura parecida com isso:

1:2345:respawn:/sbin/getty 38400 tty1
2:2345:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/sbin/getty 38400 tty3
4:2345:respawn:/sbin/getty 38400 tty4
5:2345:respawn:/sbin/getty 38400 tty5
6:2345:respawn:/sbin/getty 38400 tty6

Como podemos ver, por padrão estão liberados 6 terminais para se trabalhar no Linux (para alternar entre os terminais, em modo texto, basta pressionar ALT + F1, ALT + F2 e assim por diante). Supomos aqui que queremos efetuar auto-login do usuário “terminal” no tty1 (o usuário tem que estar previamente adicionado ao sistema, é claro). Para tanto basta mudar a respectiva linha para:

1:2345:respawn:/sbin/agetty -n -l /sbin/autologin 38400 tty1

Notem que aqui temos dois pequenos segredos: Um deles já foi revelado nos parágrafos acima, o uso do agetty com duas diretivas bem interessantes. O -n especifica que não queremos que o prompt de login seja apresentado na tela. Já o -l permite invocar um programa específico de login, em substituição ao default (geralmente o /bin/login).

É aqui que precisamos revelar o segundo segredo, uma vez que se procurar, você não vai encontrar o programa /sbin/autologin. Não vai encontrar por que nós ainda vamos fazer ele 🙂 – Edite (preferencialmente como root) o arquivo dentro de /sbin (ou gere o programa em seu diretório padrão de sources/fontes e depois copie para lá somente o binário/executável – forma mais inteligente de se fazer):

mcedit /sbin/autologin.c (notem que estou usando aqui o editor “mc” apenas por opção particular e, que a extensão do programa é “.c”, ou seja, um pequeno programa escrito em C)

Escreva no arquivo o seguinte conteúdo:

int main() {
execlp( “login”, “-f”, “terminal”, 0);
}

depois é só compilar:

gcc -o /sbin/autologin /sbin/autologin.c

Pronto, geramos o programa que será invocado ao se fazer o auto-login. Até aqui, a dica serve para boa parte das distribuições “convencionais” do Linux. Mas, no Slackware, ainda precisamos “avisar” que não queremos controle de senhas no terminal 1 (tty1). Desta forma, edite o arquivo /etc/login.defs e procure por uma linha assim:

#NO_PASSWORD_CONSOLE tty1:tty2:tty3:tty4:tty5:tty6

mude-a para:

NO_PASSWORD_CONSOLE tty1

Pronto, processo concluído. Para que as alterações sejam processadas para uso futuro sem a necessidade de rebootar o sistema, digite:

init q

Espero que esta dica lhe seja útil!