J'administre un environnement en réseau et j'ai eu une situation intéressante hier. Lorsqu'un hôte doit être arrêté par un utilisateur normal, il refuse de le faire si d'autres utilisateurs sont connectés localement. Ce n'est cependant pas le cas lorsque d'autres utilisateurs sont connectés via SSH. Si un utilisateur est connecté localement et qu'un utilisateur est connecté via SSH et que l'utilisateur connecté localement tente de l'arrêter, il réussit sans même un avertissement et la connexion SSH de l'autre utilisateur est brusquement interrompue. Ma question est, existe-t-il un moyen d'empêcher cela comme le fait la politique pour les utilisateurs locaux? J'ai déjà regardé la page de manuel sshd_config
et je n'ai rien trouvé de apparenté.
EDIT (Informations supplémentaires.):
Il y a 4 OS sur le réseau: Mandriva 2009, Mandriva 2010.2, Mandriva 2011 et Ubuntu 11.04. Le cas spécifique auquel je fais référence avait l'utilisateur SSH sur un hôte Mandriva 2009 et l'utilisateur local sur un hôte Mandriva 2011.
Les hôtes Mandriva 2009 utilisent l'environnement GNOME 2.28, les hôtes 2010.2 utilisent GNOME 2.32, les hôtes 2011 utilisent KDE Plasma et les hôtes Ubuntu 11.04 utilisent Unity.
Mise à jour
Comme je l'ai noté dans cette question , j'ai examiné les polkit
actions sous /usr/share/polkit-1/actions/
et trouvé (dans le fichier org.freedesktop.consolekit.policy
) une action appelée org.freedesktop.consolekit.system.stop-multiple-users
qui lance le message
System policy prevents stopping the system when other users are logged in
Je pense (en raison de la org.freedesktop.*
convention de dénomination) qu'il s'agit d'une sorte de signal envoyé au DM via D-BUS. Je pense que si je peux découvrir quel signal déclenche cette polkit
action, je devrais pouvoir modifier son comportement. Des idées?
Update 2
J'ai essayé une petite expérience aujourd'hui et cela m'a donné des résultats très étranges. J'ai essayé de me connecter via SSH à une boîte et je me suis assuré qu'aucun autre utilisateur n'était connecté sur aucun VT. Si je choisis dans Shutdown
le menu "Actions" de GDM, j'obtiens le message de politique tant attendu m'informant qu'il est impossible de le faire sans authentification car d'autres utilisateurs sont connectés. Cependant , si j'utilise GDM pour me connecter localement et choisir pour fermer la boîte à partir du menu de GNOME, la session SSH est encombrée comme auparavant. Comment est-ce possible? Le comportement est-il différent lorsque j'initie une shutdown
demande de GDM que lorsque je l'initie à partir d'un gnome-session
? Est-ce que cela dit à quelqu'un quoi que ce soit qui puisse m'aider à résoudre le problème?
Réponses:
J'écrirais un petit programme qui vérifiait toutes les connexions SSH actives via
netstat
et / oups
. Déposez-le à la place de lashutdown
commande.Si personne d'autre n'utilise la machine, appelez
shutdown
lorsque l'utilisateur essaie de le faire. Si quelqu'un utilise la machine, avertissez simplement l'utilisateur qui a émis lashutdown
commande.Netstat vous donnera une sortie comme celle-ci, et c'est assez facile à rechercher
.ssh
dans la sortie.ps
vous donnera une sortie comme celle-ci, mais c'est un peu plus difficile car vous devez vous assurer de ne pas vous soucier des connexions sortantes.Netstat
est probablement la bonne voie à suivre.la source
session
chaîne SSH PAM avec un programme qui touche un fichier lorsqu'un utilisateur se connecte via SSH et le supprime lorsque l'utilisateur se déconnecte, puis que le programme que vous avez suggéré vérifie simplement l'existence de ces fichiers. Si cela fonctionne, j'accepte votre réponse.who
place. Il indique quel (s) utilisateur (s) est / sont connecté (s) et à partir de quel hôte.who
ne donne pas beaucoup de sortie, mais la plupart des autres shells le font. (Système embarqué idiot ...) Dans tous les cas, si vous souhaitez utilisernetstat
, il est assez simple d'obtenir la colonne dont vous avez besoinawk
. Quelque chose dans le sens denetstat -a | awk '{print $4}'
(au moins sur ma coquille.)Vous avez en fait trouvé la bonne information. Au moins, cela fonctionnait sous Ubuntu jusqu'au 13.04.
L'entrée de stratégie suivante, lors de la configuration avec "auth_admin_keep" comme ci-dessous, préférerait que l'arrêt se produise:
Mais d'une certaine manière, depuis le 13.10, cette politique est totalement ignorée. Jusqu'à présent, personne n'a pu me dire ce qui le remplacerait (le cas échéant).
Notez que vous disposez également d'une telle entrée pour le redémarrage (org.freedesktop.consolekit.system.restart-multiple-users) qui doit également être définie sur
auth_admin_keep
.Voir aussi cette question / réponse sur AskUbuntu: /ubuntu/1190/how-can-i-make-shutdown-not-require-admin-password
la source
Comptez les connexions SSH, et si plus que les vôtres, puis arrêtez:
Quelque chose comme ça?
J'insérerais probablement des variables de lecture pour que cela m'invite, comme "Voulez-vous quand même arrêter?" et "Voulez-vous arrêter?".
Ensuite, vous pouvez l'utiliser comme alias ou similaire.
la source