/usr/local/etc/rc.d/ scripts and non-root user

Alex Zbyslaw xfb52 at dial.pipex.com
Wed Feb 6 16:50:55 UTC 2008


Zbigniew Szalbot wrote:

>I have looked at my /usr/local/etc/rc.d/ and realized that the symlink
>I put there has the root as owner. It all works but I would rather use
>a non-root user for to run that script.
>
>$ ls -l /usr/local/etc/rc.d/
>lrwxr-xr-x  1 root  wheel    40 May  9  2007 sender.sh ->
>/usr/home/api/sender/start.sh
>
There's one more potential mistake you are making here.  Who the script 
runs as has nothing at all to do with who owns the script unless setuid 
or setgid bits are set.  They would be set on the script itself and not 
the symlink, so we'd need to see

ls -lL /usr/local/etc/rc.d/sender.sh

to know what was set or not.

Specifically, startup scripts will always run as root and it will be up 
to the script to do things as another user if appropriate.  E.g. by 
using su, or sudo, or by running a program which was setuid 
some-other-user, or because it runs as root, simply changing to another 
user when appropriate (see man 2 setuid).

Setuid/gid bits on shell scripts aren't considered safe, however and may 
even be disabled.

--Alex




More information about the freebsd-questions mailing list