[Linux] links
Gunnar Wolf
gwolf en campus.iztacala.unam.mx
Lun Oct 9 13:40:50 CDT 2000
> > > Que diferencia hay entre un link "hard" y uno "symbolic" ?
> >
> > Un hard link realmente hace que el mismo archivo este en dos lugares a la
> > vez. En Unix es perfectamente legal y normal, si bien te puede sonar a
> > algo raro si vienes de MS-DOS, donde esto seria visto como sintoma del
> > temido 'Cross-linked file' Claro, solo puedes hacer hard links dentro de
> > un mismo sistema de archivos.
> >
>
> Pues no, no es asi. Un archivo no esta en dos lugares a la vez, seria un
> gran desperdicio de espacio.
Admito: Error de redaccion por mi parte. El archivo SI esta en dos lugares
a la vez - En dos puntos del directorio. Sin embargo, como bien apunta
Eduardo, el archivo esta en UN solo lugar - ambas entradas del directorio
apuntan a el.
> Un symbolic link es una referencia por nombre a un archivo, es una
> referencia indirecta que apunta al archivo por su nombre, no por el
> inodo. Por lo mismo, pueden apuntar a archivos o directorios en otro
> sistema de archivos. Se pueden borrar igual con el rm. Cuando se
> borra o cambia de nombre al archivo al que apuntan, se quedan "volando"
> y se pierde la referencia. Y tambien pueden generarse "loops" entre ligas
> simbolicas.
Aqui cabe anotar:
Si, si se pueden hacer loops con ligas simbolicas. Sin embargo, estas no
son peligrosas mas que para algun programa que intente irlas siguiendo,
tal vez (por ejemplo) para mostrar un arbol completo al usuario. El
sistema operativo, sin embargo, los reconoce perfectamente - son un
archivito y punto. La estructura del arbol de directorios permanece
intacta, cosa que no seria cierta si crearamos una liga dura a un
directorio formando un loop.
Pongo aqui el comentario de Sandino:
> (aunque si eres root ln te permite hacerlo bajo tu propia responsabilidad)
Yo no estaba consciente de esto - Y si, me parece bastante peligroso. con
man ln encuentro que la opcion -d o -F hace ligas duras de directorios...
Aguas, niños, no hagan esto en casa! De hecho, yo tampoco lo voy a hacer,
pero va la duda: Que pasaria si tengo el siguiente arbol:
/
/etc
/home
/usr
(...)
/root
/pruebas
/cd
/otrodir
y, como root, le doy el comando:
ln -d /root /root/pruebas/volver
Tengo en /root/pruebas/cd montado el CD-ROM. Sin embargo, cd es un
directorio normal. De hecho, puede hasta tener archivos que, al montar el
CD-ROM encima de este directorio, quedan ocultos.
A que me llevaria esto?
Se me ocurren un par de desenlaces, que podrian ocurrir en diferentes
Unixes:
1- El sistema se da cuenta de lo que hice, y el CD-ROM queda montado en
/root/pruebas/cd, /root/pruebas/volver/pruebas/cd,
/root/pruebas/volver/pruebas/volver/pruebas/cd, ad nauseam. Poco probable.
2- El sistema no se da cuenta de lo que hice. El CD-ROM queda montado solo
en /root/pruebas/cd, mientras que /root/pruebas/volver/pruebas/cd,
/root/pruebas/volver/pruebas/volver/pruebas/cd y todas sus sucesivas
apariciones son el directorio existente antes de montar el CD. Este se me
hace el comportamiento mas razonable y logico, pero no tiene por que ser
asi :)
3- El sistema se saca de onda, y en una de esas se cae o -peor aun- me
corrompe alguna estructura.
No tengo ganas de que pase la tercera posibilidad, por lo que mejor no lo
pruebo. Y no me enojo si me dejan con la duda, mejor tampoco lo prueben
ustedes :)
-------------------------------------------------------------------
Gunnar Wolf gwolf en campus.iztacala.unam.mx
Universidad Nacional Autónoma de México, Campus Iztacala
Jefatura de Sección de Desarrollo y Admon. de Sistemas en Red
Departamento de Seguridad en Computo - DGSCA - UNAM
-------------------------------------------------------------------
Beginner thinks 1Kb == 1000 bytes. Master knows 1Km == 1024m
---------------------------------------------------------
para salir de la lista, enviar un mensaje con las palabras
"unsubscribe ayuda" en el cuerpo a majordomo en linux.org.mx
Más información sobre la lista de distribución Ayuda