viernes, 27 de febrero de 2015

Sistemas de Archivos Linux.

Sistemas de Archivos.

Introducción:

Linux se base en que todo es un archivo. 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.

Toda información se almacena en ficheros y éstos se agrupan en directorios y subdirectorios.
Estos directorios y subdirectorios descienden de un directorio principal, conocido como directorio raíz con una estructura jerárquica en forma de árbol. Si se quiere incluir un dispositivo externo a este árbol, hay que montarlo.

También hay que tener en cuenta que Linux es sensible a las mayúsculas y minúsculas, esto quiere decir, que para Linux, por ejemplo, prueba.txt y Prueba.txt son archivos distintos.


Jerarquía estándar:

/bin y usr/bin --> es el lugar donde se encuentran los ficheros ejecutables y los comandos más comunes.
/boot --> es el lugar donde se encuentran los ficheros para el arranque del sistema.
/dev --> se encuentra todo el hardware del equipo.
/home --> se encuentra las carpetas individuales de los usuarios, excepto la de root.
/lib y /usr/lib --> se encuentran las librerías del sistema.
/media se encuentran los dispositivos externos (independiente de la carpeta de montaje).
/mnt --> carpeta para montar dispositivos de almacenamiento por defecto (aunque se podrían montar en otro lugar, esta es una carpeta que ofrece Linux para tenerlo todo controlado).
/opt --> directorio auxiliar para instalar aplicaciones. No existe en todas las distribuciones.
/proc --> sistema de archivos virtual creado por el kernel en memoria.
/root --> home de root
/sbin y /usr/sbin --> comandos y ficheros ejecutables necesarios para tareas de administración.
/usr --> se encuentran las aplicaciones.
/var  --> información variable (colas de impresión, archivos de registro, logs...).

Enlaces:

Los enlaces son lo que se conoce en Windows como accesos directos.

La idea básica, es que en Linux, los archivos se identifican por un inodo único (enlace a la tabla de inodos que tiene información sobre el archivo) excepto el nombre del archivo que se almacena en el directorio junto a su inodo.

Por tanto, a la hora de crear un enlace se distinguen dos tipos:

  • Enlace duro: Es aquel que utiliza el mismo inodo. Mismo archivo en dos directorios.
  • Enlace simbólico: Distintos inodos.


Ficheros de dispositivos:






Permisos:

Si en nuestra terminal ejecutamos el comando ls- l, nos mostrará el contenido que hay en nuestro directorio actual de manera detallada.



Si hacemos zoom sobre alguno de estos podemos desglosar qué permisos tiene.
Los permisos de acceso de cada archivo y directorio del sistema son mostrados por un conjunto de 10 caracteres, los cuales proporcionan información acerca del tipo de elemento, junto con permisos para el usuario (u), el grupo propietario (g) y otros usuarios (o) para leer (r), escribir (w) y ejecutar (x), como se muestra en el siguiente ejemplo:



En este ejemplo podemos ver la siguiente notación drwxr-xr--x si hacemos la siguiente separación d|rwx|r-x|r-x| la d especifica el tipo de archivo, en este caso la d corresponde a un directorio. Los siguientes tres caracteres son los permisos para el usuario, en este caso tiene los tres permisos habilitados, lectura, escritura y ejecución. Los siguientes tres caracteres corresponden al grupo y en este caso tiene los permisos de lectura y ejecución, Los últimos tres caracteres son para otros usuarios y en este caso tienen los permisos de escritura y ejecución. El esquema de notación simbólica se compone de 10 caracteres, como ya hemos visto, donde el primer carácter indica el tipo de archivo:




Como se mencionó anteriormente, cada clase de permisos es representada por un conjunto de tres caracteres. El primer conjunto de caracteres representa la clase del usuario, el segundo conjunto de tres caracteres representa la clase del grupo y el tercer conjunto representa la clase de «otros» (resto del mundo). Cada uno de los tres caracteres representa permisos de lectura, escritura y ejecución, respectivamente y en ese orden. Aquí tenemos otros ejemplos:




Vemos que en la imagen declara el tipo de permiso que tiene de manera numérica. Esto es porque existe una notación octal que se utiliza para añadir permisos. Más adelante veremos cómo se otorgan los permisos de esta manera, pero primero veremos cómo funciona.

La notación octal consiste de valores de tres a cuatro dígitos en base-8. Con la notación octal de tres dígitos cada número representa un componente diferente de permisos a establecer: clase de usuario, clase de grupo y clase de otros (resto del mundo) respectivamente. Cada uno de estos dígitos es la suma de sus bits que lo componen (en el sistema numeral binario). Como resultado, bits específicos se añaden a la suma conforme son representados por un numeral:
  • El Bit de ejecución (acceso en el caso de directorios) añade 1 a la suma.
  • El bit de escritura añade 2 a la suma.
  • El bit de lectura añade 4 a la suma.
Estos valores nunca producen combinaciones ambiguas y cada una representa un conjunto de permisos específicos. De modo tal puede considerarse la siguiente tabla:




Establecer permisos:

Para otorgar los permisos, se utiliza el comando chmod. Su sintaxis es chmod <opciones> <fichero>.

Existen dos maneras de añadir los permisos, de manera octal que ya adelantamos algo anteriormente y asignando las letras r,w ó x a los usuario u, grupos g, otros usuarios o. Si queremos añadir un permiso a todos los usuarios utilizaremos la letra a.

Ejemplos:

  • Manera octal: chmod 745 fichero (esto añadiría al fichero los permisos de lectura, escritura y ejecución a los usuarios (u), el permiso de lectura al grupo (g) y los permisos de lectura y ejecución a otros usuarios (o)).
  • Manera asignando letras: chmod u+rwx, g+r, o+rx fichero añade los mismos permisos que el anterior ya que es lo mismo, pero de la otra forma). De la misma forma que con el operador + se añaden permisos, con el - se quitan. Además, si se utiliza el símbolo = reemplazaría los permisos que tuviese por los que se añadan después del igual. Por ejemplo, si el usuario (u) tiene los tres permisos, rwx, si ejecutamos el siguiente comando chmod u=w fichero pasaría de tener todos los permisos a tener el permiso de escritura.
  • También como comentamos anteriormente, si usamos la letra a se aplicará a todos los usuarios, por lo que el comando chmod a=rwx fichero asignará todos los permisos (rwx) a todos los usuarios (u,g,o).


Usuario y propietario:

  • chown <opción> <nombre_usuario> <fichero> (con este comando haremos que el usuario indicado sea propietario del fichero o directorio especificado, si al comando le añadimos la opción -R, también será el propietario de los archivos y subdirectorios dentro del directorio.
  • chgrp <opción> <nombre_grupo> <fichero> (se usa para cambiar el grupo de un archivo o directorio).

Administrador de archivos mediante Nautilus:





Compartir una carpeta:

Es posible entre cualquier sistema operativo. Tendremos que ir a Lugares --> Carpeta personal. Una vez ahí sobre la carpeta que queramos compartir --> Menú editar --> Opciones de compartición.
Para ello necesitaremos tener Samba instalado, sino lo tenemos y lo instalamos, habrá que reiniciar y repetir los pasos.
Indicaremos el nombre a la compartición, permitimos (o no) escribir a otras personas en esta carpeta y añadimos un comentario.
Luego permitiremos (o no) el acceso a invitados.
Creamos la compartición.
Añadimos los permisos automáticamente.
Y por último, aparecerá en el panel izquierdo en Red/Mi equipo.


Modificar los permiso de manera gráfica:


  • Lugares --> Carpeta Personal
  • Sobre la carpeta que vamos a cambiar, botón derecho y propiedades.
  • Permisos











lunes, 2 de febrero de 2015

Comandos báscios Linux.

Comandos básicos Linux.


La forma general de los comandos en Linux es:

          $ comando [opciones]  [parámetros]

  • En el formato general anterior, el símbolo $ representa el prompt del sistema aunque puede cambiar dependiendo de la distribución y configuración utilizada.
  • Las opciones son modificadores para los comandos y no siempre es necesario introducir alguna. Las opciones suelen incluir el signo - antes de la letra.
  • Los parámetros son informaciones que el comando puede necesitar para ejecutarse. Esta necesidad depende de cada comando concreto. En muchas ocasiones los parámetros son nombres de ficheros o directorios.
Una característica importante en Linux es que se realiza distinción entre mayúsculas y minúsculas. Tanto para nombres de carpetas, ficheros, nombres de programa, comandos y en general para cualquier elemento en Linux.
Esto quiere decir, que no será el mismo fichero Prueba, que prueba o PRUEBA

Una vez teniendo en cuenta las características nombradas anteriormente, empezaremos a ver los comandos básicos.

Comando pwd.

El comando pwd se encarga de decirnos donde estamos trabajando. Es decir, si yo hago un pwd, éste me mostrará en pantalla la ruta completa del directorio actual.

Comando cd [nombre_directorio]

El comando cd cambia el directorio actual por el especificado como parámetro.

Para este comando es bueno saber los conceptos de rutas relativas y rutas absolutas.
  • Ruta relativa: Si la ruta no comienza con / entonces se considera relativa a la ruta actual. Ejemplo: Referirnos al directorio bin/ no es lo mismo que referirse al directorio /bin/, si uno se encuentra en el directorio /usr/, la primera instancia corresponde a /usr/bin/ mientras que la segunda corresponde a /bin/.
  • Ruta absoluta: Si la ruta comienza con / entonces hará referencia a una ruta en el directorio raíz.
Ejemplos del comando cd:

Suponiendo que el directorio actual es /home/usuario:

[/home/usuario]$ cd subdirectorio
[/home/usuario/subdirectorio]$

Cambiaría a /home/usuario/subdirectorio. En cambio:

[/home/usuario]$ cd /subdirectorio
[/subdirectorio]$

Cambiaría a /subdirectorio debido a que es una ruta absoluta.

Si lo que queremos es volver a un directorio anterior, se haría de la siguiente forma:
Suponiendo que el directorio actual es /home/usuario/subdirectorio:

[/home/usuario/subdirectorio]$ cd ..
[/home/usuario/]$

Cambiaría a /home/usuario, ya que la instrucción cd .. sube un nivel desde la posición donde nos encontramos.

En el caso en el que el comando cd se ejecute sin parámetros, cambiaría al directorio personal o home directory del usuario:

[/usr/share/doc]$ cd
[/home/usuario]$

Comando ls [-opciones] [nombre_directorio]

Visualiza el contenido del directorio especificado como parámetro. Si no se indica ningún directorio se utiliza el directorio actual. Este comando tiene multitud de opciones para alterar el tipo de información mostrada. Estas opciones son:

  • ls -l ----> Lista extendida de archivos y directorios del directorio actual.
  • ls -l /var/log ----> Lista extendida del directorio /var/log.
  • ls -a ----> Lista de todos los archivos y directorios, incluidos los ocultos, que en Linux empiezan por el carácter punto (.).
  • ls -R ----> Lista de archivos y directorios y de todos los directorios dentro de él.
  • ls -C ----> Lista de archivos en columnas.
  • ls -lt ----> Lista extendida de archivos ordenada por fecha.

Comando mkdir directorio

Crea un nuevo directorio.
 Ejemplo: mkdir Prueba, crearía el directorio llamado Prueba.

Comando mkdir directorio

Borra un directorio vacío.
Ejemplo: rmdir Prueba, borrará el directorio llamado Prueba, si éste está vacío.


Comandos para salir de la sesión: logout o exit

Con el comando logout el sistema finaliza la sesión y vuelve a mostrar la petición de login para una nueva sesión. Para que tenga efecto este comando, es recomendable usar una terminal no gráfica, es decir, una de las 6 terminales que nos ofrece Linux pulsando las teclas Ctrl+Alt+(1-6). El comando exit es equivalente, aunque no es exactamente lo mismo que el logout.


Comando de ayuda: man

Uno de los comandos más importantes del modo texto es el comando man. La forma de ejecutarlo es teclear man seguido del nombre del comando sobre el que queremos obtener ayuda. Por ejemplo:

$ man ls

La ayuda que ofrece el comando man se presenta paginada y formateada con algún programa formateador de textos que esté instalado en nuestro sistema. Normalmente funcionarán las teclas de cursores y las de RePg y AvPg para desplazarnos por el texto de ayuda. Para salir de nuevo al prompt del sistema pulsaremos la tecla q.

Comando para salir del sistema y apagar el equipo: poweroff

Existen también los comandos halt y shutdown para apagar el equipo. Estos comandos permiten algunas opciones como por ejemplo realizar una parada programada pero solo los puede ejecutar el usuario root. En algunas distribuciones es necesario ser root para poder ejecutar el comando poweroff.

Estos comandos no apagan el equipo directamente, con estos comandos lo que hacemos es realizar todas las acciones necesarias para la salida ordenada del sistema. Después de su ejecución podremos apagar el equipo.


Comando para reiniciar el sistema: reboot

Al igual que el comando poweroff, en algunas distribuciones solo se puede ejecutar este comando con el usuario root.


Comando cat [nobre_fichero]

Muestra en pantalla el fichero de texto especificado como parámetro. Si no se especifica ningún fichero como parámetro, muestra la información que le llega a través de la entrada estándar o stdin que por defecto es el teclado.


Comando more [nombre_fichero]

Muestra por pantalla, de forma paginada, el fichero especificado como parámetro. Si no se especifica ningún parámetro, pagina lo que recibe a través de stdin. Para avanzar línea a línea, untiliza la tecla Enter. Para avanzar de página en página, utiliza la tecla Espacio. Para salir pulsar la tecla q.


Comando less [nombre_fichhero]

Parecido al comando more. Muestra por pantalla de forma paginada el contenido de un archivo de texto. Con la diferencia que tiene más funcionalidades con respecto al more. Por ejemplo, con less se pueden utilizar las teclas de cursor para moverse a través del texto.


Comando cp fichero1 [fichero2..ficheroN] directorio

Copia ficheros y directorios. Si el último argumento es un directorio, cp copia cada fichero fuente a ese directorio. Si el último argumento es un fichero, cp copia el primer argumento que deberá ser un solo fichero, en el fichero destino.


Comando mv fichero1 [fichero2..ficheroN] destino 

Comando que mueve o renombra ficheros o directorios. Si el último argumento es un directorio, mv mueve cada uno de los anteriores ficheros a ese directorio. Si se pasan como argumento dos nombres de ficheros (o dos nombres de directorios), renombra el primero al segundo.


Comando rm fichero1 [fichero2..ficheroN]

Comando para borrar ficheros. Con la opción -r se borra la estructura entera de un directorio, incluido los subdirectorios.

Opción útil pero muy peligrosa para borrar todo el contenido de un directorio: rm -rf nombre_directorio.