Backout this commit since it breaks startup and some scripts in
certain conditions. I haven't been able to find a better solution yet: - Set a two read-only variables (${prefix} and ${etcdir}). This is especially useful when using /etc/rc.d scripts with third-party software installed from ports. - Fix rc.d/sshd to work with openssh from ports using ${etcdir} instead of hardcoded /etc. - Reflect prefix/etcdir changes in rc.subr.8. src/etc/rc.d/sshd: rev 1.9 -> 1.10 src/etc/rc.subr: rev 1.51 -> 1.52 src/share/man/man8/rc.subr.8: rev 1.11 -> 1.12 Approved by: cperciva (mentor)
This commit is contained in:
parent
94733fef16
commit
3081bf98bf
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=161530
@ -19,8 +19,6 @@ extra_commands="keygen reload"
|
|||||||
|
|
||||||
timeout=300
|
timeout=300
|
||||||
|
|
||||||
load_rc_config $name
|
|
||||||
|
|
||||||
user_reseed()
|
user_reseed()
|
||||||
{
|
{
|
||||||
(
|
(
|
||||||
@ -49,46 +47,47 @@ sshd_keygen()
|
|||||||
umask 022
|
umask 022
|
||||||
|
|
||||||
# Can't do anything if ssh is not installed
|
# Can't do anything if ssh is not installed
|
||||||
[ -x ${prefix}/bin/ssh-keygen ] || {
|
[ -x /usr/bin/ssh-keygen ] || {
|
||||||
warn "${prefix}/bin/ssh-keygen does not exist."
|
warn "/usr/bin/ssh-keygen does not exist."
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -f ${etcdir}/ssh/ssh_host_key ]; then
|
if [ -f /etc/ssh/ssh_host_key ]; then
|
||||||
echo "You already have an RSA host key" \
|
echo "You already have an RSA host key" \
|
||||||
"in ${etcdir}/ssh/ssh_host_key"
|
"in /etc/ssh/ssh_host_key"
|
||||||
echo "Skipping protocol version 1 RSA Key Generation"
|
echo "Skipping protocol version 1 RSA Key Generation"
|
||||||
else
|
else
|
||||||
${prefix}/bin/ssh-keygen -t rsa1 -b 1024 \
|
/usr/bin/ssh-keygen -t rsa1 -b 1024 \
|
||||||
-f ${etcdir}/ssh/ssh_host_key -N ''
|
-f /etc/ssh/ssh_host_key -N ''
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${etcdir}/ssh/ssh_host_dsa_key ]; then
|
if [ -f /etc/ssh/ssh_host_dsa_key ]; then
|
||||||
echo "You already have a DSA host key" \
|
echo "You already have a DSA host key" \
|
||||||
"in ${etcdir}/ssh/ssh_host_dsa_key"
|
"in /etc/ssh/ssh_host_dsa_key"
|
||||||
echo "Skipping protocol version 2 DSA Key Generation"
|
echo "Skipping protocol version 2 DSA Key Generation"
|
||||||
else
|
else
|
||||||
${prefix}/bin/ssh-keygen -t dsa -f ${etcdir}/ssh/ssh_host_dsa_key -N ''
|
/usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${etcdir}/ssh/ssh_host_rsa_key ]; then
|
if [ -f /etc/ssh/ssh_host_rsa_key ]; then
|
||||||
echo "You already have a RSA host key" \
|
echo "You already have a RSA host key" \
|
||||||
"in ${etcdir}/ssh/ssh_host_rsa_key"
|
"in /etc/ssh/ssh_host_rsa_key"
|
||||||
echo "Skipping protocol version 2 RSA Key Generation"
|
echo "Skipping protocol version 2 RSA Key Generation"
|
||||||
else
|
else
|
||||||
${prefix}/bin/ssh-keygen -t rsa -f ${etcdir}/ssh/ssh_host_rsa_key -N ''
|
/usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
|
||||||
fi
|
fi
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
sshd_precmd()
|
sshd_precmd()
|
||||||
{
|
{
|
||||||
if [ ! -f ${etcdir}/ssh/ssh_host_key -o \
|
if [ ! -f /etc/ssh/ssh_host_key -o \
|
||||||
! -f ${etcdir}/ssh/ssh_host_dsa_key -o \
|
! -f /etc/ssh/ssh_host_dsa_key -o \
|
||||||
! -f ${etcdir}/ssh/ssh_host_rsa_key ]; then
|
! -f /etc/ssh/ssh_host_rsa_key ]; then
|
||||||
user_reseed
|
user_reseed
|
||||||
run_rc_command keygen
|
run_rc_command keygen
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
load_rc_config $name
|
||||||
run_rc_command "$1"
|
run_rc_command "$1"
|
||||||
|
35
etc/rc.subr
35
etc/rc.subr
@ -506,6 +506,9 @@ run_rc_command()
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
eval _override_command=\$${name}_program
|
||||||
|
command=${command:+${_override_command:-$command}}
|
||||||
|
|
||||||
_keywords="start stop restart rcvar $extra_commands"
|
_keywords="start stop restart rcvar $extra_commands"
|
||||||
rc_pid=
|
rc_pid=
|
||||||
_pidcmd=
|
_pidcmd=
|
||||||
@ -873,8 +876,6 @@ run_rc_script()
|
|||||||
#
|
#
|
||||||
load_rc_config()
|
load_rc_config()
|
||||||
{
|
{
|
||||||
local _tmp
|
|
||||||
|
|
||||||
_name=$1
|
_name=$1
|
||||||
if [ -z "$_name" ]; then
|
if [ -z "$_name" ]; then
|
||||||
err 3 'USAGE: load_rc_config name'
|
err 3 'USAGE: load_rc_config name'
|
||||||
@ -893,35 +894,9 @@ load_rc_config()
|
|||||||
fi
|
fi
|
||||||
_rc_conf_loaded=true
|
_rc_conf_loaded=true
|
||||||
fi
|
fi
|
||||||
|
if [ -f /etc/rc.conf.d/"$_name" ]; then
|
||||||
eval _override_command=\$${name}_program
|
|
||||||
command=${command:+${_override_command:-$command}}
|
|
||||||
|
|
||||||
if [ -z "${command}" ]; then
|
|
||||||
_tmp=`/bin/realpath $0`
|
|
||||||
prefix=${_tmp%/etc/rc.d/*}/
|
|
||||||
else
|
|
||||||
prefix=${command%/*bin/*}/
|
|
||||||
fi
|
|
||||||
if [ "${prefix}" = "/" -o "${prefix}" = "/usr/" ] ; then
|
|
||||||
etcdir="/etc"
|
|
||||||
else
|
|
||||||
etcdir="${prefix}etc"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# XXX - Deprecated
|
|
||||||
if [ -f /etc/rc.conf.d/${_name} -a ${etcdir} != "/etc" ]; then
|
|
||||||
debug "Sourcing /etc/rc.conf.d/${_name}"
|
debug "Sourcing /etc/rc.conf.d/${_name}"
|
||||||
warn "Warning: /etc/rc.conf.d/${_name} is deprecated, please use ${etcdir}/rc.conf.d/${_name} instead."
|
. /etc/rc.conf.d/"$_name"
|
||||||
if [ -f ${etcdir}/rc.conf.d/${_name} ]; then
|
|
||||||
warn "Warning: Both /etc/rc.conf.d/${_name} and ${etcdir}/rc.conf.d/${_name} exist."
|
|
||||||
fi
|
|
||||||
. /etc/rc.conf.d/${_name}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f ${etcdir}/rc.conf.d/${_name} ]; then
|
|
||||||
debug "Sourcing ${etcdir}/rc.conf.d/${_name}"
|
|
||||||
. ${etcdir}/rc.conf.d/${_name}
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# XXX - Deprecated variable name support
|
# XXX - Deprecated variable name support
|
||||||
|
@ -332,38 +332,12 @@ which is not always the case.
|
|||||||
Source in the configuration files for
|
Source in the configuration files for
|
||||||
.Ar name .
|
.Ar name .
|
||||||
First,
|
First,
|
||||||
.Pa /etc/defaults/rc.conf
|
|
||||||
and
|
|
||||||
.Pa /etc/rc.conf
|
.Pa /etc/rc.conf
|
||||||
are sourced if they have not yet been read in.
|
is sourced if it has not yet been read in.
|
||||||
Then,
|
Then,
|
||||||
.Va etcdir
|
.Pa /etc/rc.conf.d/ Ns Ar name
|
||||||
is set to
|
is sourced if it is an existing file.
|
||||||
.Pa /etc
|
The latter may also contain other variable assignments to override
|
||||||
if
|
|
||||||
.Va command Ap s
|
|
||||||
prefix (or
|
|
||||||
.Va ${name} Ns Va _program Ap s
|
|
||||||
if it is defined) is
|
|
||||||
.Pa /
|
|
||||||
or
|
|
||||||
.Pa /usr ,
|
|
||||||
otherwise
|
|
||||||
.Va etcdir
|
|
||||||
is set to
|
|
||||||
.Pa ${prefix} Ns Pa /etc .
|
|
||||||
Once those variables are set accordingly,
|
|
||||||
.Pa /etc/rc.conf.d/ Ns Va ${name}
|
|
||||||
is sourced if the file exists (but it is deprecated if
|
|
||||||
.Va etcdir
|
|
||||||
is different than
|
|
||||||
.Pa /etc )
|
|
||||||
and then
|
|
||||||
.Pa ${etcdir} Ns Pa /defaults/ Ns Va ${name}
|
|
||||||
and
|
|
||||||
.Va ${etcdir} Ns Pa /rc.conf.d/ Ns Va ${name}
|
|
||||||
are sourced if these files exist.
|
|
||||||
All these files may also contain other variable assignments to override
|
|
||||||
.Ic run_rc_command
|
.Ic run_rc_command
|
||||||
arguments defined by the calling script, to provide an easy
|
arguments defined by the calling script, to provide an easy
|
||||||
mechanism for an administrator to override the behaviour of a given
|
mechanism for an administrator to override the behaviour of a given
|
||||||
|
Loading…
Reference in New Issue
Block a user