Por que eu posso iniciar um shell de root com sudo mesmo com um '! 'em sua entrada de sombra?

9
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash

$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::

No segundo campo do arquivo shadow, ! significa que o usuário root não pode logar, mas por que posso logar ao usuário root por sudo su ?

Por que não consigo fazer login no usuário root por su root ou su - ?

    
por Sinoosh 12.02.2017 / 09:43

2 respostas

15

Um ! no campo de senha criptografada da entrada shadow significa que nenhuma senha pode ser autenticada em relação a ela. De man shadow :

If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).

Como o manual diz, isso não significa que você não pode logar como root. Significa apenas que você não pode logar como root usando uma senha para a conta root. (Você pode logar como root via SSH usando chaves SSH, por exemplo, se você o configurou antes, mesmo que a conta esteja bloqueada.)

sudo normalmente autentica com sua senha, não com a de root. Isso pode ser alterado definindo um dos targetpw , rootpw ou runaspw in sudoers . Se você definir uma dessas opções e tentar usar uma senha quando a senha estiver bloqueada, falhará .

    
por muru 12.02.2017 / 12:01
4

Agora vamos analisar os comandos de acordo:

  1. sudo su :

    • sudo executa o comando su (usuário substituto) com privilégios de root, assim, mesmo que /etc/shadow diga ou tenha root:!:17179:0:99999:7::: , ele ainda executará comandos com privilégios de root.
  2. su - ou su root :

    • Isso realmente muda para o usuário raiz , que a partir do arquivo /etc/shadow não pode logar, portanto, usar esses comandos não funcionará. Se você quiser que eles funcionem, a conta raiz deve ser desbloqueada, fornecendo uma senha.

Resumo:

su - 0r su root muda para o usuário root , não existe, portanto não pode acontecer, mas sudo su executa comando de comutação com root privilégios, então neste caso ele irá se você estiver no grupo sudo . Você não está realmente logando como root neste caso, apenas agindo como root , então ele irá.

Fonte: Qual é a diferença entre 'su -' e 'su root'?

    
por George Udosen 12.02.2017 / 10:27