Como executar o sudo -s após o login do ssh

2

Meu passo a passo:

  1. No myserver.com eu colo a linha "sudo -s" no arquivo "~ / .bashrc" no diretório home do "mylogin"
  2. SSH Faça o login para [email protected]
  3. Após o login:

    [email protected]:~$

  4. Mas, pressione cntrl + D para sair

    [email protected]:~$ exit

    [email protected]:~$ exit

    ...

    [email protected]:~$

    5. Não saia.

Por quê?

Por favor, diga-me o método correto.

    
por satels 21.05.2011 / 13:57

2 respostas

5

Você pode armazenar um sinalizador em uma variável de ambiente:

if [ -z $INITIAL_SUDO ]; then
    exec sudo -s INITIAL_SUDO=1
fi

Neste caso, o shell inicial invocado por ssh não terá o sinal INITIAL_SUDO ativado e ele irá gerar o processo sudo. O shell invocado pelo sudo, por outro lado, terá INITIAL_SUDO variável definida e não tentará chamar o sudo novamente.

Observe que chamo exec sudo -s em vez de sudo -s . Caso contrário, você terá que pressionar ctrl + D duas vezes: primeiro para um shell raiz e segundo para um shell inicial que invocou o sudo em primeiro lugar.

    
por 21.05.2011 / 17:43
4

O comando %código% executa um novo shell, que executa seu .bashrc.

Então o que aconteceu aqui, é que você criou um loop onde cada novo shell executa o sudo -s, que por sua vez cria um novo shell. Em algum momento, o loop atingiu o limite RLIMIT_NPROC para o sistema e o loop parou, deixando uma enorme pilha de shells aninhados. Este limite é muito alto na maioria dos sistemas (8192 ou ilimitado) para você sair usando o teclado.

    
por 21.05.2011 / 14:44

Tags