Verificando usuário root em sh e bash [duplicado]

1

Eu estou tentando escrever um script que automatiza a instalação de ports / packages em novas instalações do FreeBSD. Para fazer isso, o usuário que executa o script deve ser root.

O sistema "supostamente" é virgem, significando que bash e sudo podem ou não ser instalados; então estou tentando explicar isso. Para fazer isso, estou verificando se o ID do usuário é igual a 0.

O problema é que, entre o bash e o sh, as variáveis de ambiente são diferentes:

  • bash - > $ EUID (todas em maiúsculas)
  • sh - > $ euid (tudo mais abaixo)

Existe uma maneira diferente da variável de ambiente para verificar o usuário root ou devo apenas ajustar a verificação do usuário com base no ambiente?

    
por Allan 05.03.2018 / 15:43

2 respostas

4

Eu verificaria o valor de id -u , que é especificado para:

Output only the effective user ID, using the format "%u\n".

Talvez seja assim:

if [ $(id -u) -eq 0 ]
then
  : root
else
  : not root
fi
    
por 05.03.2018 / 15:53
0

Parece que você pode simplesmente testar $UID == 0 nos dois shells. Como o nome root não é a parte importante e você pode ter um usuário chamado root com um UID diferente de zero ou uma conta UID 0 com nome diferente de root , essa pode ser uma maneira melhor de verificar se o script está sendo executado como um usuário privilegiado.

    
por 05.03.2018 / 15:46