J'ai donc lu les différences entre utiliser su
et sudo
, et tout le monde semble être d'accord pour dire que l' sudo
approche est plus sûre que de permettre l'accès 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 accès à toutes les commandes à l'aide de sudo. Je peux le savoir en courant su -l
. Si tel est le cas, je peux simplement courir sudo <game-ending command>
pour ruiner mon système. Alors, comment cette approche est-elle meilleure ou plus sûre alors me permettant un accès direct au compte super utilisateur? Je peux exécuter toutes les mêmes commandes ...
Est-ce parce que, en utilisant sudo
la ligne de commande, je dis explicitement à l'ordinateur que je pense savoir ce que je fais? Pensent-ils 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à accès à mon compte et connaissent mon mot de passe, ils peuvent faire les mêmes choses terribles 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?
la source
Réponses:
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 -i
est probablement la meilleure méthode pour isoler les variables d’environnement de votre utilisateur. Cela revient de temps en temps mais est modérément ésotérique. Voir https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shellsIl y a probablement plus d'avantages, mais, ce sont les principaux, à mon humble avis.
Voir aussi - https://help.ubuntu.com/community/RootSudo
Pour essayer de répondre à certaines de vos autres pensées:
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-là, à mon humble avis,
la source
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
au lieu de
Votre système est en train de casser et vous avez 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 n'est peut-être pas nécessaire,
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 point de vue de la sécurité, il y a des choses pour lesquelles sudo est préférable. Comme @Panther le dit - journalisation, restrictions, mot de passe root est SPOF, etc.)
la source
chown -R nobody:nobody /
ou même enchown -R nobody ../
tant que root.chmod
Bien sûr, a des problèmes similaires aussi en mode récursif. Mais le mieux est que vous ne deviez être root que lorsque vous en avez besoin; moins vous aurez de privilèges de connexion, meilleur sera votre utilisation normale.sudo
? Vous écrivezsudo rm -rf /*
au lieu desudo rm -rf ./*
et boum à nouveau.sudo rm -rf ./*
. Vous avez probablement un accès en écriture aux éléments du répertoire en cours, vous n'avez donc pas besoin de sudo pour cette commande. Ainsi , les extrémités de commande typoed jusqu'à êtrerm -rf /*
, ce qui donne une longue série de « Permission denied » messages, vous indiquant que vous devezctrl-c
avant qu'il arrive à des choses que vous pouvez réellement supprimer, au lieu de simplement supprimer tout/bin
,/boot
,/dev
et la moitié/etc
avant vous réalisez même que quelque chose ne va pas.Je veux ajouter 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 distributions facilitaient l'installation de Linux sur votre propre matériel, même avec peu de connaissances en informatique¹. Ainsi, Linux a commencé à attirer de plus en plus de personnes qui, étonnamment, n'avaient pas encore été percées en tant qu'administrateurs système. certains dialecte UN * X. À la place, beaucoup étaient habitués à des systèmes (utilisateur unique) tels que Windows 95/98. Et ils ont appris que la plupart des tâches d’administration du 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 reprises 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 distribution (é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, la méthode Ubuntu
sudo
présente certains avantages (en plus de ceux déjà répertoriés par Panther ).sudo
met en cache vos informations d'identification. Ainsi, pour plusieurs commandes d'administration en séquence, il vous suffit d'entrer 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 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 telle que
sudo -i
ousudo su - root
pour obtenir un shell root 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?
la source
sudo su -
ousudo su - root
? Parce que j'ai vu des affirmations similaires, par exemple que MacOS X n'a pas de racine mais c'est complètement faux quand il suffit de faire la première commande ...root
et un mot de passe à l'invite de connexion ou dans la boîte de dialogue de connexion X et démarrer votre session en tant que root. Mais vous pouvez utiliser une de vos commandes (je préfèresudo -i
car elle est plus courte et que je suis paresseuse) pour obtenir un shell root.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 root. Désactivez la connexion root via ssh et laissez-la là.
la source
Selon la configuration,
sudo <game ending command>
ne fonctionnera pas nécessairement. Bien entendu, si lasudoers
configuration indique "utilisateur ALL = (ALL) ALL",sudo
aucune protection supplémentaire ne sera offerte. 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 querm
.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écution<game ending command>
sera considérablement réduit.la source
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 sont survenues 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'attribuer des commandes à l'une ou à l'autre.
Et un administrateur malveillant peut toujours supprimer ou éditer des journaux - bien que le faire proprement ne soit pas toujours aussi facile qu'on le pense, surtout 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.
la source
sudo
tout est permis. Bien sûr, vous pouvez le configurer pour limiter les commandes qu'un utilisateur est autorisé à exécuter, mais je ne pense pas que ce soit le cas dans la question posée.