jueves, 13 de diciembre de 2007

TODO SOBRE EL SISTEMA DE FICHEROS…


Si vienes del mundo de Windows lo primero que te sorprenderá es que no está la unidad C:. La distribución de los discos y particiones en Linux es diferente. Ya en la instalación te puedes dar cuenta cómo se nombran los discos en Linux:

  • El primer disco duro es /dev/hda (Hard Disk ide A)
  • El segundo disco duro es /dev/hdb (Hard Disk ide B)

El disco tendrá una o varias particiones, así las del primer disco duro (/dev/hda) serán /dev/hda1, /dev/hda2, … Éstas tiene el equivalente a lo que en Windows se llama C:, D:, …etc.

En Linux todo es un archivo, y cuando digo todo es todo. Desde los archivos de datos hasta las particiones de los discos pasando por el ratón y la tarjeta de sonido. Los directorios también son archivos. Existe un directorio raiz (/) del que cuelga todo. Los dispositivos cuelgan del directorio /dev.

Referencias

Algunos de los directorios más interesantes:

  • /: Raíz.
  • /usr: Aquí se encuentra la gran mayoría de los archivos existentes en un sistema Linux, tales como documentación, casi la totalidad de los comandos de usuario, juegos, librerías, etc.
  • /bin: Aquí están los comandos que pueden usar todos los usuarios (incluido el administrador o root).
  • /sbin: Aquí están los comandos que sólo puede usar el administrador o root.
  • /dev: Ahí están todos los dispositivos de nuestra máquina.
  • /home: Lugar donde se almacenan las cuentas de usuarios.
  • /lib: Enlaces a las librerías que se necesitan para el sistema.
  • /var: Contiene información variable, como por ejemplo los logs del sistema (/var/log), correo local, etc.
  • /tmp: Directorio temporal.
  • /etc: Configuración global de los programas.
  • /root: Cuenta del administrador.
  • /boot: Aquí está todo lo necesario para arrancar el sistema.
  • /media: Punto de montaje para sistemas de archivos montados localmente.
  • /mnt: Antiguo punto de montaje para sistemas de archivos montados localmente. Hoy en día está en desuso y se conserva por razones históricas.
  • /proc: Sistema de archivos virtual de información de procesos y del kernel.

Algunas referencias de Archivos conocidos:

  • /etc/apt/sources.list: Este archivo configura la lista de repositorios para Añadir aplicaciones, ver Activar universe y multiverse para más detalles.
  • /etc/X11/xorg.conf: Este archivo define y configura el entorno gráfico a cargar.
  • /etc/fstab: Este archivo configura el acceso a los diferentes sistemas de archivos que hay en nuestro sistema.
  • /etc/passwd: Este archivo controla el uso de usuarios, en contraseñas, con permisos y grupos que pertenecen a cada usuario, archivo muy importante si uno quiere tener un usario root más que el ya conocido root.
  • /etc/readahead/boot y /etc/readahead/desktop: Estos archivos contienen la lista de rutas de todos los archivos que se van a cargar en la memoria caché durante el Inicio_del_sistema.

Permisos

El sistema de permisos de Linux es simple y efectivo. Existen tres tipos de permisos:

  • Ejecución: Si es para un archivo será ejecutable y si es para un directorio significa que podemos pasar por él. Es representado por una X.
  • Lectura: Si es para un archivo significa que podemos leerlo y si es un directorio es que podemos leerlo también. Es representado por una R.
  • Escritura: Si es para un archivo será que podemos escribir en él y si es para un directorio significa que podemos crear ficheros dentro de él. Es representado por una W

También existen tres tipos de roles sobre los que se aplican estos permisos. Un archivo pertenece a un usuario y a un grupo:

  • Usuario: El propietario del archivo.
  • Grupo: Grupo al que pertenece el archivo.
  • Otros: Los demás usuarios.

Veamos un ejemplo:

$ ls -l pg_backup.sh

-rwxr-x--- 1 pepito usuarios 453 2005-02-17
09:35  pg_backup.sh

El archivo pg_backup.sh pertenece al usuario pepito y al grupo usuarios. Los permisos que tiene para el usuario son rwx lo que significa que el usuario pepito puede leer el archivo, escribir en él y ejecutarlo. Por la extensión vemos que es un script, por lo que es normal que se pueda ejecutar. Para el grupo tiene los permisos r-x. Eso significa que los miembros del grupo usuarios pueden leer el archivo y ejecutarlo, pero no modificarlo. Los permisos para los demás usuarios (otros) son , por lo que un usuario que no sea pepito ni pertenezca al grupo usuarios no podrá leer, escribir ni ejecutar el archivo.

Cambio de permisos

Consola

El comando chmod se usa para designar los permisos de un archivo. Sólo el dueño del archivo y el root pueden cambiar los permisos. La sintaxis de chmod es:

chmod {a, u, g, o} {+, -} {r, w, x} nombre del archivo

donde:

u: corresponde al dueño del archivo

g: corresponde al grupo

o o a: corresponde al resto de los usuarios, a para todos
(all) y o para otros (others)

Para autorizar o desautorizar el permiso:

+: autoriza

-: desautoriza

=: resetea los permisos

Los tipos de permisos son:

r: lectura

w: escritura

x: ejecución

El comando chmod también acepta otros valores para cambiar los permisos. Es probable que hayas visto algo como:

sudo chmod 751 [nombre del archivo]

Es otro modo de gestionar los permisos; de forma binaria. El sistema es muy simple y cómodo: se considera un bit para lectura (r) otro para escritura (w) y otro para ejecución (x). Las combinaciones posibles son ocho y se muestran en la tabla siguiente:

Decimal r w x
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

Un uno equivale a activar y un cero a desactivar los permisos. El equivalente decimal de los permisos se aplica en orden: dueño, grupo y cualquiera (u,g,a). Entonces en el ejemplo anterior el valor 751 actúa:

  1. Cediendo todos los permisos al dueño.
  2. Cediendo permiso de lectura y ejecución al grupo.
  3. Cediendo permiso de ejecución a cualquiera.

Interfaz gráfica

También podrás cambiar los permisos de forma gráfica; sólo tienes que darle con el botón derecho del ratón sobre el directorio o el archivo al que quieras cambiar el permiso y seleccionar la pestaña permisos.

Cambio de propietario

El cambio de propietario se hace empleando el comando chown :

chown (propietario):(grupo) (archivo)

Pondremos un ejemplo, supongamos que el usuario gaccardo desea darle una copia del archivo test.sxw al usuario pigu, el usuario pigu debe ser propietario de su copia para poder modificarla. Para esto debe cambiar el propietario y el grupo utilizando el comando chown.

Haciendo “ls -l” nos encontramos con un fichero asi:

-rwx-rw-r-- gaccardo gaccardo 435 sep 4 11:38 test.sxw

Por lo que en este caso el usuario gaccardo (actual propietario) deberá hacer :

[gaccardo@servidor priv]chown pigu:pigu test.sxw

Si vuelve a hacer “ls -l” encuentra que ha cambiado el actual propietario

-rwx-rw-r-- pigu pigu 435 sep 4 11:38 test.sxw