devrait utiliser sudo ou simplement su root dans la gestion du serveur?

8

Quelle approche est la meilleure?

Pour une utilisation de bureau, il semble que sudo soit meilleur car:

  • Je peux avoir un historique plus cohérent en tant qu'utilisateur normal
  • Je n'ai pas besoin de me souvenir de deux mots de passe, ce qui est particulièrement vrai lorsque je ne fais pas de tâches administratives régulièrement.
  • Pas besoin de créer un compte root supplémentaire lors de l'installation.

Mais à propos de la gestion des serveurs?

Dans le serveur, vous avez généralement déjà un compte root créé et vous êtes susceptible de faire des tâches administratives souvent. Les avantages de sudo ne semblent donc plus tenir.

De plus, il est facile de configurer su en ligne de commande dans la plupart des distributions, il suffit d'ajouter l'utilisateur au groupe de roues. (Vous pouvez même passer -G wheellors de l' useradding.) Ainsi, la configuration de su peut être facilement automatisée en scripts shell.

Mais pour sudo? Vous devez d'abord ajouter l'utilisateur, puis l'exécuter de manière visudointeractive. C'est mauvais car vous ne pouvez pas l'automatiser dans des scripts shell.

(Eh bien, vous pouvez. Par exemple,

echo '%wheel    ALL=(ALL)   ALL' >> /tmp/sudoers.tmp
cp /etc/sudoers /etc/sudoers.old
visudo -c -f /tmp/sudoers.tmp &&  mv /tmp/sudoers.tmp /etc/sudoers

Mais au moins, ce n'est pas si simple.)

Alors, quelle est votre opinion? Pour un environnement serveur, lequel préférerez-vous, sudo ou su root?

faible
la source
Cela devrait être un wiki, sinon il risque de se fermer car il est beaucoup trop subjectif.
John Gardeniers
Je ne pense pas que ce soit beaucoup trop subjectif. Tout comme l'excellente réponse de Raphink le montre, dans un environnement multi-utilisateurs, sudo est préféré.
weakish
Je ne pense pas que ce soit une question subjective du tout. Il ne s'agit pas de savoir si vous aimez sudo ou non, mais s'il est adapté à une utilisation ou à une autre.
ℝaphink
Soit dit en passant, je suis également un peu surpris de votre visudo -ccommande, car je pense que vous devez visudo -c -fvérifier un fichier spécifique.
ℝaphink
@Raphink oui, vous avez tout à fait raison. J'ai édité ma question.
faiblard

Réponses:

16

Le compte root est bien sûr nécessaire sur les serveurs, mais je préfère accorder des droits sudo, surtout quand il y a plusieurs utilisateurs sur la machine, et ce pour plusieurs raisons:

  • Je n'utilise pas sudo uniquement pour accorder TOUS les droits pour TOUTES les commandes, mais aussi pour accorder des droits spécifiques en tant qu'utilisateur spécifique à des commandes spécifiques.
  • En affectant des utilisateurs à des groupes fonctionnels, je peux gérer leurs droits avec ces groupes dans sudoers au lieu de gérer les utilisateurs individuellement.
  • Les accès sudo sont enregistrés dans auth.log par défaut, y compris les utilisateurs qui ont utilisé sudo à quelle heure.
  • sudo permet de gérer la configuration de plusieurs machines avec un seul fichier.
  • chaque utilisateur conserve son propre mot de passe, il n'est donc pas nécessaire de changer le mot de passe root lorsqu'un utilisateur quitte.

Quant à la gestion avec des scripts, les nouvelles versions de sudo supportent les inclusions, mais je préfère utiliser des classes marionnettes et set qui concaténent le contenu de sudoers.

Puppet peut également être associé à Augeas pour gérer votre fichier sudoers.

ℝaphink
la source
3
En fait, je n'ai pas pensé à un cas de plusieurs utilisateurs. Vous avez raison, sudo est apparemment gagnant quand il y a plusieurs utilisateurs. Mais pour un seul utilisateur, je pense toujours que su est suffisant. PS Merci d'avoir mentionné la marionnette. Je n'avais simplement pas connaissance d'un outil aussi mignon auparavant.
faible
Soit dit en passant, si vous souhaitez valider votre fichier sudoers avant de le déployer avec marionnette, j'ai une fonction de validation à portée de main qui le fait.
ℝaphink
1
Lors de l'utilisation de sudo, root n'a même pas besoin d'avoir un mot de passe valide car il suffit de se fier aux mots de passe des utilisateurs. En plus de ne pas avoir besoin de changer le mot de passe root lorsque quelqu'un part, vous avez également un mot de passe de moins qui pourrait être deviné / cassé / piraté.
Shannon Nelson
@ShannonNelson Je pense qu'ils mentionnent l'utilisateur root et le mot de passe car les serveurs loués sont généralement fournis avec ceux-ci.
AJP
1

Vous semblez vous compliquer les choses (en ce qui concerne la gestion de / etc / sudoers). Un simple

echo '%wheel    ALL=(ALL)   ALL' >> /etc/sudoers

suffirait. Visudo ne fait que verrouiller le fichier contre les modifications simultanées et s'assurer que le fichier est toujours correctement analysé.

rodjek
la source
J'utilise visudo -c pour vérifier le fichier car quelque chose ne va pas. (Bien que cela ne devrait pas. Mais peut-être que lorsque j'édite le script, je manque de taper un caractère, ou pire, d'inclure un caractère spécial non visible spécial.) Mais je suis d'accord, votre solution d'une seule ligne est suffisante.
faible