Tengo un enlace simbólico con estos permisos:
lrwxrwxrwx 1 myuser myuser 38 Aug 18 00:36 npm -> ../lib/node_modules/npm/bin/npm-cli.js*
El enlace simbólico se encuentra en un archivo .tar.gz. Ahora, cuando descomprimo el archivo tar.gz usando Maven, el enlace simbólico ya no es válido. Por lo tanto, estoy tratando de reconstruir el enlace simbólico. Primero creo el enlace simbólico usando ln, pero ¿cómo configuro los mismos permisos que el enlace simbólico original?
Cuando intenta utilizar
chmod
para establecer los permisos del enlace, lo que realmente hace es establecer los permisos del objetivo del enlace. Los permisos del enlace no tienen sentido.fuente
test
con-rw-rw-r-- root root
, porquerm test
recibo el mensajerm: remove write-protected regular empty file 'test'?
La solución es colocar archivos confidenciales en directorios para los que los usuarios tienen acceso de solo lectura.Cuando tienes un enlace como:
y quiero cambiarlo a:
Hay dos casos a considerar:
foo/bar
no es un directorio o no existe o no tiene acceso de búsquedafoo
. Luegofallará porque
link
ya existe, pero puede superarlo utilizando el estándar:foo/bar
es un directorio (y tiene permiso de búsquedafoo
para poder determinar quefoo/bar
es un directorio). En ese caso, cuando haces:o
Se entiende como crear un nuevo
target
enlace simbólico dentro dellink
directorio (link
es un directorio porque es un enlace simbólico alfoo/bar
directorio). Entonces realmente crearás un:Para superar eso, GNU
ln
tiene una-T
opción para que el nombre del enlace se considere siempre como el nombre del enlace, y no como un directorio para crear los enlaces. Entonces, con GNUln
:trabajará. Al igual que antes, eliminará el
link
enlace simbólico original y lo creará de nuevo connew/target
el objetivo (y el proceso 'euid y egid como propietario).GNU
ln
también tiene una-n
opción. Funciona como,-T
excepto cuando enlink
realidad es un directorio real, en cuyo caso aún creará el enlace simbólico dentro de ese directorio (en lugar de fallar con un error).Portablemente, su mejor opción es eliminar primero el enlace y luego volver a crearlo:
En la mayoría de los sistemas, los permisos en los enlaces simbólicos se ignoran y generalmente se fijan en
rwxrwxrwx
.En los sistemas donde los permisos de enlaces simbólicos son importantes (como OS / X donde necesita permiso de lectura para un enlace simbólico para poder resolver su objetivo), generalmente hay una manera de cambiarlos (
chmod -h
en OS / X).La propiedad, si bien como anteriormente no es relevante para el acceso al archivo señalado por el enlace simbólico en la mayoría de los sistemas, puede tener alguna otra relevancia con el
t
bit del directorio principal o las cuotas ... ) y hay un comando estándar para cambiarlo:fuente
Si realmente necesita cambiar el permiso de enlaces simbólicos (generalmente sin sentido, como está escrito en otras respuestas), tuve éxito al usar la
-R
opción dechown
:Si
-R
no se usó, los permisos no se modificaron.fuente
chown
porque está-R
implícito-P
allí, sin embargo, eso no está garantizado y no funcionará en otras implementaciones conocidas. La forma estándar de cambiar la propiedad del enlace simbólico es con la-h
opción. Acabo de actualizar la respuesta aceptada que era incorrecta.