Problema al utilizar locate en Ubuntu
Esta mañana, al intentar una búsqueda con el comando locate de unos archivos que sabía que están en mi /home no recibía ningún resultado como respuesta. La base de datos estaba creada correctamente en /var/lib/mlocate/mlocate.db y la búsqueda sí devolvía resultados para archivos fuera de mi /home. Lógicamente ejecuté el comando updatedb, pero tampoco funcionaba.
Revisé la configuración en /etc/updatedb.conf y encontré que tenía el siguiente contenido:
PRUNE_BIND_MOUNTS="yes" # PRUNENAMES=".git .bzr .hg .svn" PRUNEPATHS="/tmp /var/spool /media" PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
Contenido que, a priori, es correcto para que indexe mi /home, dado que no está dentro de los PATH a ignorar y está formateado con ext4. Como aclaración, lo que hacen las variables PRUNEPATHS y PRUNEFS es indicar que no indexe los directorios listados ni los filesystems especificados, respectivamente.
Ahora bien, al chequear las particiones montadas en mi sistema me encontré con lo siguiente:
leandro@scarlet:~$ mount /dev/sda3 on / type ext4 (rw,errors=remount-ro,commit=0) /dev/sda5 on /home type ext4 (rw,commit=0) /home/leandro/.Private on /home/leandro type ecryptfs (ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=3c4c274e018dcd1d,ecryptfs_fnek_sig=8b78ca14201c02d2)
En ese momento recordé que al instalar Ubuntu había indicado que cifre mi carpeta personal y de ahí el problema, que se ve en la tercer línea. Al cifrar mi /home en Ubuntu se creó una carpeta que se llama /home/.ecryptfs/leandro, donde están realmente los datos de mi /home encriptados (/home/leandro/.Private en realidad es un link simbólico a /home/.ecryptfs/leandro). Ese directorio, al iniciar sesión, se monta bajo /home/leandro con ecryptfs como tipo de sistema de archivos. Precisamente por eso no funciona el comando locate. Lo que hay que hacer es simplemente quitar ecryptfs de la variable PRUNEFS y luego ejecutar updatedb.
Posts relacionados:



