Wie bekomme ich sudo auf Ubuntu zurück?

12

Ich hab's gemacht:

sudo chown -R myname /usr/

und jetzt kann ich den sudoBefehl wegen dieses Fehlers nicht verwenden :

sudo: muss setuid root sein

Und wenn ich das lese, bedeutet das, dass der Besitzer dieser Datei /usr/bin/sudonicht der Root ist. Es ist jetzt mein Benutzer, weil der /usrOrdner angezeigt wird.

In vielen Foren und Blogs wird vorgeschlagen, dies als root zu tun:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

... aber das Problem dabei ist, dass ich mich als root anmelden muss, aber ich kann nicht, weil wenn ich suim Terminal schreibe, das Passwort falsch ist (eigentlich verwende ich das Passwort, das ich meinem Benutzer hinzugefügt habe):

$ su
Password:
su: Authentication failure

Kann ich den sudoBefehl zurückerhalten ?

Bearbeiten: Mein Ubuntu befindet sich unter Paralells auf meinem Mac OS X.

Adam
quelle
Was meinen Sie mit "Ich verwende das Passwort, das ich meinem Benutzer hinzugefügt habe"? Wenn Sie verwenden su, werden Sie aufgefordert, das root-Passwort einzugeben , nicht das Passwort Ihres Benutzers wie bei sudo. Kennen Sie das root-Passwort für diesen Computer?
Caleb
Nein, ich musste es nie hinzufügen oder ändern. Gibt es eine Standardeinstellung dafür?
Adam
Sie müssen im Einzelbenutzermodus neu starten. Welche Distribution betreibst du?
Gilles 'SO - hör auf böse zu sein'
1
Nur neugierig, aber warum hast sudo chmod -R cirk:cirk /usrdu dich für eine entschieden? Was hast du versucht zu erreichen?
Loosecannon
1
Ein Programm, das irgendwo in / usr / installiert wurde, da ich den genauen Speicherort des Programms nicht kannte, entschied ich mich, chown für den gesamten usr-Ordner zu verwenden, und weil ich ein Noob bin, habe ich alles wieder vermasselt: P
Adam

Antworten:

5

Wenn Sie über ein ähnliches System verfügen, anhand dessen Sie den korrekten Besitz für alle Dateien ermitteln können, können Sie in den Rettungsmodus booten, zu einer Root-Shell wechseln und den korrekten Besitz für alle Dateien manuell wiederherstellen Dateien in /usr.

Der schnellste Weg ist möglicherweise die Neuinstallation Ihres Betriebssystems oder die Wiederherstellung aus einer Sicherungskopie.

In Ubuntu oder ähnlichem gibt es dann standardmäßig kein root-Passwort (das Konto ist deaktiviert), weshalb dies nicht möglich ist su.

Psusi
quelle
8
Woah, nehmen Sie es einfach, das ist nicht Windows-Neuinstallation ist nicht immer der einfachste oder schnellste Weg, etwas zu tun, und bringt den Leuten mit Sicherheit nicht bei, wie man Probleme behebt. In diesem Fall muss er nur die von ihm ausgeführte Aktion rückgängig machen. Dies kann einfach dadurch geschehen, dass das Dateisystem in einer anderen Umgebung wie einer Live-CD oder dem von Ihnen vorgeschlagenen Rettungsmodus (distroabhängig) gemountet wird.
Caleb
@Caleb, wenn Sie die Berechtigungen für einen größeren Teil des Dateisystems, das es ist, vollständig in den Papierkorb legen. Er hat nicht nur Sudo vermasselt, vermutlich hat er in seinem Beitrag vergessen zu erwähnen, dass er -R verwendet hat (ansonsten hätte es nur den Besitzer des / usr-Verzeichnisses selbst und nicht sudo geändert). Ich habe auch beschrieben, wie man den Prozess umkehrt, aber es ist eine sehr zeitaufwendige und mühsame Aufgabe.
Psusi
1
Dies ist ein Fall von chownnicht chmod. Da alles in dem /usrOrdner sein sollte root:root, sollte dies eine einfache Lösung sein, nicht die akribische Lösung, die ein chmodClobber bedeuten würde.
Caleb
2
@Caleb nicht alles in / usr sollte root sein: root.
Psusi
6
@Caleb chownsetzt die setxid-Bits zurück. Es gibt einige Dateien /usr, die nicht dem Root gehören. mehr, die in einer anderen Gruppe sind (vor allem setgid-Programme in /usr/bin).
Gilles 'SO - hör auf böse zu sein'
11

Da Sie die Berechtigungen für das einzige abgehakt haben, das Ihnen Zugriff auf Root-Ebene ermöglicht, benötigen Sie Hilfe von AUSSERHALB der aktuellen Softwareumgebung, um dieses Problem zu beheben.

Ich schlage vor, dass der einfachste Weg ist, eine Live-CD für Ihre Distribution zu starten, Ihr Laufwerk zu mounten und die Dateiberechtigungen mit den von chmodIhnen dort aufgelisteten zu ändern .

Sie können auch versuchen, im Einzelbenutzermodus zu booten, um eine Root-Shell zu erhalten.

Beachten Sie, dass in der Regel alle Objekte im /usr/Verzeichnis im Besitz von rootBenutzern sein sollten, sodass Sie nur ein rekursives chownVerfahren ausführen können, um das Problem zu beheben, das Sie aufgetreten sind. ( Bearbeiten: Per @Gilles-Kommentare, in denen offenbar die chownBits setuid und setgid ausgeführt werden, müssen manuell mit einem vorhandenen System verglichen werden, um alle wiederherzustellen, sobald Sie das Eigentumsrecht wieder hergestellt haben.)

Es sollten jedoch nur WENIGE sein 4111. Diese zusätzliche Berechtigung ist eine spezielle Berechtigung, die es jedoch selbst dann als Root ausführen lässt, wenn es als Benutzer ausgeführt wird! Nur bei sudoeinigen wenigen Befehlen sollte dieses Berechtigungsbit gesetzt sein. Wenn Sie a zunächst nicht ausgeführt chmodhaben, müssen Sie dies wahrscheinlich gar nicht beheben , alle Berechtigungen sollten bereits korrekt sein. Führen Sie keine große chmodOperation aus, ohne zu wissen, welche Berechtigungen erforderlich sind.

Caleb
quelle
Ist es möglich, wenn sich das Betriebssystem in einer virtuellen Maschine befindet?
Adam
Ja, das macht keinen Unterschied. Sie können Runlevel 1 verwenden (etwas, das Sie zu Beginn des Startvorgangs von grub / lilo oder von Ihrem Bootloader aus tun können) oder Sie können die VM so einrichten, dass ein ISO-Image der LiveCD als Startgerät verwendet wird.
Caleb
aham, lange bevor ich es neu installiere, werde ich deinen Rat versuchen :)
Adam
ok ich denke ich bin in der LiveCD, jetzt muss ich das im Terminal schreiben? sudo chown -R root /usr/?
Adam
Sie fangen damit an, aber nicht auf /usrder LivdCD. Sie müssen sie irgendwo mounten und gegen diesen Pfad laufen, sagen wir /mnt/mydrive/usr. Dann müssen Sie das setuid-Bit korrigieren /mnt/mydrive/usr/bin/sudo. Schauen Sie sich dann das / usr auf der Live-CD an und sehen Sie, ob es andere Eigentümer als root gibt. find /usr -not -uid 0und ändern Sie diese entsprechend. Suchen Sie dann nach Dingen, für die unterschiedliche setuid- oder setgid-Bits festgelegt sind, und stellen Sie sicher, dass diese ebenfalls übereinstimmen. Wenn Sie ein echtes Ubunutu-System zum Vergleich haben, ist dies am besten.
Caleb
4

Geben Sie im Ubuntu-Wiederherstellungsmodus die folgenden Befehle ein. Dadurch wurde das Problem für mich behoben.

mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart

Ich hoffe, dies behebt Ihr Problem (oder eines anderen).

Ich habe dieses hier in diesem Blog-Beitrag gefunden .

Ubuntu-Benutzer
quelle
2

Dies ist viel einfacher als von anderen Antworten vorgeschlagen. Sie müssen die Live-CD nicht formatieren, neu starten oder verwenden.

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

Dies ist der einfachste Weg, um dieses Problem zu beheben. Erklärung, sudo ist beschädigt (Ich weiß, dass "beschädigt" der falsche Begriff ist, aber es funktioniert nicht. Daher müssen wir die Verwendung von sudo vermeiden.)

  • Mit dem Befehl 1 (su root) ändern wir den Benutzer in root, ohne sudo zu verwenden.
  • Mit dem Befehl 2 (chown root: root / usr / bin / sudo & chmod 4755 / usr / bin / sudo) korrigieren wir die Berechtigungen / den Besitz von sudo.
  • Mit Befehl 3 (Beenden) kehren wir zum ursprünglichen Benutzer zurück.

Ich habe diese Methode unter Linux Mint getestet. Welches ist ein Ubuntu-ähnliches System. Lassen Sie mich wissen, dass diese Methode auf keinem anderen Betriebssystem funktioniert. Aktualisiert die Antwort entsprechend.

Vielen Dank

divyenduz
quelle
wie ich es verstehe, die standardmäßig hat root nicht durch ein Passwort, so dass es unmöglich ist , das Kennwort beim ersten Schritt zu schaffen su root, und weil sudonicht funktioniert, ist es set root - Passwort nicht möglich
TitanFighter
1
Danke, es hat mir geholfen.
Arun
1

Das ist einfacher als die Leute es machen. Versuche Folgendes:

  1. Anstatt zu versuchen, sich mit dem unterbrochenen suBefehl als root anzumelden, melden Sie sich als aktueller Benutzer ab und über Ihren normalen Display Manager (dh Anmeldebildschirm) erneut als root an.
  2. Führen Sie am Terminal Folgendes aus: chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

Dies sollte den sudoBefehl reparieren und Sie in kürzester Zeit wieder einsatzbereit machen.

user7089
quelle
0

Um sich als root ohne su oder sudo anzumelden, können Sie pkexec verwenden:

pkexec su

Ändern Sie nun die Berechtigungen der Dateien:

chmod 440 /etc/sudoers
chmod 775 /etc/sudoers.d
chmod 440 /etc/sudoers.d/README
Jagmeet Singh Bains
quelle