Date: Wed, 9 Apr 2003 02:33:56 +0200 (CEST) From: Cyrille Lefevre <cyrille.lefevre@laposte.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/50739: Maintainer update: astro/setiathome (nobody->setiathome) Message-ID: <200304090033.h390XupS001546@mail.gits.dyndns.org> Resent-Message-ID: <200304090040.h390e4RD036576@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 50739 >Category: ports >Synopsis: Maintainer update: astro/setiathome (nobody->setiathome) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Tue Apr 08 17:40:03 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Cyrille Lefevre >Release: FreeBSD 4.8-RC i386 >Organization: ACME >Environment: System: FreeBSD gits 4.8-RC FreeBSD 4.8-RC #0: Fri Mar 21 05:43:00 CET 2003 root@gits:/disk1/freebsd/stable/obj/disk2/freebsd/stable/src/sys/CUSTOM i386 >Description: change the running user from nobody to setiathome. also, add a while loop to automatically restart unexpected died setiathome. Makefile PORTREVISION bumped pkg-install nobody->setiathome files/rc.setiathome.conf variables added files/setiathome.sh nobody->setiathome startup while loop added setiathome user setup added >How-To-Repeat: n/a >Fix: Index: Makefile =================================================================== RCS file: /home/ncvs/ports/astro/setiathome/Makefile,v retrieving revision 1.36 diff -u -I$Id.*$ -I$.+BSD.*$ -r1.36 Makefile --- Makefile 8 Apr 2003 11:52:53 -0000 1.36 +++ Makefile 8 Apr 2003 23:19:14 -0000 @@ -6,7 +6,7 @@ PORTNAME= setiathome PORTVERSION?= 3.03 -PORTREVISION?= 5 +PORTREVISION?= 6 CATEGORIES?= astro MASTER_SITES= ftp://ftp.cdrom.com/pub/setiathome/ \ ftp://alien.ssl.berkeley.edu/pub/ @@ -16,7 +16,9 @@ MAINTAINER?= cyrille.lefevre@laposte.net COMMENT?= Donate idle cycles to the search for space aliens +.if ${PORTVERSION} == "3.03" FORBIDDEN= 'Exploitable buffer overflow. http://spoor12.edup.tudelft.nl/' +.endif .include <bsd.port.pre.mk> Index: pkg-install =================================================================== RCS file: /home/ncvs/ports/astro/setiathome/pkg-install,v retrieving revision 1.9 diff -u -I$Id.*$ -I$.+BSD.*$ -r1.9 pkg-install --- pkg-install 28 Jul 2002 22:13:45 -0000 1.9 +++ pkg-install 13 Feb 2003 01:45:51 -0000 @@ -14,7 +14,7 @@ # override these variables in ${PREFIX}/etc/rc.setiathome.conf seti_wrkdir=/var/db/${PKG_NAME} # working directory -seti_user=nobody # user id to run under +seti_user=setiathome # user id to run under seti_maxprocs=$(sysctl -n hw.ncpu) # max. number of processes to start rcconf_dir=${PKG_PREFIX}/etc @@ -126,6 +126,9 @@ echo " to do so, but think about it twince before." else echo "**** SETI@home working directory and temporary files removed." + fi + if pw usershow "${seti_user}" 2>/dev/null 1>&2; then +echo "To permanently delete SETI@home user, use 'pw userdel ${seti_user}'" fi ;; Index: files/rc.setiathome.conf =================================================================== RCS file: /home/ncvs/ports/astro/setiathome/files/rc.setiathome.conf,v retrieving revision 1.4 diff -u -I$Id.*$ -I$.+BSD.*$ -r1.4 rc.setiathome.conf --- files/rc.setiathome.conf 28 Jul 2002 22:13:45 -0000 1.4 +++ files/rc.setiathome.conf 8 Apr 2003 22:00:02 -0000 @@ -7,6 +7,8 @@ # seti_std_args=-email # command arguments for standard mode # seti_reg_args=-login # command arguments for register mode # seti_proxy_args= # proxy arguments -# seti_user=nobody # user id to run as +# seti_user=setiathome # user id to run as +# seti_group=${seti_user} # group id to run as # seti_nice=15 # nice level to run at # seti_maxprocs=$(sysctl -n hw.ncpu) # max. number of processes to start +# seti_sleep=21600 # time to sleep between restarts Index: files/setiathome.sh =================================================================== RCS file: /home/ncvs/ports/astro/setiathome/files/setiathome.sh,v retrieving revision 1.9 diff -u -I$Id.*$ -I$.+BSD.*$ -r1.9 setiathome.sh --- files/setiathome.sh 28 Jul 2002 22:13:45 -0000 1.9 +++ files/setiathome.sh 8 Apr 2003 23:05:38 -0000 @@ -5,7 +5,12 @@ # Start or stop SETI@home, or set up working directory and register. # +case $0 in +/*) rc_dir=${0%/*} ;; + *) rc_dir=${PWD:-$(pwd)} ;; +esac rc_file=${0##*/} +rc_path=${rc_dir}/${rc_file} rc_arg=$1 # override these variables in ${PREFIX}/etc/rc.setiathome.conf @@ -13,11 +18,13 @@ seti_std_args=-email # command arguments for standard mode seti_reg_args=-login # command arguments for register mode seti_proxy_args= # proxy arguments -seti_user=nobody # user id to run as +seti_user=setiathome # user id to run as +seti_group=${seti_user} # group id to run as seti_nice=15 # nice level to run at seti_maxprocs=$(sysctl -n hw.ncpu) # max. number of processes to start +seti_sleep=21600 # time to sleep between restarts -if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/${rc_file}\$"); then +if ! PREFIX=$(expr ${rc_path} : "\(/.*\)/etc/rc\.d/${rc_file}\$"); then echo "${rc_file}: Cannot determine PREFIX." >&2 echo "Please use the complete pathname." >&2 exit 64 @@ -68,19 +75,28 @@ done for i in ${seti_wrksuff}; do su -fm ${seti_user} -c "\ - (cd ${seti_wrkdir}/${i} && exec ${program_path} \ - ${seti_std_args} ${seti_proxy_args} \ - ${seti_nice:+-nice} ${seti_nice} >/dev/null &)" + cd ${seti_wrkdir}/${i} || exit; \ + echo \$\$ > shpid.sah; \ + trap 'kill \$pid;exit' 15; \ + while :; do \ + ${program_path} \ + ${seti_std_args} ${seti_proxy_args} \ + ${seti_nice:+-nice} ${seti_nice} & \ + pid=\$!; wait \$pid; \ + sleep ${seti_sleep}; \ + done > /dev/null" & done echo -n " SETI@home" ;; stop) for i in ${seti_wrksuff}; do - pid_path=${seti_wrkdir}/${i}/pid.sah - if [ -f ${pid_path} ]; then - kill $(cat ${pid_path}) 2> /dev/null - fi + for pid_path in ${seti_wrkdir}/${i}/pid.sah \ + ${seti_wrkdir}/${i}/shpid.sah; do + if [ -f ${pid_path} ]; then + kill $(cat ${pid_path}) 2> /dev/null + fi + done done if [ ! -f ${seti_wrkdir}/pid.sah ]; then killall ${program_file} 2> /dev/null @@ -102,10 +118,39 @@ "unable to register: ${program_path} is missing." >&2 exit 72 fi + if pw group show "${seti_group}" 2>/dev/null; then + echo "You already have a group \"${seti_group}\"," \ + "so I will use it." + elif pw groupadd ${seti_group} -h -; then + echo "Added group \"${seti_group}\"." + else + echo "Adding group \"${seti_group}\" failed..." + echo "Please create it, and try again." + exit 1 + fi + if pw user show "${seti_user}" 2>/dev/null; then + echo "You already have a user \"${seti_user}\"," \ + "so I will use it." + if pw usermod ${seti_user} -d ${seti_wrkdir}; then + echo "Changed home directory of \"${seti_user}\"" \ + "to \"${seti_wrkdir}\"" + else + echo "Changing home directory of \"${seti_user}\"" \ + "to \"${setu_wrkdir}\" failed..." + exit 1 + fi + elif pw useradd ${seti_user} -g ${seti_group} -h - \ + -d ${seti_wrkdir} -s /sbin/nologin -c "SETI at home Daemon"; then + echo "Added user \"${seti_user}\"." + else + echo "Adding user \"${seti_user}\" failed..." + echo "Please create it, and try again." + exit 1 + fi # Create or update primary working directory (in case the uid changed) - mkdir -p ${seti_wrkdir} - chown ${seti_user} ${seti_wrkdir} - chmod u=Xrw,g=Xr,o=Xr ${seti_wrkdir} + mkdir -p ${seti_wrkdir} || exit + chown -Rh ${seti_user}:${seti_group} ${seti_wrkdir} || exit + chmod u=Xrw,g=Xr,o=Xr ${seti_wrkdir} || exit seti_dontlogin=no if [ -f ${seti_wrkdir}/user_info.sah ]; then echo " It seems you have already registered with" \ >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304090033.h390XupS001546>