HURD: Pourquoi le process à distance n'est pas tué?

Sur la plupart des systèmes UNIX, cela ne laissera pas un process en cours d'exécution:

ssh example.net sleep 1000 <<CTRL-C>> 

J'ai testé ce comportement sur

 aix centos debian dragonfly freebsd hpux irix mandriva miros netbsd openbsd openindiana qnx redhat scosysv solaris-x86 solaris suse tru64 ubuntu unixware 

Ils nettoient tous comme prévu. Sur HURD, le shell de connection est tué comme prévu, mais le sumil est laissé en cours d'exécution en tant qu'enfant d'init. Pourquoi? Et peut-il être atténué?

 $ uname -a GNU hurd 0.5 GNU-Mach 1.4-486/Hurd-0.5 i686-AT386 GNU $ echo $SHELL /bin/bash $ /bin/bash --version GNU bash, version 4.3.24(1)-release (i486-pc-gnu) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redissortingbute it. There is NO WARRANTY, to the extent permitted by law. 

Dans la FAQ Hurd, vous pouvez find des informations sur ce cas:

?? Quel est le shell de connection?

{MB} Le Hurd a le concept d'un user non-connecté. Cet user n'a ni identifiant ni identifiant de groupe. Cela découle du fait que le Hurd supporte les jeux uid et gid et une possibilité est, bien sûr, l'set vide. Plutôt que de refuser l'access dans ce cas, les filesystems du Hurd proposent un quasortingème sortingplet d'permissions (ie rwx) qui sert à déterminer les privilèges des users sans informations d'identification. Ceci, cependant, doit être activé sur un file par file. Par défaut, le sortingplet d'autorisation «other» est utilisé.

Le shell de connection Hurd est un shell fonctionnant sans uid ni gids. Pour limiter l'access à vos files, activez et modifiez le quasortingème sortingplet d'permissions ou changez le shell de connection de l'user 'login' du file de passwords en '/ bin / loginpr' qui implémente l'invite de connection standard.

Et callbackez-vous, Hurd n'est pas UNIX. C'est un rlocation pour le kernel UNIX, en utilisant le Match Microkernel, donc beaucoup de concepts d'UNIX ne sont pas applicables à Hurd.

Mach est un micro-kernel, écrit à l'Université Carnegie Mellon. Un terme plus descriptif pourrait être un kernel de plus grand commun, car il fournit des fonctionnalités communes à tous les systèmes d'exploitation «réels», tels que la memory management, la communication inter-process, les process et bien d'autres choses. Malheureusement, les appels système utilisés pour accéder à ces installations ne sont que vaguement liés aux appels système Unix familiers et chéris. Il n'y a pas de "fork", "wait" ou "sleep", pas de SIGHUP, rien de tel. Tout cela rend plutôt difficile, par exemple, de porter GNU Emacs à une boîte de Mach.

Les references:

  • GNU Hurd FAQ en ligne
  • Documentation GNU Hurd – Authentification