Quiero saber qué enlaces de archivos existen que apuntan a mi /tmp
carpeta en Ubuntu.
Fondo:
Tuve un problema: /tmp
por algún accidente, los privilegios de mi carpeta se cambiaron a 755. El sistema ya no funcionaba correctamente como usuario que no fuera root.
Tal vez haya un enlace a /tmp
algún lugar y el comando
chmod 755 . -Rf
llamado allí en esa carpeta estaba afectando la /tmp
carpeta principal.
Tuve que repararlo con:
chmod 777 /tmp
chmod +t /tmp
sudo chown root:root /tmp
Sólo tengo un sistema de archivos, así que no debería haber ningún problema con eso.
Respuesta1
prueba esto:
find / -path /proc -prune -o \( -lname '*/tmp' -o -lname '*/tmp/' \) -exec ls -l {} \;
Salida de muestra:
# find / -path /proc -prune -o -lname '*/tmp' -exec ls -l {} \;
lrwxrwxrwx. 1 sergey sergey 4 Sep 22 11:27 /home/sergey/xxx/tmp -> /tmp
lrwxrwxrwx. 1 root root 10 Jun 20 10:28 /usr/tmp -> ../var/tmp
find: `/run/user/sergey/gvfs': Permission denied
Respuesta2
Hasta donde yo sé, no existe una manera fácil de enumerar todos los enlaces simbólicos que apuntan a un inodo. Por lo tanto, recomendaría usar el estándar.encontrarutilidad con el-ly-mismo archivointerruptores:
- -mismo archivose comparará según el inodo de su archivo de destino,
- -lIncluirá enlaces simbólicos en la búsqueda, que es lo que estás buscando.
Aquí hay un ejemplo con /bin/dash en /bin:
$ find -L /bin -samefile /bin/dash -exec ls -lhi {} \;
786515 lrwxrwxrwx 1 root root 4 Mar 29 2012 /bin/sh -> dash
786436 -rwxr-xr-x 1 root root 108K Mar 29 2012 /bin/dash
En este resultado, puede ver tanto con el número de inodo (primera columna) como con la flecha (última) que /bin/sh en un enlace simbólico a /bin/dash. Si fueran enlaces duros, el número de inodo sería el mismo para diferentes archivos y no habría ninguna flecha en la última columna.
Finalmente, si tuviera la necesidad de buscar estos enlaces en un sistema de archivos completo, excluiría algunos directorios como/desarrollador,/procesoy/sistemade la búsqueda. Esto se haría con el-caminoy-ciruela pasaswicthes (puedes agregar tantos como quieras con-ocambiar significadoo),2>/dev/nuloestá aquí para enmascarar posibles errores:
$ sudo find -L / \( -path /dev -o -path /proc -o -path /sys \) -prune -samefile /bin/dash -exec ls -lhi {} \; 2>/dev/null
Como buscar en un sistema de archivos completo puede llevar mucho tiempo (principalmente dependiendo de su tamaño), consideraré esta opción como último recurso. Es como buscar una aguja en un pajar: no es imposible pero requiere mucho esfuerzo...
Respuesta3
Encontré la respuesta gracias a esta pregunta:Linux: ¿Encontrar todos los enlaces simbólicos de un archivo 'original' determinado? ('enlace de lectura' inverso)
find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /tmp' |grep -v /proc/