Por que posso iniciar um shell raiz 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 fazer login, mas por que posso fazer login no usuário root sudo su?

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


11
"No segundo campo do arquivo shadow,! Significa que o usuário root não pode fazer login" Não, não faz. onde você ouviu isso?
Lightness Races in Orbit

@LightnessRacesinOrbit, o que isso significa?
George Udosen

@ George: Muru citou o manual em sua resposta e explicou em detalhes. Você deve ler a documentação!
Lightness Races em órbita em

Respostas:


15

Um !no shadowcampo de senha criptografada da entrada significa que nenhuma senha pode ser autenticada. 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 fazer login como root. Significa apenas que você não pode fazer login como root usando uma senha para a conta root. (Você pode fazer login como root via SSH usando chaves SSH, por exemplo, se você o tiver configurado anteriormente, mesmo que a conta esteja bloqueada.)

sudonormalmente se autentica com sua senha, não root. Isso pode ser alterado definindo um de targetpw, rootpwou runaspwem sudoers. Se você definir uma dessas opções e tentar usar uma senha quando a senha estiver bloqueada, isso falhará .


Ótimo, significa que eu posso mudar para qualquer usuário pelo sudo com minha senha, seja usuário ativo ou bloqueado, certo?
Sinoosh 12/02/19

11
@Sinoosh assumindo que não há outras restrições, sim
Muru

4

Agora vamos ver os comandos de acordo:

  1. sudo su:

    • sudoexecuta o comando su(usuário substituto) com privilégios de root, mesmo que o comando /etc/shadowdiga ou o faça, root:!:17179:0:99999:7:::ele ainda executará comandos com privilégios de root.
  2. su -ou su root:

    • Na verdade, isso muda para o usuário root que, a partir do /etc/shadowarquivo, não pode efetuar login, portanto, o uso desses comandos não funcionará. Se você deseja que eles funcionem, a conta root deve ser desbloqueada, fornecendo uma senha.

Resumo:

su -0r su rootalterna para raiz do usuário , não existe, portanto não pode acontecer, mas sudo suexecuta o comando switch com rootprivilégios; portanto, nesse caso, ele será executado se você estiver no sudogrupo. Você não está realmente fazendo login como root nesse caso, apenas agindo como root para que ele funcione.

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


Obrigado, significa sudo suque não vê campos de passe no arquivo de sombra?
Sinoosh

11
@Sinoosh sudo sué a maneira errada de executar sudo shou sudo bash.
Bakuriu 12/02/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.