diff options
author | Richard Tollerton <rich.tollerton@ni.com> | 2014-07-16 16:28:32 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-07-19 00:09:01 +0100 |
commit | c0585ca59aff5b662da236d0c7692113825e1593 (patch) | |
tree | b10de48c77aa8189c08fb9492f277604a0679478 /meta | |
parent | cd9ab376a2a5f39642b70d6ff6a31dd5c2d84535 (diff) | |
download | poky-c0585ca59aff5b662da236d0c7692113825e1593.tar.gz |
openssh: use pidfile in initscript
Stopping sshd must only kill the listening (top-level) daemon; it must
not stop any other sshd process, because those are forked ssh
connections which may include e.g. the connection that called
/etc/init.d/sshd stop.
This initscript uses "start-stop-daemon -x <exe>" for starting/stopping.
When that is provided by busybox, this behavior is broken:
`/etc/init.d/sshd stop` stops *all* sshd processes. This was caused by a
fix to busybox 1.20: 17eedcad9406c43beddab3906c8c693626c351fb
"ssd: compat: match -x EXECUTABLE by /proc/pid/exe too".
The fix is to use a pidfile. All initscripts in upstream openssh do this,
as does dropbear.
Acked-by: Gratian Crisan <gratian.crisan@ni.com>
Acked-by: Ken Sharp <ken.sharp@ni.com>
(From OE-Core rev: 993405285e547403d5c753adfa91c26c43be13f6)
Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
Signed-off-by: Ben Shelton <ben.shelton@ni.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-connectivity/openssh/openssh/init | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/meta/recipes-connectivity/openssh/openssh/init b/meta/recipes-connectivity/openssh/openssh/init index 37c8e7b907..70d4a34659 100644 --- a/meta/recipes-connectivity/openssh/openssh/init +++ b/meta/recipes-connectivity/openssh/openssh/init | |||
@@ -1,6 +1,8 @@ | |||
1 | #! /bin/sh | 1 | #! /bin/sh |
2 | set -e | 2 | set -e |
3 | 3 | ||
4 | PIDFILE=/var/run/sshd.pid | ||
5 | |||
4 | # source function library | 6 | # source function library |
5 | . /etc/init.d/functions | 7 | . /etc/init.d/functions |
6 | 8 | ||
@@ -70,12 +72,12 @@ case "$1" in | |||
70 | echo "Starting OpenBSD Secure Shell server: sshd" | 72 | echo "Starting OpenBSD Secure Shell server: sshd" |
71 | check_keys | 73 | check_keys |
72 | check_privsep_dir | 74 | check_privsep_dir |
73 | start-stop-daemon -S -x /usr/sbin/sshd -- $SSHD_OPTS | 75 | start-stop-daemon -S -p $PIDFILE -x /usr/sbin/sshd -- $SSHD_OPTS |
74 | echo "done." | 76 | echo "done." |
75 | ;; | 77 | ;; |
76 | stop) | 78 | stop) |
77 | echo -n "Stopping OpenBSD Secure Shell server: sshd" | 79 | echo -n "Stopping OpenBSD Secure Shell server: sshd" |
78 | start-stop-daemon -K -x /usr/sbin/sshd | 80 | start-stop-daemon -K -p $PIDFILE -x /usr/sbin/sshd |
79 | echo "." | 81 | echo "." |
80 | ;; | 82 | ;; |
81 | 83 | ||
@@ -84,7 +86,7 @@ case "$1" in | |||
84 | check_keys | 86 | check_keys |
85 | check_config | 87 | check_config |
86 | echo -n "Reloading OpenBSD Secure Shell server's configuration" | 88 | echo -n "Reloading OpenBSD Secure Shell server's configuration" |
87 | start-stop-daemon -K -s 1 -x /usr/sbin/sshd | 89 | start-stop-daemon -K -p $PIDFILE -s 1 -x /usr/sbin/sshd |
88 | echo "." | 90 | echo "." |
89 | ;; | 91 | ;; |
90 | 92 | ||
@@ -92,11 +94,11 @@ case "$1" in | |||
92 | check_keys | 94 | check_keys |
93 | check_config | 95 | check_config |
94 | echo -n "Restarting OpenBSD Secure Shell server: sshd" | 96 | echo -n "Restarting OpenBSD Secure Shell server: sshd" |
95 | start-stop-daemon -K --oknodo -x /usr/sbin/sshd | 97 | start-stop-daemon -K -p $PIDFILE --oknodo -x /usr/sbin/sshd |
96 | check_for_no_start | 98 | check_for_no_start |
97 | check_privsep_dir | 99 | check_privsep_dir |
98 | sleep 2 | 100 | sleep 2 |
99 | start-stop-daemon -S -x /usr/sbin/sshd -- $SSHD_OPTS | 101 | start-stop-daemon -S -p $PIDFILE -x /usr/sbin/sshd -- $SSHD_OPTS |
100 | echo "." | 102 | echo "." |
101 | ;; | 103 | ;; |
102 | 104 | ||