
ほとんどのUNIXシステムでは、プロセスはまだ実行されません。
ssh example.net sleep 1000
<<CTRL-C>>
この動作をテストしました。
aix
centos
debian
dragonfly
freebsd
hpux
irix
mandriva
miros
netbsd
openbsd
openindiana
qnx
redhat
scosysv
solaris-x86
solaris
suse
tru64
ubuntu
unixware
すべて期待通りに掃除された。 HURDでは、ログインシェルは期待どおりに終了しますが、sleepはまだinitの子プロセスとして実行されています。なぜ?そして安心できますか?
$ 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 redistribute it.
There is NO WARRANTY, to the extent permitted by law.
答え1
Hurd FAQでこのイベントに関する情報を見つけることができます。
??ログインシェルとは何ですか?
{MB} Hurdにはログインしたユーザーという概念があります。ユーザーにはユーザーIDまたはグループIDがありません。これは、Hurdがuidとgidのセットをサポートし、もちろん空のセットである可能性があるためです。この場合、Hurdのファイルシステムは、アクセスを拒否するのではなく、資格情報なしでユーザーの権限を決定するために使用される4番目の権限トリプル(つまりrwx)を提供します。ただし、この機能はファイルごとに有効にする必要があります。デフォルトでは、「その他」権限トリプルが使用されます。
Hurdログインシェルは、uidやgidを使用せずに実行されるシェルです。ファイルへのアクセスを制限するには、4番目の権限三重項を有効にして変更するか、標準のログインプロンプトでパスワードファイルの「login」ユーザーのログインシェルを「/bin/loginpr」に変更します。
HurdはUNIXではないことを覚えておいてください。これはMatch Microkernelを使用してUNIXカーネルを置き換えるため、UNIXの多くの概念はHurdには適用されません。
MachはCarnegie Mellon Universityで書かれたマイクロカーネルです。より説明的な用語は、最大公約数カーネルと呼ぶことができます。これは、メモリ管理、プロセス間通信、プロセス、その他多くの機能など、すべての「実際の」オペレーティングシステムに共通の機能を提供するためです。残念ながら、これらの機能にアクセスするために使用されるシステムコールは、おなじみの貴重なUnixシステムコールにはあいまいに関連しています。 「fork」、「wait」、または「sleep」システムコールもなく、SIGHUPもありません。これらすべてがGNU EmacsをMachマシンに移植するのをかなり難しくします。
引用: