Consulte el siguiente enlace de la forma 'DJB' de iniciar procesos como otros usuarios:http://thedjbway.b0llix.net/daemontools/uidgid.html
Ver también:¿Cómo ejecutar un comando como un usuario específico en un script de inicio?
Pregunta
Tengo este script que me gustaría cambiar al usuario "Terraria" antes de comenzar el demonio. No puedo entender cómo hacerlo. Mi investigación me lleva a scripts de Bash usando su my_user -c
, pero no creo que eso funcione en este caso.
#!/bin/bash
# Terraria daemon
# chkconfig: 345 20 80
# description: Terraria Server
# processname: TerrariaServer.exe
DAEMON_PATH="/usr/Terraria"
DAEMON=TerrariaServer.exe
DAEMONOPTS="-world This_Land.wld -port 7777 "
NAME=TerrariaServer
DESC="Terraria Server"
PIDFILE=/var/run/TerrariaServer.pid
SCRIPTNAME=/etc/init.d/Terraria-Server
case "$1" in
start)
printf "%-50s" "Starting $NAME..."
cd $DAEMON_PATH
PID=`mono $DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!`
#echo "Saving PID" $PID " to " $PIDFILE
if [ -z $PID ]; then
printf "%s\n" "Fail"
else
echo $PID > $PIDFILE
printf "%s\n" "Ok"
fi
;;
status)
printf "%-50s" "Checking $NAME..."
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
printf "%s\n" "Process dead but pidfile exists"
else
echo "Running"
fi
else
printf "%s\n" "Service not running"
fi
;;
stop)
printf "%-50s" "Stopping $NAME"
PID=`cat $PIDFILE`
cd $DAEMON_PATH
if [ -f $PIDFILE ]; then
kill -HUP $PID
printf "%s\n" "Ok"
rm -f $PIDFILE
else
printf "%s\n" "pidfile not found"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {status|start|stop|restart}"
exit 1
esac
Solución
Consulte el siguiente enlace de la forma 'DJB' de iniciar procesos como otros usuarios:http://thedjbway.b0llix.net/daemontools/uidgid.html
Ver también:¿Cómo ejecutar un comando como un usuario específico en un script de inicio?