Login root automático em servidores Linux

Login root automático em servidores Linux

Estou tentando executar um teste em diferentes distros de servidores Linux (Fedora, Ubuntu, Centos, etc).

Eu sei que existe um sistema init que pode permitir a execução de programas após a inicialização (sem login). O problema é que não quero ter um caso especial para cada sistema init diferente entre distros. Existe uma maneira de permitir o login automático do root após a inicialização?

Ao fazer isso, posso ter o mesmo script de shell para qualquer distribuição. Ou existe uma maneira de solucionar esse problema?

Responder1

Eu sei que existe um sistema init que pode permitir a execução de programas após a inicialização (sem login).

Infelizmente hoje em dia não háumsistema init, há meia dúzia de sistemas init populares. Por exemplo, sysv init, systemd, upstart, etc.

De qualquer forma, se você realmente deseja que um sistema forneça um console com acesso root, você provavelmente desejará atualizar seu sistema init.

Faço isso para uma porta serial em alguns dos meus sistemas. Tenho duas configurações muito diferentes e só estou usando o Debian em duas versões diferentes. Não consigo imaginar que você consiga criar um método único que se aplique a todas as distros. Simplesmente não há consistência em como as coisas começam. O Systemd deve ser bastante semelhante em todas as distros, mas ainda não é amplamente aceito.

Debian com sysv init (wheezy) cair para root na porta serial

# /etc/inittab
...
# serial port getty spawns sulogin, which drops to a root shell
# on debian if root has a disabled password
T0:23:respawn:/sbin/getty -n -l /sbin/sulogin -L ttyS0 57600 vt102
...

Debian com systemd (jessie) faz root na porta serial

#/etc/systemd/system/getty.target.wants/[email protected]
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Serial Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
BindsTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service

# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes

[Service]
ExecStart=-/sbin/agetty -n -l /sbin/sulogin --keep-baud 115200,38400,9600 %I $TERM
Type=idle
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target

Sua melhor aposta pode ser desistir da ideia de fazer login como root e, em vez disso, usar uma ferramenta de gerenciamento de configuração como o fantoche ou que possa abstrair algumas diferenças de lançamento de distribuição para você. Faça com que essa ferramenta acione suas execuções de teste.

Responder2

você adicionou um comentário: "Tenho um programa que precisa ser testado fisicamente em diferentes distribuições Linux para relatar desempenho"

neste caso, você pode considerar usarjanela de encaixe, dessa forma você realmente não precisa de um sistema operacional completo nem nada... mas se o seu programa, por algum motivo, precisar ser executado em uma instância física, você pode querer verificar algum ambiente de execução de trabalho comoJenkins

Responder3

Estou confuso sobre o que você quer, no entanto, se quiser executar algo como root após a inicialização no Linux, coloque-o aqui na maioria das distros:

/etc/rc.local

Ou às vezes

/etc/rc.d/rc.local

Responder4

Se for uma programação de linha de comando, uma abordagem melhor seria executá-la através de SSH. Além disso, você pode usar chaves SSH para fazer login sem senhas.

informação relacionada