summaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO38
1 files changed, 34 insertions, 4 deletions
diff --git a/TODO b/TODO
index 4331a1364..f667d59d6 100644
--- a/TODO
+++ b/TODO
@@ -18,7 +18,7 @@ Programming:
18- Handle changing passwords for the non-PAM expired password case 18- Handle changing passwords for the non-PAM expired password case
19 19
20- Improve PAM support (a pam_lastlog module will cause sshd to exit) 20- Improve PAM support (a pam_lastlog module will cause sshd to exit)
21 and maybe support alternate forms of authenications like OPIE via 21 and maybe support alternate forms of authentications like OPIE via
22 pam? 22 pam?
23 23
24- Rework PAM ChallengeResponseAuthentication 24- Rework PAM ChallengeResponseAuthentication
@@ -42,8 +42,38 @@ Programming:
42 solutions break scp or leaves processes hanging around after the ssh 42 solutions break scp or leaves processes hanging around after the ssh
43 connection has ended. It seems to be linked to two things. One 43 connection has ended. It seems to be linked to two things. One
44 select() under Linux is not as nice as others, and two the children 44 select() under Linux is not as nice as others, and two the children
45 of the shell are not killed on exiting the shell. Redhat have an excellent 45 of the shell are not killed on exiting the shell.
46 description of this in their RPM package. 46 A short run-down of what happens:
47 - The shell starts up, and starts its own session. As a side-effect, it
48 gets its own process group.
49 - The child forks off sleep, and because it's in the background, puts it
50 into its own process group. The sleep command inherits a copy of the
51 shell's descriptor for the tty as its stdout.
52 - The shell exits, but doesn't SIGHUP all of its child PIDs like it probably
53 should(?)
54 - The sshd server attempts to read from the master side of the pty, and
55 while there are still process with the pty open, no EOF is produced.
56 - The sleep command exits, closes its descriptor, sshd detects the EOF, and
57 the connection gets closed.
58 Ways we've tried fixing this in sshd, and why they didn't work out:
59 - SIGHUP the sshd's process group.
60 - The shell is in its own process group.
61 - Track process group IDs of all children before we reap them (via an extra
62 field in Session structures which holds the pgid for each child pid), and
63 SIGHUP the pgid when we reap.
64 - Background commands are in yet another process group.
65 - Close the connection when the child dies.
66 - Background commands may need to write data to the connection. Also
67 prematurely truncates output from some commands (scp server, the
68 famous "dd if=/dev/zero bs=1000 count=100" case).
69 Known workarounds:
70 - bash: shopt huponexit on
71 - tcsh: none
72 - zsh: setopt HUP (usually the default setting)
73 (taken from email from Jason Stone to openssh-unix-dev, 5 May 2001)
74 - pdksh: ?
75 This appears to affect NetKit rsh under Linux as well: it behaves the same
76 with 'sleep 20 & exit'.
47 77
48- Build an automated test suite 78- Build an automated test suite
49 79
@@ -103,4 +133,4 @@ PrivSep Issues:
103- Cygwin 133- Cygwin
104 + Privsep for Pre-auth only (no fd passing) 134 + Privsep for Pre-auth only (no fd passing)
105 135
106$Id: TODO,v 1.50 2002/06/25 17:12:27 mouring Exp $ 136$Id: TODO,v 1.51 2002/09/05 06:32:03 djm Exp $