Ich versuche, den Befehl su zu verwenden, um eine Anwendung als anderer Benutzer auszuführen
In diesem Fall versuche ich, Irssi auszuführen
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
Ich starte gksu und setze die gleichen Parameter und es funktioniert. Ich werde nicht nach dem Benutzerpasswort gefragt. Was ist das Problem? Und wie löse ich das?
Ich sollte beachten, dass der Benutzer so erstellt wurde
adduser --system --disabled-login [username]
wenn es einen Unterschied macht ... seufz.
irssi
ein Problem vorliegt und der Befehl su funktioniert?Antworten:
Es gibt mehrere Probleme mit dem Befehl
su - irssi
.Dieser Befehl versucht, eine Shell zu starten, die einem Benutzer namens gehört
irssi
.Es wird fehlschlagen, wenn:
irssi
Benutzer.irssi
Benutzerkonto ist deaktiviert.irssi
Benutzerkonto 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.irssi
Benutzer 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 anmeldenirssi
.-
Wenn dersu
Befehl erfolgreich ausgeführt wurde, erhalten Sie auch ohne das Flag eine Shell, deren Eigentümerirssi
UmgebungsvariablenHOME
jedoch unverändert bleiben.Wenn Sie stattdessen ein Programm mit dem Namen ausführen möchten
irssi
, müssen Sie essu
anders aufrufen :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 :
su username -
irssi
) aus.exit
.Befehle ausführen als
root
Wenn Sie ausführen möchten ,
irssi
wieroot
,su
ist 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 Sieroot
Login aktiviert haben , sollten Sie in der Lage seinsu
zu werdenroot
. Die Aktivierung desroot
Kontos ist nicht erforderlich, da Sie unabhängig davon, ob Sie dies tun oder nicht, weiterhin Befehle wieroot
mit ausführen könnensudo
.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 wieroot
mit ausführensudo
(es sei denn, Sie konfigurieren dies neusudo
, damit andere dies tun können). Ein Benutzer, der das System nicht verwalten darf, darf also keine Befehle wieroot
mit seinem eigenen Kennwort ausführen .So laufen Sie
irssi
wieroot
mitsudo
: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:
Es sei
sudo
denn, die Version kann erfolgreich sein, da dasroot
Konto nicht aktiviert werden muss.Wie bei
su
, können Sie verwenden ,sudo
um Befehle als eine andere, nicht laufenroot
Benutzer . So laufen Sieirssi
wieusername
mitsudo
:Wenn Sie
sudo
sichsu -
in Bezug aufHOME
--das so verhalten möchten, dass Sie dieHOME
Umgebungsvariablen des Zielbenutzers verwenden möchten , können Siesudo
mit dem-H
Flag ausführen :Sie können eine ganze Shell mit starten
sudo
, so wie Sie es mit könnensu
. Mit Ausnahme des von Ihnen eingegebenen Kennworts hat dieser Befehl die gleiche Wirkung wiesu
:Und dieser Befehl hat den gleichen Effekt wie
su -
:(Das
i
steht für Initial Login Shell .)Sie können eine Shell auch als anderer Benutzer starten:
Lesen Sie weiter
sudo
Weitere Informationen
sudo
finden Sie unter:sudo
Site (vom Autor vonsudo
).man sudo
Warum hat
gksu
gearbeitet, wennsu
nicht?gksu
Wahrscheinlich hat es beim Laufensudo
funktioniert .gksu
ist ein Frontend für beidesu
undsudo
. In Ubuntu wird standardmäßig verwendetsudo
(da in Ubuntu in dersu
Regel nicht verwendet wirdroot
, umroot
Benutzer zu werden , und dies nur eine sekundäre Methode ist, um andere Benutzer zu werden , die keine Benutzer sind).Sie können machen
gksu
Gebrauch ,su
indem Sie als das Frontendgksu --su-mode
.Sie können herausfinden, ob
gksu
sich imsu
Modus oder imsudo
Modus befindet, und diese Einstellung (falls gewünscht) durch Ausführen von änderngksu-properties
. Dies ist eine Benutzereinstellung.Wenn
gksu
in istsudo
Modus verhält es sich genauso wiegksudo
.Lesen Sie weiter
gksu
sudo
".man gksu
gksu
Website (von den Machern vongksu
).gksu
vs.gksudo
in Ubuntu.Post-Solution-Analyse
Sie haben festgestellt, dass Sie den erforderlichen Befehl ausführen können mit:
(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
username
Konto wurde mit der--disabled-login
Flagge 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 Mittelusername
überhaupt nicht authentifizieren.So sind alle
su
basierten Lösungen aus.sudo
kann jedoch funktionieren, dasudo
Sie 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:
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:
Verwandte Themen: Deaktivieren Sie das
root
Konto erneut, nachdem Sie es vorübergehend aktiviert haben.Das
username
Konto hat/bin/false
als Login-Shell.Wenn eine Shell wie diese
bash
als 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/false
dagegen ausgeführt wird, geschieht nichts und es wird ein Fehler gemeldet . (/bin/true
Tut nichts und meldet Erfolg.)Die Befehle
false
undtrue
sind 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 verwendensftp
undscp
übertragen.Da
username
‚s Login - Shell nicht funktionsfähig war, Befehle wie , , und konnte nicht arbeiten.su username
su - username
sudo -u username -s
sudo -u username -i
Aber Befehle, die keine Shell geben, mögen oder könnten immer noch funktionieren.
sudo -u username command
su username -c 'command'
Da Befehle ausgeführt werden können, Sie können den funktional Login - Shell , um etwas des Benutzers ändern:
Dies sollte jedoch auch mit Vorsicht geschehen, da es einen guten Grund geben kann, interaktive Anmeldungen für den Benutzer zu deaktivieren.
Hier hatten
username
beide Passwort und "deaktiviert" Shell deaktiviert. Das Fehlen eines funktionierenden Kennworts verhindertesu
, 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.quelle