Running as a different user on FreeBSD

Hey folks,
I'm guessing this is one of those "don't do it" questions but, suffice it to say, I have my reasons... largely around shared storage on the backend.

I'm trying to run Channels as a different user on FreeBSD.

working:

  • I have ~MyUser/channels-dvr and it is owned by MyUser:MyGroup
  • I can launch channels-dvr/latest by MyUser in a shell
  • NFS mount for content storage

Not working:

  • I cannot get channels to start from a service
  • If I run the following command, it tells me it doesn't have permissions for settings.db (I've confirmed ~myuser/channels-dvr/data/settings.db is owned by myuser

sudo /usr/sbin/daemon -u azuser -p /var/run/channels-dvr.pid /bin/sh -c "exec /Users/azuser/channels-dvr/latest/channels-dvr"

I changed /u/l/e/rc.d/channels_dvr as follows:


#!/bin/sh
# PROVIDE: channels_dvr
# REQUIRE: NETWORKING
. /etc/rc.subr
name="channels_dvr"
rcvar=channels_dvr_enable
pidfile="/var/run/channels-dvr.pid"

: ${channels_dvr_enable:=NO}
: ${channels_dvr_user:=myuser}

command=/Users/myuser/channels-dvr/latest/channels-dvr
start_cmd=channels_dvr_start

channels_dvr_start() {
  cd /Users/azuser/channels-dvr/data
  /usr/sbin/daemon -u $channels_dvr_user -p $pidfile /bin/sh -c "exec $command </dev/null >>channels-dvr.log 2>&1"
}

load_rc_config $name
run_rc_command "$1"

What's the exact error? It may be that the dvr is already running so settings.db is open and thus failing to reopen

I think I found a solution ... rather than launch with a service, I'm using @reboot as a cronjob for the user in question