Estoy administrando un entorno en red y ayer tuve una situación interesante. Cuando un usuario normal requiere que un host se apague, se niega a hacerlo si otros usuarios inician sesión localmente. Sin embargo, este no es el caso cuando otros usuarios inician sesión a través de SSH. Si un usuario inicia sesión localmente y un usuario inicia sesión a través de SSH y el usuario que inició sesión localmente intenta apagarse, tiene éxito sin siquiera una advertencia y la conexión SSH del otro usuario se interrumpe abruptamente. Mi pregunta es, ¿hay alguna manera de evitar esto como lo hace la política para los usuarios locales? Ya he buscado en la página del manual sshd_config
y no pude encontrar nada que parezca relacionado.
EDITAR (Información adicional):
Hay 4 sistemas operativos en la red: Mandriva 2009, Mandriva 2010.2, Mandriva 2011 y Ubuntu 11.04. El caso específico al que me refiero tenía el usuario SSH en un host Mandriva 2009 y el usuario local en un host Mandriva 2011.
Los hosts Mandriva 2009 usan el entorno GNOME 2.28, los hosts 2010.2 usan GNOME 2.32, los hosts 2011 usan KDE Plasma y los hosts Ubuntu 11.04 usan Unity.
Actualizar
Como señalé en esta pregunta , busqué polkit
acciones debajo /usr/share/polkit-1/actions/
y encontré (en el archivo org.freedesktop.consolekit.policy
) una acción llamada org.freedesktop.consolekit.system.stop-multiple-users
que arroja el mensaje
System policy prevents stopping the system when other users are logged in
Estoy pensando (debido a la org.freedesktop.*
convención de nomenclatura) que se trata de algún tipo de señal enviada al DM a través de D-BUS. Creo que si puedo averiguar qué señal desencadena esta polkit
acción, debería poder modificar su comportamiento. ¿Algunas ideas?
Actualización 2
Intenté un pequeño experimento hoy y me dio resultados muy extraños. Intenté iniciar sesión a través de SSH en una casilla y me aseguré de que ningún otro usuario iniciara sesión en ningún VT. Si elijo en Shutdown
el menú "Acciones" de GDM, recibo el mensaje de política largamente esperado que me informa que es imposible hacerlo sin autenticación ya que otros usuarios están conectados. Sin embargo , si uso GDM para iniciar sesión localmente y elegir Para cerrar la caja desde el menú de GNOME, la sesión SSH se cierra como antes. ¿Cómo es esto posible? ¿El comportamiento es diferente cuando inicio una shutdown
solicitud de GDM que cuando la inicio desde dentro de a gnome-session
? ¿Eso le dice a alguien algo que pueda ayudarme a resolver el problema?
Respuestas:
Escribiría un pequeño programa que verificara las conexiones SSH activas a través de
netstat
y / ops
. Déjalo en el lugar delshutdown
comando.Si nadie más está usando la máquina, llame
shutdown
cuando el usuario lo intente. Si alguien está usando la máquina, simplemente avise al usuario que emitió elshutdown
comando.Netstat le dará una salida como esta, y es bastante fácil de buscar
.ssh
en la salida.ps
le dará una salida como esta, pero es un poco más difícil porque debe asegurarse de no preocuparse por las conexiones salientes.Netstat
es probablemente el camino correcto a seguir.fuente
session
cadena SSH PAM con un programa que toca un archivo cuando un usuario inicia sesión a través de SSH y lo elimina cuando el usuario cierra sesión y luego hace que el programa que sugirió simplemente verifique la existencia de estos archivos Si esto funciona, estoy aceptando tu respuesta.who
lugar. Muestra qué usuario (s) está (n) conectado (s) y desde qué host.who
no da mucha salida, pero la mayoría de los otros shells lo hacen. (Sistema embebido tonto ...) En cualquier caso, si quieres usarlonetstat
, es bastante simple obtener la columna que necesitasawk
. Algo en la línea denetstat -a | awk '{print $4}'
(Al menos en mi caparazón)En realidad encontraste la información correcta. Al menos funcionó en Ubuntu hasta 13.04.
La siguiente entrada de política, cuando se configura con "auth_admin_keep" como se muestra a continuación, preferiría que ocurriera el apagado:
Pero de alguna manera, desde 13.10, esta política es totalmente ignorada. Hasta ahora, nadie ha podido decirme qué lo reemplazaría (si es que hay algo).
Tenga en cuenta que también tiene dicha entrada para reiniciar (org.freedesktop.consolekit.system.restart-multiple-users) que también debe establecerse en
auth_admin_keep
.Vea esta pregunta / respuesta también en AskUbuntu: /ubuntu/1190/how-can-i-make-shutdown-not-require-admin-password
fuente
Cuente las conexiones SSH, y si es más que la suya, apague:
¿Algo como esto?
Probablemente inserte algunas variables de lectura para que me pregunte, como "¿Desea cerrar de todos modos?" y "¿Quieres cerrar?".
Entonces podría usarlo como un alias o similar.
fuente