web-dev-qa-db-fra.com

Pourquoi puis-je démarrer un shell racine avec Sudo même avec un '! 'dans son entrée d'ombre?

$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:::

Dans le deuxième champ du fichier reflet, ! signifie que l'utilisateur root ne peut pas se connecter mais pourquoi puis-je me connecter à l'utilisateur root par Sudo su?

Pourquoi ne puis-je pas me connecter à l'utilisateur root par su root ou su -?

9
Sinoosh

Un _!_ dans le champ de mot de passe crypté de l'entrée shadow signifie qu'aucun mot de passe ne peut s'authentifier. 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).
_

Comme le dit le manuel, ceci ne signifie pas que vous ne pouvez pas vous connecter en tant que root. Cela signifie simplement que vous ne pouvez pas vous connecter en tant que root en utilisant un mot de passe pour le compte root. (Vous pouvez vous connecter en tant que root via SSH à l'aide de clés SSH, par exemple, si vous l'aviez déjà configuré auparavant, même si le compte est verrouillé.)

Sudo authentifie normalement avec votre mot de passe , pas le mot de passe root. Cela peut être changé en définissant l'une des options targetpw, rootpw ou runaspw dans sudoers. Si vous définissez l'une de ces options et essayez d'utiliser un mot de passe lorsque le mot de passe est verrouillé, cela échouera .

15
muru

Maintenant, regardons les commandes en conséquence:

  1. Sudo su:

    • Sudo exécute la commande su (utilisateur suppléant) avec les privilèges root, donc même si /etc/shadow dit ou a root:!:17179:0:99999:7:::, il continuera d'exécuter des commandes avec des privilèges root.
  2. su - ou su root:

    • Ceci bascule réellement sur l'utilisateur root qui, du /etc/shadow Le fichier _ ne peut pas se connecter alors utiliser ces commandes ne fonctionnera pas. Si vous voulez qu’ils fonctionnent, alors le compte root doit être déverrouillé avec un mot de passe.

Sommaire:

su - 0r su root passe à l'utilisateur root , il n'existe donc pas, cela ne peut pas arriver, mais Sudo su exécute la commande de commutateur avec les privilèges root, de sorte que dans ce cas, cela ira si vous êtes dans le groupe Sudo. Vous ne vous connectez pas en tant que root dans ce cas, vous agissez simplement en tant que root pour que tout se passe bien.

Source: Quelle est la différence entre 'su -' et 'su root'?

4
George Udosen