¿Qué es el enlace simbólico en Linux y por qué se usa?
Un enlace simbólico, también conocido como enlace simbólico o enlace suave , es un tipo especial de archivo que simplemente apunta a otro archivo o directorio al igual que los accesos directos en Windows. Crear un enlace simbólico es como crear un alias para un archivo real.
Si intenta acceder al enlace simbólico, en realidad accede al archivo de destino al que apunta el enlace simbólico. Los cambios realizados en el contenido del archivo de enlace cambian el contenido del archivo de destino real.
Si usa el comando ls con la opción -l, así es como se ve un enlace simbólico:
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
En la mayoría de las distribuciones de Linux, los enlaces se muestran en un color diferente al resto de las entradas para que pueda distinguir los enlaces de los archivos y directorios normales.
Los enlaces simbólicos ofrecen una manera conveniente de organizar y compartir archivos. Proporcionan acceso rápido a rutas de directorio largas y confusas. Se utilizan mucho para vincular bibliotecas en Linux.
Ahora que sabes un poco sobre los enlaces simbólicos, veamos cómo crearlos.
Cómo crear un enlace simbólico en Linux
Para crear un enlace simbólico al archivo de destino desde el nombre del enlace , puede usar el comando ln con la opción -s así:
ln -s target_file link_name
La opción -s es importante aquí. Determina que el enlace es un enlace suave. Si no lo usa, creará un enlace duro. Explicaré la diferencia entre enlaces blandos y enlaces duros en otro artículo.
Cosas para tener en cuenta sobre los enlaces simbólicos
Los enlaces simbólicos pueden ser confusos a veces, por lo que debe tomar nota de algunas cosas.
Los cambios realizados en el enlace se reflejan en el archivo original
Ese es el propósito de los enlaces después de todo. Accede al archivo de destino accediendo al enlace. Puede realizar cambios en el archivo de destino a través de los enlaces. Veamos con un ejemplo.
Tengo un archivo prog.py en newdir/test_dir. Tiene los siguientes atributos:
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py
Ahora, crearé un enlace suave a este archivo en mi directorio actual:
ln -s newdir/test_dir/prog.py link_prog
Estos son los atributos del enlace recién creado:
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Observe la l (es L, no uno) al principio de la línea? Si está familiarizado con los permisos de archivo en Linux, sabrá que la 'l' significa enlace y, por lo tanto, le dice que este archivo es en realidad un enlace. Para refrescar su memoria, – significa archivo y d significa directorio.
Ahora, si uso este enlace para cambiar el contenido o los atributos, lo mismo se reflejará en el archivo de destino. Por ejemplo, estoy usando el comando táctil en el enlace suave y notará que cambia la marca de tiempo del archivo de destino.
touch link_prog
ls -l newdir/test_dir/prog.py
-rw-r--r-- 1 abhishek abhishek 163 Jul 2 10:04 newdir/test_dir/prog.py
¿Se vincula a un archivo o directorio? ¡Puede que no lo sepas!
¿Cómo sabrías si el enlace apunta a un archivo o a un directorio? No puede saberlo hasta que siga la ruta y acceda al archivo de destino.
Puedes crear enlaces a un archivo o directorio inexistente
Sí, eso es totalmente posible. Es por eso que debe tener cuidado al crear enlaces suaves en Linux. No es necesario que exista el archivo de destino al que se está vinculando. No recibirá ningún error o advertencia por crear un enlace a un archivo/directorio que no existe.
Obtendrá un error solo cuando intente acceder al archivo de destino, ya sea a través del enlace o por sí solo. Sin embargo, el comando ls seguirá funcionando.
ln -s non_existant_dir link_dir
less link_dir
link_dir: No such file or directory
Los enlaces simbolicos se crean con permiso 777 pero no significa nada
¿Notó el permiso de archivo en el enlace simbólico? Los enlaces simbólicos siempre se crean con el permiso 777 (rwxrwxrwx). Para un archivo normal, esto significaría que cualquiera puede acceder al archivo. Pero ese no es el caso de los enlaces.
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Si los permisos de archivo en los enlaces se trataran como son, cualquier usuario podría crear un enlace simbólico a un archivo seguro y acceder a él libremente. Eso sería un gran problema de seguridad. Afortunadamente, eso no sucede. Porque el permiso en los archivos de destino es importante, no el permiso en los enlaces.
Puede usar el comando chmod para cambiar el permiso en el vínculo, pero cambiará el permiso del archivo vinculado, no el vínculo en sí.
Puedes vincular a un enlace de un enlace también conocido como enlace simbólico encadenado
Puede hacer un enlace simbólico que apunte a otro enlace y así sucesivamente. Esto se llama enlace simbólico encadenado. Es mejor evitarlos ya que crean más confusión.
Bueno, eso es todo. Supongo que ahora tiene un mejor conocimiento de los enlaces blandos y sabe cómo crear enlaces simbólicos en Linux. Puede leer sobre el comando de enlaces simbólicos que puede ayudarlo a encontrar enlaces simbólicos rotos en Linux y administrarlos fácilmente.
Si tiene preguntas o sugerencias, deje un comentario a continuación.