Ich habe versucht, die Login-Shell zu ändern.
So /etc/passwd
sieht die erste Zeile aus (bei einer Debian Wheezy-Installation):
rootx:0:0:root:/root:/:zsh
Wenn ich versuche mich anzumelden als root
:
Cannot execute zsh: No such file or directory
Ich weiß, zsh
ist verfügbar:
$ which zsh
/usr/bin/zsh
Okay, es scheint logisch, zsh
durch seinen vollständigen Pfad zu ersetzen . Aber wie kann ich das machen?
Ich habe einen anderen Benutzer auf dem System ( user
), aber es hat keine Root-Rechte und sudo
ist nicht auf dem System installiert.
Angenommen, ich kann aus irgendeinem Grund (Verschlüsselung, physischer Zugriff, ...) nicht auf einer Live-CD booten, um die Datei zu ändern.
Ich kenne jedoch die Anmeldeinformationen für das root
Konto.
Meine Frage ist: Gibt es eine Möglichkeit, auch programmgesteuert einen Prozess mit dem root
Konto zu starten, ohne zuerst die Anmeldeshell zu starten?
su
? odergksu
? so etwas wiesu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
su -c "<commands>"
funktioniert) ... könnten wir dann nicht einfach verwendensu -c "/bin/bash"
, um zu einer funktionierenden Bash mit User Root zu gelangen ?-c
wird über die Login-Shell des Benutzers ausgeführt.-s
kann verwendet werden, um eine andere Shell zu verwenden ... nur wenn die vorhandene Login-Shell gültig ist oder der Aufrufer root ist.Antworten:
Habe su Berechtigungen
Mit dem folgenden Befehl können Sie die Shell aller Benutzer ändern.
Wenn Sie physischen Zugang haben
Während Ihres Grub-Starts können Sie in jedes System gelangen, solange Sie Konsolenzugriff haben und kein Kennwort Sie daran hindert, auf das Grub-Menü zuzugreifen.
Wenn Sie beim ersten Start des Systems, wenn das Grub-Menü angezeigt wird, das Menü aufrufen und die Kernelzeile bearbeiten ( eTaste drücken ), können Sie eine der folgenden Aktionen hinzufügen, um den Kernel im Einzelbenutzermodus zu starten.
Die Linie sieht ungefähr so aus:
In Grub sollte es ungefähr so aussehen:
Sobald Sie die Änderungen vorgenommen haben, starten Sie den Kernel (drücken Sie die Taste b).
Auf diese Weise erhalten Sie temporären Zugriff auf das System mit einer Shell, in der Sie mit vi / vim alle erforderlichen Änderungen an Ihrer
/etc/passwd
Datei vornehmen können . Gebenreboot
Sie einfach ein, wenn Sie fertig sind.quelle
su
Befehl funktioniert nicht, da er versucht, die nicht vorhandene Root-Shell aufzurufen.