Diese Antwort sollte Ihnen trotzdem weiterhelfen, auch wenn Sie die Änderungen an der Frage berücksichtigen. Insbesondere für ein Konto, das
--disabled-loginohne festgelegtes Kennwort und ohne andere Anmeldemöglichkeiten erstellt wurde , sollte es dennoch möglich sein, sudoBefehle oder eine Shell als Benutzer auszuführen (siehe unten). So wird das
rootKonto in Ubuntu eingerichtet.
Es gibt mehrere Probleme mit dem Befehl su - irssi.
Dieser Befehl versucht, eine Shell zu starten, die einem Benutzer namens gehörtirssi .
Es wird fehlschlagen, wenn:
- Es gibt keinen
irssiBenutzer.
- Das
irssiBenutzerkonto ist deaktiviert.
- Das
irssiBenutzerkonto ist für die interaktive Anmeldung deaktiviert. Manchmal kann ein Konto Dienste wie FTP verwenden, es ist jedoch untersagt, sich normal anzumelden, indem seine Shell auf etwas gesetzt wird, das sofort beendet wird, wie z /bin/false. Dann endet eine Anmeldung sofort ohne Nachricht.
- Das eingegebene Passwort ist für den
irssiBenutzer nicht korrekt .
Das -Flag macht es so, dass die Shell eine anfängliche Anmeldeshell simuliert - das heißt, es ist wirklich so, als würde man sich als anmelden irssi. -Wenn der suBefehl erfolgreich ausgeführt wurde, erhalten Sie auch ohne das Flag eine Shell, deren Eigentümer irssiUmgebungsvariablen HOMEjedoch unverändert bleiben.
Wenn Sie stattdessen ein Programm mit dem Namen ausführen möchtenirssi , müssen Sie es suanders aufrufen :
su username - -c irssi
Wenn Sie es weglassen , ist es dasselbe wie --it, wenn versucht wird, den Befehl als root auszuführen.-c username-c root
Alternativ können Sie eine Shell starten und dann den Befehl ausführen :
- Starten Sie die Shell mit .
su username -
- Führen Sie in der Shell den Befehl (
irssi) aus.
- Wenn Sie fertig sind, verlassen Sie die Shell, indem Sie ausführen
exit.
Befehle ausführen als root
Wenn Sie ausführen möchten , irssiwie root, suist nicht der richtige Weg , es zu tun. Root-Logins sind unter Ubuntu standardmäßig deaktiviert, und es gibt nur selten einen Grund, sie wieder zu aktivieren . Wenn Sie rootLogin aktiviert haben , sollten Sie in der Lage sein suzu werden root. Die Aktivierung des rootKontos ist nicht erforderlich, da Sie unabhängig davon, ob Sie dies tun oder nicht, weiterhin Befehle wie rootmit ausführen können sudo.
Wenn Sie Befehle mit ausführen sudo, geben Sie Ihr Kennwort ein und nicht das Kennwort des Benutzers, unter dessen Identität der Befehl ausgeführt werden soll. Nur Administratoren können beliebige Befehle wie rootmit ausführen sudo(es sei denn, Sie konfigurieren dies neu sudo, damit andere dies tun können). Ein Benutzer, der das System nicht verwalten darf, darf also keine Befehle wie rootmit seinem eigenen Kennwort ausführen .
So laufen Sie irssiwie rootmit sudo:
sudo irssi
Und Sie würden Ihr Passwort eingeben, wenn Sie dazu aufgefordert werden, nicht root's.
Mit Ausnahme des von Ihnen eingegebenen Passworts geschieht dies wie folgt:
su -c irssi
Es sei sudodenn, die Version kann erfolgreich sein, da das rootKonto nicht aktiviert werden muss.
Wie bei su, können Sie verwenden , sudoum Befehle als eine andere, nicht laufen rootBenutzer . So laufen Sie irssiwie usernamemit sudo:
sudo -u username irssi
Wenn Sie sudo sich su -in Bezug aufHOME --das so verhalten möchten, dass Sie die HOMEUmgebungsvariablen des Zielbenutzers verwenden möchten , können Sie sudomit dem -HFlag ausführen :
sudo -H irssi
sudo -H -u username irssi
Sie können eine ganze Shell mit starten sudo, so wie Sie es mit können su. Mit Ausnahme des von Ihnen eingegebenen Kennworts hat dieser Befehl die gleiche Wirkung wie su:
sudo -s
Und dieser Befehl hat den gleichen Effekt wie su -:
sudo -i
(Das isteht für Initial Login Shell .)
Sie können eine Shell auch als anderer Benutzer starten:
sudo -u username -s
sudo -u username -i
Lesen Sie weiter sudo
Weitere Informationensudo finden Sie unter:
Warum hat gksugearbeitet, wenn sunicht?
gksuWahrscheinlich hat es beim Laufensudo funktioniert .
gksuist ein Frontend für beide su und sudo. In Ubuntu wird standardmäßig verwendet sudo(da in Ubuntu in der suRegel nicht verwendet wird root, um rootBenutzer zu werden , und dies nur eine sekundäre Methode ist, um andere Benutzer zu werden , die keine Benutzer sind).
Sie können machen gksuGebrauch , suindem Sie als das Frontend gksu --su-mode.
Sie können herausfinden, ob gksusich im suModus oder im sudoModus befindet, und diese Einstellung (falls gewünscht) durch Ausführen von ändern gksu-properties. Dies ist eine Benutzereinstellung.
Wenn gksuin ist sudoModus verhält es sich genauso wie gksudo.
Lesen Sie weiter gksu
Post-Solution-Analyse
Sie haben festgestellt, dass Sie den erforderlichen Befehl ausführen können mit:
sudo -u username irssi
(Welche der oben aufgeführten Techniken ist.)
Letztendlich haben Sie zwei Informationen gemeldet, die ausreichen, um zu erklären, warum andere Techniken versagt haben, aber das war erfolgreich:
Das usernameKonto wurde mit der --disabled-loginFlagge erstellt, wodurch es kein Kennwort (und keine andere Möglichkeit zum Anmelden) hat. Wenn Sie kein Passwort haben, können Sie sich nicht mit einem leeren Passwort anmelden . Dies bedeutet, dass kein Passwort zur Authentifizierung ausreicht. In Kombination mit der Eliminierung anderer Authentifizierungsmittel kann dieses Mittel usernameüberhaupt nicht authentifizieren.
So sind alle subasierten Lösungen aus. sudokann jedoch funktionieren, da sudoSie sich bei der Authentifizierung nicht als der Benutzer authentifizieren, dessen Identität Sie annehmen möchten. Stattdessen müssen Sie autorisiert sein, sich als solche auszugeben, und Sie müssen sich als Sie selbst authentifizieren (dh Sie müssen Ihr eigenes Passwort eingeben, nicht ihr Passwort).
Es ist möglich, ein Passwort für das Konto festzulegen, wodurch diese Anmeldebarriere aufgehoben wird:
sudo passwd username
Es kann jedoch einen guten Grund dafür geben, dass sich der Benutzer nicht anmelden darf. Wenn sich dieser Benutzer beispielsweise anmelden und grafisch anmelden darf, ergeben sich schlechte Probleme aus der Umgebung des Benutzers oder Berechtigungen, die für die Ausführung von X11-Apps schlecht geeignet sind ? Wenn sich dieser Benutzer anmelden könnte, wäre es dann möglich, sich remote als dieser Benutzer anzumelden (für Computer, auf denen Sie Netzwerkdienste verfügbar gemacht haben)?
Wenn Sie es jemals wieder deaktivieren möchten:
sudo passwd -dl username
Verwandte Themen: Deaktivieren Sie das rootKonto erneut, nachdem Sie es vorübergehend aktiviert haben.
Das usernameKonto hat /bin/falseals Login-Shell.
Wenn eine Shell wie diese bashals Anmeldeshell ausgeführt wird, richtet sie Ihre Umgebung ein und gibt Ihnen eine interaktive Eingabeaufforderung, mit der Sie den Computer steuern können.
Wenn /bin/falsedagegen ausgeführt wird, geschieht nichts und es wird ein Fehler gemeldet . ( /bin/trueTut nichts und meldet Erfolg.)
Die Befehle falseund truesind nützlich für Skripterstellung und für verschiedene Testzwecke, aber auch zum Deaktivieren eines Kontos, sodass die Anmeldesitzung sofort beendet wird, wenn sich jemand anmeldet. Auf diese Weise kann ein Kennwort (oder eine andere Authentifizierungsmethode) aktiviert werden, und Benutzer können sich anmelden, nur nicht für den Shell-Zugriff . Wenn zum Beispiel ein FTP-Server vorhanden ist, können sie weiterhin über FTP auf ihr Konto zugreifen. Wenn es einen SSH-Server gibt, können sie zwar keine Shell über SSH abrufen, sie können jedoch weiterhin Dateien verwenden sftpund scpübertragen.
Da username‚s Login - Shell nicht funktionsfähig war, Befehle wie , , und konnte nicht arbeiten.su usernamesu - usernamesudo -u username -ssudo -u username -i
Aber Befehle, die keine Shell geben, mögen oder könnten immer noch funktionieren.sudo -u username commandsu username -c 'command'
Da Befehle ausgeführt werden können, Sie können den funktional Login - Shell , um etwas des Benutzers ändern:
sudo chsh -s /bin/bash username
Dies sollte jedoch auch mit Vorsicht geschehen, da es einen guten Grund geben kann, interaktive Anmeldungen für den Benutzer zu deaktivieren.
Hier hatten usernamebeide Passwort und "deaktiviert" Shell deaktiviert. Das Fehlen eines funktionierenden Kennworts verhinderte su, dass alle auf der Shell basierenden Lösungen funktionieren, während das Fehlen einer funktionierenden interaktiven Anmeldeshell alle Shell-Spawning-Lösungen daran hinderte, zu funktionieren (mit Ausnahme des manuellen Aufrufs einer Shell wie ).sudo -u username bash
sudo -u username command ist was geblieben ist.