Localizar ficheros
Linux proporciona varias herramientas para localizar ficheros que queremos utilizar; la primera de ellas es un estándar para la localización de ficheros; la segunda incluye programas especializados que buscan en un árbol de directorios o una base de datos.
FHS
La estructura de Linux es bastante sencilla y coherente, aunque los nuevos administradores pueden confundirse, pues algunos directorios parecen estar preparados para fines similares o incluso idénticos, pero, en realidad, poseen sutiles aunque importantes diferencias.
FSSTND y FHS
Las primeras distribuciones de Linux no siempre siguieron patrones idénticos, lo que derivó en una gran confusión. Para evitar problemas, se tomaron varias medidas, entre ellas el desarrollo de FSSTND (File system standard), que se publicó por primera vez a principios de 1994, FSSTND estandarizó varias funcionalidades específicas:
- Estandarizó los programas que se encontraban en /bin y /usr/bin. Este aspecto causaba problemas cuando los scripts hacían referencia a los ficheros de una u otra ubicación.
- Se especificó que los ficheros ejecutables no deberían estar en /etc, ubicación habitual hasta entonces.
- Eliminó los ficheros cambiales del árbol de directorios /usr, permitiendo así que este se montara en modo sólo lectura.
Hacia 1995, las limitaciones de FSSTHD se hicieron evidentes y se desarrolló un nuevo estándar: FHS (File system hierarchy standard – Estándar de jerarquía del sistema de ficheros) que se basó en FSSTND, pero lo amplió sustancialmente; además, se desarrolló en colaboración con los desarrolladores de algunos SO tipo UNIX diferentes a Linux. Por ese motivo, es más que un estándar en Linux, ya que se puede emplear para definir la estructura de los ficheros de otro SO tipo UNIX.
FHS hace distinción entre ficheros compartibles y no compartibles. En el primer grupo encontramos los ficheros de datos de los usuarios y los programas binarios, que se pueden compartir entre ordenadores, algo que se realiza a través de un servidor NFS. Los ficheros no compartibles contienen información especifica del sistema, como los ficheros de configuración. Otra importante distinción es la que se establece entre ficheros estáticos y ficheros variables: los primeros, normalmente, no cambian, a no ser que intervenga directamente el administrador; los programas ejecutables son ejemplos de ficheros estáticos. Los ficheros variables pueden ser cambiados por los usuarios; los scripts automatizados, los servidores y similares, los directorios /home de los usuarios y las colas de correo están compuestos por ficheros variables.
Directorios importantes y sus contenidos
FHS define algunos directorios con mucha precisión. Los más comunes definidos por FHS, o utilizados por convención, son los siguientes:
- /: los sistemas de ficheros Linux tienen su raíz en un mismo directorio, conocido como sistema de ficheros raíz o directorio raíz. Todos los demás directorios se ramifican desde este. Linux no utiliza letras de unidad, sino que las particiones o discos extraibles se montan en un punto dentro del sistema de ficheros raíz. Algunos directorios críticos deben residir siempre en la partición raíz, pero otros pueden encontrarse en particiones independientes. No debemos confundir el directorio /root con el directorio raíz.
- /boot: contiene ficheros estáticos y no compartibles relacionados con el arranque del ordenador. Algunos sistemas imponen limites particulares a /boot, por ejemplo, en BIOS antiguas y versiones antiguas del LILO, pueden requerir que /boot se encuentre por debajo del cilindro 1024 del disco duro. A veces, pero no siempre, puede que se requiera que /boot sea una partición independiente.
- /bin: contiene algunos ficheros ejecutables,que son accesibles para todos los usuarios y constituyen los comandos más importantes que pueden ejecutar los usuarios normales. Contiene ficheros estáticos. Sus ficheros son compartibles, pero son tan importantes para el funcionamiento básico del ordenador, que este directorio casi nunca se comparte. Cada cliente debe tener su directorio /bin en local.
- /sbin: es similar a /bin, pero contiene programas que sólo ejecuta el administrador. Es estático y, en teoría, compartible, En la práctica, sin embargo, no tiene sentido compartirlo.
- /lib: contiene bibliotecas de programa, que son código compartido por muchos programas y que se almacenan en ficheros independientes, para ahorrar RAM y espacio en disco. /lib/modules contiene módulos o drivers que se pueden cargar y descargar según necesitemos. Es estático y, teóricamente, compartible, aunque en la práctica no se comparte.
- /usr: aloja el grueso de los programas de un ordenador Linux. Tiene un contenido compartible y estático, lo que permite montarlo en modo sólo lectura. Se puede compartir con otros sistemas Linux; muchos administradores separan /usr en una partición independiente, aunque no es necesario. Contiene algunos subdirectorios similares a los del directorio raíz como /usr/bin y /usr/lib, que contienen programas y bibliotecas que no son totalmente críticos para el funcionamiento del ordenador.
- /usr/local: contiene subdirectorios que reflejan la organización de /usr. Aloja los ficheros que instala localmente el administrador; es un área a salvo de las actualizaciones automáticas de todo el SO. Después de la instalación de Linux, debería estar vacío, excepto para determinados subdirectorios stub. Se suele separar en una partición para protegerlo de las reinstalaciones del SO.
- /usr/X11R6: alberga los ficheros relacionados con el sistema X Window (entorno GUI). Contiene subdirectorios similares a los de /usr, como /usr/X11R6/bin y /usr/X11R6/lib.
- /opt: es similar a /usr/local, pero está pensado para los paquetes que no vienen con el SO, como los procesadores de texto o juegos comerciales, que se guardan es sus propios subdirectorios. El contenido de /opt es estático y compartible. Se suele separar en su propia partición para convertirlo en un enlace simbólico a un subdirectorio de /usr/local.
- /home: contiene los datos de los usuarios y es compartible y variable. Se considera opcional en FHS, pero, en la práctica, lo opcional es el nombre. El directorio /home con mucha frecuencia reside en su propia partición.
- /root: es el directorio home del usuario root. Como la cuenta de root es tan crítica y específica del sistema, este directorio variable no es realmente compartible.
- /var: contiene ficheros efímeros de varios tipos, de registro del sistema, de cola de impresión, de correo y news, etc. El contenido del directorio es variable, pues algunos subdirectorios son compartibles y otros no. Se suele colocar /var en su propia partición, sobre todo si el sistema registra una gran actividad en /var.
- /tmp: es donde se crean los archivos temporales y variables que necesitan los programas. La mayoría de las distribuciones limpian este directorio periódicamente en el inicio. Este directorio raramente se comparte, pero se suele poner en una partición independiente, para que los procesos no controlados no provoquen problemas en el sistema de ficheros al ocupar demasiado.
- /mnt: la finalidad de este directorio es albergar el montaje de los dispositivos. En la estructura de directorios, algunas distribuciones crean subdirectorios dentro de /mnt para que hagan de puntos de montado; otras utilizan directamente /mnt o incluso puntos de montado independientes de /mnt, como /floppy o /cdrom. FHS sólo menciona /mnt y no especifica cómo se ha de utilizar. Los medios montados en esta partición pueden ser estáticos o variables y, por norma general, son compartibles.
- /media: es una parte opcional del FHS como /mnt, pero que podría contener subdirectorios para tipos de medio específicos. Muchas distribuciones modernas utilizan subdirectorios /media como punto de montado para los discos extraíbles e
- /dev: Linux trata la mayoría de los dispositivos de hardware como si fueran ficheros, el SO debe tener un lugar para estos en su sistema de ficheros. Ese sitio es el directorio /dev, que contiene un gran número de ficheros que hacen de interfaces de hardware. Con los permisos apropiados, podremos acceder al hardware del dispositivo leyendo y escribiendo en el fichero de dispositivo asociado. El kernel permite que /dev, sea un sistema de ficheros virtual, creado automáticamente. El kernel y las herramientas de soporte crean sobre la marcha entradas en /dev para adaptarse a las necesidades de los drivers específicos. La mayoría de las distribuciones emplean este recurso.
- /proc: es un directorio inusual, pues no corresponde a un directorio o partición normal, sino que se trata de un sistema de ficheros virtual que proporciona acceso a ciertos tipos de información del hardware dinámicamente. Esta información no se encuentra accesible a través de /dev.
- Buscar por nombre de fichero: utilizando la expresión –nombre patrón, encontraremos los ficheros que coindidan con el patrón especificado. Se pueden emplear comodines delimitando el patrón entre comillas.
- Buscar por el modo de permiso: la expresión –perm modo permite localizar ficheros que tengan ciertos permisos. El modo se puede expresar simbólicamente o en modo octal si va precedido de un mas (+). find localizará los ficheros en los que estén definidos todos los bits de permisos especificados.
- Buscar por el tamaño del fichero: se puede realizar una búsqueda de un fichero de un tamaño determinado con la expresión –size n, donde «n» especifica en bloques de 512 bytes (se puede modificar con una letra que sirva de código para el valor, por ejemplo, k para kilobytes).
- Buscar por grupo: la expresión –gid GID, busca los ficheros cuya ID de grupo es GID. La opción –group nombre localiza ficheros cuyo grupo tiene el nombre indicado. Esta última opción suele ser más fácil de utilizar, pero la primera es útil en caso de que la GID se haya quedado huérfana y no tenga nombre.
- Buscar por ID de usuario: –uid UID busca los ficheros cuyo propietario tiene UID como ID de usuario. –user nombre busca los ficheros cuyo propietario es nombre. Esta última opción suele ser más fácil de utilizar, pero la primera es útil en caso de que la UID se haya quedado huérfana y no tenga nombre.
- Restringir la profundidad de la búsqueda: si deseamos limitar el número de subdirectorios en los que buscar, emplearemos la expresión –maxdepth niveles.
- Es mucho menos sofisticado en sus opciones de búsqueda; se utiliza para buscar por el nombre de fichero, con lo que el programa devuelve todos los ficheros que contienen la cadena especificada.
- Trabaja con una base de datos que se encarga de mantener. Normalmente, se incluye una tarea cron que llama a locate para que actualice su base de datos periódicamente. El comando updatedb sirve para actualizar la base de datos manualmente. Es importante que se mantenga actualizada, ya que, en caso contrario, al realizar las búsquedas, puede que nos devuelva nombres de ficheros que ya no existan o que no localice ficheros recientes.
101.4.2: Administrar las cuotas de disco
101.4.3: Administrar los permisos y la propiedad de los ficheros
101.4.4: Localizar los ficheros del sistema y ubicarlos en el sitio correcto #########################################################