Linux su vs sudo : quelle est la différence ?


  • FrançaisFrançais


  • Les deux su et le sudo Les commandes permettent aux utilisateurs d’effectuer des tâches d’administration système qui ne sont pas autorisées pour les utilisateurs non privilégiés, c’est-à-dire tout le monde sauf l’utilisateur root. Certaines personnes préfèrent la sudo commande : Par exemple, Seth Kenlon a récemment publié “5 raisons d’utiliser sudo sous Linux”, dans lequel il vante ses nombreuses vertus.

    Pour ma part, j’ai un faible pour su commander et le préférer à sudo pour la plupart des tâches d’administration système que j’effectue. Dans cet article, je compare les deux commandes et explique pourquoi je préfère su plus de sudo mais utilisez toujours les deux.

    Perspective historique des administrateurs système

    La su et sudo les commandes ont été conçues pour un monde différent. Les premiers ordinateurs Unix nécessitaient des administrateurs système à plein temps, et ils utilisaient le compte root comme seul compte administratif. Dans ce monde antique, la personne à qui était confié le mot de passe root se connectait en tant que root sur un téléscripteur ou un terminal CRT tel que le DEC VT100, puis effectuait les tâches administratives nécessaires à la gestion de l’ordinateur Unix.

    L’utilisateur root disposerait également d’un compte non root pour des activités non root telles que la rédaction de documents et la gestion de sa messagerie personnelle. Il y avait généralement de nombreux comptes d’utilisateurs non root sur ces ordinateurs, et aucun de ces utilisateurs n’avait besoin d’un accès root total. Un utilisateur peut avoir besoin d’exécuter une ou deux commandes en tant que root, mais très rarement. De nombreux administrateurs système se connectent en tant que root pour travailler en tant que root et se déconnectent de nos sessions root lorsque vous avez terminé. Certains jours, il faut rester connecté en tant que root toute la journée. La plupart des administrateurs système utilisent rarement sudo car cela nécessite de taper plus que nécessaire pour exécuter les commandes essentielles.

    Ces outils fournissent tous deux des privilèges élevés, mais la façon dont ils le font est très différente. Cette différence est due aux cas d’utilisation distincts pour lesquels ils étaient initialement destinés.

    sudo

    L’intention initiale de sudo était de permettre à l’utilisateur root de déléguer à un ou deux utilisateurs non root l’accès à une ou deux commandes privilégiées spécifiques dont ils ont régulièrement besoin. La sudo La commande donne aux utilisateurs non root un accès temporaire aux privilèges élevés nécessaires pour effectuer des tâches telles que l’ajout et la suppression d’utilisateurs, la suppression de fichiers appartenant à d’autres utilisateurs, l’installation de nouveaux logiciels et généralement toute tâche requise pour administrer un hôte Linux moderne.

    Permettre aux utilisateurs d’accéder à une ou deux commandes fréquemment utilisées qui nécessitent des privilèges élevés permet à l’administrateur système d’économiser de nombreuses demandes d’utilisateurs et d’éliminer le temps d’attente. La sudo la commande ne change pas le compte d’utilisateur pour devenir root ; la plupart des utilisateurs non root ne devraient jamais avoir un accès root complet. Dans la plupart des cas, sudo permet à un utilisateur d’émettre une ou deux commandes, puis permet à l’élévation de privilèges d’expirer. Pendant ce bref intervalle de temps, généralement configuré pour être de 5 minutes, l’utilisateur peut effectuer toutes les tâches administratives nécessaires qui nécessitent des privilèges élevés. Les utilisateurs qui doivent continuer à travailler avec des privilèges élevés mais qui ne sont pas prêts à émettre une autre commande liée à une tâche peuvent exécuter le sudo -v commande pour revalider les informations d’identification et prolonger le délai de 5 minutes supplémentaires.

    En utilisant le sudo La commande a pour effet secondaire de générer des entrées de journal des commandes utilisées par les utilisateurs non root, ainsi que leurs ID. Les journaux peuvent faciliter un post-mortem lié à un problème pour déterminer quand les utilisateurs ont besoin de plus de formation. (Vous pensiez que j’allais dire quelque chose comme “attribuer le blâme”, n’est-ce pas ?)

    su

    La su La commande est destinée à permettre à un utilisateur non root d’élever son niveau de privilège à celui de root. En fait, l’utilisateur non root devient l’utilisateur root. La seule exigence est que l’utilisateur connaisse le mot de passe root. Il n’y a pas de limites à cela car l’utilisateur est maintenant connecté en tant que root.

    Aucune limite de temps n’est imposée sur l’escalade de privilèges fournie par le su commande. L’utilisateur peut travailler en tant que root aussi longtemps que nécessaire sans avoir à s’authentifier à nouveau. Une fois terminé, l’utilisateur peut émettre le sortir commande pour revenir de root à leur propre compte non root.

    Controverse et changement

    Il y a eu récemment des désaccords sur les utilisations de su contre sudo.

    Réel [Sysadmins] n’utilisez pas sudo. —Paul Venezia

    Venezia soutient dans son Article d’InfoMonde ce sudo est utilisé comme un accessoire inutile pour de nombreuses personnes qui agissent en tant qu’administrateurs système. Il ne passe pas beaucoup de temps à défendre ou à expliquer cette position ; il l’énonce simplement comme un fait. Et je suis d’accord avec lui, pour les administrateurs système. Nous n’avons pas besoin de roues stabilisatrices pour faire notre travail. En fait, ils gênent.

    Cependant,

    Les temps sont en train de changer.’ -Bob Dylan

    Dylan avait raison, même s’il ne chantait pas sur les ordinateurs. La façon dont les ordinateurs sont administrés a considérablement changé depuis l’avènement de l’ère d’une personne, un ordinateur. Dans de nombreux environnements, l’utilisateur d’un ordinateur est également son administrateur. Cela rend nécessaire de fournir un accès aux pouvoirs de root pour ces utilisateurs.

    Certaines distributions modernes, comme Ubuntu et ses dérivés, sont configurées pour utiliser le sudo commande exclusivement pour les tâches privilégiées. Dans ces distributions, il est impossible de se connecter directement en tant qu’utilisateur root ou même de su s’enraciner, donc le sudo La commande est requise pour autoriser les utilisateurs non root à accéder aux privilèges root. Dans cet environnement, toutes les tâches d’administration du système sont effectuées à l’aide de sudo.

    Cette configuration est possible en verrouillant le compte root et en ajoutant le(s) compte(s) utilisateur régulier au groupe wheel. Cette configuration peut être facilement contournée. Essayez une petite expérience sur n’importe quel hôte ou machine virtuelle Ubuntu. Permettez-moi de préciser la configuration ici afin que vous puissiez la reproduire si vous le souhaitez. J’ai installé Ubuntu 16.04 LTS1 et je l’ai installé sur une machine virtuelle à l’aide de VirtualBox. Lors de l’installation, j’ai créé un utilisateur non root, étudiant, avec un simple mot de passe pour cette expérience.

    Connectez-vous en tant qu’utilisateur étudiant et ouvrez une session de terminal. Regardez l’entrée pour root dans le /etc/shadow fichier, où les mots de passe cryptés sont stockés.

    student@ubuntu1:~$ cat /etc/shadow
    cat: /etc/shadow: Permission denied

    L’autorisation est refusée, nous ne pouvons donc pas examiner le /etc/shadow dossier. Ceci est commun à toutes les distributions pour empêcher les utilisateurs non privilégiés de voir et d’accéder aux mots de passe cryptés, ce qui permettrait d’utiliser des outils de piratage courants pour déchiffrer ces mots de passe.

    Essayons maintenant de su - enraciner.

    student@ubuntu1:~$ su -
    Password: <Enter root password – but there isn't one>
    su: Authentication failure

    Cela échoue car le compte root n’a pas de mot de passe et est verrouillé. Utilisez le sudo commande de regarder le /etc/shadow dossier.

    student@ubuntu1:~$ sudo cat /etc/shadow
    [sudo] password for student: <enter the student password>
    root:!:17595:0:99999:7:::
    <snip>
    student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
    <snip>

    J’ai tronqué les résultats pour afficher uniquement l’entrée pour les utilisateurs racine et étudiant. J’ai également raccourci le mot de passe crypté pour que l’entrée tienne sur une seule ligne. Les champs sont séparés par des deux-points (:) et le deuxième champ est le mot de passe. Notez que le champ de mot de passe pour root est un panconnu du reste du monde comme un point d’exclamation (!). Cela indique que le compte est verrouillé et qu’il ne peut pas être utilisé.

    Maintenant, tout ce que vous avez à faire pour utiliser le compte root en tant qu’administrateur système approprié est de configurer un mot de passe pour le compte root.

    student@ubuntu1:~$ sudo su -
    [sudo] password for student: <Enter password for student>
    root@ubuntu1:~# passwd root
    Enter new UNIX password: <Enter new root password>
    Retype new UNIX password: <Re-enter new root password>
    passwd: password updated successfully
    root@ubuntu1:~#

    Vous pouvez maintenant vous connecter directement sur une console en tant que root ou su directement à la racine au lieu d’utiliser sudo pour chaque commande. Bien sûr, vous pouvez simplement utiliser sudo su - chaque fois que vous voulez vous connecter en tant que root, mais pourquoi s’en soucier ?

    S’il vous plaît ne vous méprenez pas. Les distributions comme Ubuntu et leurs parents en amont et en aval sont parfaitement bien, et j’en ai utilisé plusieurs au fil des ans. Lorsque j’utilise Ubuntu et les distributions associées, l’une des premières choses que je fais est de définir un mot de passe root afin de pouvoir me connecter directement en tant que root. D’autres distributions, comme Fedora et ses proches, offrent désormais des choix intéressants lors de l’installation. La première version de Fedora où j’ai remarqué cela était Fedora 34, que j’ai installée plusieurs fois lors de l’écriture d’un livre à venir.

    L’une de ces options d’installation se trouve sur la page pour définir le mot de passe root. La nouvelle option permet à l’utilisateur de choisir “Verrouiller le compte racine” de la même manière qu’un compte racine Ubuntu est verrouillé. Il existe également une option sur cette page qui permet la connexion SSH à distance à cet hôte en tant que root à l’aide d’un mot de passe, mais cela ne fonctionne que lorsque le compte root est déverrouillé. La deuxième option se trouve sur la page qui permet la création d’un compte utilisateur non root. L’une des options de cette page est « Rendre cet utilisateur administrateur ». Lorsque cette option est cochée, l’ID utilisateur est ajouté à un groupe spécial appelé le groupe roue, qui autorise les membres de ce groupe à utiliser le sudo commande. Fedora 36 mentionne même le groupe de roues dans la description de cette case à cocher.

    Plusieurs utilisateurs non root peuvent être définis comme administrateur. Toute personne désignée comme administrateur utilisant cette méthode peut utiliser le sudo commande pour effectuer toutes les tâches administratives sur un ordinateur Linux. Linux n’autorise la création que d’un seul utilisateur non root lors de l’installation, de sorte que d’autres nouveaux utilisateurs peuvent être ajoutés au groupe wheel lors de la création. Les utilisateurs existants peuvent être ajoutés au groupe wheel par l’utilisateur root ou un autre administrateur directement en utilisant un éditeur de texte ou le usermod commande.

    Dans la plupart des cas, les administrateurs d’aujourd’hui n’ont besoin d’effectuer que quelques tâches essentielles telles que l’ajout d’une nouvelle imprimante, l’installation de mises à jour ou de nouveaux logiciels, ou la suppression de logiciels qui ne sont plus nécessaires. Ces outils GUI nécessitent un mot de passe racine ou administrateur et accepteront le mot de passe d’un utilisateur désigné comme administrateur.

    Comment j’utilise su et sudo sous Linux

    j’utilise les deux su et sudo. Ils ont chacun une place importante dans ma boîte à outils sysadmin.

    Je ne peux pas verrouiller le compte root car je dois l’utiliser pour exécuter mes playbooks Ansible et le programme rsbu Bash que j’ai écrit pour effectuer des sauvegardes. Les deux doivent être exécutés en tant que root, tout comme plusieurs autres scripts administratifs Bash que j’ai écrits. Je utilise le su commande pour basculer les utilisateurs vers l’utilisateur root afin que je puisse effectuer ces tâches et bien d’autres tâches courantes. Élever mes privilèges à root en utilisant su est particulièrement utile lors de la détermination et de la résolution des problèmes. Je ne veux vraiment pas de sudo chronométrage de session sur moi alors que je suis au milieu de mon processus de réflexion.

    Je utilise le sudo commande pour les tâches nécessitant des privilèges root lorsqu’un utilisateur non root doit les exécuter. J’ai configuré le compte non root dans le fichier sudoers avec un accès uniquement à ces une ou deux commandes nécessaires pour effectuer les tâches. j’utilise aussi sudo moi-même lorsque je n’ai besoin d’exécuter qu’une ou deux commandes rapides avec des privilèges élevés.

    conclusion

    Les outils que vous utilisez n’ont pas autant d’importance que la réalisation du travail. Quelle différence cela fait-il si vous utilisez vim ou Emacs, systemd ou SystemV, RPM ou DEB, sudo ou su? L’essentiel ici est que vous devez utiliser les outils avec lesquels vous êtes le plus à l’aise et qui fonctionnent le mieux pour vous. L’une des plus grandes forces de Linux et de l’open source est qu’il existe généralement de nombreuses options disponibles pour chaque tâche que nous devons accomplir.

    Tous les deux su et sudo ont des points forts, et les deux peuvent être sécurisés lorsqu’ils sont appliqués correctement pour leurs cas d’utilisation prévus. Je choisis d’utiliser les deux su et sudo principalement dans leurs rôles historiques parce que cela fonctionne pour moi. je préfère su pour la plupart de mon propre travail parce que cela fonctionne mieux pour moi et mon flux de travail.

    Partagez comment vous préférez travailler dans les commentaires !


    Cet article est tiré du chapitre 19 de mon livre La philosophie Linux pour les administrateurs système (Apress, 2018) et est republié avec autorisation.

    Source

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code