Para crear el vínculo físico alice
necesitará write+execute
permisos en target-dir
en todos los casos. Los permisos necesarios en target.txt
variará:
- Si
fs.protected_hardlinks = 1
entoncesalice
necesita la propiedad detarget.txt
o al menosread+write
permisos en él. - Si
fs.protected_hardlinks = 0
entonces cualquier conjunto de permisos servirá; Incluso 000 está bien.
Esta respuesta a una pregunta similar tenía la información que faltaba para responder esta pregunta.
De http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [énfasis mío]:
Enlaces duros:
En los sistemas que tienen directorios en los que el usuario puede escribir en la misma partición que los archivos del sistema, una clase de problemas de seguridad de larga data es la carrera de tiempo de verificación-tiempo de uso basada en enlaces duros, que se ve más comúnmente en directorios en los que se puede escribir en todo el mundo como /tmp . El método común de explotación de esta falla es cruzar los límites de privilegios cuando se sigue un enlace fijo dado (es decir, un proceso raíz sigue un enlace fijo creado por otro usuario). Además, existe un problema en el que los usuarios pueden "fijar" un archivo setuid/setgid potencialmente vulnerable para que un administrador no actualice el sistema por completo.
La solución es permitir que los enlaces físicos solo se creen cuando el usuario ya es el propietario del archivo existente, o si ya tiene acceso de lectura/escritura al archivo existente .