Como posso ter uma inicialização do sistema em uma sessão raiz e, em seguida, executar um comando nessa sessão?

1

Eu tenho um sistema GNU / Linux com uma conta, a conta root. Quando inicializo o sistema, quero que ele faça login automaticamente na conta raiz e execute um comando 'telnet' nessa sessão. Como posso fazer isso?

Meu sistema não tem uma GUI e eu não desejo instalá-lo a menos que seja necessário ...

    
por John 19.04.2015 / 14:03

1 resposta

2

Eu não sei se essa é a maneira kosher de fazer isso, mas funciona:

O programa que é executado em um terminal virtual na inicialização é decidido pelo arquivo /etc/inittab . Estes são todos executados como root. Tem linhas como estas:

1:2345:respawn:/sbin/getty 38400 tty1

Eles decidem o que acaba em qual terminal virtual. /sbin/getty fornece um terminal virtual. No meu caso, /sbin/getty 38400 tty1 significa getty fornece tty1 no primeiro terminal virtual. getty chamará então login , e é daí que vêm os prompts de login nos terminais virtuais.

Portanto, há duas maneiras de fazer isso:

  1. a maneira rápida e suja: basta substituir /sbin/getty , além de argumentos, por telnet, para pelo menos um dos terminais virtuais, assim:

    1:2345:respawn:/usr/bin/telnet foo.bar
    

    Isso provavelmente funcionará, mas não é uma maneira muito boa de fazê-lo, pois nenhum tty é criado. Isso pode causar outros problemas se você quiser usar a máquina para outras coisas também, então eu recomendo:

  2. da maneira correta: instale uma substituição getty que possa executar qualquer programa, como rungetty . Em seguida, ligue para que :

    1:2345:respawn:/sbin/rungetty tty1 -- /usr/bin/telnet foo.bar
    

Nota: se você usar rungetty , o programa será executado sob o usuário nobody por padrão. Quase sempre é preferível executar programas como root , porque oferece melhor segurança. Se você fizer realmente precisar do usuário root (ou de qualquer outro usuário), use a opção -u .

    
por 19.04.2015 / 19:51