Contrôler les affectations de pseudo-terminaux (/ dev / pts / *)

Y at-il un moyen de contrôler quel pseudo-terminal (/ dev / pts / *) une connection est donnée? Par exemple, j'ai plusieurs clients légers exécutant chacun des sessions de terminal individuelles sur un server RHEL via SSH, je voudrais configurer quelque chose pour que le client léger A soit toujours alloué / dev / pts / 7 et que le client léger B soit toujours / dev / pts / 8. J'ai essayé de créer une règle udev mais udevinfo ne renvoie que «ne peut pas get le périphérique de class» lorsque je l'exécute contre l'ID du terminal, je ne sais pas comment créer une règle si le périphérique n'est pas classé dans udev .

Linux utilise normalement l'interface pseudoterminale Unix 98. Les inputs dans /dev/pts sont atsortingbuées en dehors du contrôle de l'application. Une application qui veut créer un pseudoterminal (ici le server SSH) ouvre /dev/ptmx , qui alloue un pseudoterminal et lui renvoie un descripteur de file. Le numéro pseudoterminal (le nombre après /dev/pts/ ) déterminé lorsque le pseudoterminal est alloué; il est lié à l'index du pseudoterminal dans une structure de données du kernel.

(Si vous êtes curieux, le code du kernel est ptmx_open dans drivers/tty/pty.c , qui appelle devpts_new_index dans fs/devpts/inode.c , qui utilise ida_get_new dans lib/idr.c nombre disponible, mais il n'y a aucune garantie qu'il le fera toujours.)

Ni l'API C ni l'API du kernel ne permettent au créateur du pseudoterminal de transmettre un paramètre qui influencerait le résultat.

Il est possible d'get un pty statique en utilisant l'ancienne API BSD qui produit des ptys de la forme /dev/pty NUM (maître) et /dev/tty NUM (esclave). Cela nécessiterait au minimum la recompilation du server SSH sans le HAVE_DEV_PTMX configuration HAVE_DEV_PTMX pour l'obliger à utiliser des ptys de style BSD. Vous devez prendre soin des permissions, mais si SSH est le seul user, cela peut être un peu plus facile. Ensuite, vous devrez patcher OpenSSH pour append un mécanisme pour lier un numéro de pty particulier à un client particulier.

Je recommand fortement contre cela: c'est une configuration non standard, vous demandant d'écrire un code supplémentaire. C'est un effort de maintenance supplémentaire et un risque de security.

Je ne vois pas le sharepoint toute façon. Vous pouvez exécuter le last pour voir quel client est actuellement connecté sur chaque terminal.