I am facing some issue with creating soft links. Following is the original file.
$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11 2014 /etc/init.d/jboss
Link creation is failing with a permission issue for the owner of the file:
ln -sv jboss /etc/init.d/jboss1
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied
$ id
uid=689(askar) gid=500(admin) groups=500(admin)
So, I created the link with sudo privileges:
$ sudo ln -sv jboss /etc/init.d/jboss1
`/etc/init.d/jboss1' -> `jboss'
$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Next I tried to change the ownership of the soft link to the original user.
$ sudo chown askar.admin /etc/init.d/jboss1
$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
But the permission of the soft link is not getting changed.
What am I missing here to change the permission of the link?
Best Answer
On a Linux system, when changing the ownership of a symbolic link using
chown
, by default it changes the target of the symbolic link (ie, whatever the symbolic link is pointing to).If you'd like to change ownership of the link itself, you need to use the
-h
option tochown
:For example:
Note that the target of the link is now owned by root.
And again, the link
test1
is still owned by root, even thoughtest
has changed.And finally we change the ownership of the link using the
-h
option.