En quoi sudo est-il plus sûr que d’utiliser directement su si l’utilisateur est autorisé à accéder à toutes les commandes?

J’ai donc lu les différences entre l’utilisation de su et de sudo , et tout le monde semble être d’accord pour dire que l’approche sudo est plus sûre que d’autoriser l’access au compte root lui-même. Ils disent qu’avec le compte root, vous pouvez casser votre système entier avec une seule commande. Je comprends cela. MAIS l’utilisateur initial créé sur le système a également access à toutes les commandes à l’aide de sudo. Je peux le savoir en exécutant su -l . Si tel est le cas, je peux simplement exécuter sudo pour détruire mon système. Alors, comment cette approche est-elle meilleure ou plus sûre alors me permettant un access direct au compte super utilisateur? Je peux exécuter toutes les mêmes commandes …

Est-ce parce que, en utilisant sudo sur la ligne de commande, je dis explicitement à l’ordinateur que je sais savoir ce que je fais? Est-ce qu’ils pensent que les gens oublieront qu’ils sont sous le compte super utilisateur à moins qu’ils ne le disent explicitement?

Les gens affirment également que si le système était compromis et entré par une personne étrangère, être sous le compte root leur permettrait de faire des choses terribles pour mon système. Mais il me semble que s’ils ont déjà access à mon compte et connaissent mon mot de passe, ils peuvent faire la même chose en utilisant sudo et en entrant mon mot de passe car ils n’ont même pas besoin de connaître le mot de passe du super-utilisateur. Qu’est-ce que je n’arrive pas ici?

Personnellement, je ne le considère pas nécessairement comme plus sûr et la plupart des avantages (de sudo) concernent un système multi-utilisateurs. Sur un système à utilisateur unique, c’est probablement un lavage.

Les avantages sont (sans ordre particulier):

  • sudo a une journalisation supérieure. sudo enregistre chaque commande.
  • sudo permet un contrôle plus fin du grain. On peut configurer sudo pour donner un access root à certaines commandes, mais pas à toutes.
  • sudo utilise le mot de passe de connexion. Ceci évite de donner le mot de passe root (comme vous le feriez avec su) et est lié au point ci-dessus concernant le contrôle / access plus fin à la racine.
  • Dans Ubuntu, par défaut, le compte root est verrouillé. Cela dissuade les crackers de se connecter (via ssh à distance), ils doivent deviner à la fois un nom d’utilisateur et un mot de passe. Si le compte root n’est pas verrouillé, comme c’est le cas avec su, il suffit alors de déchiffrer le mot de passe de root.
  • sudo -i est probablement la meilleure méthode pour isoler les variables d’environnement de votre utilisateur. Cela revient de temps en temps mais rest modérément ésotérique. Voir https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
  • Certaines personnes estiment que le fait de taper sudo avant chaque commande à exécuter en tant qu’utilisateur root ou que le dépassement de délai sudo leur permet de s’arrêter et de réfléchir plus clairement et de réduire leurs erreurs ou l’exécution de commandes erronées. Si cela vous aide, ce serait également un avantage.

Il y a probablement plus d’avantages, mais, ce sont les principaux, à mon humble avis.

Voir aussi – https://help.ubuntu.com/community/RootSudo

Pour tenter de répondre à certaines de vos autres pensées:

  • Su ou sudo ne vous empêche de faire fonctionner du code malveillant tant que vous connaissez le mot de passe. Ni est plus sûr ou mieux.
  • Les crackers peuvent obtenir un access au shell via un certain nombre de méthodes. Lorsque vous voyez “exécuter du code arbitraire” dans une notification de sécurité – https://usn.ubuntu.com/usn/ -, cela signifie qu’un pirate informatique peut exécuter / bin / bash ou tout autre code. Ainsi, un pirate, via divers exploits, peut obtenir un access au shell sans connaître votre identifiant ni votre mot de passe. Ni sudo ni su n’aident à cela.
  • Si un cracker a un access shell, il peut faire beaucoup de dégâts sans access root. Par exemple, le ransomware qui chiffre toutes vos données personnelles.
  • Si un pirate a un access shell à un compte avec un access root, via su ou sudo, il peut obtenir un access root via un certain nombre de méthodes dépassant le cadre de cette discussion. Ni sudo ni su n’est supérieur à cet égard non plus.

Ainsi, alors que vous avez observé des problèmes ou des failles avec sudo, su a exactement les mêmes vulnérabilités et qu’il n’est pas supérieur à sudo dans ces aspects, à mon humble avis,

Imaginez que vous avez 20 minutes pour faire quelque chose de complexe. Vous avez un peu la gueule de bois et vous devez vous précipiter. “Utilisons su” vous dites. «Cela vous fera gagner du temps», tel est votre raisonnement.

Par accident vous tapez

 rm -rf /* 

au lieu de

 rm -rf ./* 

Votre système est maintenant en train de casser et il vous rest 10 minutes avant la date limite.

Si vous choisissez explicitement quand vous avez besoin de root, vous pouvez minimiser les risques que cela se produise. La racine peut ne pas être nécessaire pour rm -r ./* alors pourquoi l’utiliser? Pourquoi prendre le risque?

C’est ce que «sécurité» signifie ici. Minimiser le risque que les utilisateurs (tous les utilisateurs, pas seulement les débutants) commettent une erreur fatale.

Bien sûr, il s’agit d’un exemple extrême qui ne devrait pas être autorisé dans un environnement de production (je garantis que cela s’est déjà passé dans un environnement prod).

Du sharepoint vue de la sécurité, il y a des choses pour lesquelles sudo est préférable. Comme @Panther le dit – journalisation, ressortingctions, mot de passe root est SPOF, etc.)

Je veux append un peu de perspective historique aux autres réponses. Malheureusement, je n’ai aucune source prête, si ce n’est mes propres souvenirs de discussions Usenet et d’articles de magazines.

Il y a quelque temps, dans les années 1990, les dissortingbutions facilitaient l’installation de Linux sur votre propre matériel, même avec peu de connaissances en informatique1. Ainsi, Linux a commencé à attirer de plus en plus de personnes qui, étonnamment, n’avaient pas encore été percées comme administrateurs système. certains dialecte UN * X. À la place, beaucoup étaient habitués aux systèmes (à utilisateur unique) tels que Windows 95/98. Et ils ont appris que la plupart des tâches d’administration de système Linux obligeaient à travailler sous cet étrange compte “root”.

Ainsi, certains utilisateurs viennent de se connecter en tant que root et utilisent ce compte pour tous leurs travaux quotidiens. Pourquoi devraient-ils avoir à taper su et le mot de passe root à plusieurs resockets ou se connecter à un nouveau tty juste pour certaines commandes d’administrateur? Mais utiliser root pour tout n’est bien sûr pas une bonne idée, car vous pourriez faire beaucoup plus de tort à votre système avec une commande inconsciente au mauvais endroit. Cela a même conduit une dissortingbution (était-ce SuSE?) À modifier l’arrière-plan du bureau pour que l’utilisateur root affiche un gros avertissement vous invitant à utiliser ce compte uniquement pour les tâches administratives.

Ainsi, le mode Ubuntu avec sudo présente certains avantages (en plus de ceux déjà répertoriés par Panther ).

  • Vous ne pouvez pas vous connecter directement au compte root.² 🙂
  • Le processus d’installation ne vous demandera pas un mot de passe root (supplémentaire), vous n’avez besoin que d’un mot de passe (votre utilisateur).
  • sudo met en cache vos informations d’identification. Ainsi, pour plusieurs commandes d’administration en séquence, il vous suffit de saisir votre mot de passe une fois (contrairement à su ). Cela réduit le besoin d’ouvrir simplement un shell ou un nouveau terminal avec des privilèges root .
  • Et il est plus facile de dire aux utilisateurs en ligne et dans la documentation quelles commandes ils doivent entrer en tant qu’administrateur et lesquelles non .³

¹ Et pour ceux qui n’osent pas le faire eux-mêmes, il y avait des fêtes d’installation.
² Mais vous pouvez utiliser une commande comme sudo -i ou sudo su - root pour obtenir un shell racine après vous être connecté en tant qu’utilisateur normal.
³ Mais vous savez bien sûr que vous ne devriez pas simplement copier-coller des commandes d’Internet , non?

Il est possible de désactiver la connexion root via ssh depuis des décennies. Le moyen utilisé par Ubuntu pour désactiver le compte root et faire en sorte que tout le monde soit sudo n’est rien de plus qu’un gadget. Juste “sudo -s” et vous avez un shell racine. Désactivez la connexion root via ssh et laissez-la là.

En fonction de la configuration, sudo ne fonctionnera pas nécessairement. Bien entendu, si la configuration sudoers indique “utilisateur ALL = (ALL) ALL”, sudo n’offrira aucune protection supplémentaire. Vous pouvez toutefois spécifier une liste de commandes privilégiées que vous devez exécuter souvent, comme l’installation de nouveaux packages, et omettre des commandes dangereuses telles que rm .

De cette façon, vous pouvez exécuter toutes les commandes si vous vous connectez en tant que root , mais comme vous n’en aurez besoin que de temps en temps, le risque d’exécuter sera considérablement réduit.

Le fait que sudo vous permette de n’autoriser que certaines commandes n’est pas le seul avantage de sudo sur su.

Dans la plupart des magasins, ce n’est même pas l’avantage le plus important.

Avec sudo, vous savez qui a exécuté une commande particulière.

Maintenant, peut-être que cela n’a pas d’importance pour vous. Par exemple, vous pourriez être le seul utilisateur de votre ordinateur. Si c’est le cas, sudo n’est peut-être pas mieux que su.

Mais beaucoup d’hôtes ont plus d’un administrateur.

sudo devient alors très utile car si quelqu’un fait la mauvaise chose, sudo vous permet de savoir qui l’a fait.

Cela vous permet de comprendre pourquoi des erreurs se sont produites et d’éduquer les utilisateurs afin qu’ils ne se reproduisent plus ou, si nécessaire, de retirer les outils de quelqu’un.

En prime, lorsque les gens savent que leurs actions sont enregistrées, ils sont souvent un peu plus prudents.

Sudo n’est pas parfait.

Si deux personnes font “sudo sh” en même temps, il peut être difficile d’atsortingbuer des commandes à l’une ou à l’autre.

Et un administrateur malveillant peut toujours supprimer ou modifier les journaux – bien que le faire proprement ne soit pas toujours aussi facile qu’on le pense, en particulier si vous avez une journalisation centralisée.

sudo n’arrête pas nécessairement une action stupide ou malveillante, pour toutes les raisons identifiées dans la question initiale.

Mais cela vous donne une bien meilleure chance d’éviter une récidive.