Parece que Linux admite cambiar el propietario de un enlace simbólico (es decir lchown
), pero no se admite cambiar el modo / permiso de un enlace simbólico (es decir lchmod
) . Por lo que puedo ver, esto está de acuerdo con POSIX. Sin embargo, no entiendo por qué uno apoyaría cualquiera de estas operaciones pero no ambas. ¿Cuál es la motivación detrás de esto?
linux
permissions
posix
Florian Brucker
fuente
fuente
lrwxrwxrwx
. Achmod
no tiene sentido aquí. Seguir el enlace lo lleva a los permisos de destino.lchmod
. Pero otros sistemas operativos tipo Unix sí lo admiten (por ejemplo, Mac OS X ), por lo que la pregunta es por qué Linux no lo hace cuando sí lo eslchown
.Respuestas:
Linux, como la mayoría de los sistemas tipo Unix (Apple OS / X es una de las raras excepciones), ignora los permisos en 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 renombrar o desvincular sus entradas en directorios que tienen el
t
bit establecido, como/tmp
.Para poder eliminar o cambiar el nombre de un archivo (enlace simbólico o no)
/tmp
, debe ser el propietario del archivo. Esa es una razón por la que uno podría querer cambiar la propiedad de un enlace simbólico (para otorgar o eliminar permisos para desvincularlo / renombrarlo).Además, como mencionó Mark Plotnick en su respuesta ahora eliminada , las aplicaciones de copia de seguridad y archivo deben
lchown()
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.fuente
No hay lchmod () en posix pero fchmodat () que permitiría establecer los permisos de un enlace simbólico. Esto todavía no requiere que se evalúen los permisos de los enlaces simbólicos.
fuente
lchmod
está de acuerdo con POSIX. ¿Qué agrega esta respuesta que aún no está en la pregunta?