miércoles, 16 de julio de 2014

Enlaces simbólicos

¿ Qué es un enlace simbólico ?:
Un enlace simbólico indica un acceso a un archivo o un directorio que se encuentra en un lugar distinto dentro del árbol de directorios. Una modificación realizada utilizando este enlace se reflejará en el original; pero, por el contrario, si se elimina el enlace, no se eliminará el auténtico archivo o directorio.
Es posible realizar enlaces simbólicos que apunten a objetos en sistemas de archivos que se hallan en otros dispositivos o particiones dentro del mismo dispositivo.
Cualquier usuario puede crear o eliminar un enlace simbólico a un directorio o archivo, aunque el elemento de origen y/o el de destino estén fuera del directorio del usuario.
Los permisos del sistema de archivo sobre el enlace simbólico no tiene importancia alguna: los permisos en el objeto al cual referencia el enlace simbólico son los que determinan los permisos de acceso.
Cualquier cambio que se haga tanto en el directorio original como en el contenido del enlace simbólico quedará reflejado en el otro (si cambias el contenido del enlace simbólico se podrá ver en el original y viceversa).
Borrar el enlace simbólico no afecta al original, que seguirá existiendo.

Crear un enlace simbólico desde la terminal:
Para crear un enlace simbólico lanzaremos el comando ln con la siguiente sintaxis desde la terminal: ln -s dirección-elemento-origen dirección-elemento-destino
Donde:
dirección-elemento-origen es la dirección en el administrador de archivos del directorio o archivo al que queremos apuntar
elemento-destino es la dirección en el administrador de archivos en donde queremos poner el enlace al elemento-origen
Repitiendo la orden, modificando la dirección del elemento-destino, podemos crear varios enlaces simbólicos desde un mismo elemento-origen a varios elementos-destino.
Podemos usar el comando ln desde la terminal de usuario tanto para crear enlaces simbólicos a elementos situados en la carpeta de usuario como fuera de ella.

Para eliminar enlaces simbólicos: ejecutar el comando unlink ,con la siguiente sintaxis: unlink dirección-del-enlace-simbólico-que-queremos-borrar 

Asimismo podemos usar el comando unlink desde la terminal de usuario tanto para borrar enlaces simbólicos que estén en la carpeta de usuario o fuera de ella.
-----------------------------
Crear un enlace simbólico de modo gráfico:
En el administrador de archivos seleccionamos el elemento-origen - directorio o archivo - al que queremos hacer un enlace simbólico, y con el botón derecho del ratón elegimos en el menú contextual --> la opción "crear enlace", con lo que se crea un nuevo elemento-destino, un enlace simbólico, con nombre "enlazar a xxx" ( siendo xxx el nombre del elemento inicial que hemos seleccionado ).

Al final, tanto si lo hemos creado en modo gráfico como si lo hemos creado con la terminal, el enlace simbólico tendrá un icono con una pequeña flecha, que nos sirve para distinguir este elemento simbólico de un elemento real, de forma similar al icono del siguiente enlace simbólico.
Una vez creado el enlace simbólico podemos cambiarle el nombre a otro que nos resulte mas conveniente, y copiarlo o moverlo a la dirección que nos convenga, del mismo modo que haríamos con cualquier otro archivo o directorio.

Creando el enlace simbólico en modo gráfico, si el elemento inicial al que queremos crear un enlace simbólico no esta en la carpeta de usuario tendremos que usar el administrador de archivos abierto con permisos de root. Así mismo si la dirección a la que queramos copiar o mover el enlace simbólico esta fuera de la carpeta de usuario tendremos que usar también el administrador de archivos con permisos de root.
------------------------
Algunos usos prácticos de enlaces simbólicos:
En mi sistema uso los enlaces simbólicos para tener las configuraciones y datos del programa que uso de correo ( Sylpheed ) y el navegador-web (Firefox) fuera de la carpeta de usuario, en una partición distinta.


Sylpheed: Cuando instalamos el programa de correo Sylpheed por defecto se crean en la carpeta /home/usuario dos subcarpetas: una en donde se guarda la configuración personal del programa ( configuración de las cuentas de correo, de las carpetas de correo, etc ) ( /home/usuario/.sylpheed-2.0)  y otra en donde se guardan los correos enviados, guardados, recibidos, etc, (/home/usuario/Mail ) pero nos puede ser útil que ambas subcarpetas no estén en la carpeta del usuario ( Usar el programa de correo Sylpheed desde fuera de la carpeta del usuario) para poder recuperarlas fácilmente si tenemos que formatear la partición /home ( se perderá el enlace simbólico, pero no la carpeta a la que éste apunta ) , por ejemplo para instalar una nueva versión del sistema desde cero.

Firefox: de forma similar al caso anterior se puede hacer con la carpeta /home/usuario/.mozilla para tener en una carpeta distinta, fuera de la partición /home, las configuraciones personales que hagamos al navegador, de forma que no las perdamos aunque formateemos la partición /home para instalar una nueva versión del sistema desde cero.

Thunderbird: de forma similar a lo que hago con Sylpheed se puede hacer con la carpeta /home/usuario/.thunderbird si usamos este programa de correo, para tener en una carpeta fuera de la partición /home las configuraciones personales y correos que tengamos al usar este programa.

6 comentarios:

  1. Hola Hatteras, y gracias por tus geniales apuntes
    Verás, el problema que he tenido yo siempre es que no puedo crear enlaces ni siquiera como root. Siempre me sale el error "el destino no permite enlaces simbólicos"
    ¿Sabes que puede estar pasando?
    Mil gracias!

    ResponderEliminar
  2. ¿ Donde quieres tener como destino el enlace simbólico ?
    Sin saber eso no puedo decirte mucho mas.

    ResponderEliminar
  3. Hola Hatteras.

    Soy el Señor Paquito. Alguna vez hemos hablado en el foro de Ubuntu-Guía.

    Hace algún tiempo tengo un disco SSD para el sistema. ME gusta tener la /home también en el SSD por aquello de aprovechar la velocidad del disco para acceder a configuraciones y demás, por eso en Ubuntu 14.04 sustituía las carpetas básicas de usuario (Música, Documentos...) por enlaces simbólicos a la partición del disco HDD donde almaceno los archivos (la monto al arranque utilizando la configuración por defecto de la aplicación "Discos" de Ubuntu, básicamente, porque las modificaciones del fstab que venía haciendo desde siempre no me funcionan en Ubuntu 16.04, el sistema no quiere arrancar, no sé si será debido a SystemD o que...). Así, evitaba tener archivos en el SSD y el sistema no se enteraba de nada.

    Y el caso es que he actualizado a Ubuntu 16.04 y me he encontrado con dificultades para hacer esto. Puedo utilizar los enlaces simbólicos, si, pero hay un problema, y es que no puedo enviar archivos ni carpetas a la papelera cuando accedo a ellos desde el enlace simbólico que pongo en la carpeta. Esto no me había pasado antes. Si los enlaces los pongo en la misma partición donde están los archivos no pasa nada, pero si los pongo en la /home (no es una partición, tengo raíz y /home en la misma, pero lo probé con particiones separadas y pasa lo mismo) puedo escribir, modificar, pero no puedo enviar a la papelera.

    Yo creo que va a ser cosa de las opciones de montaje, pero no tengo ni idea de lo que puede ser.

    El punto de montaje está en /mnt y las opciones son:

    nosuid,nodev,nofail,x-gvfs-show

    Se te ocurre algo?

    ...y gracias por adelantado!

    ResponderEliminar
  4. Sr. Paquito: En vez de crear enlaces simbólicos, puedes cambiar la dirección de los directorios por defecto del usuario siguiendo los pasos indicados en http://hatteras-blog.blogspot.com.es/2012/03/cambiar-el-origen-de-las-carpetas.html

    ResponderEliminar
  5. El Señor Paquito responde.

    Correcto, ya lo había hecho. No encontré tu tutorial cuando busqué en Google, pero seguí uno que daba las mismas indicaciones. Lástima que no exista ya Ubuntu Tweak, ni ningún otro programita que haga todo lo que hacía.

    Por lo demás, me gustaba el sistema de los enlaces simbólicos porque era más intuitivo para casi todo. Y, por otro lado, me mosqueaba el tema porque nunca me había pasado esto con particiones EXT4. Tiene que ser por alguna opción de montaje, probablemente, pero a saber que.

    En cualquier caso, muchas gracias.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Ubuntu Tweak para Mint 17.x (Ubuntu 14.04) está disponible en Launchpad:

      https://launchpad.net/ubuntu-tweak

      La versión para Mint 18 (Ubuntu 16.04) está aquí:

      http://www.ubuntuupdates.org/package/getdeb_apps/xenial/apps/getdeb/ubuntu-tweak

      Sobre las opciones de montaje, yo probaría a añadir a la línea

      nosuid,nodev,nofail,x-gvfs-show

      el texto uid=1000 (indicativo de que el propietario es el usuario) quedando así:

      nosuid,nodev,nofail,uid=1000,x-gvfs-show

      Guardar y reiniciar. De esto no estoy seguro; es probar. Si no funciona, pues se elimina. Saludos,

      Eliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.