Quels sont les avantages de sudo sur su?

19

Quel est l'avantage réel qu'Ubuntu (ou dérivés Debian) permet de désactiver en tant qu'utilisateur root?

Partout où je lis, il est dit de prévenir les dommages involontaires pour les utilisateurs inexpérimentés. Je veux savoir quoi exactement, car sudoje peux exécuter toutes les commandes (que je connais / utilise).

Alors, dans quel cas la racine peut causer des dommages alors que sudonon?

PS: je sais comment ça sudomarche.

Web-E
la source

Réponses:

31

Alors, dans quel cas root peut causer des dommages alors que sudo ne le peut pas?

Comme vous devez généralement invoquer sudochaque fois que vous voulez faire quelque chose qui nécessite des privilèges, le raisonnement est que vous "penserez avant de sauter", c'est-à-dire que vous ne placerez pas simplement sudo devant quelque chose sans penser une seconde à la commande que vous exécutez. va faire.

Avec sud'autre part, une fois que vous êtes dedans, vous êtes dedans. Vous avez carte blanche (une licence ouverte) pour faire n'importe quoi et tout, et le raisonnement est que vous pourriez oublier un instant que vous avez ces privilèges et si vous 'est malchanceux, exécutez quelque chose qui affectera / endommagera gravement votre système - si vous n'aviez pas de privilèges, la commande n'aurait rien fait de grave.

ish
la source
8
La logique "penser avant de sauter" est aussi naïve que de penser que les utilisateurs s'arrêteront de penser lorsqu'ils verront apparaître une boîte de dialogue qui dit "Voulez-vous vraiment installer TrashTheComputer.Virus: oui / non?" permettra de réduire les taux d'infection de logiciels malveillants.
Dan Neely
9
@DanNeely - Je ne pense pas. Je tape beaucoup de commandes, et la plupart d'entre elles ne nécessitent pas sudo, donc je ne les utilise pas. Quand je l'utilise, cela me donne un moment de pause. Oui, je parle en tant que programmeur, pas en tant qu'utilisateur moyen, mais là encore, les utilisateurs moyens n'utilisent pas la ligne de commande.
Nathan Long
2
@NathanLong n'est pas tout à fait vrai avec Linux, la raison pour laquelle cette question existe montre un "utilisateur moyen" ne comprenant pas pourquoi utiliser sudoplus su. Trop souvent, les gens disent "utilisez sudo parce que c'est plus sûr que su" - ce qui est naïf de penser car ce n'est pas du tout plus sûr. Pour oublier que vous avez utilisé sun'est pas une excuse, c'est juste une incompétence en bas à droite si vous exécutez une commande en tant que root accidentellement.
ash
1
@ash Je dis toujours qu'un utilisateur moyen ne se poserait pas de questions sur les implications comparatives en matière de sécurité de deux méthodes d'augmentation des privilèges des utilisateurs. En fait, OP a des questions sur StackOverflow. Mais OP mis à part, se souvenir de ce que vous avez fait il y a 15 secondes est plus facile que de vous souvenir de ce que vous avez fait hier, et vous pourriez facilement avoir une session de terminal s'étalant sur plusieurs jours. Alors oui, c'est à vous de ne pas oublier quand vous l'utilisez su, mais personnellement, je préfère ne pas installer de bombes plutôt que de penser que je me souviendrai de les désarmer.
Nathan Long
16

IMO les principaux avantages de sudo par rapport à su sont que sudo a une journalisation supérieure des commandes qui ont été exécutées et sudo donne un contrôle plus fin sur ce que les utilisateurs peuvent faire.

su est tout ou rien, mais sudo peut être configuré pour autoriser l'accès à certaines commandes, mais pas à toutes.

Voir https://help.ubuntu.com/community/RootSudo pour une discussion plus complète, y compris les avantages et les inconvénients.

Panthère
la source
11

su -

Lorsque vous êtes connecté en tant que root , toute tâche que vous démarrez, action que vous déclenchez ou événement aléatoire provoqué par la visite d'un certain site Web, etc. s'exécutera en tant que super-utilisateur .

sudo

Lorsque vous appelez sudo , lorsque vous exécutez une commande, seule cette commande s'exécutera en tant que super-utilisateur .

Il vous sera demandé votre mot de passe avant l'exécution de la commande. L'interaction de l' utilisateur est donc également nécessaire .

Les tentatives d'invocation de sudo peuvent également être enregistrées .

david6
la source
2
En effet, il demande le mot de passe de l'utilisateur actuel, ce qui facilite la gestion du mot de passe root. Si un compte est supprimé du système, le mot de passe root n'a pas besoin d'être réinitialisé. Encore mieux, le compte root ne nécessite même pas de mot de passe, donc le compte root ne peut pas être compromis par le forçage brut.
jippie
Les bonnes pratiques générales @jippie stipulent de supprimer / bloquer / invalider le mot de passe root et de n'autoriser l'accès que via sudo su. tandis que le trait d'union -est un indicateur accepté par suet traite votre shell comme si vous vous étiez connecté en tant qu'utilisateur (exécute un ensemble différent de fichiers d'environnement, par exemple .bashrc / .profile)
ash
3

Il s'agit de la gestion des utilisateurs / mots de passe pour les administrateurs système.

Si vous avez plusieurs utilisateurs, ils doivent tous avoir des comptes distincts et doivent pouvoir être suivis à l'aide de ces comptes. Cela signifie que les gens ne peuvent pas cacher leur identité. De plus, si vous devez révoquer des autorisations d'utilisateurs spécifiques, vous n'avez pas non plus à réinitialiser le mot de passe root. Pour donner à chaque personne dans un environnement avec plus de 2 administrateurs, le mot de passe root fait un cauchemar quand une personne quitte. Vous devez non seulement le changer, mais le communiquer, etc. Un compte avec un mot de passe par personne simplifie l'administration. Il est similaire à la philosophie derrière laquelle chaque service devrait avoir son propre compte. Si un compte est compromis, vous n'avez pas à reconfigurer une autre douzaine de services (tels que des tâches de sauvegarde) pour utiliser un autre compte.

Je trouve également personnellement pratique de ne pas avoir encore un autre mot de passe à suivre, à perdre et à compromettre. Sur RHEL, je désactive spécifiquement le compte root après avoir configuré sudo, je n'ai donc pas à le suivre. De temps en temps, un utilisateur exécute le fichier sudo, mais cela peut être résolu en mode mono-utilisateur. (Naturellement, il s'agit généralement d'une machine de production.)

REMARQUE: 'sudo bash' vous permettra d'ignorer la saisie de sudo pour chaque commande ...

flickerfly
la source
J'ai toujours sudo mc: D
Rony
La seule réponse ici digne d'un vote positif, répond clairement à la question sans désambiguïser la question ou induire les gens en erreur dans un faux sens sur l'information.
ash
@flickerfly, je crois que dans "réinitialiser le mot de passe root pour ce même utilisateur" le "pour ce même utilisateur" devrait être supprimé - il sera plus précis de cette façon.
Richlv
@Richlv, vous avez raison. J'ai fait la modification que vous avez suggérée. Je ne sais pas ce que je voulais là-bas.
flickerfly le
2

Je pense d'abord que nous devons examiner ce que sont réellement su et sudo

su - signifie Substitute User. Vous l'utilisez pour basculer vers un shell en tant qu'autre utilisateur à l'aide du mot de passe de cet utilisateur. Couramment utilisé avec root. Ne nécessite pas de mot de passe lorsqu'il est exécuté en tant que root.

sudo - permet à un utilisateur autorisé d'exécuter une commande spécifiée en tant qu'autre utilisateur. Également couramment utilisé avec root. Cependant, cela vous permet de gérer spécifiquement quelles commandes peuvent être exécutées comme une autre utilisation. (Par exemple, vous pouvez donner à un utilisateur la possibilité d'exécuter un script init.d mais rien d'autre.)

Notez que vous pouvez toujours exécuter sudo suou sudo -iet cela vous donnera un shell racine. Cependant, aucun mot de passe root ne signifie aucune connexion directe en tant que root ... ce qui signifie que personne ne peut pénétrer cet utilisateur.

EDIT: alors peut-être que cette réponse que vous recherchez est: ne pas avoir de mot de passe root vous oblige à utiliser sudo, ce qui à son tour vous aligne naturellement avec la sudophilosophie qui vous suggère d'appliquer un plus grand contrôle sur les actions exécutées en tant que root.

user606723
la source
J'ai écrit cela moi-même ....
user606723
2

De plus, il y a des considérations de journalisation à considérer entre sudo et su. Être su fait simplement tout en tant que root sans entrée autre qu'une ligne dans le journal d'authentification indiquant que vous êtes devenu root.

Sudo, d'autre part - est toujours connecté en tant que votre ID utilisateur avec une augmentation des privilèges.

kd1s
la source
0

Habituellement, la connexion en tant que su est plus facile lors de l'exécution de tâches administratives. Cependant, il existe au moins une exception: lorsque la propriété du fichier est importante. Si vous avez besoin qu'un utilisateur soit le propriétaire d'un fichier, connectez-vous en tant qu'utilisateur et utilisez sudo pour télécharger ou copier des fichiers. Des exemples simples sont les fichiers de signets et de papier peint. Si un utilisateur n'est pas propriétaire du fichier, les signets "Restaurer" de Firefox "À partir du fichier" échoueront. Lorsque vous définissez un fond d'écran, il peut ne fonctionner que si vous êtes propriétaire du fichier. Parfois, vous pouvez simplement définir des privilèges ou activer en tant que fichier exécutable, mais certains paramètres ou programmes échouent si vous n'êtes pas le propriétaire d'un fichier.

DotheMath45
la source
Vous vous connectez en tant que root et utilisez Firefox pour naviguer sur le Web? Je pense que c'est la raison de la désactivation du compte root. Il élimine la possibilité de se connecter simplement en tant que root pour une utilisation quotidienne.
adempewolff