View Single Post
  #1   (View Single Post)  
Old 8th November 2008
phreud phreud is offline
Port Guard
 
Join Date: Nov 2008
Posts: 22
Default Run daemon as other user than root

I've installed utserver (Unreal Tournament game server) from ports. It also installed a startscript in /usr/local/etc/rc.d/ucc

Code:
# $FreeBSD: ports/games/utserver/files/ucc.in,v 1.3 2006/09/18 14:01:15 rafan Exp $
#
# PROVIDE: ucc
# REQUIRE: DAEMON
#
# Add the following line to /etc/rc.conf[.local] to enable ucc
#
# ucc_enable (bool):            Set to "NO" by default.
#                               Set it to "YES" to enable ucc.

. /etc/rc.subr

name="ucc"
rcvar=${name}_enable

load_rc_config $name

: ${ucc_enable="NO"}
: ${ucc_config="server.ini"}
: ${ucc_logfile="/dev/null"}
: ${ucc_map="dm-Hyperblast"}
: ${ucc_pidfile="/var/run/ucc.pid"}

pidfile=${ucc_pidfile}
command="/usr/local/ut-server/System/ucc-bin"
command_args="server \"${ucc_map}\" ini=${ucc_config}"
start_cmd="ucc_startcmd"

ucc_startcmd()
{
    if [ -z "$rc_fast" -a -n "$rc_pid" ]; then
        echo "${name} already running? (pid=$rc_pid)."
        return 1
    fi
    echo Starting ${name}.
    if [ ! -x /usr/sbin/daemon ]; then
        err 1 "/usr/sbin/daemon required"
    fi
    if ! /usr/sbin/daemon 2>&1 | grep pidfile > /dev/null; then
        err 1 "/usr/sbin/daemon with -p option required"
    fi
    if ! kldstat -v | grep -E 'linux(aout|elf)' > /dev/null; then
        err 1 "Linux support required"
    fi
    cd /usr/local/ut-server/System/
    cmd="/usr/sbin/daemon -p ${ucc_pidfile} ${command} ${command_args}"
    if [ -n "$ucc_user" ]; then
        cmd="su -m $ucc_user -c '$cmd'"
    fi
    eval "$cmd 2>&1 >> ${ucc_logfile}"
}
After putting ucc_enable="YES" in /etc/rc.conf the server starts up fine on boot. However, it runs as root. How can I change this to something else (user nobody maybe)?
Reply With Quote