Articles

Linux – Mudar temporariamente para outro utilizador Linux (usando su)

Posted on

### 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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *