Habe heute herausgefunden, dass das Ausführen von screen als ein anderer Benutzer, in den ich sudo, nicht funktioniert!
dh
ssh bob@server # ssh into server as bob
sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
Ich habe ein Skript, das als "Monitor" -Benutzer ausgeführt wird. Wir führen es in einer Bildschirmsitzung aus, um die Ausgabe auf dem Bildschirm zu sehen. Das Problem ist, dass wir eine Reihe von Benutzern haben, die sich mit ihrem eigenen Konto anmelden (z. B. Bob, James, Susie usw.) und dann in den "Monitor" -Benutzer wechseln. Es kommt nicht in Frage, ihnen Zugriff auf den "Monitor" -Benutzer zu gewähren.
sudo
gnu-screen
luckytaxi
quelle
quelle
sudo su "user" -
. Warum nicht benutzensudo -u user -s
?sudo su
- ich denke, es ist genau das, woran sich die Leute gewöhnen (in meinem Fall, weil Sie keine Sudo-Flags kennen müssensudo su
- ich glaube nicht, dass ich jemals die Sudo-Manpage gelesen habe :)Antworten:
Versuchen
script /dev/null
Siesu
, vor dem Start von screen als der Benutzer auszuführen, den Sie möchten - es ist ein kleiner Ghetto-Hack, aber es sollte den Bildschirm glücklich machen.quelle
script
kann zum Starten verwendet werdenscreen
. Dann müssen Sie nur noch zweimal (einmal fürscreen
, einmal fürsu
) beenden. (Dies ist etwas, das diescript
Manpage für Sie klären kann, wenn Sie sich die Zeit nehmen, es zu lesen ...)sudo -u bob script -q -c 'screen -dr myscreen' /dev/null
. Dann haben Sie nur noch ein Terminal zum Verlassen / Trennen.script
wird ein eigenes tty-Gerät geöffnet, das dem Benutzer gehört, der es/dev
ausgeführt hatscript
.screen
Dann schnappt er sich das tty-Gerät (das dem laufenden Benutzer gehört,screen
damit er problemlos darauf zugreifen kann). Es ist ein totaler Hack-Job, aber es funktioniert. Wenn ich mir einige meiner Computer anschaue, scheint es, als würden neue Versionen von screen setuid-root installieren, was ebenfalls funktioniert, aber bedeutet, dass Sie eine andere setuid-root-Binärdatei haben, die herumschwebt, was einige Leute zu Recht unwohl macht.Ich verwende eine Wrapper-Funktion
screen
für die Benutzer, die ich verwendensudo su
möchte. Dies ist die Wrapper-Funktion, die ich den Benutzern hinzugefügt habe~/.bashrc
:Dadurch kann ich alle Optionen und Parameter verwenden
screen
, die ich verwenden möchte. Ich denke darüber nach, diese Funktion systemweit einzusetzen.quelle
Angenommen, sie sind sowieso SSH-fähig auf dem Host, könnten Sie die öffentlichen SSH-Schlüssel für jeden Benutzer, der Zugriff auf das Monitorkonto benötigt, in der Datei ~ monitor / .ssh / authorized_keys hinzufügen. Dann können sie auf dem Remote-Computer jedes Benutzers ausgeführt werden
quelle
Angenommen, wir sprechen über diesen Fehler:
Hier ist ein Einzeiler (könnte zum Beispiel als "Alias Gobob" verwendet werden):
Erläuterung:
Dies startet eine Shell (wie Login-Shell) als Benutzer bob. Der Benutzer bob wird gestartet
script
, der angewiesen wird, eine Bash aufzurufen (kann ein Bindestrich oder ein ksh sein ...), und eine Kopie der Sitzung wird verworfen.quelle
Möglicherweise müssten die Berechtigungen für das betreffende Gerät geändert oder ein Monitor zu einer Gruppe hinzugefügt werden, die über die Berechtigung zum Lesen dieses Geräts verfügt. Dies wäre meine erste Neigung. Aber Sie müssten die Auswirkungen auf die Sicherheit abwägen.
quelle
Sie sagen, Sie tun:
Ich wundere mich über den nachlaufenden Gedankenstrich. Normalerweise mache ich:
Der Bindestrich (laut Manpage su) weist su an, "die Shell zu einer Login-Shell zu machen". Dies bedeutet, dass alle üblichen Shell-Startskripte erzeugt und Dinge wie PATH und HOME korrekt eingestellt werden.
quelle
sudo su - username
undsudo su username -
mache dasselbe.Ich bin gerade auf dieses Problem gestoßen. Behebung mit
chmod +rw $(tty)
vor dem Ausführen von sudo. Das Problem bei dieser Lösung besteht darin, dass sich danach jeder mit Ihrem Terminal verbinden und nachschauen kann.quelle
gpg
zum Beispiel). Und sicher wird er nie auf einem System mit böswilligen Benutzern sein, die dietty
Passwörter beobachten und daran