GNU/Linux >> Tutoriales Linux >  >> Linux

¿El enlace simbólico no funciona como se esperaba cuando cambia de usuario?

El enlace simbólico no funciona, usa UBUNTU 16 LTS estándar... Muestra "Permiso denegado" donde esperaba obtener acceso, no funciona incluso después de chown .

Ejemplo completo:

sudo rm /tmp/file.txt  # if exist, remove

cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt    # "-rw-rw-rw-" as expected
more data/file.txt     # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt  # fine
ls -l /tmp/file.txt    # "lrwxrwxrwx",  /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt     # fine

sudo chown -h postgres:postgres /tmp/file.txt

sudo more /tmp/file.txt   #  NOT WORK! but its is sudo! and 666!

Respuesta aceptada:

Estas acciones deberían generar un mensaje de error:Permiso denegado . El directorio, /tmp , tiene permisos, incluido el sticky bit. El error es el resultado de la configuración del kernel para fs.protected_symlinks .

Para mostrar la configuración, sysctl fs.protected_symlinks . Esto es igual a 1 cuando se establece. Para deshabilitar temporalmente, lo cual no se recomienda , sysctl -w fs.protected_symlinks=0 . Para apagar permanentemente, lo cual nuevamente no se recomienda , use /etc/sysctl.conf .

Consulte patchwork.kernel.org para obtener más información.

Para evitar que el enlace se rompa, a continuación se muestran los párrafos de resumen iniciales sobre los enlaces simbólicos del hipervínculo.

Kees Cook – 2 de julio de 2012, 20:17

Esto agrega restricciones de enlaces simbólicos y enlaces físicos a Linux VFS.

Enlaces simbólicos:

Una clase de problemas de seguridad de larga data es la carrera
basada en enlaces simbólicos
tiempo de verificación-tiempo-de-uso, que se ve más comúnmente en directorios de escritura mundial
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 simbólico dado (es decir, un
proceso raíz sigue un enlace simbólico que pertenece a otro usuario). Para obtener una lista probablemente
incompleta de cientos de ejemplos a lo largo de los años, consulte:http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

La solución es permitir que los enlaces simbólicos solo se sigan cuando se encuentren fuera
de un directorio fijo de escritura mundial, o cuando el uid del enlace simbólico y el seguidor
coincidan, o cuando el propietario del directorio coincida con el propietario del enlace simbólico.


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Error de ldconfig:no es un enlace simbólico

  3. ¿Por qué mi enlace simbólico crea un archivo y no una carpeta?

  4. Error en phpMyAdmin después de actualizar a v4.8.0:No se puede acceder a $cfg['TempDir'] (./tmp/)

  5. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

CentOS/RHEL:el punto de montaje /tmp no se monta automáticamente cuando se agrega en /etc/fstab

enlace simbólico:encuentra todos los archivos que enlazan con este archivo

Node.js:compruebe si el archivo es un enlace simbólico al iterar sobre el directorio con 'fs'

¿Cómo redirigir la salida de un comando a un archivo cuando el comando solicitará las entradas del usuario?

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

Diferencia y uso correcto de /tmp y /var/tmp