Sudo peut-il être réinstallé après avoir été retiré?

61

Cela semble être un problème d'œuf de poule. La tâche la plus courante sudoconsiste à installer et à supprimer des logiciels.

sudo apt-get purge <appname>

Mais sudolui-même peut être enlevé.

sudo apt-get purge sudo # Do not run this command on production computers!

C'est là que le plaisir vient

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Bien qu'il soit évident qu'aucune personne sensée ne se purge sudo(autre que moi), quelqu'un peut être dupé d'exécuter cette commande (pas directement, en mode hexagonal ou quoi que ce soit appelé) ou une personne pourrait SSH déguisée en gourou de la technologie et faire le désordre .

Alors, y a-t-il un moyen de réinstaller sudo?

Utilisateur enregistré
la source
3
bon je n'ai même jamais su sudo pourrait purgé aussi! linux est tellement personnalisable!
user247696
Cela ne vaut vraiment pas la peine d'être répondu, car il serait trop tard si cela se produisait, mais rien ne vous empêche de définir un mot de passe pour l' rootutilisateur. Vous pouvez ensuite utiliser suou vous connecter directement en tant que root si vous avez un accès physique à la machine (ssh sera généralement configuré pour refuser les tentatives de connexion en tant que root).
IMSoP
Toutes les réponses dépendent d'un moyen d'accéder au système de fichiers avec des privilèges. Pour (compteur) exemple: mon Android Asus Memopad n’a pas sudoet n’a pas de «démarrage sécurisé» ou l’équivalent. Le seul moyen que je connaisse est d’aller dans le xda-devpaquet d’installation complet pré-construit. Vous avez de la chance, pour ainsi dire, de ne pas avoir cette limitation.
Carl Witthoft
@CarlWitthoft Android est un dérivé de Linux, plutôt qu’une distribution Linux. Google a également apporté de nombreux changements (que la plupart des fans de Linux détestent). L'enracinement , qui est bien connu sur les smartphones Android, n'est rien d'autre qu'une tentative de gagner les pouvoirs du vrai Linux sur Android.
Utilisateur enregistré le
4
Ne pouvez-vous pas simplement vous connecter en tant que root?
Konrad Höffner

Réponses:

56

Je peux installer des applications en utilisant:

pkexec apt-get install <appname>

De man pkexec:

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.

Donc, je suppose que cela pkexec apt-get install sudodevrait fonctionner aussi bien.


Edit : maintenant je peux confirmer: oui , sudopeut être installé en utilisant pkexec apt-get install sudo:

réinstaller sudo

( cliquez pour agrandir )

Radu Rădeanu
la source
@RaduRadeanu Ceci est intéressant, je vais essayer ceci merci ......
Premkumar
@Premkumar Testez-le avec précaution! La dernière commande du tournage de l' écran devrait être probablement dans votre cas seulement: sudo apt-get install gksu ubuntu-minimal. Mais mieux, vérifiez quels paquets ont été supprimés dans le même temps avec sudo.
Radu Rădeanu
5
@Thebluefish Le package est appelé policykit-1(à partir de 12.04). Il peut être supprimé, mais aux dépens de la suppression des packages que vous souhaiteriez généralement sur un système de bureau tel que gnome-coreet ubuntu-desktop(sur un serveur, il est plus probable que rien ne soit requis par un package nécessaire). Cependant, Radu, qu'est-ce qui détermine que votre compte peut utiliser pkexec apt-get …? Est-ce quelque chose que vous avez configuré, ou est-ce que cela se produit automatiquement, et si oui, qu'est-ce qui détermine qu'un compte peut le faire?
Gilles 'SO- arrête d'être méchant'
1
@ Gilles Je ne me souviens pas d'avoir fait certaines configurations dans ce sens dans le passé. Donc, je suppose que cela se produit automatiquement. Si vous savez ce qui détermine qu'un compte peut le faire, partagez-le; c'est en dehors de mon domaine d'expertise.
Radu Rădeanu
2
@ Gilles je pense que les membres du sudogroupe peuvent utiliser pkexec. (Mon expérience est que l' ajout d' utilisateurs à ce groupe confère des pkexeccapacités et les en retirer supprime les pkexeccapacités, de cette façon, les pkexeccapacités semblent conférer le même était que les sudocapacités de la valeur par défaut sudoersconfig, ce qui est logique puisque pouvoir sudoet en pkexectant que root sont principalement ce qui fait d’un utilisateur un administrateur dans Ubuntu.) Je ne pense pas que la désinstallation sudosupprime le sudogroupe. Mais je ne suis pas tout à fait sûr que mes suppositions soient vraies dans toutes les circonstances raisonnables.
Eliah Kagan
29

Vous pouvez toujours démarrer en mode de récupération , accéder au shell root et l’installer sans sudo.

Vojtech Trefny
la source
16
pouvez-vous ajouter la partie essentielle et pertinente du lien ici?
Utilisateur enregistré
S'il n'y a pas de récupération disponible dans le menu de démarrage grub, appuyez sur <kbd> e </ kbd> et ajoutez `single` à la ligne de démarrage. Ensuite, lors du démarrage, définissez un mot de passe root à l'aide de passwd. Redémarrez normalement, en ligne de commande, entrez susuivi du nouveau mot de passe, puis lancez apt-get install sudo(sans le sudopréfixe)
ExploWare
1
Comment avez-vous obtenu une connexion Internet sur le shell root?
Avinash Raj
22

Oui, la réinstallation du sudopaquet serait possible via la méthode chroot .

  • Premier démarrage à partir du disque live Ubuntu.

  • Montez la partition Ubuntu précédemment installée dans le répertoire de votre choix. Dans mon cas, je l’ai montée /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Par défaut, vous ne pouvez pas obtenir de connexion Internet après avoir été chrooté dans une partition. Alors, exécutez la commande ci-dessous pour que cela fonctionne.

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

Merci à @ Oli pour ce merveilleux morceau de code.

  • Maintenant, chrootez dans ce répertoire monté,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Installer le sudopaquet en cours d'exécution,

    # apt-get install sudo
    
  • Quittez maintenant l'environnement chrooté.

    exit
    
  • Enfin, démarrez votre système d'exploitation Ubuntu.Maintenant, testez votre sudocommande, elle fonctionnera sûrement.

Avinash Raj
la source
4

Démarrez avec le paramètre supplémentaire init=/bin/shsur la ligne de commande du noyau. Cela vous mettra directement dans un shell racine, à partir duquel vous pourrez simplement exécuter apt-get install sudo, puis redémarrer. Vous devrez peut-être exécuter /etc/init.d/networking startpour obtenir une connexion réseau opérationnelle en premier. Beaucoup plus simple que de jouer avec des CD de récupération ou des disques live, si vous me le demandez.

Jules
la source
1

Si vous avez déjà défini ou mis à jour le rootmot de passe du compte utilisateur à l'aide de cette commande, sudo passwd rootvous n'avez pas à vous soucier de la purge. sudoConnectez- vous simplement à votre rootcompte, puis installez-le sudo.

su
apt-get install sudo

entrez la description de l'image ici

Cliquez ici pour agrandir

Avinash Raj
la source
cela fonctionne si le compte root est activé, et sous Ubuntu, il est généralement désactivé. susur mon ordinateur donne "su: échec d'authentification", bien que j'ai fourni le mot de passe correct
mardi
oui, vous avez raison, c'est ce que j'ai dit. Si vous avez déjà mis à jour le mot de passe du compte utilisateur root, ne vous inquiétez pas pour la purge. sudoMaintenant, essayez ceci sudo passwd root, il vous permettra de mettre à jour le mot de passe du compte utilisateur root.Now relogin dans votre compte root en exécutant commande.Une fois que suvous pouvez vous connecter, vous serez libre de purger sudo.Maintenant purge sudo par sudo apt-get purge sudo.Connectez-vous à votre compte root pour réinstaller le paquet sudo en exécutant suetapt-get install sudo
Avinash Raj
-1

sudo (et tout autre privilège racine) ne s'applique qu'au système d'exploitation en cours d'exécution. Si vous avez été stupide et que vous avez supprimé sudo (ou / usr /) et que vous n'avez pas de substituts comme pkexec, vous pouvez simplement démarrer à partir de quelque chose d'autre, copier le logiciel manquant et redémarrer à nouveau.

L'accès physique annule toute sécurité logicielle que votre système peut avoir.

Paul
la source
Je recommande de développer cela pour expliquer ce que vous entendez par "copier le logiciel existant".
Eliah Kagan
Pas un moyen très facile de résoudre ce problème.
Seth
@Seth sans intervention op Je doute fort qu'il puisse être corrigé sans écrire une autre réponse.
Braiam
Eh bien, la meilleure façon de le faire serait d’être chroot, mais il existe tellement de manières moins barbares. Par exemple, en vous connectant en tant que root (à la manière NORMAL) ou, si vous n'avez pas de mot de passe root, définissez simplement init = / bin / bash en tant que paramètre du noyau, et vous transmettez l'ensemble du système init, y compris l'authentification de connexion.
orion
-2

Ce problème semble être très spécifique à Ubuntu. En tant qu'utilisateur non-ubuntu, je ne comprenais même pas au début pourquoi sudo serait de toute façon un cas particulier (de nombreuses distributions ne l'installent pas par défaut).

Vous n'avez pas du tout besoin de sudo. C'est juste un raccourci paresseux qui vous permet d'exécuter une commande racine sans vous connecter réellement en tant que root. Cependant, si vous devez faire autre chose qu'une seule commande, il est simplement horrible de toujours préfixer tout avec sudo. Sans oublier que l'utilisation sudorend les utilisateurs ignorants du fonctionnement des autorisations et du compte root. Il est beaucoup plus logique de simplement vous connecter en tant que root, d’administrer le système et de vous déconnecter. C'est ce que vous faites susi vous êtes déjà connecté en tant qu'utilisateur régulier. Ou vous pouvez vous connecter directement en tant que root.

Bien sûr, vous devez rootdéfinir un mot de passe, c’est une configuration raisonnable. Sinon, vous disposez d’un système semblable à celui de Windows où certaines actions ne peuvent pas être exécutées et vous êtes réellement verrouillé si vous n’êtes sudopas disponible (cela nécessite de travailler /etc/, définir $PATHet d’autres tâches). choses montées - que vous pouvez ne pas avoir si quelque chose ne va pas au début du démarrage).

orion
la source
Cela peut être une information utile, mais cela ne répond pas à la question.
Luís de Sousa
En effet. Ce n'est vraiment pas pertinent pour un système où le mot de passe de root est désactivé et que sudo est installé par défaut. Et si vous regardez les autres réponses, vous verrez que le dernier paragraphe n'est pas vrai non plus.
Oli
Un utilisateur qui envisage de supprimer sudod'ubuntu devrait également envisager de définir le mot de passe root (d'autres questions ont indiqué comment procéder). Un utilisateur qui se fiche de ce genre de choses peut continuer à utiliser sudo.
orion