miércoles, 11 de marzo de 2015

Empaquetado y Compresión

Compresión de archivos.

Linux nos proporciona el comando gzip para comprimir archivos.

Comprimir un archivo:

$ gzip nombre_archivo

al comprimir el archivo le pone el nombre con la extension .gz

$ ls

nombre_archivo.gz


  • Si utilizamos la opción -v nos muestra el porcentaje en el que se reduce el tamaño del archivo original y el nuevo nombre del archivo

$ gzip -v index.thml

index.html:                31.4%  --  replaced with index.html.gz

Para descomprimir un archivo disponemos del comando gunzip.

Descomprimir un archivo

$ gunzip nombre_archivo.gz

También podemos utilizar

$ gzip -dnombre_archivo.gz

Al descomprimir no hace falta poner la extension .gz del fichero.


  • Podemos comprimir varios ficheros a la vez


$ gzip f1 f2 f3

o utilizar comodines

$ gzip f*

Podemos aplicar diferentes grados de compresión utilizando las opciones de -1 a -9:
  • -1 la compresión es más rápida pero menor
  • -9 la compresión es mas lenta pero mayor
La opcion -I nos da informacion sobre los ficheros comprimidos:

$ gzip -l nos da informacion sobre los ficheros comprimidos:

$ gzip -l pendrive.dump.gz

Con la opcion -r, si especificamos con gzip, o gunzip un directorio, comprime o descomprime todos los ficheros y subdirectorios contenidos en el directorio.

Copias de seguridad tar.

La utilidad tar es una herramienta de fácil manejo, que perite empaquetar ficheros individuales o directorios completos en un único fichero. Siempre hace copias completas, y nunca progresivas, Opciones del comando tar más usuales:

  • c: Crea un contenedor.
  • v: Muestra informacion extra durante el proceso.
  • f: Especifica el nombre del contenedor.
  • z: Comprime mediante gzip.
  • r: Añade archivos en un fichero tar.
  • t: Para visualizar los nombres de los archivos en el contenedor.
  • x: Para extraer los ficheros y restaurar
Para hacer las copias de un fichero o de un directorio. Siempre nos debemos colocar en el directorio Padre.

Para empaquetar varios archivos utilizamos tar -cf tarfile.tar file(s)

$ tar -cf union.tar f1 f2

Tambien podemos utilizar comodines

$tar -cf union.tar *
$ls

f1 f2 union.tar → Este comando lo que nos hace es empaquetar el contenido de f1 y f2 en un fichero llamado union.tar

  • Si lo que queremos es empaquetar una carpeta y todo su contenido:

$ tar -cf cop.tar nombre_dir

nos copia todo el directorio de nombre_dir en el fichero cop.tar

  • Para añadir ficheros en un archivo tar existente utilizamos la opcion -r

$ tarrf cop.tar f1 f2

El menos (-) no es necesario especificarlo con este comando.

  • Para visualizar el contenido de un fichero empaquetado utilizamos la opciones -t.

$ tar tf union.tar

f1
f2
  • Para Indicarle a tar que comprima, el fichero empaquetado añadimos la opcion -z.

$ tar zcf union.tar.gz f1 f2

$ ls
f1 f2 union.tar.gz

  • Para desempaquetar utilizamos la opción -x.

$ tar -xf union.tar

  • Si el fichero empaquetado ademas fue comprimido podemos desempaquetarlo y descomprimirlo de una sola vez con las opciones -x y -z

$ tar -xzf union.tar.gz









Apt-get

Administración de Paquetes en Ubuntu.

Introducción.

Los paquetes contienen generalmente todos los archivos necesarios para implementar un conjunto de comandos relacionados o características. Existen dos tipos de paquetes Ubuntu:

  • Paquetes binarios: Que contienen ejecutables, archivos de configuración, paginas man/info. Información sobre derechos de autor y así como otra información, conocida como metadatos. Estos paquetes se distribuyen en un formato de archivo especifico de Debian. Se distinguen por tener a .deb como extensión de archivos. Los paquetes binarios se pueden desempaquetar usando la utilidad de Debian dpkg.
  • Paquetes fuentes: Que consisten en un archivos que contienen el código fuente original sin modificar en formato tar comprimido con gzip y generalmente.
La instalación de software mediante el sistema de paquetes utiliza dependencias. Estas dependencias están documentadas en el archivo de control asociado a cada paquete.

Formato de los Paquetes Ubuntu.

Un “paquete” Ubuntu contiene los archivos ejecutables, bibliotecas y la documentación asociada con un programa particular o con un conjunto de programas relacionados. Normalmente, un archivo Ubuntu tiene la extensión de archivo .deb.

Convención usada para designar a los paquetes Ubuntu


Si nunca has visto un fichero de paquete de Ubuntu previamente, puedes entrar en la carpeta /var/cache/apt/archives y haz un listado de su contenido.

Los paquetes Debian/Ubuntu siguen la siguiente convención:

npaquete_version-revision_arquitectura.deb

Donde Generalmente:

  • Npaquete: es el nombre del paquete
  • Version: es el número de versión del paquete (cada vez que los mantenedores del mismo le añaden modificaciones o mejoras incrementan el número de la versión)
  • Revision: es el número de revisión (de Ubuntu/Debian)
  • Arquitectura: es la arquitectura para la que fue compilado el paquete.
El número de revisión es asignado por el desarrollador Ubuntu. Un cambio en el número de revisión generalmente indica que a cambiado algún aspecto del empaquetado.

Dependencias entre Paquetes.


El sistema de paquetes Ubuntu maneja declaraciones de dependencia que se utilizan para expresar que un paquete necesita de la instalación de otro para funcionar. Los tipos de relación que pueden existir entre los paquetes son:
  • El Paquete A Depende del Paquete B si B debe instalarse sí o sí para poder ejecutar A. En algunos casos A Depende no sólo de B, sino de una versión específica de B. En este caso, la dependencia de versión constituye un límite inferior, es decir, A dependerá de cualquier versión de B más reciente que la versión especificada.
  • El Paquete A Recomienda al Paquete B si el encargado del mismo considera que la mayoría de los usuarios no querrán a A sin tener también la funcionalidad proporcionada por B.
  • El Paquete A Sugiere al Paquete B si B contiene archivos que están relacionados y mejoran la funcionalidad de A. La misma relación se expresa diciendo que el paquete B Mejora el paquete A.
  • El Paquete A Está en conflicto con el Paquete B cuando A no funciona si se instala B en el sistema.
  • El Paquete A Reemplaza el Paquete B cuando los archivos instalados por B se eliminan o se sobrescriben por los archivos de A.
  • El Paquete A Proporciona el Paquete B cuando todos los archivos y funcionalidad de B están incorporados en A.
La utilidad aptitude tiene un mayor control sobre los paquetes considerados como Recomendados y Sugeridos que apt-get, el cual simplemente obtiene todos los paquetes considerados como Dependientes y deja todos los paquetes considerados como Recomendados y Sugeridos.

Manipulación de Paquetes a Bajo Nivel.

La manipulación directa de ficheros de paquetes se realiza con el comando dpkg. Gracias a la existencia de programas como el Centro de software de Ubuntu, synaptic, aptitude o apt-get, sólo es necesario usar dpkg cuando nos encontramos con paquetes de Ubuntu sueltos, esto es, que no forman parte de un repositorio estructurado en la red o de un CD-ROM.

Instalación de paquetes a bajo nivel

El comando

$ dpkg -i paquete.deb

Instalará el fichero de paquete indicado.

En caso de que se produzcan problemas de dependencias (falta un paquete del que depende), el paquete no será configurado, pero será desempaquetado. En este caso deberemos instalar también los paquetes necesarios
  • Comprobación de si un paquete está instalado
Si queremos comprobar si un paquete está instalado podemos hacerlo utilizando la opción -l:

$ dpkg -l vim
  • Para desinstalar paquetes con dpkg se emplea:
$ dpkg --remove paquete


$ dpkg --purge paquete

si se quiere además borrar los ficheros de configuración. También se puede usar -P.

En este caso no se especifica la ruta en la que se encuentra el paquete, sino simplemente el nombre del mismo.
  • Averiguar los archivos instalados por un paquete
La opción -L muestra todos los archivos que instala en el sistema un paquete en concreto.

$ dpkg -L hwdata
  • Averiguar que paquete instala un determinado archivo
Si no sabemos que paquete instaló un determinado archivo en nuestro sistema podemos averigüarlo con la opción -S de dpkg:

Manipulación de Paquetes a Alto Nivel.

APT.

Advanced Packaging Tool, (APT), es un sistema de gestión de paquetes que simplifica en gran medida la instalación y eliminación de programas en los sistemas GNU/Linux. Y apt-get es la utilidad para usar desde la línea de comandos que hace de interfaz entre el usuario y APT.

APT es capaz de:
  • Manejar automáticamente las dependencias entre paquetes
  • Hacerse cargo de las configuraciones de los paquetes
  • Encontrar los paquetes por sí mismo y
  • Actualizar el sistema con versiones nuevas de programas.
APT, por si mismo no instala los paquetes, se encarga de descargarlos, resolver dependencias, mantener actualizada la base de datos de paquetes y de otras funciones, pero cuando se va a instalar un paquete transfiere el control a dpkg.

El funcionamiento de APT se necesita un fichero donde se localicen las fuentes. Una fuente o repositorio, es el lugar donde se encuentran los paquetes. Una fuente puede ser:
  • Un CD/DVD.
  • Un servidor HTTP.
  • Un servidor FTP.
  • Un directorio en el sistema de ficheros local.
El fichero en el que se especifican las fuentes disponibles es:

 /etc/apt/sources.list

Normalmente el formato del fichero /etc/apt/sources.list incluye líneas del tipo:

deb http://site.org/debian distribución sección1 sección2

deb-src http://site.org/debian distribución sección1 sección2

  • deb indica que el repositorio contiene paquetes compilados o binarios.
  • deb-src indica que en el repositorio obtendremos paquetes en código fuente.
Si queremos ver el contenido del fichero sources.list para ver todas las fuentes de paquetes disponibles en nuestro sistema podemos ejecutar:

$ cat /etc/apt/sources.list

Actualización de la Base de Datos de Paquetes.

El sistema de paquetes utiliza una base de datos para llevar un control de los paquetes instalados, no instalados y cuáles están disponibles para instalar.

Para actualizar la lista se utiliza el comando apt-get update. Este comando descargará la lista completa de paquetes que contienen las fuentes indicadas en el fichero sources.list.

Instalación de un paquete

Si tenemos la lista de paquetes disponibles actualizada, para instalar un paquete basta escribir:

$ sudo apt-get install nombre_paquete

Este comando se conectará a la fuente y descargará el paquete, comprobará las dependencias descargando además todos los paquetes necesarios, los descomprimirá e instalará y configurará el software.

Si sólo queremos que se descargue el paquete y no se instale utilizamos la opción -d:

$ sudo apt-get -d install n_paquete

El paquete estará disponible en /var/cache/apt/archives

Eliminar un Paquete.

Si vamos a dejar de utilizar un paquete podemos desinstalarlo con:

$ sudo apt-get remove nombre_paquete

Con el parámetro –purge delante de remove se borrarán también los archivos de configuración de los paquetes que vamos a desinstalar.

Actualizar Paquetes.

Para actualizar todos los paquetes a sus versiones más recientes disponibles en las fuentes utilizaremos apt-get con el comando upgrade.

$ sudo apt-get upgrade

Puede ocurrir que al actualizar con el parámetro upgrade aparezca el error:

The following packages have been kept back:

Esto significa que por alguna razón algunos paquetes no han podido ser actualizados y se han conservado sus versiones anteriores debido a cambio de dependencias en el paquete.

En ese caso debemos actualizar con: 

$ sudo apt-get dist-upgrade

Descubrir nombres de Paquetes.

Si para instalar un paquete necesito saber su nombre, podemos utilizar el comando apt-cache con el parámetro search.

$ apt-cache search NombrePaquete.

Obtener información de Paquetes
  • Para obtener información de un paquete en concreto utilizaremos el parámetro show:
$ apt-cache show
  • Para obtener más información como dependencias emplearemos el paráemtro showpkg
$ apt-cache showpkg NombrePaquete.
  • Para obtener sólo las dependencias completas usamos la opción depends:
$ apt-cache depends NombrePaquete.



Administración del Equipo

Sucesos del sistema




  • menú Sistema/Administración/Visor de archivos de sucesos
  • A la izquierda los sucesos que se pueden visualizar
  • A la derecha la información
  • Ejercicio: Ver en tiempo real los sucesos del sistema relacionados con el logueo. Loguearse con un usuario y ver la entrada en el fichero log correspondiente
Servicios

  1. Aplicaciones/Centro de software de Ubuntu
  2. Obtener software libre
  3. Herramientas del sistema
  4. BootUup-Manager
  5. Pulsar dos veces e instalar
  6. Pide contraseña
  7. Cierre la utilidad al terminar la descarga
  8. Menú Sistema/Administración y BootUp-Manager
Servicios. Uso.
  • Se ejecutan los que tiene la casilla de la izquierda activada
  • Para activar o desactivar
  • Botón derecho y seleccionar la acción
  • En la casilla Avanzado se ve más información sobre los servicios
Monitor del sistema.

  • Sistema/Administración/Monitor del sistema
  • Pulsar en procesos = procesos de usuario
  • Muy parecido al de Windows
  • Ficha Recursos = Rendimiento
  • Sistemas de archivos

Configuración TCP/IP estática.
  • Sistema/Preferencias/Conexiones de red
  • Pulsar sobre el adaptador y editar
  • Cableada
  • Seguridad 802,1X
  • Ajustes IPv4
  • Ajustes IPv6

Copias de Seguridad

Introducción.

Muchas herramientas:

  • Copias de seguridad
    • Básicas
    • Avanzadas
  • Clonación
Pueden ser:
  • Comandos
    • Dump/restore
    • Tar
  • Herramientas gráficas
    • Amanda
    • Back in Time
  • Clonación
    • Clonezilla
    • Norton Ghost
Comando tar.

  • Disponible en todas las versiones de Unix-Linux
  • Mete en un único ficheros todos los ficheros que queramos
  • Opciones de tar


Comando dd
  • Copias exactas de disco duros, particiones o ficheros.
  • dd if=fichero_origen of =fichero_destino.

Rsync
  • Sincroniza carpetas de forma incremental
  • mediante el encodig sincroniza carpetas por red (los datos se envían por ssh)
  • rsync -avz /carpeta_origen/carpeta_destino
  • rsync -avz 192.168.0.25:/ carpeta_origen /carpeta destino
Backups sobre cd/dvd
  • 2 pasos
  • Crear la iso
  • mkisofs –o /root/imagen.iso /home/
  • Grabarla en el CD/DVD
  • cdrecord /root/imagen.iso
  • Con las herramientas que conocemos ¿cómo haríamos
  • una copia de seguridad programada?


Herramientas Gráficas.

  • Déjà-Dup → copias de seguridad
  • Brasero → grabación CD/DVD

  • Clonezilla → Clonación


Usuarios y Grupos

Fichero de Gestión de Usuario.




Archivo  /etc/passwd

El archivo /etc/passwd contiene toda la información relacionada con el usuario (registro, contraseña, etc.). Sólo el superusuario (raíz) puede cambiarla.

  • nombre_de_cuenta : contraseña : numero_de_usuario : numero_de_grupo : comentario : directorio : programa_de_inicio

Se especifican siete campos separados por el carácter ":":

  • El nombre de cuenta del usuario
  • La contraseña del usuario (codificada, por supuesto)
  • El número entero que identifica al usuario para el sistema operativo (UID = ID del usuario, identificación del usuario)
  • El número entero que identifica al grupo del usuario (GID = ID del grupo, identificación del grupo)
  • El comentario en el que se puede encontrar la información sobre el usuario o simplemente su nombre real
  • El directorio home, que es el directorio que se abre cuando se conecta al sistema
  • El interprete de comando.
Ordenes Para los Usuarios.
  • No es conveniente trabajar directamente con los ficheros.
  • useradd / adduser [opciones] Juan = Nos permite Crear Usuarios.
  • usermod [opciones] Juan = Nos permite Modificar a los Usuarios.
  • userdel [opciones] Juan = Nos permite Eliminar usuarios.
  • id Juan = Nos permite ver la id del usuario.
  • passwd [opciones] Juan =Nos permite cambiar la contraseña al usuario.
  • su Juan = Accedemos Como administrador 
  • groups [opciones] Juan = nos permite ver a que grupos pertenece el usuario.
Grupos

Archivo  /etc/groups


El archivo /etc/group contiene una lista de los usuarios que pertenecen a los diferentes grupos. De hecho, cada vez que un gran número de usuarios puede tener acceso al sistema, frecuentemente se los ubica en grupos diferentes, cada uno de los cuales posee sus propios derechos de acceso a los archivos y directorios.

Tiene diferentes campos separados por ":":

  • nombre_de_grupo : campo_especial : numero_de_grupo: miembro1, miembro2
Con frecuencia, el campo especial está vacío. 
El número de grupo corresponde al número del vínculo entre los archivos /etc/group y los archivos /etc/passwd.

  • Se heredan permisos:
    • Nombre del grupo: identificativo
    • Contraseña (opcional): Un user puede cambiar su grupo, si sabe su contraseña.
    • GID: identificador del grupo.
    • Listado de usuarios: Miembros del grupo.
  • Todo usuario pertenece a un grupo al menos:
    • Users
    • Ssh
    • Root
    • Admin
    • Por defecto a uno con su mismo nombre
Ordenes para Grupos.
  • groupadd nombre = Nos permite añadir un grupo indicando como parámetro el nombre del grupo.
  • groupmod [opciones] nombre = Nos permite modificar un grupo.
  • groupdel nombre = Nos permite eliminar un grupo.
  • gpasswd nombre = Administra las contraseñas de grupos
  • newgrp nombre = Permite a un usuario cambiar su grupo primario hacia otro al cual también pertenezca
Sistemas de contraseñas Shadow.
  • Habilitado por defecto
  • /etc/passwd solo modificable por root pero legible para todos
  • Aunque están encriptadas, sería aconsejable que solo las pudiera leer el root
  • El sistema de contraseñas shadow almacena las contraseñas en /etc/shadow y los usuarios en /etc/passwd. Los usuarios no tienen permiso de lectura
  • Para los grupos es igual /etc/gshadow

Ordenes para shadow.
  • pwconv/pwunconv =  Convierte del estándar (/etc/passwd) al shadow y viceversa
  • grpconv/grpunconv = Convierte del estándar (/etc/group) al shadow y viceversa


Sistemas de Archivos

Introducción.



  • La informacion se almacena en ficheros.
  • Los ficheros se agrupan en directorios y subdirectorios
  • Forman un arbol de directorios
  • Para incluir un dispositivo externo en el arbol de directorios hay que montarlo.
  • Directorio Principal 





  • /bin y /usr/bin → ficheros ejecutables y comandos más comunes
  • /boot  ficheros para el arranque del sistema 
  • /dev  hardware del equipo 
  • /etc  archivos de configuración de todo el sistema 
  • /home  carpetas individuales de los usuarios 
  • /lib y /usr/lib  Librerías del sistema 
  • /media  dispositivos externos (independiente de la carpeta de montaje) 
  • /mnt  carpeta para montar dispositivos de almacenamiento por defecto 
  • /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 del root 
  • /sbin y /usr/sbin  comandos y ficheros ejecutables necesarios para tareas de administración 
  • /usr  aplicaciones 
  • /var  información variable (colas de impresión, archivos de registro, logs…) 
Enlaces. 

  • Los accesos directos de Windows 
  • Idea básica: los archivos en Linux 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 al hacer un enlace se distinguen dos tipos
    •  Enlace duro  Mismo inodo. Mismo archivo en dos directorios 
    • Enlace simbólico  Distintos inodos 


Ficheros de dispositivos.


  • /dev/fd0 
  • /dev/fd1 
  • /dev/cdrom 
  • /dev/dvd 
  • /dev/hda 
  • /dev/hda1 
  • /dev/hda2 
  • /dev/hdb 
  • /dev/sda 
  • /dev/sdb 
  • /dev/tty0 
  • /dev/tty1 
  • /dev/lp0 
  • /dev/psaux 
  • /dev/usb 
  • /dev/stdin 
  • /dev/stdout 
  • /dev/stderr 
  • /dev/null 

Permisos.

  • Permisos: 
    • r: lectura 
    • w: escritura 
    • x: ejecución 
    • Archivo ejectuble 
    • Directorio entrar 
  • Para quién 
    • Propietario 
    • Grupo 
    • otros 
Establecer permisos.
  • chmod opciones fichero
  • chmod 777 fichero 
  • chmod u+r fichero 
  • chmod –R u=r,a+w * 
Usuarios y Propietarios.
  • chown nombre_usuario fichero
  • chgrp nombre_grupo fichero
Administrador de Archivos.
  • Nautilus 
Operaciones con esta utilidad.
  • Comprimir  .tar.gz
    • Menú editar 
  • Fondos y emblemas  texturas y colores en el fondo de pantalla 
    • Menú editar 
  • Mostrar ficheros ocultos  Empiezan por . 
    • Menú ver 
  • Limpiar el histórico  lista cronológica de los últimos lugares visitados 
    • Menú ir 
  • Marcadores  añadir lugares al panel izquierdo 
    • Opción añadir un marcador 
  • Crear un enlace  acceso directo 
    • Menú editar 
  • Acceder a memoria externa  Al terminar  desmontar 
    • Desde el panel izquierdo 
Compartir una carpeta.


  • Entre cualquier sistema operativo 
  • Lugares → Carpeta personal 
  • Sobre la carpeta → Menú editar → Opciones de compartición 
  • Compartir esta carpeta. Necesita Samba y si no está instalado pedirá permiso para instalarlo. Si hay que instalarlo hay que reiniciar y repetir los pasos. 
  • Indicar nombre, Permitir a otras personas escribir en esta carpeta (o no) y añadir un comentario 
  • Permitir acceso a invitados (o no) 
  • Crear compartición 
  • Añadir permisos automáticamente 
  • Aparecerá en el panel izquierdo en Red/Mi equipo

Modificar los permisos.
  • Lugares → Carpeta Personal
  • Sobre la carpeta que vamos a cambiar, botón derecho y propiedades 
  • Permisos