### Como mudar de utilizador ou tornar-se temporariamente root
Anúncio
Pode encontrar todos os meus últimos posts em média.
## Comandos abordados neste artigo
id # Mostra o nome de utilizador do utilizador actualmente registado. Também mostra a que grupos pertence o utilizador.
su # Permite-lhe (s)br a outro (u)ser enquanto estiver ligado como outra pessoa.
sudo # xxxxxxxxxxxxxxxxx
### Tornar-se o utilizador root usando “su”
No linux é sempre recomendado que evite entrar como o utilizador root directamente. Isso é porque pode causar problemas de segurança e aumenta as hipóteses de danificar algo. De facto, a Centos mostrará uma mensagem de aviso quando tentar um login directo como utilizador root.
Por isso, a melhor prática é que faça sempre o login como um utilizador normal. Contudo, existem muitos comandos que só podem ser executados como utilizador root, e nesses casos, a forma recomendada de os executar é usando o utilitário (s)witch (u)ser, que lhe permite mudar de um utilizador para outro:
su – root # Isto permite-lhe mudar para o utilizador root. Cubro o argumento “-” mais tarde.
password # O comando su pede a password do utilizador para o qual está a mudar. Neste caso é a password do utilizador root.
id # O comando id mostra simplesmente qual é a sessão do utilizador que está a correr actualmente em.
Note, só pode usar o comando su se souber a password do utilizador para o qual está a mudar. A única excepção a esta regra é se estiver logado como utilizador root, caso em que pode su para qualquer utilizador sem um pedido de senha.
login:
password:
br>id
su – # Se deixar de fora o nome de utilizador, como aqui, então por defeito, su assumirá que se refere a root.
password
br>id
su – Tom
id # Note que não precisámos de introduzir a palavra-passe de Tom.
### Voltando ao utilizador anterior
No exemplo acima mudámos de John-=>root-=>Tom. Isto significa que a nossa concha actual está 2-sessões-aperta. Portanto, se quiser mudar de volta para John, então pode usar o comando de saída:
p>id
exit # Isto leva-o a fazer uma cópia de segurança de um passo, que neste caso é o utilizador raiz.
id
exit # Agora está de volta ao John, e não pode sair mais. Se tentar sair novamente, então o próprio terminal irá fechar.
em vez de fazer o acima referido, poderia simplesmente ter feito:
su – John # neste caso, seria 3-sessões de profundidade, i.e. John-=>root-=>Tom-=>John
# É uma boa prática, sempre que possível nunca ir mais fundo do que 3 níveis. Caso contrário, poderá começar a experimentar comportamentos estranhos.
## O que significa o “-” em ‘su -‘?
p> O primeiro parâmetro, “-“, diz ao su para fingir que o utilizador entrou directamente no sistema. Caso contrário, o ambiente é passado, com excepção de $PATH, que é controlado por PATH e SUPATH em /etc/default/su.
Este “-” significa basicamente iniciar a nova sessão a partir de fresco, e não transportar qualquer “bagagem” da sessão anterior. Por exemplo, se criar uma variável, e a exportar, então esta variável só estará disponível se não iniciar uma nova sessão:
testvar=12345 # Aqui criei uma nova variável.
export testvar # Isto define a variável para ficar disponível em todas as sessões.
su Tom # Uma vez que “-” é omitido, o transporte é permitido. Assim, a variável deve ser acessível na nova sessão.
password
echo testvar # variável existe na nova sessão.
exit
su – Tom # Uma vez que “-” é especificado, bloqueia qualquer carry over, a fim de imitar um login directo o mais próximo possível.
echo testvar # devolve um espaço em branco, uma vez que esta variável não existe numa sessão “fresca”.
## Executar um único comando como outro utilizador.
Pode usar su para mudar de utilizador apenas o tempo suficiente para executar um único comando antes de fazer marcha atrás novamente:
su -c ‘echo “Hello and Goodbye Tom’
Or você pode fundir vários comandos numa única linha usando ponto e vírgula:
su – Tom -c ‘id ; echo “Olá e Adeus Tom’
## Dá acesso aos não-admins a algum nível de raiz usando sudo
No Linux, todos os comandos/tarefas de nível administrativo que só podem ser executados pelo utilizador raiz. Assim, se houver uma actividade específica a nível de administrador que se queira que um colega execute, então uma forma de o fazer é dizer-lhes a palavra-passe da raiz. Contudo, isto não é uma boa ideia porque:
1. de razões de segurança, é melhor prática limitar o mais possível, quem tem acesso à raiz.
2. está a dar-lhes inadvertidamente o controlo total de tudo o resto.
Uma forma de contornar este dilema é usar o utilitário sudo. Sudo permite ao utilizador root dar a um utilizador a possibilidade de executar um ou mais comandos a nível administrativo (como se estivessem logados como utilizador root mas sem realmente logar como utilizador root).
Por exemplo, apenas root pode desligar a máquina:
shutdown # Este desliga uma máquina. Para voltar a ligá-la, é necessário premir o botão de alimentação da máquina.
Se o utilizador, Tom tentar usar o comando shutdown, então recebe uma mensagem de permissão negada:
<
code=>
Se o utilizador root der a Tom, sudo permissão para usar o comando “shutdown”. Então Tom deve agora ser capaz de executar o comando a nível administrativo que o precede com a palavra sudo:
sudo {command}
Como indicado acima, a sintaxe para iniciar o sudo é a palavra sudo a seguir ao comando a ser executado:
Hence Tom pode invocar o seu privilégio sudo assim:
shutdown # isto não funciona porque o sudo não foi invocado.
sudo shutdown # isto funcionou, e a máquina desliga-se.
<password=> # tal como su, tem de introduzir uma palavra-passe. Mas ao contrário do su, na realidade, introduz-se a palavra-passe do utilizador actual.
# Isto é um pouco exagerado, uma vez que o utilizador já está ligado como esse utilizador. Felizmente, isto <l-anchor=>sudo password<l=> prompt pode ser desactivado.
Por razões de segurança, é mantido um registo de todas as actividades relacionadas com o sudo, no caso de um utilizador abusar dos seus privilégios de sudo.
O utilizador raiz precisa de <l=>configurar e atribuir privilégios sudo<l=> a fim de atribuir privilégios sudo.
### A principal diferença entre usar su e sudo (para executar comandos admin)
Para resumir, A principal diferença para executar comandos a nível admin como utilizador principal são:
1. Para usar su, é necessário saber a palavra-chave raiz, enquanto que para sudo, não se
2. Com sudo, é necessário prefixar cada comando com a palavra “sudo”, mas não é necessário prefixar com su.
3. Com su, é possível executar qualquer comando de administrador, mas com sudo, só é possível executar os comandos de administrador conforme autorizado no ficheiro de configuração do sudo.
## Alguns factos úteis
O utilizador root é por vezes referido como “superutilizador”.
Uma alternativa ao comando “id” e “whoami” (mas não é tão informativo).
Há uma convenção que para um utilizador root, o utilizador imediato termina em “#” enquanto que para qualquer outra pessoa termina em “$”. Por falar nisso, existem algumas maneiras de <l=>customise the command prompt<l=>.
O comando id mostra mais do que apenas nomes de utilizador e de grupo. Também mostra os números de id correspondentes para o utilizador e grupos. Também pode usar o comando id para ver detalhes de outros utilizadores para além do utilizador actualmente registado:
id {username}
O comando id obtém a sua informação de /etc/passwd e /etc/group
## Tópicos relacionados
Configurar e atribuir privilégios sudo.