Ich verwalte eine vernetzte Umgebung und habe gestern eine interessante Situation erlebt. Wenn ein Host von einem normalen Benutzer heruntergefahren werden muss, wird dies abgelehnt, wenn andere Benutzer lokal angemeldet sind. Dies ist jedoch nicht der Fall, wenn andere Benutzer über SSH angemeldet sind. Wenn ein Benutzer lokal angemeldet ist und ein Benutzer über SSH angemeldet ist und der lokal angemeldete Benutzer versucht, den Computer herunterzufahren, ist dies ohne Warnung erfolgreich und die SSH-Verbindung des anderen Benutzers wird abrupt beendet. Meine Frage ist, gibt es eine Möglichkeit, dies zu verhindern, wie dies die Richtlinie für lokale Benutzer tut? Ich habe bereits auf der Manpage nachgesehen sshd_config
und konnte nichts finden, was verwandt zu sein scheint.
EDIT (Zusatzinfo.):
Es gibt 4 Betriebssysteme im Netzwerk: Mandriva 2009, Mandriva 2010.2, Mandriva 2011 und Ubuntu 11.04. Der spezielle Fall, auf den ich mich beziehe, hatte den SSH-Benutzer auf einem Mandriva 2009-Host und den lokalen Benutzer auf einem Mandriva 2011-Host.
Mandriva 2009-Hosts verwenden die GNOME 2.28-Umgebung, 2010.2-Hosts verwenden GNOME 2.32, 2011-Hosts verwenden KDE Plasma und die Ubuntu 11.04-Hosts verwenden Unity.
Aktualisieren
Wie ich in dieser Frage festgestellt habe , habe ich polkit
unter Aktionen gesucht /usr/share/polkit-1/actions/
und (in der Datei org.freedesktop.consolekit.policy
) eine Aktion namens gefunden org.freedesktop.consolekit.system.stop-multiple-users
, die die Nachricht auslöst
System policy prevents stopping the system when other users are logged in
Ich denke (aufgrund der org.freedesktop.*
Namenskonvention), dass dies eine Art Signal ist, das über den D-BUS an den DM gesendet wird. Ich denke, wenn ich herausfinden kann, welches Signal diese polkit
Aktion auslöst , sollte ich in der Lage sein, ihr Verhalten zu ändern. Irgendwelche Ideen?
Update 2
Ich habe heute ein kleines Experiment versucht und es hat mir sehr seltsame Ergebnisse gebracht. Ich habe versucht, mich über SSH an einer Box anzumelden, und habe sichergestellt, dass keine anderen Benutzer an VTs angemeldet waren. Wenn ich wählen Shutdown
aus dem Menü „Aktionen“ von GDM, erhalte ich die lang erwartete Nachricht Politik mich darüber informiert , dass es unmöglich ist , so ohne Authentifizierung zu tun , wie andere Benutzer angemeldet sind. Allerdings , wenn ich GDM verwenden , um lokal anmelden und wählen Um die Box über das GNOME-Menü herunterzufahren, ist die SSH-Sitzung wie zuvor überlastet. Wie ist das möglich? Ist das Verhalten beim Initiieren einer shutdown
Anforderung von GDM anders als beim Initiieren innerhalb von a gnome-session
? Hat das jemandem etwas zu sagen, das mir helfen kann, das Problem zu lösen?
Antworten:
Ich würde ein kleines Programm schreiben, das nach aktiven SSH-Verbindungen über
netstat
und / oder suchtps
. Legen Sie es anstelle desshutdown
Befehls ab.Wenn das Gerät von niemand anderem verwendet wird, rufen Sie an,
shutdown
wenn der Benutzer dies versucht. Wenn jemand das Gerät verwendet, warnen Sie einfach den Benutzer, der denshutdown
Befehl ausgegeben hat .Netstat gibt Ihnen eine Ausgabe wie diese, und es ist ziemlich einfach,
.ssh
in der Ausgabe zu suchen .ps
Das gibt Ihnen eine Ausgabe wie diese, ist jedoch etwas schwieriger, da Sie sich keine Sorgen um ausgehende Verbindungen machen müssen.Netstat
ist wahrscheinlich der richtige Weg.quelle
session
Kette mit einem Programm zu erweitern, das eine Datei berührt, wenn sich ein Benutzer über SSH anmeldet, und sie entfernt, wenn sich der Benutzer abmeldet und das von Ihnen vorgeschlagene Programm einfach auf das Vorhandensein von überprüft diese Dateien. Wenn dies funktioniert, akzeptiere ich Ihre Antwort.who
stattdessen die Ausgabe von analysieren . Es wird angezeigt, welche Benutzer verbunden sind und von welchem Host.who
wird nicht viel ausgegeben, aber auf den meisten anderen Shells. (Dumme eingebettete Systeme ...) Auf jeden Fall istnetstat
es ziemlich einfach, die Spalte zu finden, mit der Sie arbeiten möchtenawk
. Etwas in der Art vonnetstat -a | awk '{print $4}'
(zumindest auf meiner Muschel.)Sie haben tatsächlich die richtigen Informationen gefunden. Zumindest funktionierte es unter Ubuntu bis zum 13.04.
Der folgende Richtlinieneintrag würde bei der Einrichtung mit "auth_admin_keep" (siehe unten) das Herunterfahren vorziehen:
Aber irgendwie wird diese Politik seit 13.10 völlig ignoriert. Bisher konnte mir niemand sagen, was es ersetzen würde (wenn überhaupt).
Beachten Sie, dass Sie auch einen solchen Eintrag für den Neustart haben (org.freedesktop.consolekit.system.restart-multiple-users), der ebenfalls auf gesetzt werden sollte
auth_admin_keep
.Sehen Sie diese Frage / Antwort auch auf AskUbuntu: /ubuntu/1190/how-can-i-make-shutdown-not-require-admin-password
quelle
Zählen Sie SSH-Verbindungen und beenden Sie, wenn mehr als Ihre vorhanden sind:
Etwas wie das?
Ich würde wahrscheinlich einige Lesevariablen einfügen, damit ich dazu aufgefordert werde, z. B. "Möchten Sie trotzdem herunterfahren?" und "Möchten Sie herunterfahren?".
Dann könnten Sie es als Alias oder ähnliches verwenden.
quelle