Kann sudo nach dem Entfernen erneut installiert werden?

61

Dies scheint ein Hühnerei-Problem zu sein. Die häufigste Aufgabe sudoist das Installieren und Entfernen von Software.

sudo apt-get purge <appname>

Aber sudoselbst kann entfernt werden.

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

Hier kommt der Spaß

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

Obwohl es offensichtlich ist, dass niemand, der bei Verstand ist sudo(außer mir), säubern wird, kann jemand getäuscht werden , diesen Befehl auszuführen (nicht direkt, in seinem Hex-Modus oder wie auch immer er heißt), oder eine Person könnte als Tech-Guru verkleidet SSH durchführen und mach das Chaos .

Gibt es eine Möglichkeit, sudo neu zu installieren?

registrierter Nutzer
quelle
3
gut, ich hätte nie gedacht, dass sudo auch bereinigt werden kann! Linux ist einfach so verdammt anpassbar!
user247696
Keine wirklich wertvolle Antwort, da es zu spät wäre, wenn dies passieren würde, aber nichts hindert Sie daran, ein Passwort für den rootBenutzer festzulegen. Sie können dann verwenden suoder sich direkt als root anmelden, wenn Sie physischen Zugriff auf den Computer haben (ssh ist im Allgemeinen so konfiguriert, dass Anmeldeversuche als root abgelehnt werden).
IMSoP
Alle Antworten hängen von der Art des Zugriffs auf das Dateisystem mit Berechtigungen ab. Zum (Gegen-) Beispiel: Mein Android-Asus-Memopad sudohat keinen "Safe Boot" oder ähnliches . Die einzige Möglichkeit, die mir bekannt ist, besteht darin, auf das xda-devvorgefertigte vollständige Installationspaket zuzugreifen. Sie haben sozusagen Glück, dass Sie diese Einschränkung nicht haben.
Carl Witthoft
@CarlWitthoft Android ist ein Linux-Derivat, als tatsächlich eine Linux-Distribution zu sein. Auch Google hat viele Änderungen daran vorgenommen (was die meisten Linux-Fans hassen). Das auf Android-Smartphones bekannte Rooting ist nichts anderes als der Versuch, die Möglichkeiten von echtem Linux auf Android zu nutzen.
Registrierter Benutzer
4
Kannst du dich nicht einfach als root anmelden?
Konrad Höffner

Antworten:

56

Ich kann Anwendungen installieren mit:

pkexec apt-get install <appname>

Von 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.

Also, ich denke, das pkexec apt-get install sudosollte auch funktionieren.


Bearbeiten : Jetzt kann ich bestätigen: Ja , sudokann installiert werden mit pkexec apt-get install sudo:

Installieren Sie sudo neu

( zum Vergrößern anklicken )

Radu Rădeanu
quelle
@ RaduRadeanu Dies ist interessant, ich werde dies versuchen, danke u ......
Premkumar
@Premkumar Mit Vorsicht testen! Der letzte Befehl vom Bildschirm schießen sollte in Ihrem Fall wohl nur: sudo apt-get install gksu ubuntu-minimal. Aber besser, überprüfen Sie, welche Pakete gleichzeitig mit entfernt wurden sudo.
Radu Rădeanu
5
@Thebluefish Das Paket heißt policykit-1(Stand 12.04). Es kann entfernt werden, aber auf Kosten des Entfernens von Paketen, die normalerweise auf einem Desktop-System wie gnome-coreund ubuntu-desktopgewünscht werden (auf einem Server wird es wahrscheinlich von keinem erforderlichen Paket benötigt). Aber, Radu, was bestimmt, dass Ihr Konto verwenden kann pkexec apt-get …? Ist dies etwas, das Sie konfiguriert haben, oder geschieht es automatisch, und wenn ja, was bestimmt, dass ein Konto dies kann?
Gilles 'SO - hör auf böse zu sein'
1
@ Gilles Ich erinnere mich nicht, dass ich in der Vergangenheit einige Konfigurationen in diesem Sinne vorgenommen habe. Also, ich nehme an, das passiert automatisch. Wenn Sie wissen, was bestimmt, dass ein Konto dies kann, teilen Sie uns dies bitte mit. Das liegt außerhalb meines Fachgebiets.
Radu Rădeanu
2
@ Gilles Ich denke, Mitglieder der sudoGruppe können verwenden pkexec. (Ich habe die Erfahrung gemacht, dass das Hinzufügen von Benutzern zu dieser Gruppe pkexecFähigkeiten verleiht und das Entfernen von Benutzern von dieser Gruppe Fähigkeiten entfernt pkexec. Auf diese Weise pkexecscheinen sudoFähigkeiten wie Fähigkeiten in der Standardkonfiguration verliehen zu werden sudoers, was sinnvoll ist, da sie in der Lage sudound pkexecals Root sind Ich glaube nicht, dass eine Deinstallation sudodie sudoGruppe entfernen wird . Aber ich bin nicht ganz sicher , meine Vermutungen unter allen vernünftigen Umständen wahr sind.
Eliah Kagan
29

Sie können jederzeit in den Wiederherstellungsmodus booten , zur Root-Shell wechseln und diese ohne sudo installieren.

Vojtech Trefny
quelle
16
Können Sie den wesentlichen und relevanten Teil über den Link hier hinzufügen?
Registrierter Benutzer
Wenn im Grub-Boot-Menü keine Wiederherstellung verfügbar ist, drücken Sie <kbd> e </ kbd> und fügen Sie der Boot-Zeile "single" hinzu. Legen Sie dann beim Booten mit ein root-Passwort fest passwd. Starten Sie normaly, auf der Kommandozeile eingeben sudurch das neue Passwort gefolgt, und Lauf apt-get install sudo(ohne sudo-prefix)
ExploWare
1
Wie haben Sie eine Internetverbindung über die Root-Shell erhalten?
Avinash Raj
22

Ja, eine Neuinstallation des sudoPakets wäre über die Chroot- Methode möglich.

  • Booten Sie zuerst von Ubuntu Live Disk.

  • Mounten Sie die zuvor installierte Ubuntu-Partition in ein beliebiges Verzeichnis. In meinem Fall habe ich sie gemountet /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Standardmäßig konnten Sie nach dem Chrooten in eine Partition keine Internetverbindung herstellen. Führen Sie dazu den folgenden Befehl aus.

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

Vielen Dank an @Oli für diesen wunderbaren Code.

  • Nun chroot in das gemountete Verzeichnis,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Installieren Sie das sudoPaket, indem Sie

    # apt-get install sudo
    
  • Verlasse jetzt die chrooted Umgebung.

    exit
    
  • Schließlich booten Sie Ihr Ubuntu OS. Testen Sie jetzt Ihren sudoBefehl, es wird sicherlich funktionieren.

Avinash Raj
quelle
4

Booten Sie mit dem zusätzlichen Parameter init=/bin/shin der Kernel-Befehlszeile. Dadurch gelangen Sie direkt in eine Root-Shell, von der aus Sie einfach starten apt-get install sudound neu starten können . Möglicherweise müssen Sie zuerst ausführen /etc/init.d/networking start, um eine funktionierende Netzwerkverbindung herzustellen. Weitaus einfacher als mit Wiederherstellungs-CDs oder Live-Disks herumzuspielen, wenn Sie mich fragen.

Jules
quelle
1

Wenn Sie das rootKennwort für das Benutzerkonto bereits mit diesem Befehl festgelegt oder aktualisiert sudo passwd roothaben, müssen Sie sich nicht um das sudoLöschen kümmern. Melden Sie sich einfach bei Ihrem rootKonto an und installieren Sie es sudo.

su
apt-get install sudo

Bildbeschreibung hier eingeben

Klicken Sie hier zum Vergrößern

Avinash Raj
quelle
Dies funktioniert, wenn das Root-Konto aktiviert ist und unter Ubuntu normalerweise deaktiviert ist. suauf meinem PC gibt "su: Authentifizierungsfehler", obwohl ich das richtige Passwort angegeben habe
BЈовић
Ja, Sie haben Recht, das habe ich gesagt. Wenn Sie das Kennwort für das Root-Benutzerkonto bereits aktualisiert haben, müssen Sie sich keine Gedanken über das sudoLöschen machen. Versuchen Sie dies jetzt, damit Sie das Kennwort für das Root-Benutzerkonto aktualisieren können. Melden Sie sich sudo passwd rootjetzt erneut in Ihrem Root-Konto an indem Sie sucommand.Once Sie können dann anmelden werden Sie frei, sudo.Now Säuberung sudo durch spülen sudo apt-get purge sudo.login in Ihrem root - Account sudo - Paket neu zu installieren , indem Sie suundapt-get install sudo
Avinash Raj
-1

sudo (und alle anderen root-Rechte) gelten nur für das laufende Betriebssystem. Wenn Sie albern waren und sudo (oder / usr /) entfernt haben und keine Alternativen wie pkexec haben, können Sie einfach von etwas anderem booten, die fehlende Software kopieren und erneut starten.

Durch den physischen Zugriff wird die Software-Sicherheit Ihres Systems aufgehoben.

paul
quelle
Ich empfehle, dies zu erweitern, um zu erklären, was Sie unter "Kopieren der vorhandenen Software" verstehen.
Eliah Kagan
Es ist jedoch keine einfache Möglichkeit, das Problem zu beheben.
Seth
Ich bezweifle ernsthaft, dass dies behoben werden kann, ohne eine weitere Antwort zu schreiben.
Braiam
Nun, der richtige Weg, das zu tun, wäre Chroot, aber es gibt so viele weniger barbarische Wege. Zum Beispiel, wenn Sie sich als root anmelden (auf NORMALE Weise) oder wenn Sie irgendwie kein root-Passwort haben, setzen Sie einfach init = / bin / bash als Kernel-Parameter und Sie übergeben das gesamte init-System einschließlich der Login-Authentifizierung.
Orion
-2

Dieses Problem scheint sehr Ubuntu-spezifisch zu sein. Als Nicht-Ubuntu-Benutzer verstand ich zunächst nicht einmal, warum sudo in irgendeiner Weise ein Sonderfall ist (viele Distributionen installieren es standardmäßig nicht).

Sie brauchen überhaupt kein sudo. Es ist nur eine faule Verknüpfung, mit der Sie einen root-Befehl ausführen können, ohne sich tatsächlich als root anzumelden. Wenn Sie jedoch mehr als nur einen Befehl ausführen müssen, ist es schrecklich, ständig sudo als Präfix zu setzen. Ganz zu schweigen davon, sudodass Benutzer bei der Verwendung von ignorieren, wie Berechtigungen und Root-Konten funktionieren. Es ist viel sinnvoller, sich nur als root anzumelden, das System zu administrieren und sich abzumelden. Das machst du, suwenn du bereits als normaler Benutzer angemeldet bist. Oder Sie können sich direkt als root anmelden.

Natürlich müssen Sie ein rootPasswort setzen, das ist die angemessene Konfiguration, ansonsten haben Sie ein Windows-ähnliches System, in dem es Aktionen gibt, die niemand ausführen kann, und Sie sind wirklich gesperrt, wenn es irgendwie sudonicht verfügbar ist (es erfordert das Arbeiten /etc/, Setzen $PATHund anderes) Dinge montiert - die Sie möglicherweise nicht haben, wenn etwas früh im Boot schief geht).

orion
quelle
Dies kann eine nützliche Information sein, die jedoch die Frage nicht beantwortet.
Luís de Sousa
Tatsächlich. Das ist wirklich nicht so relevant für ein System , in dem root-Passwort ist deaktiviert und sudo wird standardmäßig installiert. Und wenn Sie sich die anderen Antworten ansehen, werden Sie feststellen, dass der letzte Absatz auch nicht wahr ist.
Oli
Ein Benutzer, der das Entfernen sudoaus Ubuntu in Betracht zieht, sollte auch das root-Passwort festlegen (andere Fragen wiesen darauf hin, wie dies zu tun ist). Ein Benutzer, der sich nicht für dieses Zeug interessiert, kann weiterhin sudo verwenden.
Orion