diff --git a/freeradius-radiusd-init b/freeradius-radiusd-init index 4b9685b..3f93e2a 100755 --- a/freeradius-radiusd-init +++ b/freeradius-radiusd-init @@ -1,80 +1,110 @@ #!/bin/sh # -# chkconfig: - 88 10 -# description: Start/Stop the RADIUS server daemon -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -# -# Copyright (C) 2001 The FreeRADIUS Project http://www.freeradius.org +# radiusd Start/Stop the FreeRADIUS daemon # +# chkconfig: - 88 10 +# description: Extensible, configurable, high performance RADIUS server. + +### BEGIN INIT INFO +# Provides: radiusd +# Required-Start: $network +# Required-Stop: +# Should-Start: $time $syslog mysql ldap postgresql samba krb5-kdc +# Should-Stop: +# Short-Description: FreeRADIUS server +# Description: Extensible, configurable, high performance RADIUS server. +### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions -RADIUSD=/usr/sbin/radiusd -LOCKF=/var/lock/subsys/radiusd -CONFIG=/etc/raddb/radiusd.conf +initname=${0##*/} +prog=radiusd +exec=/usr/sbin/$prog +config=/etc/raddb/radiusd.conf +pidfile=/var/run/$prog/$prog.pid +lockfile=/var/lock/subsys/$initname + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + daemon --pidfile $pidfile $exec + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc -p $pidfile $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} -[ -f $RADIUSD ] || exit 0 -[ -f $CONFIG ] || exit 0 +reload() { + # radiusd may not be capable of a 100% configuration reload depending + # on which loadable modules are in use, if sending the server a + # HUP is not sufficient then use restart here instead. However, we + # prefer by default to use HUP since it's what is usually desired. + # + # restart + + kill -HUP `pidofproc -p $pidfile $prog` +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status -p $pidfile $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} -RETVAL=0 case "$1" in - start) - echo -n $"Starting RADIUS server: " - daemon $RADIUSD - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch $LOCKF && - ln -s /var/run/radiusd/radiusd.pid /var/run/radiusd.pid 2>/dev/null - ;; - stop) - echo -n $"Stopping RADIUS server: " - killproc $RADIUSD - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && rm -f $LOCKF - ;; - status) - status radiusd - RETVAL=$? + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 ;; - reload) - echo -n $"Reloading RADIUS server: " - killproc $RADIUSD -HUP - RETVAL=$? - echo - ;; - restart) - $0 stop - sleep 3 - $0 start - RETVAL=$? - ;; - condrestart) - if [ -f $LOCKF ]; then - $0 stop - sleep 3 - $0 start - RETVAL=$? - fi - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" - exit 1 + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 esac - -exit $RETVAL +exit $? diff --git a/freeradius.spec b/freeradius.spec index c0ed267..42d0b01 100644 --- a/freeradius.spec +++ b/freeradius.spec @@ -1,7 +1,7 @@ Summary: High-performance and highly configurable free RADIUS server Name: freeradius Version: 2.1.7 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ and LGPLv2+ Group: System Environment/Daemons URL: http://www.freeradius.org/ @@ -15,6 +15,7 @@ Obsoletes: freeradius-dialupadmin >= 2.0 freeradius-dialupadmin-ldap >= 2.0 Obsoletes: freeradius-dialupadmin-mysql >= 2.0 freeradius-dialupadmin-postgresql >= 2.0 %define docdir %{_docdir}/freeradius-%{version} +%define initddir %{?_initddir:%{_initddir}}%{!?_initddir:%{_initrddir}} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -192,7 +193,8 @@ make %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/var/run/radiusd -mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/{logrotate.d,pam.d,rc.d/init.d} +mkdir -p $RPM_BUILD_ROOT/%{initddir} +mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/{logrotate.d,pam.d} mkdir -p $RPM_BUILD_ROOT/var/lib/radiusd # fix for bad libtool bug - can not rebuild dependent libs and bins #FIXME export LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_libdir} @@ -206,7 +208,7 @@ perl -i -pe 's/^#group =.*$/group = radiusd/' $RADDB/radiusd.conf mkdir -p $RPM_BUILD_ROOT/var/log/radius/radacct touch $RPM_BUILD_ROOT/var/log/radius/{radutmp,radius.log} -install -m 755 %{SOURCE100} $RPM_BUILD_ROOT/%{_initrddir}/radiusd +install -m 755 %{SOURCE100} $RPM_BUILD_ROOT/%{initddir}/radiusd install -m 644 %{SOURCE102} $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/radiusd install -m 644 %{SOURCE103} $RPM_BUILD_ROOT/%{_sysconfdir}/pam.d/radiusd @@ -330,7 +332,7 @@ fi %doc %{docdir}/ %config(noreplace) %{_sysconfdir}/pam.d/radiusd %config(noreplace) %{_sysconfdir}/logrotate.d/radiusd -%config(noreplace) %{_initrddir}/radiusd +%config(noreplace) %{initddir}/radiusd %dir %attr(755,radiusd,radiusd) /var/lib/radiusd # configs %dir %attr(755,root,radiusd) /etc/raddb @@ -409,7 +411,7 @@ fi %attr(640,root,radiusd) %config(noreplace) /etc/raddb/modules/sradutmp %attr(640,root,radiusd) %config(noreplace) /etc/raddb/modules/unix %attr(640,root,radiusd) %config(noreplace) /etc/raddb/modules/wimax -%dir %attr(700,radiusd,radiusd) /var/run/radiusd/ +%dir %attr(755,radiusd,radiusd) /var/run/radiusd/ # binaries %defattr(-,root,root) /usr/sbin/checkrad @@ -621,6 +623,11 @@ fi %{_libdir}/freeradius/rlm_sql_unixodbc-%{version}.so %changelog +* Thu Dec 3 2009 John Dennis - 2.1.7-3 +- resolves: bug #522111 non-conformant initscript + also change permission of /var/run/radiusd from 0700 to 0755 + so that "service radiusd status" can be run as non-root + * Wed Sep 16 2009 Tomas Mraz - 2.1.7-2 - use password-auth common PAM configuration instead of system-auth