Administruję środowiskiem sieciowym i miałem wczoraj ciekawą sytuację. Gdy host musi zostać zamknięty przez zwykłego użytkownika, odmawia tego, jeśli inni użytkownicy są zalogowani lokalnie. Nie dzieje się tak jednak, gdy inni użytkownicy są zalogowani za pośrednictwem SSH. Jeśli jeden użytkownik jest zalogowany lokalnie, a jeden użytkownik jest zalogowany za pośrednictwem SSH, a użytkownik zalogowany lokalnie próbuje zamknąć system, to udaje się to bez ostrzeżenia, a połączenie SSH drugiego użytkownika zostaje nagle przerwane. Moje pytanie brzmi: czy istnieje sposób, aby temu zapobiec, podobnie jak zasady obowiązujące lokalnych użytkowników? Już szukałem strony podręcznika użytkownika sshd_config
i nie mogłem znaleźć niczego, co mogłoby się wydawać powiązane.
EDYCJA (dodatkowe informacje.):
W sieci znajdują się 4 systemy operacyjne: Mandriva 2009, Mandriva 2010.2, Mandriva 2011 i Ubuntu 11.04. Konkretny przypadek, o którym mówię, to użytkownik SSH na hoście Mandriva 2009 i użytkownik lokalny na hoście Mandriva 2011.
Hosty Mandriva 2009 używają środowiska GNOME 2.28, hosty 2010.2 używają GNOME 2.32, hosty 2011 używają KDE Plazmy, a hosty Ubuntu 11.04 używają Unity.
Aktualizacja
Jak zauważyłem w tym pytaniu , przejrzałem polkit
akcje poniżej /usr/share/polkit-1/actions/
i znalazłem (w pliku org.freedesktop.consolekit.policy
) akcję wywoływaną, org.freedesktop.consolekit.system.stop-multiple-users
która rzuca komunikat
System policy prevents stopping the system when other users are logged in
Myślę (ze względu na org.freedesktop.*
konwencję nazewnictwa), że jest to jakiś sygnał wysyłany do DM przez D-BUS. Myślę, że jeśli mogę dowiedzieć się, jaki sygnał wyzwala to polkit
działanie, powinienem być w stanie zmodyfikować jego zachowanie. Jakieś pomysły?
Aktualizacja 2
Próbowałem dzisiaj małego eksperymentu, który dał mi bardzo dziwne wyniki. Próbowałem zalogować się przez SSH do jednego urządzenia i upewniłem się, że żaden inny użytkownik nie jest zalogowany na żadnym VT. Jeśli wybiorę Shutdown
z menu „Działania” GDM, dostaję długo oczekiwany komunikat o polityce, który informuje mnie, że nie można tego zrobić bez uwierzytelnienia, ponieważ inni użytkownicy są zalogowani. Jeśli jednak używam GDM do lokalnego logowania i wybrania aby zamknąć okno z menu GNOME, sesja SSH jest zablokowana jak poprzednio. Jak to jest możliwe? Czy zachowanie różni się, gdy inicjuję shutdown
żądanie od GDM, niż gdy inicjuję je z poziomu gnome-session
? Czy to mówi komukolwiek coś, co może mi pomóc rozwiązać problem?
Odpowiedzi:
Napisałbym mały program, który sprawdzał, czy nie ma aktywnych połączeń SSH przez
netstat
i / lubps
. Upuść go w miejsceshutdown
polecenia.Jeśli nikt inny nie korzysta z urządzenia, zadzwoń,
shutdown
gdy użytkownik spróbuje. Jeśli ktoś korzysta z urządzenia, po prostu ostrzeż użytkownika, który wydałshutdown
polecenie.Netstat da ci taki wynik, i dość łatwo jest poszukać
.ssh
w wynikach.ps
da ci taki wynik, ale jest to trochę trudniejsze, ponieważ musisz się martwić o połączenia wychodzące.Netstat
jest prawdopodobnie właściwą drogą.źródło
session
łańcucha SSH PAM o program, który dotyka pliku, gdy użytkownik loguje się przez SSH i usuwa go, gdy użytkownik się wylogowuje, a następnie program, który zasugerowałeś, po prostu sprawdza istnienie te pliki. Jeśli to zadziała, przyjmuję twoją odpowiedź.who
zamiast. Pokazuje, którzy użytkownicy są podłączeni i z którego hosta.who
, nie daje dużej mocy wyjściowej, ale robi to większość innych powłok. (Silly embedded system ...) W każdym razie, jeśli chcesz użyćnetstat
, uzyskanie kolumny, której potrzebujesz, jest dość prosteawk
. Coś w stylunetstat -a | awk '{print $4}'
(Przynajmniej na mojej skorupie)Właściwie znalazłeś właściwą informację. Przynajmniej działało pod Ubuntu do 13.04.
Poniższy wpis zasad, gdy zostanie skonfigurowany za pomocą „auth_admin_keep” jak poniżej, wolałby, aby zamknięcie systemu miało miejsce:
Ale w jakiś sposób, od 13.10, ta polityka jest całkowicie ignorowana. Jak dotąd nikt nie był w stanie mi powiedzieć, co by go zastąpiło (jeśli w ogóle).
Zauważ, że masz również taki wpis dotyczący restartu (org.freedesktop.consolekit.system.restart-wielu-użytkowników), który również powinien być ustawiony na
auth_admin_keep
.Zobacz także to pytanie / odpowiedź na AskUbuntu: /ubuntu/1190/how-can-i-make-shutdown-not-require-admin-password
źródło
Policz połączenia SSH, a jeśli więcej niż twoje, zamknij:
Coś takiego?
Prawdopodobnie wstawiłbym kilka odczytanych zmiennych, aby wyświetliło się pytanie: „Czy mimo to chcesz się zamknąć?” i „Czy chcesz się zamknąć?”.
Następnie możesz użyć go jako aliasu lub podobnego.
źródło