Estoy enfrentando algún problema con la creación de enlaces blandos. El siguiente es el archivo original.
$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11 2014 /etc/init.d/jboss
La creación de enlaces falla con un problema de permiso para el propietario del archivo:
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)
Entonces, creé el enlace con privilegios de sudo:
$ 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
Luego intenté cambiar la propiedad del enlace flexible al usuario original.
$ 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
Pero el permiso del enlace suave no se está cambiando.
¿Qué me falta aquí para cambiar el permiso del enlace?
Respuestas:
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 sea que apunte el enlace simbólico ).Si desea cambiar la propiedad del enlace en sí, debe usar la
-h
opción parachown
:Por ejemplo:
Tenga en cuenta que el objetivo del enlace ahora es propiedad de root.
Y nuevamente, el enlace
test1
aún es propiedad de root, aunquetest
ha cambiado.Y finalmente cambiamos la propiedad del enlace usando la
-h
opción.fuente
cp -as
niinstall
niln
pueden crear enlaces simbólicos directamente con un usuario / grupo específico.Al actuar sobre enlaces simbólicos, debe indicar a la mayoría de las herramientas (chown, chmod, ls ...) que no desreferencian el enlace: debe agregar el
-h
parámetro, como se indica en la página de manual:Entonces intenta:
sudo chown -h askar.admin /etc/init.d/jboss1
fuente
También tenga en cuenta que el error que dio anteriormente
no se debe a que el propietario del enlace simbólico sea otra persona que no sea el propietario del archivo original. Es (muy probablemente) causado por el usuario askar que no tiene acceso de escritura al directorio
/etc/init.d
.fuente