From a1599c4c8d771166d069261f268dd675ad63f54c Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Fri, 12 Feb 2010 01:42:54 +0100 Subject: [PATCH] /etc/init.d/ssh: synchronise with Debian's version and use log_action_msg for status info when generating ssh keys --- debian/changelog | 4 +- etc/init.d/ssh | 235 ++++++++++++++++++++++++++++++------------------------- 2 files changed, 130 insertions(+), 109 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9d7449a..fdb52dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,9 +2,11 @@ grml-etc (1.1.31) unstable; urgency=low * /etc/skel/.Xmodmap: disable Terminate_Server function [thanks for hint, gebi] + * /etc/init.d/ssh: synchronise with Debian's version and use + log_action_msg for status info when generating ssh keys. * Bump Standards-Version to 3.8.4 (no further changes). - -- Michael Prokop Fri, 12 Feb 2010 01:11:20 +0100 + -- Michael Prokop Fri, 12 Feb 2010 01:26:57 +0100 grml-etc (1.1.30) unstable; urgency=low diff --git a/etc/init.d/ssh b/etc/init.d/ssh index 96c7b3e..30c3609 100755 --- a/etc/init.d/ssh +++ b/etc/init.d/ssh @@ -1,16 +1,16 @@ #!/bin/sh ### BEGIN INIT INFO -# Provides: sshd -# Required-Start: $network $local_fs $remote_fs -# Required-Stop: -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: OpenBSD Secure Shell server +# Provides: sshd +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: OpenBSD Secure Shell server ### END INIT INFO -# Notice: this file has been adjusted by the grml team so -# the script supports key-generation for ssh as well +# Notice: this file has been adjusted by the Grml team so +# the script supports key-generation for ssh set -e @@ -19,12 +19,23 @@ set -e test -x /usr/sbin/sshd || exit 0 ( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0 +export SSHD_OOM_ADJUST=-17 if test -f /etc/default/ssh; then . /etc/default/ssh fi +# Are we in a virtual environment that doesn't support modifying +# /proc/self/oom_adj? +if grep -q 'envID:.*[1-9]' /proc/self/status; then + unset SSHD_OOM_ADJUST +fi + . /lib/lsb/init-functions +if [ -n "$2" ]; then + SSHD_OPTS="$SSHD_OPTS $2" +fi + # Configurable options: KEYGEN=/usr/bin/ssh-keygen RSA1_KEY=/etc/ssh/ssh_host_key @@ -38,40 +49,40 @@ run_by_init() { check_for_no_start() { # forget it if we're trying to start, and /etc/ssh/sshd_not_to_be_run exists - if [ -e /etc/ssh/sshd_not_to_be_run ]; then - if [ "$1" = log_end_msg ]; then - log_end_msg 0 - fi - if ! run_by_init; then - log_action_msg "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)" - fi - exit 0 + if [ -e /etc/ssh/sshd_not_to_be_run ]; then + if [ "$1" = log_end_msg ]; then + log_end_msg 0 + fi + if ! run_by_init; then + log_action_msg "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)" + fi + exit 0 fi } check_dev_null() { if [ ! -c /dev/null ]; then - if [ "$1" = log_end_msg ]; then - log_end_msg 1 || true - fi - if ! run_by_init; then - log_action_msg "/dev/null is not a character device!" - fi - exit 1 + if [ "$1" = log_end_msg ]; then + log_end_msg 1 || true + fi + if ! run_by_init; then + log_action_msg "/dev/null is not a character device!" + fi + exit 1 fi } check_privsep_dir() { # Create the PrivSep empty dir if necessary if [ ! -d /var/run/sshd ]; then - mkdir /var/run/sshd - chmod 0755 /var/run/sshd + mkdir /var/run/sshd + chmod 0755 /var/run/sshd fi } check_config() { if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then - /usr/sbin/sshd -t || exit 1 + /usr/sbin/sshd -t || exit 1 fi } @@ -79,97 +90,105 @@ export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" case "$1" in start) - check_for_no_start - check_dev_null - if ! test -f $RSA1_KEY ; then - echo "Generating SSH1 RSA host key..." - $KEYGEN -t rsa1 -f $RSA1_KEY -C '' -N '' || exit 1 - fi - if ! test -f $RSA_KEY ; then - echo "Generating SSH RSA host key..." - $KEYGEN -t rsa -f $RSA_KEY -C '' -N '' || exit 1 - fi - if ! test -f $DSA_KEY ; then - echo "Generating SSH2 DSA host key..." - $KEYGEN -t dsa -f $DSA_KEY -C '' -N '' || exit 1 - fi - log_daemon_msg "Starting OpenBSD Secure Shell server" "sshd" - check_privsep_dir - if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then - log_end_msg 0 - else - log_end_msg 1 - fi - ;; + check_privsep_dir + check_for_no_start + check_dev_null + + if ! test -f $RSA1_KEY ; then + log_action_msg "Generating SSH1 RSA host key..." + $KEYGEN -t rsa1 -f $RSA1_KEY -C '' -N '' || exit 1 + fi + + if ! test -f $RSA_KEY ; then + log_action_msg "Generating SSH RSA host key..." + $KEYGEN -t rsa -f $RSA_KEY -C '' -N '' || exit 1 + fi + + if ! test -f $DSA_KEY ; then + log_action_msg "Generating SSH2 DSA host key..." + $KEYGEN -t dsa -f $DSA_KEY -C '' -N '' || exit 1 + fi + + log_daemon_msg "Starting OpenBSD Secure Shell server" "sshd" + if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; stop) - log_daemon_msg "Stopping OpenBSD Secure Shell server" "sshd" - if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd.pid; then - log_end_msg 0 - else - log_end_msg 1 - fi - ;; + log_daemon_msg "Stopping OpenBSD Secure Shell server" "sshd" + if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd.pid; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; reload|force-reload) - check_for_no_start - check_config - log_daemon_msg "Reloading OpenBSD Secure Shell server's configuration" "sshd" - if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd; then - log_end_msg 0 - else - log_end_msg 1 - fi - ;; + check_for_no_start + check_config + log_daemon_msg "Reloading OpenBSD Secure Shell server's configuration" "sshd" + if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; restart) - check_privsep_dir - check_config - log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" - start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/sshd.pid - check_for_no_start log_end_msg - check_dev_null log_end_msg - if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then - log_end_msg 0 - else - log_end_msg 1 - fi - ;; + check_privsep_dir + check_config + log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" + start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/sshd.pid + check_for_no_start log_end_msg + check_dev_null log_end_msg + if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; try-restart) - check_privsep_dir - check_config - log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" - set +e - start-stop-daemon --stop --quiet --retry 30 --pidfile /var/run/sshd.pid - RET="$?" - set -e - case $RET in - 0) - # old daemon stopped - check_for_no_start log_end_msg - check_dev_null log_end_msg - if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then - log_end_msg 0 - else - log_end_msg 1 - fi - ;; - 1) - # daemon not running - log_progress_msg "(not running)" - log_end_msg 0 - ;; - *) - # failed to stop - log_progress_msg "(failed to stop)" - log_end_msg 1 - ;; - esac - ;; + check_privsep_dir + check_config + log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" + set +e + start-stop-daemon --stop --quiet --retry 30 --pidfile /var/run/sshd.pid + RET="$?" + set -e + case $RET in + 0) + # old daemon stopped + check_for_no_start log_end_msg + check_dev_null log_end_msg + if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; + 1) + # daemon not running + log_progress_msg "(not running)" + log_end_msg 0 + ;; + *) + # failed to stop + log_progress_msg "(failed to stop)" + log_end_msg 1 + ;; + esac + ;; + + status) + status_of_proc -p /var/run/sshd.pid /usr/sbin/sshd sshd && exit 0 || exit $? + ;; *) - log_action_msg "Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart}" - exit 1 + log_action_msg "Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart|status}" + exit 1 esac exit 0 -- 2.1.4