Linux, como la mayoría de los sistemas similares a Unix (Apple OS/X es una de las raras excepciones), ignora los permisos de los enlaces simbólicos cuando se trata de resolver sus objetivos, por ejemplo.
Sin embargo, la propiedad de los enlaces simbólicos, como otros archivos, es relevante cuando se trata del permiso para cambiar el nombre o desvincular sus entradas en directorios que tienen el t
conjunto de bits, como /tmp
.
Para poder eliminar o cambiar el nombre de un archivo (enlace simbólico o no) en /tmp
, debe ser el propietario del archivo. Esa es una de las razones por las que uno podría querer cambiar la propiedad de un enlace simbólico (para otorgar o eliminar el permiso para desvincularlo/renombrarlo).
$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed
$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted
Además, como mencionó Mark Plotnick en su respuesta ahora eliminada, las aplicaciones de respaldo y archivo necesitan lchown()
para restaurar los enlaces simbólicos a sus propietarios originales. Otra opción sería cambiar euid y egid antes de crear el enlace simbólico, pero eso no sería eficiente y complicaría las gestiones correctas en el directorio en el que se extrae el enlace simbólico.