En un sistema Linux, al cambiar la propiedad de un enlace simbólico usando chown
, por defecto cambia el objetivo del enlace simbólico (es decir, lo que apunta el enlace simbólico ).
Si desea cambiar la propiedad del enlace en sí, debe usar el -h
opción a chown
:
-h, --sin desreferencia afecta cada enlace simbólico en lugar de cualquier archivo al que se hace referencia (útil solo en sistemas que pueden cambiar la propiedad de un enlace simbólico)
Por ejemplo:
$ touch test
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
$ sudo ln -s test test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
$ sudo chown root:root test1
$ ls -l test*
-rw-r--r-- 1 root root 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
Tenga en cuenta que el objetivo del enlace ahora es propiedad de root.
$ sudo chown mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
Y de nuevo, el enlace test1
sigue siendo propiedad de root, aunque test
ha cambiado.
$ sudo chown -h mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test
Y finalmente cambiamos la propiedad del enlace usando el -h
opción.
Cuando actúe sobre los enlaces simbólicos, debe decirle a la mayoría de las herramientas (chown, chmod, ls...) que no eliminen la referencia del enlace:debe agregar el -h
parámetro, como se indica en la página de manual:
-h, --no-dereference
affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)
Así que prueba:sudo chown -h askar.admin /etc/init.d/jboss1
También tenga en cuenta que el error que dio arriba
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied
no se debe a que el propietario del enlace simbólico no sea el propietario del archivo original. Es (probablemente) causado por el usuario askar que no tiene acceso de escritura al directorio /etc/init.d
.