Gestión de ficheros en Linux para dummies Un sistema de ficheros, llamado comúnmente File system, determina la organización de los datos en un soporte de almacenamiento, y por lo tanto como el sistema operativo gestiona y organiza los ficheros. En este articulo pretendemos hablar sobre la gestión de ficheros en los sistemas GNU!inu", tipos de fichero, la nomenclatura de los ficheros, rutas, permisos de acceso, etc. #onceptos b$sicos %ue todo el mundo deber&a conocer, no solamente la gente %ue pretende profundizar. 'demas vamos a ofrecer una lista de comandos b$sicos %ue nos van a ayudar a movernos por la (erar%u&a de los ficheros y gestionarla.
En Linux todo es un fichero
!inu" es, como todo Uni", un sistema operativo completamente orientado a ficheros. Esto %uiere decir fichero, tanto los datos ) ficheros de datos de cual%uier %ue todo %ue todo ( o casi todo ) se representa con un fichero, tipo, como una canción o un programa * como los perif+ricos ) ratones, teclado, tar(eta de sonido, etc* o incluso los medios de comunicación ) socets, tuber&as, etc.*. -ebido a este motivo se podr&a decir %ue el sistema de ficheros es el corazón de los sistema Uni", pero evidentemente no todos los ficheros tienen las mismas propiedades.
Los tipos de ficheros En !inu" e"isten tres tipos de ficheros los directorios o carpetas, los ficheros ordinarios y los especiales. Las carpetas o directorios
!as carpetas o directorios permiten crear una (erar%u&a en el disco. -entro de estas carpetas podemos contener ficheros ordinarios, especiales y otros directorios de manera recursiva. Un directorio no es mas %ue un fichero %ue contiene una lista de los ficheros presentes en este directorio, directorio, ni mas ni menos. Los ficheros ordinarios
/ambi+n llamados ficheros regulares ) ordinary files *, son los ficheros de toda la vida %ue contienen datos. 0ueden contener cual%uier tipo de dato /e"to, 'udio, 1magen, 2cripts, !ibrer&as de programación, etc. 0or defecto, nada permite diferenciar unos de otros, Linux no conoce la noción de extensión de
fichero como componente interno de la estructura del sistema de ficheros, por lo %ue la e"tensión no tiene importancia y se considera simplemente parte del nombre. Los ficheros especiales
E"isten varios tipos de ficheros especiales pero principalmente sirven de interfaz para los diversos periféricos. #uando se accede en modo lectura o escritura a estos ficheros se redirigen hacia el perif+rico ) pasando por el driver asociado si e"iste * con la misión de controlarlos. E(em !os drivers de perif+ricos est$n en la carpeta dev, estos drivers son ficheros especiales.
La nomenclatura de los ficheros Es necesario seguir unas reglas a la hora de poner nombre a los ficheros, validas para los tres tipos de ficheros. 'ctualmente se puede llegar hasta 344 caracteres ) e"tensión incluida * y digo actualmente por %ue en los sistemas Uni" antiguos solamente se pod&an alcanzar los 56 caracteres. /ambi+n es muy importante tener en cuenta %ue !inu" distingue entre los nombres de ficheros con mayúsculas y minúsculas. -e forma %ue el nombre del fichero prueba es diferente al de Prueba. !la mayor&a de los caracteres ) cifras, letras, ciertos signos, caracteres acentuados * son aceptados, incluyendo el espacio. ' pesar de esto es necesario evitar ciertos caracteres reservados en la shell como son ! () " # $ % & ')al principio del nombre* espacio.
Las rutas !as rutas permiten definir una ubicación en el sistema de ficheros. Es la lista de directorios y sub7 directorios utilizados para acceder a un sitio determinado de la estructura hasta la posición deseada ) directorio, fichero *. El nombre de la ruta o path de un fichero es la concatenación, desde la ra&z, de todos los directorios %ue se deben cruzar para acceder a el, %ue est$n separados cada uno por el car$cter . E(em homeusuario5-ocumentos#uentas.odt ' esto se le llama ruta absoluta ) ruta desde el directorio root *. 0ero tambi+n e"isten las rutas relativas, estas se basan en tu posición actual en el sistema de ficheros. 0uedes acceder a la posición %ue deseas sin tener %ue marcar la ruta completa precisando la ruta mas corta en relación a tu posición actual dentro de la estructura. 0ara las rutas relativas podemos usar tanto el . ) %ue indica el directorio actual en el %ue estamos * como .. ) %ue indica el directorio superior *. E(em .-ocumentos8úsica ) Es una ruta relativa al directorio 8úsica dentro del -irectorio -ocumentos %ue se encuentra en nuestra posición actual* !a virguilla
Los permisos de acceso !inu" tiene un sistema de permisos %ue tiene como cometido asegurar la integridad y el acceso a datos. ' cada fichero se le asignan unos privilegios %ue son los propios, as& como autorizaciones de acceso individuales. #uando se realiza un acceso a un fichero el sistema comprueba si este acceso es autorizado.
' la hora de crear un nuevo usuario, el sistema le asigna un *+, ( *ser +dentification ) único. /odos los usuarios est$n definidos en el fichero passwd de la carpeta etc. -e la misma manera, cada usuario es integrado en, al menos, un grupo. /odos los grupos tienen un identificador único, el G+, ( Group +dentification ) y est$n definidos en el archivo group de la carpeta etc. El comando id nos muestra esta información por pantalla, tanto los U1- como los G1El comando id -e asignan un *+, y un G+, a cada fichero ) a su inodo, del %ue hablaremos en otro articulo * %ue define su propietario y su grupo con privilegios. El usuario asigna permisos al propietario, al grupo con privilegios y al resto de los usuario. El sistema sigue el siguiente proceso para comprobar %ue un usuario tiene privilegios sobre el fichero al %ue intenta acceder. 5. #ompara el U1- del usuario con el del fichero. 2i es el mismo el usuario es propietario 3. 2i los U1- son diferentes, el sistema comprueba si el G1- del usuario es el mismo al del fichero, si es el caso, el usuario pertenece al grupo con privilegios del fichero. 9. 2i no se dan ninguno de estos dos casos el usuario ni es el propietario ni pertenece a un grupo con derechos. /enemos diferentes tipos de permisos, no es o el todo o nada, de forma %ue un usuario puede %ue tenga permisos para leer un archivo pero no pueda modificarlo. !a siguiente tabla muestra los diferentes permisos (unto a su significado.
/ratando lo b$sico 2e puede hablar sobre muchos mas aspectos dentro del tema de los permisos, pero en esta ocasión nos vamos a conformar con lo mas b$sico, en futuros art&culos profundizaremos mas en este aspecto.
La .erar/u0a de ficheros !inu" utiliza un sistema de ficheros (er$r%uico, teniendo en cuenta esto es bastante recomendable conocer los diferentes directorios %ue se encuentran en nuestro sistema. !os siguientes directorios se encuentran en la mayor&a de las distribuciones !inu", pero pueden e"istir pe%ue:as diferencias.
#mnt1 #media 2 son directorios para montar dis%uettes, #-7;<8s y otros sistemas de archivos o dispositivos ) El actual es el media, mnt e"iste por compatibilidad*. #proc2 contiene los archivos %ue reciben o env&an información al núcleo. #bin2 contiene ficheros de comandos e(ecutables utilizables por todos los usuarios. #sbin2 contiene e(ecutables de uso e"clusivo por el root. 2on los necesarios para arrancar y montar el directorio usr. #usr2 0rogramas accesibles a usuarios finales y datos de estos programas %ue no re%uieren ser modificados )datos de sólo lectura*. #etc2 'rchivos de configuración de diversos programas y servicios. #lib2 !ibrer&as indispensables y módulos )especialmente re%ueridas durante el arran%ue del sistema*. #dev2 Ficheros especiales de los dispositivos conectados )o %ue podr&an conectarse* al ordenador. #home2 #arpetas de usuario #tmp2 'rchivos temporales creados por algunos programas, %ue ser$n borrados por el sistema operativo durante el arran%ue.
#root2 #arpeta de usuario root #boot2 contiene el núcleo )ernel* e información indispensable para el arran%ue del sistema. #var2 en este directorio los programas %ue lo re%uieran pueden mantener archivos %ue deban modificarse frecuentemente. #opt2 es un punto de monta(e desde el %ue se instalan los pa%uetes de aplicación adicionales. 0odemos usarla para instalar aplicaciones %ue no vienen en los repositorios.
3omandos de gestión de ficheros y directorios =oy en d&a toda la gestión de ficheros se puede hacer mediante interfaz gr$fica, aun as& la linea de comandos puede llegar a ser muy potente y productiva, por esto mismo os de(o los comandos b$sicos %ue nos van a ayudar con este cometido. 4ostrar ruta completa >pwd Nos muestra la ruta completa del directorio actual. 3ontenido del directorio actual >ls El comando ls nos mostrara el contenido del directorio actual. 4overnos por los directorios >cd El comando cd sirve para movernos de directorio ) changue directory *. >cd Documentos )esto nos situara en la carpeta -ocumentos*. >cd /etc/systemd/system/ )de esta manera nos situaremos en esta ubicación directamente.* >cd .. )subiremos un nivel. 0or e(emplo si estamos en home-ocumentos y hacemos cd .. nos situaremos en home* >cd ) sin nada nos llevara a la carpeta de usuario.* 3rear directorios >mkdir El comando mdir ) mae directory * nos va permitir crear uno o varios directorios. /ambi+n podemos crear una estructura completa. >mkdir dir1 ) creara una carpeta dir5 en la posición actual * >mkdir -p dir1/dir2 ) creara una carpeta dir3 dentro de otra carpeta dir5 en la situación actual en el sistema de ficheros * 5orrar directorios >rmdir El comando rmdir ) remove directory * remueve uno o varios directorios pero no puede remover estructuras. Funciona de la misma manera %ue mdir pero sin este detalle de las estructuras. 3opiar ficheros >cp El comando cp ) copy * nos permite copiar uno o varios ficheros. >cp fichero1 fichero2 ) este comando ara una copia de fichero5 y lo guardara en fichero3* 4over o cambiar de nombre a ficheros >mv El comando mv ) move * permite mover yo renombrar un fichero. >mv fich1 hola/fich1 ) movemos el fichero fich5 a la carpeta hola *.
>mv fich1 fich1.doc ) renombramos el fichero fich5 a fich5.doc *. -uprimir ficheros y estructuras >rm El comando rm ) remove * eliminara un fichero o varios. /ambi+n podemos eliminar estructuras. /enemos %ue tener en cuenta %ue el borrado sera definitivo. >rm fich1 ) Eliminamos fich5 * >rm -r hola ) suprime la carpeta hola y todo el contenido de esta, tanto ficheros como directorios * >rm -r dir1/dir2 ) Elimina la estructura dir5dir3 *