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

Alex Zbyslaw xfb52 at dial.pipex.com
Wed Feb 6 16:42:35 UTC 2008


Zbigniew Szalbot wrote:

>Hello,
>
>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
>
>So I tried:
>$ sudo chown api /usr/local/etc/rc.d/sender.sh
>
>No error but no change either. The original start.sh file has user api
>but the symlink is owned by root.
>
>How can I make sure that the file is indeed run as user api?
>  
>
AFAIK, the owner of a symlink is completely irrelevant.  All accesses to 
the file are checked against the permissions of the file pointed to, not 
the symlink.  (Same if the target of a symlink is a directory).  Once 
upon a time I'm sure all symlinks were owned by root, but could be 
misremembering.

When you ran your chown, it did nothing at all

 From man chown

    Symbolic links named by arguments are silently left
     unchanged unless -h is used.

If you really care; say you want a find -user api to find that symlink then

chown -h api /usr/local/etc/rc.d/sender.sh

should do what you want.

--Alex




More information about the freebsd-questions mailing list