O que faz o comando su - 'whoami'?

5

Estou executando um script no meu projeto e vejo este comando

su - 'whoami'

Estou tendo algumas perguntas básicas:

  1. O que esse comando faz?
  2. Qual é o significado de '' citações fora do comando whoami?
  3. O que é usado para?

Eu sei que su significa usuário comutador.

    
por sachinjain024 25.07.2014 / 11:23

1 resposta

6

Os backticks ( '' ) são substituição do comando : eles são substituídos pelo resultado da execução do comando dentro dos backticks. Aqui eles executam whoami , que imprime seu nome de usuário.

O - após su torna su executar um login shell : um shell de login lerá certas configurações de ambiente do zero, entre outras coisas . Por padrão, ele apenas executaria o shell do usuário como um shell comum, o que não faria todo esse trabalho (veja o link).

su sempre inicia uma nova sessão de usuário, autenticando novamente o usuário como se estivesse conectado do zero. Quaisquer variáveis de ambiente do lado de fora são limpas no shell interno.

Então, tudo isso equivale ao comando (supondo que seu nome de usuário na máquina também seja " blunderboy "):

su - blunderboy

que significa "reautenticar uma nova sessão como blunderboy e executar um shell de login".

O resultado geral deste comando é iniciar uma nova sessão como se fosse do usuário atual . Por que se preocupar em fazer isso? É provável que ative alguns efeitos colaterais de su : em particular, porque inicia uma nova sessão de usuário, ele detectará quaisquer alterações nos grupos em que o usuário está, bem como outras alterações de usuário ou permissão, e as variáveis de ambiente são todas redefinidas. Normalmente, adicionar um usuário a um novo grupo não terá efeito até que eles efetuem login novamente¹: su conta como login novamente para essa finalidade, portanto, o shell que ele inicia terá o novo grupo ativo.

¹ Isto é uma simplificação, mas é verdade o suficiente para esta explicação.

    
por 25.07.2014 / 11:36