Comment puis-je demander à sudo de demander le mot de passe root?

25

Lorsque je cours en sudotant qu'utilisateur normal non privilégié, il me demande mon mot de passe, pas le mot de passe root. C'est souvent pratique, mais cela réduit la quantité d'informations dont une personne aurait besoin pour exécuter des commandes en tant que root. Alors, comment puis-je sudodemander le mot de passe root au lieu du mot de passe de l'utilisateur invoquant?

Je sais que ce serait fait avec une ligne /etc/sudoers, mais je n'arrive jamais à analyser correctement la grammaire BNF dans la page de manuel pour savoir exactement quoi écrire.

David Z
la source
Je vous recommande de restreindre les commandes autorisées en tant qu'utilisateur non root afin de ne pas vous soucier d'exposer des commandes arbitraires.
Slartibartfast
@slartibartfast: mais alors que se passe-t-il lorsque j'ai besoin d'exécuter une commande en tant que root qui ne figure pas dans la liste pré-approuvée?
David Z

Réponses:

25

Ok, le voici à nouveau pour que vous puissiez définir la coche.

Dans /etc/sudoers, ajoutez cette ligne:

Defaults rootpw

pour activer le drapeau rootpw, faisant sudo demander le mot de passe root.

Florian Diesch
la source
7
Vous devez toujours utiliser la visudocommande au lieu de modifier manuellement le /etc/sudoersfichier. visudovalide le fichier pour s'assurer qu'il est correct avant de l'enregistrer, afin que vous ne soyez pas bloqué de sudo si vous faites une erreur de syntaxe ... askubuntu.com/a/81054/166411
Colin D Bennett
5

Vous devez activer le rootpwdrapeau.

Ignacio Vazquez-Abrams
la source
Comme je l'ai dit, je n'ai pas pu travailler avec la notation BNF dans la page de manuel - alors dans quelle ligne dois-je insérer /etc/sudoerspour activer cet indicateur?
David Z
2
Rootpw par défaut
Florian Diesch
@Florian: whaddya sait, c'est aussi simple que cela :-) Si vous postez cela comme réponse, vous obtenez la coche.
David Z
3

Je sais que cette question est ancienne, mais c'est la question la plus concise que j'ai trouvée pour ce cas d'utilisation (qui est un pourcentage mineur, vrai, mais néanmoins légitime et utile dans le bon scénario).

Après avoir rassemblé toutes les étapes de diverses sources - y compris plusieurs réponses à cette question, ces étapes fonctionnent sur Ubuntu-Gnome 16.04 LTS:

  1. Définir un mot de passe pour root
    • C'est CRITIQUE de faire D' ABORD ! (Ubuntu n'a pas automatiquement de mot de passe pour l'utilisateur ROOT en raison de la configuration de sécurité standard.
    • Si vous ne le faites pas en premier, vous vous interdirez l'accès aux privilèges root. Cela peut être surmonté en démarrant avec un Live Disk, en montant le disque dur et en éditant le fichier sudoers, mais il est préférable d'éviter cela.
    • Ouvrez un terminal et entrez: sudo passwd
    • Définissez votre nouveau mot de passe pour l'utilisateur ROOT.
  2. Modifiez la configuration SUDO pour exiger le mot de passe root
    • SUDO requiert que l'utilisateur demande des privilèges root
    • La définition du drapeau "rootpw" indique à la place à SUDO d'exiger le mot de passe pour l'utilisateur root.
    • Ouvrez un terminal et entrez: sudo visudo
    • Cela ouvrira le fichier "/ etc / sudoers"
    • Après l'autre ligne "Defaults", ajoutez: Defaults rootpw
    • Enregistrez-le (en supposant que vous êtes en nano, qui est la valeur par défaut, c'est CTRL + O)
    • Fermez le fichier (CTRL + X) et quittez le terminal
  3. Vous avez terminé!

Juste une note rapide - je voulais également m'assurer que l'utilisateur root ne pouvait pas être utilisé pour se connecter à partir de la connexion graphique, et cherchait donc des moyens d'exclure. Apparemment, l'utilisateur root est exclu par défaut et ne peut pas être utilisé pour se connecter via la connexion graphique Gnome - ce qui est une très bonne chose!

SRDC
la source
Pourriez-vous suggérer des améliorations pour inverser un downvote?
SRDC
Ne semble pas avoir tort.
Ruslan
1
Peut-être parce qu'une configuration simple (et fonctionnelle) de: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Autorise sudo root pour tout utilisateur connaissant le mot de passe root. Changer naïvement les deux dernières lignes de votre solution Defaults rootpwprovoque un verrouillage de sudo. Vous devez également ajouter votre utilisateur à sudoersaimer ainsi: myusername ALL=(ALL) ALLou donner des privilèges similaires à un groupe, puis ajouter myusernameà ce groupe.
Paul Parker
1

Une configuration courante qui nécessite le mot de passe de la cible (pas ce que nous voulons):

Defaults targetpw
ALL ALL=(ALL) ALL

La deuxième ligne se lirait à haute voix comme: "TOUS les utilisateurs sur TOUS les hôtes peuvent se faire passer pour (TOUS) les utilisateurs lors de l'exécution de TOUTES les commandes." et les Defaults targetpwmoyens dont ils ont besoin pour connaître le mot de passe de l'utilisateur dont ils usurpent l'identité.

Changer naïvement cette configuration simple en:

Defaults rootpw

ne laisserait aucun utilisateur ou groupe avec le privilège d'exécuter des commandes en tant qu'autre utilisateur.

Une possibilité de travail serait:

Defaults rootpw
myuser ALL=(ALL) ALL

En clair, a myuserdésormais la possibilité d'exécuter TOUTES les commandes comme n'importe quel utilisateur sur TOUS les hôtes, tant que le mot de passe root est connu.

Une autre possibilité de travail serait:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Tout membre du sudousersgroupe aura la possibilité d'exécuter TOUTES les commandes comme n'importe quel utilisateur sur TOUS les hôtes, tant que le mot de passe root est connu. Pour permettre myuserd'exécuter les commandes sudo, sudousersil faudrait l'ajouter à ses groupes secondaires.

su
usermod -a -G sudousers myuser
exit
Paul Parker
la source
Grande explication. Plus détaillé que l'étape par étape que j'ai publiée (qui fonctionnait sur la base des paramètres par défaut d'Ubuntu).
SRDC
0

Vous pouvez simplement désactiver sudo et l'utiliser su -c.

Nitrodist
la source
Inconvénient car je dois saisir mon mot de passe chaque fois que je l'exécute. Le cas d'utilisation ici doit exécuter plusieurs commandes en tant que root en succession rapide.
David Z
-1

En utilisant

sudo su

vous permettra d'exécuter autant de commandes que vous le souhaitez.


la source
2
Bonne idée, mais à moins que je ne change sudopour demander le mot de passe root, cela permettrait quand même à quelqu'un d'accéder à root en ne présentant qu'un seul mot de passe (pas root). Cela ne répond donc pas vraiment au problème de sécurité qui a suscité ma question.
David Z
Au lieu d'utiliser la capacité de sudo pour limiter l'accès par utilisateur, vous exposez votre mot de passe root à un certain nombre d'utilisateurs. Vous supprimez également la possibilité de sécuriser votre serveur en supprimant le mot de passe de root.
BillThor