122
Bitácora GNU/LINUX de Juaramir.com Comandos GNU/Linux, Paquetes escenciales y Configuración Documento Elaborado por Juan José Ramírez Lama Versión 2.0 @Juaramir 2013

Comandos Basicos Linux

Embed Size (px)

Citation preview

Page 1: Comandos Basicos Linux

Bitácora GNU/LINUX de Juaramir.com

Comandos GNU/Linux, Paquetesescenciales y Configuración

Documento Elaborado por Juan José Ramírez LamaVersión 2.0@Juaramir

2013

Page 2: Comandos Basicos Linux

Índice general

1. Introducción 11.1. Sistemas Operativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1. UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2. LINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Distribución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.3. GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1.4. Historia de GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2. ¿Diferencias con Windows? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.1. Compativilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.3. Robustez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3. Licencias de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.1. Propiedad intelectual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.2. Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Clausulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.3. Software Propietario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.4. Software Libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Licencias GNU GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Licencia LGPL y GFDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3.5. Comparativa S.L. y S.P. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4. Algunos Términos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5. Distribución GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.5.1. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5.2. Distribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.5.3. Ubuntu GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.5.4. Sistema Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Inicio del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Interfaz Gráfica de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . 11Manejo Básico de GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . 12Áreas de Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Explorador de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Nautilus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

ii

Page 3: Comandos Basicos Linux

Índice general iii

1.6. Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.6.1. Sistemas de archivos soportados por Linux . . . . . . . . . . . . . . . . . 141.6.2. Sistemas de archivos LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

En Sistemas Pequeños . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14En Sistemas Grandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.7. Sistemas de Archivos y Jerarquía . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.7.1. Organización de sistema de archivos . . . . . . . . . . . . . . . . . . . . . 16

El Directorio Raíz / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Directorio /bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Directorio /boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Directorio /dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Directorio /etc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Directorio /home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Directorio /lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18El resto de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18/usr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Directorio /var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Directorio /lost+found. Perdidos y encontrados . . . . . . . . . . . . . . . 19Directorio /proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.8. Sistema X-Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.8.1. Arquitectura Cliente / Servidor . . . . . . . . . . . . . . . . . . . . . . . . 201.8.2. XFree86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.8.3. Arranque del sistema X-Window . . . . . . . . . . . . . . . . . . . . . . . 211.8.4. Gestores de ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.8.5. Gestores de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Desktop Manager’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2. Interprete de Comandos 262.1. Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.2. Comandos Básicos UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.2.1. Listar archivos (ls) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.2.2. Imprimir directorio actual (pwd) . . . . . . . . . . . . . . . . . . . . . . . 282.2.3. Cambio de directorio (cd) . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.2.4. Crear Directorios (mkdir) . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.2.5. Borrar directorios (rmdir) . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.2.6. Crear archivos (touch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.2.7. Copiar archivos o directorios (cp) . . . . . . . . . . . . . . . . . . . . . . . 292.2.8. Mover archivos o directorios (mv) . . . . . . . . . . . . . . . . . . . . . . . 292.2.9. Renombrar varios archivos a la vez (mmv) . . . . . . . . . . . . . . . . . . 302.2.10. Eliminar archivos o directorios (rm) . . . . . . . . . . . . . . . . . . . . . 312.2.11. Caracteres de globalización (comodines) . . . . . . . . . . . . . . . . . . . 312.2.12. Ayuda (man, apropos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Page 4: Comandos Basicos Linux

Índice general iv

2.2.13. Lectura de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.2.14. ln (enlace simbólico) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.2.15. Cambiar permisos (chmod) . . . . . . . . . . . . . . . . . . . . . . . . . . 332.2.16. Cambiar permisos sin código octal (chmod) . . . . . . . . . . . . . . . . . 34

2.3. Comandos Avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3.1. alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3.2. cat: Manejo de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Mostrar contenido de un archivo: . . . . . . . . . . . . . . . . . . . . . . . 34Concatenar archivos: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Unir dos vídeos en unos solo: . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.3.3. date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.3.4. du (disk usage) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.3.5. df . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.3.6. sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.7. time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.8. host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.9. ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.10. uname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.11. which . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.3.12. whereis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.3.13. cal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.3.14. split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.3.15. sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.3.16. wc (word counter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.3.17. file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.3.18. finger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.3.19. who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.3.20. grep y egrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.3.21. find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3. Compresión y Empaquetado 413.1. Empaquetado .tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.2. Compresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.2.1. .gz (gzip) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.3. Compresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.1. .tar.gz - .tar.z - .tgz (tar con gzip) . . . . . . . . . . . . . . . . . . . . . . 423.3.2. .bz2 (bzip2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.3.3. .tar.bz2 (tar con bzip2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.3.4. .zip (zip) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.3.5. .lha (lha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.3.6. .zoo (zoo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.3.7. .rar (rar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Page 5: Comandos Basicos Linux

Índice general v

4. Acceso remoto a terminal (SSH) 444.1. ¿Que es? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.2. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.3. Acceso Remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.4. Acceso Remoto: Envio/Recepción de Archivos . . . . . . . . . . . . . . . . . . . . 454.5. Acceso Remoto Gráfico (SSH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5. Administración Básica 475.1. Administración de Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1.1. Comandos para Administrar Usuarios: . . . . . . . . . . . . . . . . . . . . 475.1.2. Otros Comandos: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.2. Administración de Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.2.1. Comandos para Administrar Grupos: . . . . . . . . . . . . . . . . . . . . . 48

5.3. Administración de Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.3.1. Sistema de paquetes DEB: . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.3.2. APT: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6. Servicio de Impresoras (CUPS) 526.1. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.2. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6.2.1. Configuración de CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.3. Configuración de clientes de CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . 53

7. Shell Scripts 587.1. Ejecución de un comando en bash . . . . . . . . . . . . . . . . . . . . . . . . . . 587.2. Ambiente y variables de ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.3. Expansiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617.4. Comandos y programas útiles al hacer scripts . . . . . . . . . . . . . . . . . . . . 627.5. Script Basico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

7.5.1. Cómo Crear un script sencillo . . . . . . . . . . . . . . . . . . . . . . . . . 647.5.2. Para ejecutarlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

7.6. Algunos Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657.7. Lecturas recomendadas: Scripts básicos para bash . . . . . . . . . . . . . . . . . 687.8. Ejercicios: Scripts básicos para bash . . . . . . . . . . . . . . . . . . . . . . . . . 69

8. CRON 708.1. CRON: Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708.2. CRON: crontab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708.3. CRON: Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718.4. CRON: Listar todas tus tareas del crontab . . . . . . . . . . . . . . . . . . . . . . 718.5. CRON: Borrar todas tus tareas del crontab . . . . . . . . . . . . . . . . . . . . . 718.6. CRON: ahorrar tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728.7. CRON: ahorrar tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Page 6: Comandos Basicos Linux

Índice general vi

8.8. CRON: Creación de un crontab para un usuario . . . . . . . . . . . . . . . . . . . 728.9. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

9. Manejo de Nuevo Hardware 759.1. Identificar tu Partición o Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759.2. Identificar tu Partición o Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759.3. Preparar la Ubicación para Montar . . . . . . . . . . . . . . . . . . . . . . . . . . 769.4. Particionamiento ***(Pendiente)*** . . . . . . . . . . . . . . . . . . . . . . . . . 76

9.4.1. Crear un sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . 769.4.2. Herramientas Gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

9.5. Montar Partición de Manera Temporal . . . . . . . . . . . . . . . . . . . . . . . . 779.5.1. NTFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779.5.2. Fat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779.5.3. ext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

9.6. Montar Partición de Manera Definitiva . . . . . . . . . . . . . . . . . . . . . . . . 789.6.1. NTFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789.6.2. Fat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789.6.3. ext4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

9.7. Montar la partición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

10.Servidor GNU/Linux 8010.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8010.2. Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

10.2.1. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8110.3. Configuración de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

10.3.1. Asignando IP Estática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8810.4. Servidor Web con LAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

10.4.1. Configurar MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92PhpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

10.5. Servidor FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.6. Dominios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9810.7. Entorno Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9910.8. Servidor de archivos Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

10.8.1. Configuración Samba sin Entorno Grafico ***(pendiente)*** . . . . . . . 10410.9. Blog con Wordpress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10410.10.Lecturas Recomendadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

10.10.1.Bloquear Ataques de Fuerza Bruta . . . . . . . . . . . . . . . . . . . . . . 10710.10.2.Añadir Host Personalizado . . . . . . . . . . . . . . . . . . . . . . . . . . 10710.10.3.Otros Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Page 7: Comandos Basicos Linux

Índice general vii

11.Punto de Restauración con Clonezilla 10811.1. Inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10811.2. Crear Imagen para Respaldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11111.3. Utilizar Imagen para Restaurar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11311.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

11.4.1. Creación de Imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11411.4.2. Restauración de Imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Page 8: Comandos Basicos Linux

Capítulo 1

Introducción

1.1. Sistemas Operativos

¿Que es un Sistema Operativo? Sistema Operativo (S.O.): Conjunto de programas des-tinados a permitir la comunicación del usuario con un computador y gestionar sus recursos demanera eficiente.

Ejemplo 1.1 Ejemplos de Sistemas OperativosUnix: System V, Solaris, HP-UX, AIX,FreeBSD, NetBSD, Mac OS, Mac OSxMicrosoft: D.O.S, Windows 3.1, 3.11, 95, 98, 2000, XP, Vista, 7, 8.GNU/Linux (Distribuciones): Debian, Mandrake, Mandriva, Red Hat, Fedora, Suse,OpenSuse, Ubuntu, Archlinux, Linux Mint, Slax, Pearlinux, Slackware. 2

1.1.1. UNIX

1965 Instituto de Tecnología de Massachussets (MIT), la compañia General Electric (GE)y los Laboratorios de Telefonía de Bell (BTL) inician el proyecto MULTICS.Sistema operativo interactivo/multiusuario.

1

Page 9: Comandos Basicos Linux

Capítulo 1. Introducción 2

No llego a finalizarse pero dio los fundamentos necesarios para la creación de un SistemaOperativo.En 1969 D. Ritchie y K. Thompson trabajan en un nuevo S.O. UNICS, que luego pasaríaa llamarse UNIX (1970).La primera versión fue escrita en asembler para una DEC PDP-7.Se crea un compilador para el Lenguaje C.Se reescribe el núcleo de Unix en C, esto permite utilizar Unix en otras arquitecturas deHW.(1973).La Universidad de Berkley desarrolla una versión de Unix (Unix BSD).Debido a problemas Judiciales AT&T, se ofrece una licencia de Unix la que no ofrecesoporte.Todas las versiones creadas debían pagar licencia AT&T.Se publica POSIX.1Actualmente existen versiones de Unix:1. Solaris (Sun Microsystem).2. HP-UX (HP).3. AIX (IBM).

1.1.2. LINUX

Andrew Tanenbaum crea Minix.Es el kernel de un S.O. basado en Unix, para x86Lo usa para sus clases ya que no es posible estudiar el código fuente de UNIX.Lo diseña para x86 ya que es una plataforma económica.Linus Torvalds se basa en minix para crear un kernel para i386 (procesadores de 32 bits),bajo licencia GPL.Linux es sólo el kernel de un S.O.Comienza en 1991 con la versión 0.02.Cumple con el estándar Posix.Contribuciones de todo el mundo.En 1994 libera la versión 1.0.www.kernel.org.Se une a las aplicaciones GNU + kernel Linux.

Distribución

Coloquialmente llamada “distro”.Distribución de software basada en el núcleo Linux.Incluye determinados paquetes de software para satisfacer las necesidades de un grupoespecífico de usuarios.Existen ediciones domésticas, empresariales y para servidores.Compuestas, total omayoritariamente, de software libre, aunque a menudo incorporanaplicaciones o controladores propietarios.

Page 10: Comandos Basicos Linux

Capítulo 1. Introducción 3

Figura 1.1: quitectura de GNU/Linux

1.1.3. GNU/Linux

El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistemaoperativo completamente libre: el sistema GNU.

GNU es un acrónimo recursivo que significa GNU No es Unix (GNU is Not Unix).Richard Stallman: «Se puede pronunciar de cualquier forma, la única pronunciación errónea

es decirle ‘linux’».Linux es un núcleo de sistema operativo libre tipo Unix.Fue concebido por el entonces estudiante de ciencias de la computación finlandés, Linus

Torvalds, en 1991.GNU/Linux es la referencia a la combinación del Kernel Linux, que es usado con herra-

mientas de sistema GNU.A pesar de que Linux es, en sentido estricto, el sistema operativo, parte fundamental de la

interacción entre el núcleo y el usuario (o los programas de aplicación) se maneja usualmentecon las herramientas del proyecto GNU o de otros proyectos como GNOME.

1.1.4. Historia de GNU/Linux

El proyecto GNU, que se inició en 1983 por Richard Stallman; tiene como objetivo el desa-rrollo de un sistema operativo Unix completo y compuesto enteramente de software libre. Lahistoria del núcleo Linux está fuertemente vinculada a la del proyecto GNU. En 1991 Linus Tor-valds empezó a trabajar en un reemplazo no comercial para MINIX9 que más adelante acabaría

Page 11: Comandos Basicos Linux

Capítulo 1. Introducción 4

siendo Linux.

Cuando Torvalds liberó la primera versión de Linux, el proyecto GNU ya había producidovarias de las herramientas fundamentales para el manejo del sistema operativo, incluyendo unintérprete de comandos, una biblioteca C y un compilador, pero como el proyecto contaba conuna infraestructura para crear su propio núcleo (o kernel), el llamado Hurd, y este aún no era losuficiente maduro para usarse, comenzaron a usar a Linux a modo de continuar desarrollando elproyecto GNU, siguiendo la tradicional filosofía de mantener cooperatividad entre desarrollado-res. El día en que se estime que Hurd es suficiente maduro y estable, será llamado a reemplazara Linux.

Entonces, el núcleo creado por Linus Torvalds, quien se encontraba por entonces estudiandoen la Universidad de Helsinki, llenó el “espacio” final que había en el sistema operativo de GNU.

1.2. ¿Diferencias con Windows?

Windows pertenece a una empresa llamada MICROSOFT:Debemos pagar una licencias por su instalación y uso.La instalación es mínimamente configurable aunque es muy sencilla.No permite utilizar el Sistema Operativo mientras se instala.

GNU/Linux es libre y le pertenece a la comunidad:No debemos pagar licencias.Es TOTALMENTE GRATUITO.Al instalar LINUX no tendrá nunca problemas de legalidad.En algunas distribuciones su instalación es muy sencilla.Permite utilizar el sistema operativo mientras se instala (LiveCD).Permite personalizar los paquetes a instalar.

1.2.1. Compativilidad

Ninguno de los dos sistemas operativos son totalmente compatibles con el Hardware, a pesarde que Windows se acerca más, los dos están cerca de conseguirlo.

Aunque Linux no esta detrás de ninguna casa comercial gracias a su elevada popularidadofrece una alta compatibilidad ofreciendo, además, actualizaciones frecuentes.Windows al ser parte de Microsoft intenta ofrecer una gran cantidad de drivers ya que sugran poder económico hace que las empresas mismas de hardware creen sus propios drivers.

1.2.2. Software

Linux al tener menos software en algunos campos sufre una menor aceptación por parte delas empresas, aunque gracias a los apoyos de empresas como Sun Microsystems o IBM se halogrado muchos avances.

Windows al ser el mas fácil de usar en las empresas, posee una gran cantidad de software.

Page 12: Comandos Basicos Linux

Capítulo 1. Introducción 5

1.2.3. Robustez

Linux se ha caracterizado siempre por la robustez de su sistema ya que pueden pasar mesese incluso años sin la necesidad de apagar o reiniciar el equipo, también si una aplicación fallasimplemente no bloquea totalmente al equipo.

En Windows siempre hay que reiniciar cuando se cambia la configuración del sistema, sebloquea fácilmente cuando ejecuta operaciones aparentemente simples por lo que hay que reiniciarel equipo.

1.3. Licencias de Software

Las Licencias de Software están ligadas a los derechos de autor o Copyright, los cuales ledan al autor de una obra, por el hecho de haberla creado, un derecho de propiedad exclusivo yoponible a todos, denominado “Derecho de Autor”.

1.3.1. Propiedad intelectual

Necesidad de dar una expresión estatutaria a los derechos morales y económicos de loscreadores sobre sus creaciones.Necesidad de promover la creatividad y divulgar sus resultados, además de promover elcomercio honesto que contribuirá al desarrollo económico y social.

Una licencia de software establece un contrato legal entre el/los autor/es del software y elusuario de dicho software, el cual establece los derechos y obligaciones contraídos al momento deadquirir el software.

Este contrato no vende ninguno de los derechos de software al usuario, sino que concede elderecho a hacer uso de él normado por las cláusulas indicadas en la licencia de software.

Todo software tiene asociado una licencia.

1.3.2. Clasificación

De acuerdo a las licencias de software podemos clasificarlas en:Licencia de Software Propietario.Licencia de Software Libre.

Clausulas

Esto se basa en las cláusulas de la licencia del software, también se llama:Licencia del programa.CLUF (Contrato Licencia de Usuario Final).EULA (End User License Agreement).

Page 13: Comandos Basicos Linux

Capítulo 1. Introducción 6

1.3.3. Software Propietario

Se refiere al software que tiene licencias de software con las siguientes características:Conseción de licencia: En consideración del pago de la cuota por concepto de LICEN-CIA.Restricción de copias: Sólo se permite una copia para efectos de respaldoRestricciones sobre uso: No se autoriza el uso para algo que no este contemplado.No se puede hacer ingeniería inversa ni descompilar el programa ejecutable para accederal código fuente.Garantía Limitada: El software se proporciona çomo está"sin garantía de ninguna clase.Además, la “empresa de software” no garantiza ni hace representación alguna con respectoal uso o a los resultados del uso del software.

Existe también software que no es tan restrictivo, pero no se puede obtener el código fuente:Freeware: Permiten la redistribución pero no la modificación (y su código fuente no estádisponible). Normalmente vienen acompañados de publicidad.Shareware: autorizado para redistribuir copias, pero tampoco se puede obtener el códigofuente. Normalmente solo se puede utilizar un porcentaje de toda su funcionalidad o vienecon fecha de expiración.

1.3.4. Software Libre

El Software libre nace de la mano de Richar Stallman, quien creó la fundación de softwarelibre (Free Software Foundation, FSF www.fsf.org

El software libre no solo se refiere a aspectos legales de su licencia, sino también a la formade hacer las cosas.

Existen diversos documentos que reflejan dicha filosofía, como la catedral y el bazar (Eric S.Raymond, 1997).

Son 4 las características / propiedades o libertades fundamentales para que un software sea"Software Libre".

0. Libertad para ejecutar el programa con cualquier propósito.1. Libertad para estudiar y modificar el programa.2. Libertad de copiar el programa de manera que puedas ayudar a tu vecino.3. Libertad de mejorar el programa, y hacer públicas tus mejoras, de forma que se beneficie

toda la comunidad.Estos últimos dos puntos deben tener una restricción: Si redistribuye el programa, modificado

o no, debe hacerse bajo las mismas condiciones. Esta cláusula es la que garantiza la libertad delprograma, impidiendo que alguien tome un desarrollo libre y lo transforme (o incluya) en undesarrollo propietario, limitando alguna de las libertades citadas.

Se aprecia que no se hace referencia alguna al valor del software, por lo tanto:“SOFTWARE LIBRE” distinto “SOFTWARE GRATIS”

Page 14: Comandos Basicos Linux

Capítulo 1. Introducción 7

Nótese no se menciona (y por ende, no se limita) la posibilidad de que quien desarrolla odistribuye un programa libre cobre por ello un monto de dinero.

Licencias GNU GPL

Licencia GNU GPL (GNU General Public Licence).Se crea para darle un sostén legal al software libre.Actualmente se define la GPL ver. 3 del 29 de junio del 2007.Garantiza las 4 libertades.Incluye una “Ausencia Total de Garantía”.Cualquier modificación deberá generar Software Libre.

Licencia LGPL y GFDL

Es utilizada para el uso de bibliotecas.Permite enlazar software libre (bibliotecas) a un Software propietario.Nace como estrategia de apoyo al S.L.

Se crea licencia para documentación GFDL: Similar a la GPL, pero orientada a ladocumentación.

1.3.5. Comparativa S.L. y S.P.

Características S. Libre S. PropietarioCopias Ilimitadas Solo 1 para efectos de res-

paldoUso Cualquiera Solo lo que indica la licen-

ciaCódigo Fuente Siempre estará

disponibleNo se entrega

Garantías Sin Garantía Garantía LimitadaModificación Se Permite No se permite

1.4. Algunos TérminosConsola: Es un programa para ingresar comandos vía teclado. Estos comandos sirvenpara decirle al sistema operativo que realice determinada acción. Los comandos se ingresanuno a la vez. Por lo general la consola se encuentra ubicada en Aplicaciones->Accesorios->Terminal.Distribución: Linux en sí es sólo el núcleo del sistema operativo. Una distribución Linuxes el núcleo más un montón de herramientas para que sea más fácil configurar el sistemaoperativo y otro montón de aplicaciones que pueden variar de una distribución a otra.Ejemplos de distribuciones Linux son: Ubuntu, Fedora, Arch, Mandriva. Existen cientos,pueden elegirse de acuerdo a simples gustos o a complejas necesidades.

Page 15: Comandos Basicos Linux

Capítulo 1. Introducción 8

Distro: Diminutivo de distribución.Root: Es un tipo de usuario en Linux. Es aquel que tiene permisos para realizar cualquiertipo de tareas en el sistema operativo y el hardware del PC.Repositorio: Conjunto de enlaces y paquetes de software normalmente alojados en ser-vidores de Internet. Se usan para que sea más fácil localizar, bajar e instalar todos losprogramas que usamos en linux.Terminal: Consola de comandos al estilo DOS.GRUB: (GRand Unifier Bootloader) es un gestor de arranque: es lo primero que se cargacuando se inicia la computadora.Kernel: núcleo del sistema. La parte más básica del sistema operativo. El resto de elemen-tos son añadidos para aumentar la funcionalidad y usabilidad.Gestor de paquetes: Aplicación ya sea en modo gráfico o consola que nos permite buscar,instalar y desinstalar aplicaciones junto con sus dependencias.Superusuario: Root.GUI: Interfaz Gráfica de Usuario, del inglés Graphical User Interface.Demonio: Programa que arranca junto con el sistema y permanece activo todo el tiempojunto al sistema, si es “matado” se reinicia.Kernel Panic: Tipo de error en el que el sistema se bloquea, sólo se puede solucionar conel reinicio, algo así como la Pantalla Azul de la Muerte de Hasefroch (Microsoft), aunquees muy difícil que nos salga este error.

1.5. Distribución GNU/Linux

Es un sistema operativo completo que incluye una gran cantidad de softwareEsta compuesto por:1. Kernel Linux.2. Herramientas GNU.3. Herramientas de instalación y administración (creadas por la distribución).4. Recopilación de Software Libre (aplicaciones de usuario)

De lo anterior lo que diferencia a cada distribución es 3Una distribución de Linux es: Sistema Operativo + Aplicaciones.Por lo tanto una Distribución de Linux es más que un Sistema Operativo (S.O.).

1.5.1. Arquitectura

Page 16: Comandos Basicos Linux

Capítulo 1. Introducción 9

Figura 1.2: Arquitectura GNU/Linux

1.5.2. Distribuciones

Algunas Distribuciones son:

URL Distribuciónredhat.com Red Hat Linuxfedoraproject.org Fedora Linuxcentos.org Centos Linuxopensuse.com openSUSE Linuxdebian.org Debian Linuxubuntu.com Ubuntu Linuxmepis.org Mepis Linuxgentoo.org Gentoo Linuxturbolinux.com Turbo Linuxknoppix.org Knoppix Linuxkernel.org Kernel de Linux

¿Cuantas Distribuciones de Linux Existen?www.distrowatch.comCada distribución tiene cualidades propias.El usuario final no nota la diferencia.Existen diferencias notables en Instalación, configuración y administración.Gran Avance hacia usuarios finales.

• Automatiza el proceso de instalación y actualización.• Todo esta integrado.

Ventajas:• Costo 0.• Seguro (casi no existen virus).• Independencia de proveedores.• Tecnologia Libertaria.• Especial provecho para la educación.

Desventajas:

Page 17: Comandos Basicos Linux

Capítulo 1. Introducción 10

• Casi nulo soporte comercial.• Ausencia de soporte técnico para usuario domestico.• Baja disponibilidad de Juegos.

1.5.3. Ubuntu GNU/Linux

1. ¿Qué es Ubuntu?2. ¿Cuál es la versión actual?3. ¿Cada cuanto tiempo aparece una nueva versión?4. ¿Cuanto Tiempo dura el soporte para una versión?5. ¿Existen distintas ediciones (Empresas, Hogar, Profesional)?

Basada en la distribución Debian GNU/Linux.Información www.ubuntu.comPolítica de versión cada 6 meses.Versiones:

• Sin Soporte: Warty Warthog (4.10), Hoary Hedgehog (5.04), Breezy Badger (5.10),Dapper Drake (6.06 LTS), Edgy Eft (6.10), Feisty Fawn (7.04), Gutsy Gibbon (7.10),Hardy Heron (8.04 LTS), Intrepid Ibex (8.10), Jaunty Jackalope (9.04), Karmic Koala(9.10), Lucid Lynx (10.04 LTS), Maverick Meerkat (10.10).

• Con Soporte: Natty Narwhal (11.04), Oneiric Ocelot (11.10), Precise Pangolin (12.04LTS), Quantal Quetzal (12.10).

• En Actual: Raring Ringtail (13.04).• En desarrollo: (n.n.) (13.10).

Cada 4 versiones de Ubuntu se libera una versión con soporte técnico extendido a la que seañade la terminación LTS.

Esto significa que los lanzamientos LTS contarán con actualizaciones de seguridad de paquetesde software durante tres años en entorno de escritorio y cinco años en servidor por parte deCanonical, a diferencia de los otros lanzamientos de Ubuntu que sólo cuentan con 18 meses desoporte.

Utiliza sistema de repositorios (al igual que Debian GNU/Linux):

Main Contiene aplicaciones con soporte oficial.Restricted Contiene aplicaciones con soporte oficial, pero

no tienen licencias libresUniverse Contiene una gran cantidad de aplicaciones, pe-

ro sin soporte oficialMultiverse Contiene aplicaciones sin soporte

1.5.4. Sistema Ubuntu

Inicio del Sistema

Al instalar un sistema operativo Gnu/Linux, normalmente se configura un gestor de arran-que LILO o GRUB (Ubuntu instala GRUB)Normalmente se encuentra instalado junto a otros sistemas operativos.

Page 18: Comandos Basicos Linux

Capítulo 1. Introducción 11

Se instala en el MBR (Main Boot Record).Selecciona el sistema que se quiere utilizar.En los inicios de Unix no existían las interfaces gráficas.Sólo se podía utilizar el “Modo Texto”.Actualmente es posible utilizarlo en Linux con las siguientes combinaciones de teclas:

• Control + Alt + F1 (Consola Virtual 1, tty1).• Control + Alt + F2 (Consola Virtual 2, tty2).• ...• Control + Alt + F7 (Modo Gráfico).

A esto se le conoce como consola de Unix/Linux.Debido a que es un sistema multiusuario se debe ingresar con una cuenta de usuario (login: contraseña).El usuario/cuenta más importante es root o Super Usuario.

Figura 1.3: LILO

LILO

GRUB

Interfaz Gráfica de Usuario

En Unix/Linux se utiliza el sistema gráfico X-Window.Es altamente configurable.Es del tipo Cliente/Servidor.La implementación para GNU/Linux es Xorg.

XorgGNU/Linux

Page 19: Comandos Basicos Linux

Capítulo 1. Introducción 12

Figura 1.4: GRUB

Existen varias GUIs para Linux.Algunas son Simples o Minimalistas (fluxbox, after step, xfce).Las 2 principales y más completas son: KDE y Gnome.

GnomeXorg

GNU/Linux

Para ingresar el sistema gráfico se debe indicar:• Login y Contraseña.• Seleccionar el GUI (depende de lo que este instalado en el equipo).• Idioma.• Se puede Reiniciar o apagar el equipo.

Manejo Básico de GNU/Linux

Manejo del Mouse:1. Botón Derecho (Opciones).2. Botón Izquierdo (Selección/Acción).3. Ambos Botones o Scroll (Pegar).

Atajos de teclado:

F1 Ayuda del ProgramaF11 Maximiza/RestauraAlt+F1 Abre Menú AplicacionesAlt+F2 Abre Dialogo Ejecutar AplicaciónAlt+F4 Cierra ProgramaAlt+Tab Cambiar entre Aplicaciones AbiertasControl+Alt + Arrow Cambia entre escritorios

Mayor información Sistema->Ayuda->Documentación del sistema : Otras categorías do-cumentales -> Escritorio.

Page 20: Comandos Basicos Linux

Capítulo 1. Introducción 13

Figura 1.5: Ingreso al Sistema

Áreas de Trabajo

En los sistemas Unix/Linux se puede tener más de un escritorio o área de trabajo (virtual).En un escritorio se puede ejecutar un conjunto de aplicaciones y pasar a otro escritorio queno tendrá nada ejecutado.Al volver al escritorio anterior se aprecia que las aplicaciones ejecutas se mantienen.Para cambiarse de Áreas de trabajo se debe seleccionar el applet Selector de áreas detrabajo (por defecto son 4, Área 1, Área 2 ...).Sobre Dicho applet se pueden modificar las preferencias (Botón derecho).

Explorador de Archivos

El explorador de archivos de Gnome se denomina Nautilus.El objetivo es identico al Explorer de Windows.Para ejecutarlo: Lugares -> Carpeta personal.

Nautilus

En los Sistemas Unix/Linux existen archivos y directorios ocultos.Todo archivo/directorio que comienza con “.” es oculto (.ssh, .bash profile).En Nautilus se debe activar la vista de archivos ocultos.

• Con Ctrol+H, ó• Ver -> Mostrar archivos ocultos.

Para crear un archivo/directorio oculto solo se debe agregar “.” al comienzo del nombre.

Page 21: Comandos Basicos Linux

Capítulo 1. Introducción 14

Configuración Nautilus en : Editar -> PreferenciasPara ahorrar espacio u ordenar varios archivos se comprimen.Existen diversos formatos de compresión : zip, rar, arj, gz, bz2Gnome incluye la herramienta file-roller que permite: Descomprimir, Comprimir.Los formatos que soporte dependerá de los programas instalados (en realidad es un front-end).Para Descomprimir : Botón derecho -> Extraer Aquí (para un archivo comprimido).Para comprimir: Seleccionar archivos/directorios a comprimir, Botón derecho -> Creararchivador

1.6. Filesystems

1.6.1. Sistemas de archivos soportados por Linux

ext2 el primer sistema de archivos diseñado expresamente para Linux.ext3 versión mejorada de Ext2, ampliamente utilizada en distribuciones Linux.ext4 nuevo sistema de archivos para Linux evolucionado de Ext3 algunas de sus ventajas con

respecto a este último son: aumento del tamaño del sistema de archivos a 1 Exabay = 220

Tb y del tamaño máximo por archivo (16 Tb), número ilimitado de directorios frente alos 32.000 de Ext3, mayor velocidad en la creación y borrado de archivos y menor uso delCPU.

XFS Implementado para sistemas Unix, rápido acceso para grandes cantidades de datos y altasvelocidades, pero lento en archivos pequeños. Se utiliza en grandes servidores y donde semaneje mucha información.

ReiserFS Sistema de archivos diseñado e implementado por la empresa Namesys, liderado porHans Reiser. Es soportado por Linux y otros sistemas operativos (algunos a través deimplementaciones muy inestables).

1.6.2. Sistemas de archivos LVM

LVM es el acrónimo de Logical Volume Manager.Los volúmenes de almacenamiento bajo el control de LVM pueden ser redimensionados y

movidos a voluntad, aunque esto quizá necesite actualizar las herramientas del sistema.

En Sistemas Pequeños

Una de las decisiones que afronta un usuario instalando GNU/Linux es cómo particionarel disco duro. La necesidad de estimar cuanto espacio será necesario para el sistema, paralos temporales o para los datos personales, puede convertirse en algo problemático, por loque muchos usuarios optan por crear una partición que ocupe todo el disco y allí introducirlos datos. Aún habiendo estimado correctamente cuánto espacio se necesita para /home,/usr, /tmp, o cualquier otro directorio importante, es bastante común que nos quedemossin espacio en estas particiones, cuando tenemos espacio de sobra en alguna otra.

Page 22: Comandos Basicos Linux

Capítulo 1. Introducción 15

Con el uso de un administrador de volúmenes lógicos, el disco completo puede ser asignadoa un único grupo lógico y definir distintos volúmenes lógicos para almacenar /home u otrosdirectorios. En el caso que nos quedemos sin espacio, por ejemplo, en /home, y tenemosespacio en /opt, podríamos redimensionar /home y /opt y usar el espacio que le hemosquitado a /opt y añadírselo a /home. Hay que tener en cuenta, que para realizar esto,nuestro sistema de archivos debe soportar el redimensionado por arriba y por abajo, comoReiserFS.Otra alternativa sería dejar una cierta cantidad de espacio del disco sin asignar y cuandofuera necesario, expandir el volumen.

En Sistemas Grandes

Administrar un sistema con muchos discos es un trabajo que consume tiempo, y se haceparticularmente complejo si el sistema contiene discos de distintos tamaños. Equilibrar losrequerimientos de almacenamiento de distintos usuarios (a menudo conflictivos) puede seruna tarea muy laboriosa y compleja.Los grupos de usuarios (llamémosles por ejemplo administración, desarrollo, etc.) puedentener sus volúmenes lógicos y éstos pueden crecer lo que sea necesario, y el administradorpuede realizar las operaciones oportunas sobre dichos volúmenes.

Cuando un nuevo disco se añade al sistema, no es necesario mover los datos de los usuarios.Simplemente se añade el nuevo disco al grupo lógico correspondiente y se expanden los volúmeneslógicos todo lo que se considere adecuado. También se pueden migrar los datos de discos antiguosa otros nuevos, de forma totalmente transparente al usuario.

Adicionalmente, existe soporte para sistemas de archivos adicionales ajenos, para facilitar elintercambio de archivos con otros sistemas operativos. Estos sistemas de archivos ajenos funcio-nan exactamente como los propios, excepto que pueden carecer de características usuales UNIX, o tienen curiosas limitaciones, u otros inconvenientes.

Fat16/Fat32: Sistemas Dos/Windows 95, Windows 98, este sistema de archivos produceuna gran fragmentación del disco.NTFS: sistema de archivos implementado para los sistemas operativos Windows Xp/2000/2003server, Vista, 7 y 8.

1.7. Sistemas de Archivos y JerarquíaUn sistema Linux reside bajo un árbol jerárquico de directorios bajo el estandar FHS.FHS detalla los nombres, ubicaciones, contenidos y permisos de los archivos y directorios.Todo en un sistema Linux es un archivo, tanto el Software como el Hardware. Desde el ratón,

pasando por la impresora, el reproductor de DVD, el monitor, un directorio, un subdirectorio yun archivo de texto.

Es la forma en como se organiza la información en el computador.Existen diversos sistemas de archivos: fat16, fat32, ntfs, ext2, ext3, ext4, xfs, jfs, ReiserFS.En Unix/Linux se utiliza una estructura jerárquica tipo árbol.

Page 23: Comandos Basicos Linux

Capítulo 1. Introducción 16

Se compone de:Directorios Sirve para almacenar archivos y directorios, en

Windows se le conoce como Carpetas.Archivos Almacena datos o instrucciones (programa).

El nombre de archivos y directorios es sensible a mayúscula, no es lo mismo hola.txt queHola.txtCada directorio puede almacenar subdirectorios y archivos.Cada directorio y archivo debe tener un directorio padre.

1.7.1. Organización de sistema de archivos

Figura 1.6: Árbol de Directorios

El directorio principal “/” se denomina directorio raíz./home/linux/Desktop/unidad1.pdf indica que unidad1.pdf se encuentra dentro del di-

rectorio Desktop, el que se encuentra a su vez dentro de linux ...

El Directorio Raíz /

El contenido de este directorio debe ser el adecuado para reiniciar, restaurar, recuperar y/oreparar el sistema, es decir, debe proporcionar métodos, herramientas y utilidades necesariaspara cumplir estas especificaciones.

Además, es deseable que se mantenga los más razonablemente pequeño como sea posible porcuestión de funcionamiento y de seguridad.

Por último, este debe que ser el único directorio en el nivel superior del árbol jerárquico dearchivos y, tiene que ser imposible moverse más allá del mismo.

Ejemplo 1.2 $ ls -F / 2

Page 24: Comandos Basicos Linux

Capítulo 1. Introducción 17

Directorio /bin

En este directorio se ubica el código binario o compilado de los programas y comandos quepueden utilizar todos los usuarios del sistema.

La denominación es clara, bin de BINARY (binario en castellano).No debe haber subdirectorios en /bin.

Directorio /boot

Este directorio contiene todo lo necesario para que funcione el proceso de arranque del sistema./boot almacena los datos que se utilizan antes de que el kernel comience a ejecutar programas

en modo usuario.El núcleo del sistema operativo (normalmente se guarda en el disco duro como un archivo

imagen llamado vmlinuz-versión_núcleo) se debe situar en este directorio o, en el directorio raíz.

Directorio /dev

Este directorio almacena las definiciones de todos los dispositivos. Como se ha mencionado,cada dispositivo tiene asociado un archivo especial.

Directorio /etc

El directorio /etc contiene archivos necesarios para configuración del sistema.Archivos que son propios del computador y que se utilizan para controlar el funcionamiento

diversos programas.Deben ser archivos estáticos y nunca pueden ser archivos binarios y/o ejecutables.

Directorio /home

Directorio que contiene los subdirectorios que son directorios origen para cada uno de losusuarios del sistema.

Cada subdirectorio /home/user de cada usuario proporciona el lugar para almacenar susarchivos, así como los archivos de configuración propios de cada uno.

El administrador tiene su propio directorio home, que es /root.

Page 25: Comandos Basicos Linux

Capítulo 1. Introducción 18

Directorio /lib

El directorio /lib contiene librerías compartidas (similar a las dll’s para los usuarios de Win-dows) necesarias para arrancar el sistema y para los archivos ejecutables contenidos en, porejemplo, /bin.

Normalmente las librerías son archivos binarios escritos en lenguaje C.También contiene módulos del kernel esenciales que permiten el funcionamiento de muchos

elementos Hardware.

El resto de directorios

/media : Este directorio contiene los subdirectorios que se utilizan como puntos del montajepara los medios de almacenamiento, tales como disquetes, CD-ROM y memorias USB.

/mnt : Este directorio contiene sistemas de archivos externos que hayan sido montados. Lasentidades que aparecen dentro de /mnt representan recursos externos a los que se puede accedera través de este directorio.

/opt : En este directorio (/opt de options, u opciones en castellano) se suelen instalar com-plementos o add-ons de los programas. Las aplicaciones crean un subdirectorio dentro de /optdenominado con el mismo nombre del programa.

/root : Este directorio es el directorio /home del administrador del sistema (root).

/sbin : Los programas y comandos que se utilizan para la administración del sistema se alma-cenan en /sbin, /usr/sbin y /usr/local/sbin. /sbin únicamente contiene los ejecutables esencialespara el arranque, recuperación y reparación del sistema.

/srv : Contiene los archivos de datos específicos para cada servicio instalado en el sistema.

/tmp : En este directorio se guardan los archivos temporales.

/usr

Es la segunda sección más grande o estructura jerár quica (después del directorio raíz) delsistema de archivos.

Este directorio está pensado para almacenar datos que se puedan compartir con otros hosts.Estos datos además deben ser inalterables, es decir, sólo de lectura.Normalmente, este directorio tiene su partición propia.Comúnmente, se almacena aquí el software instalado en el sistema.

Page 26: Comandos Basicos Linux

Capítulo 1. Introducción 19

Directorio /var

Este directorio va ha contener archivos de datos variables y temporales, así como archivosspool (archivos almacenados en fila que esperan a ejecutarse, como por ejemplo colas de impre-sión).

Todos los log del sistema y los generados por los servicios instalados, se ubican dentro de laestructura jerárquica de /var. Esto quiere decir que el tamaño global de este directorio va hacrecer constantemente.

La utilidad de /var radica en poder detectar problemas para prevenirlos y solucionarlos.Es aconsejable montar en una nueva partición este directorio. Si no se pudiera, es preferible

ubicar /var fuera de la partición raíz y de la partición /usr.

Directorio /lost+found. Perdidos y encontrados

Las herramientas y utilidades para restaurar y/o reparar el sistema de archivos almacenanlos datos en este directorio.

Es un espacio temporal donde se guardan los datos que se recuperan después de una caídadel sistema.

Fijémonos que, normalmente en cada partición que creemos existirá un /lost+found en elnivel superior.

Este directorio existe sólo en distribuciones que tengan como sistemas de archivos ext2, ext3o ext4.

Directorio /proc

/proc es un sistema de archivos virtual. Se genera y actualiza dinámicamente, es decir, nose mantiene en el disco duro, se mantiene el la memoria RAM. Es el sistema quien lo crea y lodestruye.

Este directorio contiene información sobre los procesos, el núcleo e información relativa alsistema.

1.8. Sistema X-Window

El sistema X-Window, (X-window o simplemente las X) se trata de la herramienta de softwarepara el desarrollo de interfaces gráficas de usuario (GUI’s) para estaciones de trabajo. Una GUIes en pocas palabras una interfaz usuario / computadora que se ejecuta en modo gráfico.

X-window para linux y para todos los sistemas más basados es UNIX lo que MS Windows espara los sistemas basados en DOS. Con una gran diferencia, que X-Window es un estándar paralos sistemas de ventanas basados en UNIX. Esta estandarización supone que cualquier interfazGUI puede ser ejecutada en cualquier computadora e incluso en varias a la vez.

Page 27: Comandos Basicos Linux

Capítulo 1. Introducción 20

Figura 1.7: Procesos gráficos en Linux y arquitectura cliente sevidor en una máquina

1.8.1. Arquitectura Cliente / Servidor

X-Window permite utilizar un ambiente gráfico bajo Unix (Linux), a diferencia de la clásicaTerminal ASCII que es conocida para todos los sistemas operativos *nix.

El detalle técnico más importante que hay que reconocer de X es que utiliza una metodologíacliente-servidor, esto es, existe un servidor X que es el encargado de generar y procesar gráficas,requisiciones, seguridad,etc; y un cliente X que solicita y recibe todas las requisiciones del servidorX.

Esto permite que cualquier Cliente X sea capaz de comunicarse a través de Red (TCP/IP)con un servidor X , no implica que este proceso no pueda ser llevado acabo en el mismo “Host”(computadora física), inclusive casi todos los ambientes gráficos son llevados acabos en un mismo“Host”, esto es, el Cliente X y Servidor X operan en la misma computadora física, pero es de extremaimportancia conocer que existe una división Cliente | Servidor aunque se este trabajando en elmismo “Host”.

La comunicación entre el cliente y el servidor sistema X-Window se realizan mediante eldenominado protocolo X (X protocol). Este protocolo X permite definir el número exacto debytes necesarios para definir una ventana. El problema es que la programación con este lenguajees extremadamente complicada y laboriosa.

Page 28: Comandos Basicos Linux

Capítulo 1. Introducción 21

Figura 1.8: Procesos gráficos y arquitectura cliente / servidor en una red

1.8.2. XFree86

La versión que Linux utiliza del sistema X Window es XFree86. Esta es una versión gratuitade la distribución oficial de UNIX que funciona en procesadores compatibles con la tecnologíax86 como (AMD,Ciryx o Intel).

Referente al hardware necesario para poder ejecutar el X-window. XFree86 soporta la mayoríade tarjetas que hay en el mercado. Las principales causas que dificultan el desarrollo de XFree86para algunas tarjetas es que como se distribuye el código fuente, algunas empresas no estándispuestas a mostrar el funcionamiento de su tarjeta. Otra más común es que suele pasar untiempo desde que sale un producto hasta que esta listo el desarrollo correspondiente. Ya queel código cuesta de escribir y de comprobar. En cuanto a memoria y procesador XFree86 correen un simple intel 386 con al menos 16 MB de ram. Esta memoria puede ser 8 MB mínimo deprincipal y 8 MB de memoria virtual o de intercambio (SWAP).

1.8.3. Arranque del sistema X-Window

El inicio del sistema X window, implica que se ha de cargar tanto el servidor X como algunosclientes para poder empezar a utilizar el entorno gráfico. Hay un par de maneras principalmentede iniciar el X-window. Quizá la más usada sea mediante el guión de inicio llamado starx.

Que se ejecuta en cualquiera de las consolas en modo texto. Este programa no es más que unguión de comandos que ejecuta el Servidor X, inicializa algunos recursos para que serán utilizadospor los clientes y también conecta al servidor algún cliente.

Page 29: Comandos Basicos Linux

Capítulo 1. Introducción 22

1.8.4. Gestores de ventanas

El gestor de ventanas es uno de las aplicaciones X más importantes, ya que se trata delprograma que da el aspecto a todo el entorno gráfico y que controla todas las operaciones relativasal dibujo de ventanas. En linux un gestor de ventanas es un cliente más que está conectado alservidor X. Esto implica que el sistema en si, no esta ligado a ningún gestor de ventanas enparticular. Con lo que se consigue una gran personalización del entorno gráfico. Esto tiene elinconveniente de que cambia totalmente la manera de de interpretar las pulsaciones del ratón odel teclado.

Fvwm es una de las familias de gestores de ventanas más usadas dentro de entornos Linux.Fvwm(Fine Virtual Window Manager) y todos sus derivados. son a su vez derivados del twm(tabwindow manager), que es el gestor que se distribuye con las versiones oficiales de X-window ypor tanto con XFree86.

1.8.5. Gestores de escritorio

Un gran inconveniente de los gestores de ventanas es que las aplicaciones no tienen formade comunicarse entre ellas ni de controlar el comportamiento del gestor de ventanas. Esto sesubsana al pasar del gestor de ventanas al gestor de escritorio (Desktop manager). Esteultimo tiene las siguientes ventajas con respecto al gestor de ventanas:

Provee de un aspecto uniforme a todas las aplicaciones gráficas, dotándolas de un interfazde uso común.Podemos marcar un objeto con el ratón y arrastrarlo hasta cualquier aplicación y ver sucontenido allí.Permite el acceso transparente a cualquier recurso, ya este en el disco o en otro lugar de lared.Distingue entre aplicaciones abiertas y enlaces a recursos.Ofrece un interfaz gráfico para configurar y personalizar todos los aspectos del entornográfico.

Desktop Manager’s

Figura 1.9: Gnome Logo

GNOMESistema Gráfico.Escritorio del proyecto GNU (GNu Object Model Enviroment).

Page 30: Comandos Basicos Linux

Capítulo 1. Introducción 23

Se compone de Paneles + Escritorio.Cada panel puede contener applets (Lanzadores o aplicaciones).Basado en GTK.Política de liberación cada 6 meses aprox.Existe la Fundación Gnome (Ambiente totalmente libre).Desarrolladores Gnome en Chile (Concepción).

Figura 1.10: Gnome Desktop

GNOME3

Figura 1.11: Gnome 3 Desktop

KDESistema Gráfico.

Page 31: Comandos Basicos Linux

Capítulo 1. Introducción 24

Figura 1.12: KDE Logo

Escritorio muy completo.Basado en QT, Qt Project.

• restricciones en la licencia de desarrollo.

Figura 1.13: KDE Desktop

UnitySistema Gráfico.Lanzado en Ubuntu 10.10.Licencia GPL v3, LGPL v3.Programado en C++ y Vala.Desarrollado por Canonical.

Page 32: Comandos Basicos Linux

Capítulo 1. Introducción 25

Figura 1.14: Unity Logo

Figura 1.15: Unity Desktop

Page 33: Comandos Basicos Linux

Capítulo 2

Interprete de Comandos

Un intérprete de órdenes o de comandos, también conocido como shell o terminal, es unprograma informático que tiene la capacidad de traducir las órdenes que introducen los usuarios,mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y alconjunto de herramientas que forman el sistema operativo.1 Las órdenes se introducen siguiendola sintaxis incorporada por dicho intérprete, dentro del entorno proporcionado por el emulador determinal, mediante un inductor que espera a que le sean introducidos los comandos o instruccionesPROMPT > nombrecomandoargumento/s/ruta/hacia/el/o/los/archivos

2.1. Bash

Este shell es desarrollado por el proyecto GNU por lo que es liberado bajo la licencia GPL. Apesar de existir diferencias entre cada uno de los shell, la mayoría de los comandos funcionaransin problemas en otro shell (siempre y cuando sean de Unix/Linux).

Cuando se ejecuta una consola aparece un símbolo denominado prompt el que indica que lashell esta preparada para recibir ordenes $.

Dependiendo del shell utilizado y del usuario puede aparecer un prompt diferente por defecto,en especial si se trata de un usuario ($) o superusuario (#). Se debe tener presente que el promptpuede ser modificado por el usuario.

$ Prompt de sh, bash usuario% Prompt de csh1 usuario# Prompt de Superusuario (root)

26

Page 34: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 27

2.2. Comandos Básicos UNIXShortcuts DescripciónCTRL + l Limpia la pantalla, tiene el mismo efecto del comando clearCTRL + d Finaliza el shell, tiene el mismo efecto del comando exitflecha arriba Retrocede en el historial de comandosflecha abajo Avanza en el historial de comandosCTRL + r Entra al modo búsqueda historial, en este modo se autocompletan

las ordenes que se encuentren en elhistorial de comandos

SHIFT + RePag Retrocede en una página la salida del shell, cumpla la mismafunción que la barra Scroll que tienen algunos terminales

SHIFT + AvPag Avanza en una página la salida del shellTAB Autocompletar comandos

2.2.1. Listar archivos (ls)

El comando “ls” lista el contenido de un directorio imprimiéndolo en pantalla.Como se podrá apreciar en los comandos siguientes se puede modificar la funcionalidad de

cada uno de ellos con las opciones que se indican en la instrucción pero precedida del signo “-”(conocidos como parámetros).

Opción Descripciónl Escribe (en formato de una sola columna) los permisos del archivo, el

número de enlaces que tiene, el nombre delpropietario, el del grupo al que pertenece, el tamaño (en bytes), unamarca de tiempo, y el nombre del archivo. Deforma predeterminada, la marca de tiempo que se muestra es la de laúltima modificación

a Incluye en el listado archivos ocultos (cuyos nombres comienzan con “.”)h Human-readable, indica una letra al lado del tamaño, pudiendo ser K:

Kilobytes, M:Megabytes, G:GigabytesF Permite diferenciar los tipos archivos de los directorios, donde los direc-

torios aparecen con un carácter “/” al finaldel nombre, los archivos ejecutables con un “*” y los enlaces simbólicoscon una “@”.

R Realiza un listado recursivo dentro de cada directorio

Ejemplo 2.1$ ls -lhR 2

Cuando se utiliza el parámetro “l” el formato de salida es el siguiente:

Permisos enlaces dueño grupo tamaño fecha nombre

Page 35: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 28

Donde:Ítem DescripciónPermisos El Primer carácter indica el tipo de archivo el que puede ser “-”(archivo),

“d”(directorio) o “l” (enlace simbólico). Las nueveletras siguientes se dividen en tres conjunto de tres caracteres cada uno(rwx donde r = lectura, w = escritura, x = ejecución,- = sin permiso), donde el primer conjunto representa los permisos parael propietario, el segundo conjunto representa lospermisos para el grupo al que pertenece el archivo y el tercer gruporepresenta los permisos para el resto de los usuarios delsistema (“otros”).

enlaces Numero de enlacesdueño Nombre del usuario propietario del archivogrupo Grupo al que pertenece el archivotamaño Tamaño del archivo en bytesfecha Fecha y hora de creación del archivo o de la última modificación

2.2.2. Imprimir directorio actual (pwd)

El comando “pwd” (print work directory) imprime en pantalla el directorio actual de trabajo.

2.2.3. Cambio de directorio (cd)

El comando “cd” cambia el directorio de trabajo al directorio indicado como parámetro, si elparámetro se omite lleva al Inicio (HOME) de la cuenta de usuario. Para volver a un directorioanterior debe usarse el parámetro “..”.

Ejemplo 2.2$ cd ..$ cd /etc/X11 2

2.2.4. Crear Directorios (mkdir)

El comando “mkdir” crea directorios con el nombre ingresado por parámetro.

Ejemplo 2.3$ mkdir micarpeta 2

Para crear toda un ruta completa de directorios debe utilizarse la opción p.

Ejemplo 2.4$ mkdir -p linux/carpeta/subcarpeta 2

Page 36: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 29

2.2.5. Borrar directorios (rmdir)

El comando “rmdir” borra directorios vacíos, el directorio a borrar es ingresado por pará-metro.

Ejemplo 2.5$ rmdir subcarpeta 2

2.2.6. Crear archivos (touch)

El comando “touch” crea archivos vacíos.

Ejemplo 2.6$ touch arch1 arch2 2

2.2.7. Copiar archivos o directorios (cp)

El comando “cp” copia archivos (u opcionalmente, directorios). Uno puede bien copiar unfichero a un destino dado, o copiar arbitrariamente varios archivos a un directorio destino.

Si el último argumento se refiere a un directorio existente, cp copia cada fichero fuente a esedirectorio (manteniendo el mismo nombre). En otro caso, si sólo se dan dos archivos, copia elprimero sobre el segundo.

Ejemplo 2.7$ cp arch1 archivo1 # copia el “arch1” en el mismo directorio con otro nombre$ cp arch1 linux/carpeta #copia “arch1” desde el directorio actual a la carpeta indicada. 2

Para lograr copiar un directorio completo se debe usar la opción “r” (recursivo):

Ejemplo 2.8$ cp -r carpeta/ /home/usuario/Descargas 2

2.2.8. Mover archivos o directorios (mv)

El comando “mv” mueve o renombra archivos o directorios. Al mover directorios, los muevecon todo su contenido.

Ejemplo 2.9$ mv arch1 archivo1 # renombra el “arch1”$ mv arch1 linux/carpeta #mueve “arch1” desde el directorio actual a la carpeta indicada.$ mv -i carpeta/ /home/usuario/Descargas #mueve un directorio y su contenido 2

Page 37: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 30

2.2.9. Renombrar varios archivos a la vez (mmv)

Es un comando que combina los comandos rename y mv, con otros elementos básicos debash. Puede copiar/mover/agregar/enlazar, nada que no se pueda hacer con los comandos desiempre. Pero lo que hace a mmv especial es la sencillez en su uso al enfocarse en las expresionesregulares (requiere instalación desde repositorios).

Requiere ser instalado:# apt-get install mmv

Ejemplo 2.10Funciona a base de comodines y el uso de patrones. Pongamos un ejemplo. Imagina que tienesestos archivos:

foo1.pngfoo2.pngfoo3.png

Si ejecutamos este comando:$ mmv “foo*.png” “bar#1.png”Obtenemos los archivos:bar1.pngbar2.pngbar3.png

#1 en el destino hace referencia a todo lo que incluya el comodín (*) en el origen, en estecaso 1, 2 y 3. 2

Ejemplo 2.11Tenemos los archivos:

abc_123.txtdef_456.txtghi_789.txt

Si ejecutamos:$ mmv “*_*.txt” “#2_#1.txt”Obtendríamos:123_abc.txt456_def.txt789_ghi.txt

Es decir hemos intercambiado el contenido del primer comodín (*) por el segundo (*) ya queen el destino #1 hace referencia al primero y #2 al segundo. Cuesta un poco al principio deseguir, pero haciendo algunas pruebas se va entendiendo.

Su utilidad, pues por ejemplo para renombrar conjuntos de fotografías cuando tenemos varias.Si tenemos varias fotos del tipo: dcim_01.jpg, dcim_02.jpg, etc y las quisiéramos organizar

por fechas podríamos hacer:$ > mmv “dcim_*.jpg” “2006-09-15.#1.jpg” 2

Page 38: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 31

Ejemplo 2.12 Si posees por ejemplo muchos comic y los tienes comprimidos en .rar y deseaspararlos todos a .cbr para poder visualizarlos en un lector de comic, el proceso es el siguiente:

$ mmv ”*.rar” ”#1.cbr”Este comando mantiene lo que aparezca con asterisco (*) tal cual este escrito y reemplaza el

resto, el #1 pone en la posición donde se indica el texto original que no desea cambiar y así solose cambia la extensión.

2

2.2.10. Eliminar archivos o directorios (rm)

El comando “rm” elimina un archivo especificado por parámetro. Este comando debe serutilizado con cuidado ya que no hay forma de recuperar los archivos borrados. Para borrardirectorios con todos los archivos o directorios que contenga (utilizar con mucho cuidado) seutiliza el parámetro “r” (recursivo).

Ejemplo 2.13$ rm arch1$ rm -r carpeta/ 2

2.2.11. Caracteres de globalización (comodines)

Los caracteres de globalización son caracteres que Unix utiliza para que el usuario puedaseñalar un grupo de archivos que cumplan con un cierto patrón, dicho patrón es reemplazadoautomáticamente por los nombres de archivos existentes que lo cumplan antes de llamar alcomando. Los caracteres de globalización (Wilcards o Metacaracteres) más simples son:

1. * : Se reemplaza por cualquier secuencia de caracteres.2. ? : Se reemplaza por un carácter cualquiera.

Estos caracteres pueden ser utilizados con cualquier comando que interactúe con archivos (cp,ls, rm ,etc.).

Ejemplo 2.14$ lsCarga.png conexion.png creada.png pgadmin31.png$ ls *a.pngCarga.png creada.png$ ls *conexion.png creada.png$ ls cr?ada.pngcreada.png$ ls cr??d?.pngcreada.png 2

Page 39: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 32

2.2.12. Ayuda (man, apropos)

El comando “man” nos permite acceder a la ayuda y documentación (manuales) de todoslos comandos. De este modo cuando es necesario aprender más sobre el uso de un comando osimplemente saber para qué sirve se puede ejecutar el comando man ingresando como parámetroel nombre del comando. Se puede navegar por la documentación avanzando de una linea a la vezpresionando la tecla “enter” o de una pagina a la vez presionando la barra de espacio. Para salirbasta presionar la tecla “q”.

Además existe otra herramienta “apropos” la que nos entrega información de los tópicos (ocomandos) relacionados a un comando o palabra clave ingresada por parámetro.

Ejemplo 2.15 Uso de man$ man ls #Retorna el manual del comando ls 2

Ejemplo 2.16 Uso de apropos$ apropos mkdirmkdir (1) - make directoriesmkdir (2) - create a directorymkdirat (2) - create a directory relative to a directory file descriptor 2

2.2.13. Lectura de archivos

En Unix la mayoría de los archivos contienen texto plano, es por ello que existen una infinidadde herramientas para ver archivos (leerlos sin modificarlos) las que son llamadas con el archivopor parámetro.

Comando Descripcióncat Concatena un archivo en pantalla (lo imprime en pantalla), desde su inicio

hasta el final.more Muestra el archivo por ventanas, un vez dentro de more en el modo de

visualización, es posible avanzar por páginaspresionando la barra de espacio, una linea a la vez con la tecla enter, volveruna página con la tecla B, buscar textointroduciendo la palabra a buscar después de un slash (/texto_abuscar), yse sale del programa con la tecla Q.

less Al igual que more ofrece la misma funcionalidad, con unos ciertos cambios,como que por ejemplo se puede moverpor el texto por medio de las flechas, el resto de las teclas funcionan exac-tamente igual que en more.

head Muestra el encabezado de un archivo, por defecto muestra las primeras 10líneas.

tail Muestra la cola de un archivo (el final), por defecto muestra las ultimas 10lineas.

Page 40: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 33

2.2.14. ln (enlace simbólico)

Sirve para crear un enlace(link) simbólico, siendo su idea similar a un acceso directo. Permiteapuntar a un archivo como a un directorio con un nombre simbólico.

Ejemplo 2.17$ ln -s /etc/ hola$ ls -lhola -> /etc/$ ln -s /usr/bin/gnome-terminal$ ls -lgnome-terminal -> /usr/bin/gnome-terminal 2

2.2.15. Cambiar permisos (chmod)

Como se explico en el punto anterior todo archivo o directorio posee permisos, estos permisospueden ser cambiados por medio del comando chmod. Existen varias formas de asignar permisos,nos centraremos en los permisos según su valor numérico los que serán entregados como parámetroa chmod, de este modo los valore numéricos serían:

Tipo de Permiso Código OctalSin Permiso 0Permiso de ejecución (x) 1Permiso de escritura (w) 2Permiso de lectura (r) 4

De este modo al asignar los permisos se suman los valores numéricos para los diferentes permisosy se asigna la suma a cada grupo. Por ejemplo si se quiere dar los permisos de Lectura, Escrituray Ejecución al usuario, Lectura y Ejecución al grupo y Lectura al resto de los usuarios al archivoarch1.pdf las sumas y el permiso final seria:

Ejemplo 2.18

Propietario Grupo OtrosLectura = 4 Lectura = 4 Lectura = 4Escritura = 2 Escritura = 0 Escritura = 0Ejecución = 1 Ejecución = 1 Ejecución = 0Suma = 7 Suma = 5 Suma = 4

La asignación seria:$ chmod 754 arch1.pdf 2

Page 41: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 34

2.2.16. Cambiar permisos sin código octal (chmod)

Vamos a utilizar unas opciones según nuestras necesidades, y estas serán “u” para el usuariodueño, “g” para el grupo dueño, “o” para el resto de los usuarios, y “a” para todos los usuarios,incluyendo usuarios de sistema, usuario y grupo dueños. Sabiendo esto estamos en condicionesde entender esta forma de usar chmod, que seria así:

$ chmod [quien][+/-][permiso] [archivo o carpeta]donde en [quien] es alguno de los parámetros anteriormente explicados (u,g,o,a), [+/-] es para

asignar o quitar el permiso que elijamos. En [permiso] podremos colocar: lectura (r), ejecución(x), escritura (w).

Ejemplo 2.19# chmod a+x archivo

aquí le hemos asignado permisos de ejecución para todos los usuarios en el archivo de pruebaque utilizamos. Además como en el método anterior, la opción −R sigue disponible en caso quedeseemos hacerlo recursivamente para una carpeta.

$ chmod -R a+rwx carpeta/aquí le asignamos, en forma recursiva, a todos los usuarios permisos de lectura, escritura y

ejecución sobre el fichero “carpeta”. 2

2.3. Comandos Avanzados

2.3.1. alias

Sirve de bastante ya permite ejecutar una instrucción con un nombre o alias, la forma parahacerlo es alias comandoalias =′ comandooriginal′, por ejemplo se puede utilizar un alias paralistar en formato largo (ls− l)

Ejemplo 2.20$ alias ls=’ls -lh’$ alias rm=’rm -i’$ alias borrar=’rm -rf’$ alias instalar=’sudo apt-get -y install’ 2

Al terminar la sesión se pierden todos los alias, por lo que para no tener que ejecutarlos seincluyen en la configuración personal en el archivo .bashrc

2.3.2. cat: Manejo de archivos

Mostrar contenido de un archivo:

El comando cat por si solo muestra todo el contenido de un archivo en terminal.$ cat nombreArchivo

Page 42: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 35

Concatenar archivos:

El comando cat sirve para concatenar varios archivos para posteriormente desplegarlos enpantalla. Admite como argumentos la lista de ficheros que hay que enlazar. Su sintaxis es lasiguiente:

$ cat -opciones ficherosOpción Descripción-n Numera las líneas mostradas (Desde 1)-b Numera las líneas mostradas, pero no se numeran las líneas vacías (en blanco)-s Suprime las múltiples líneas vacías contiguas a una sola línea en blanco

La instrucción cat admite como argumentos una lista de ficheros que hay que enlazar. Estosse encadenarán en el mismo orden en el cual fueron especificados.

Ejemplo 2.21 Suponga que posee los siguientes archivos:Archivo A cuyo contenido es “Esta es la primera línea”Archivo B cuyo contenido es “Esta es la segunda línea”

Si se quisiera concatenar los archivos, sería de la siguiente manera:$ cat A BObteniendo el siguiente resultado:

Esta es la primera líneaEsta es la segunda línea

2

Si sólo se llegase a especificar un sólo archivo, el resultado del comando sería el contenido delarchivo mismo.

Ejemplo 2.22 $ cat ADesplegando como resultado:Esta es la primera línea

2

Si no se especifica ningún argumento, cat tomará el contenido desde el teclado, desplegandola información que el usuario ingrese, hasta que este presione Ctrl D.

Unir dos vídeos en unos solo:

Para este proceso es necesario tener instalada la librería “mencoder”# apt-get -y install mencoderLuego desde la terminal hacer lo siguiente:

$ cat parte1.avi parte2.avi > final.aviAhora si en el vídeo final se desfasa el audio debemos hacer:$ mencoder -forceidx -oac copy -ovc copy final.avi -o final_con_sonido_bueno.aviNOTA: la ultima linea se escribe después de haber unido el video, se utiliza el video resultante

para sincronizar el audio.

Page 43: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 36

O también podemos optar, quizás más fiable, por dejar que lo haga todo el mencoder:$ mencoder -oac copy -ovc copy -idx -o final.avi parte1.avi parte2.avi parteN.avi ...

2.3.3. date

Muestra fecha y hora actual, puede utilizarse cualquier formato tomando las siguientes op-ciones.

Opción Descripciónu Usa horario universal GMT+formato Indica que se da nuevo formato%a Muestra el día, formato de 3 letras%h Muestra el año, en formato de últimos 2 dígitos

Ejemplo 2.23$ date$ date -u$ date +%a$ date +%A$ date + ’%a%d%h’$ date +’%a–%d–%h’ 2

2.3.4. du (disk usage)

Sirve para entregar el tamaño de cada uno de los archivos y subdirectorios dentro del directorioindicado algunas de sus opciones son:

Opción Descripcións Muestra el resumen del tamaño (tamaño total)h Muestra la información HumanReadable

Ejemplo 2.24$ du$ du -s$ du -h$ du-sh 2

2.3.5. df

Obtiene el uso de disco para cada una de las particiones del sistema, indicando la cantidadutilizada y la disponible.

Opción DescripciónT Muestra el tipo de particiónh Muestra la información HumanReadable

Ejemplo 2.25$df -hT 2

Page 44: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 37

2.3.6. sleep

Comando que duerme la shell por un tiempo determinado segundos.

Ejemplo 2.26$ sleep 20 2

2.3.7. time

Muestra el tiempo usado por un determinado programa, indicando el tiempo real, de usuarioy de sistema.

Ejemplo 2.27$ time ls -l$ time sleep 3 2

2.3.8. host

Comando para determinar la dirección ip asociada a un nombre de dominio.

Ejemplo 2.28$ host www.google.comwww.google.com is an alias for www.l.google.com.www.l.google.com has address 74.125.229.176www.l.google.com has address 74.125.229.177www.l.google.com has address 74.125.229.178www.l.google.com has address 74.125.229.179www.l.google.com has address 74.125.229.180 2

2.3.9. ip

Es un comando que permite ver la MAC de los dispositivos, su dirección IP asociada, entreotros.

Ejemplo 2.29 $ ip addr$ ip monitor$ ip link$ ip addrlabel 2

2.3.10. uname

Comando para determinar información del sistema, indicando Sistema, Kernel, fecha de com-pilación del kernel (con la opción -a).

Ejemplo 2.30$ uname -r3.0.0-13-generic-pae 2

Page 45: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 38

2.3.11. which

Muestra la ruta de un ejecutable.

Ejemplo 2.31 $ which ls/bin/ls$ which nautilus/usr/bin/nautilus$ which libreoffice/usr/bin/libreoffice 2

2.3.12. whereis

Localiza el comando, manual y código fuente (si estuviese presente).

Ejemplo 2.32$ whereis lsls: /bin/ls /usr/share/man/man1/ls.1.gz$ whereis nautilusnautilus: /usr/bin/nautilus /usr/lib/nautilus /usr/share/nautilus /usr/share/man/man1/nautilus.1.gz2

2.3.13. cal

Muestra un calendario.Opción Descripciónm La semana comienza en lunes3 Muestra mes anterior, actual y siguiente

Ejemplo 2.33$ cal$ cal -m enero$ cal -m enero 2020$ cal -3 2

2.3.14. split

Comando que permite dividir un archivo en varios archivos de tamaños predeterminados.

Ejemplo 2.34$ split -d -b 500k arch1.tar.gz arch1.tar.gz-salida

2

Opción Descripciónb bytes Indica el tamaño de salida de cada uno de los archivos en bytes, es posible utilizar sufijos k (Kb), m(Mb)d A cada uno de los archivos de salida le agrega un sufijo numerico

Page 46: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 39

2.3.15. sort

Muestra el contenido de un archivo ordenado.Opción Descripciónr Ordena de forma inversau Muestra una ocurrencia si es que se repitef Ignora diferencias entre Mayúsculas y minúsculas

Ejemplo 2.35$ short nombres$ short -u nombres$ short -uf nombres 2

2.3.16. wc (word counter)

Comando para contar palabras en un archivo l:lineas, w:palabras, c: bytesOpción Descripciónl Muestra la cantidad de lineasw Muestra la cantidad de palabrasc Muestra la cantidad de bytes

Ejemplo 2.36$ wc nombres$ wc -l nombres$ wc -c nombres$ wc -w nombres 2

2.3.17. file

Indica el tipo de archivo en base a su número mágico

Ejemplo 2.37$ file linuxmint-201109-gnome-dvd-32bit.isolinuxmint-201109-gnome-dvd-32bit.iso: # ISO 9660 CD-ROM filesystem data ’Linux Mint Gno-me 32-bit ’(bootable)$ file menos1bit.pngmenos1bit.png: PNG image data, 1024 x 768, 8-bit/color RGB, non-interlaced 2

2.3.18. finger

Muestra información del usuario. (no por defecto con Ubuntu Gnu/Linux)

Ejemplo 2.38$ finger juaramir 2

Page 47: Comandos Basicos Linux

Capítulo 2. Interprete de Comandos 40

2.3.19. who

Comando que muestra quienes están conectados al sistema.

2.3.20. grep y egrep

La utilidad grep muestra en pantalla las ocurrencias de una expresión regular que se encuentradentro de un texto. egrep a su vez permite buscar más de una expresión regular. Algunos de lasopciones mas comunes para ambos son:

Opción Descripcióni Ignorar mayúsculasc Muestra solo la cantidad de lineas que contienen la expresión regularv Muestra solo las lineas que no contienen la expresión regularl Muestra el numero de linea y la linea en la que se encuentra la expresión regularn Muestra los nombres de archivos en los que se encontró la expresión regular

Ejemplo 2.39$ grep chile paises $ grep -i Chile paises $ grep Denis nombres $ grep -n Chile * 2

En egrep para indicar mas de una expresión se realiza de la siguiente forma:$ egrep “exp1|exp2|exp3” archivoEsto significa que se cumpla la exp1 o exp2 o exp3.

2.3.21. find

El comando find busca recursivamente dentro de un directorio archivos y directorios quecumplan los requisitos especificados. Posee una gran variedad de parámetros de búsqueda.

Se utiliza $find ruta opcionesOpción Descripciónuser Busca archivos pertenecientes al usuario “username”group Busca archivos pertenecientes al grupo groupperm ### Busca archivos con los permisos ###name Busca archivos con el nombre “name” o que cumplan la expresión regularprint Muestra en pantalla los resultadostype tipo Busca el tipo que puede ser d: solo directorios, f : solo archivos, l: solo enlaces simbólicos

Ejemplo 2.40$ find ∼/Descargas -name ’*.c’ 2

Page 48: Comandos Basicos Linux

Capítulo 3

Compresión y Empaquetado

3.1. Empaquetado .tarEl empaquetado es un proceso que solo se encarga de unificar un grupo de archivos, no

reduciendo su tamaño.

Ejemplo 3.1Empaquetar:$ tar cvf Fotos.tar /misFotos/2011/*Desempaquetar:$ tar xvf Fotos.tarListar contenido (sin desempaquetar):$ tar tvf Fotos.tar 2

3.2. CompresiónEs el proceso de reducir el tamaño de datos.

3.2.1. .gz (gzip)

gz solo comprime archivos, no directorios.

Ejemplo 3.2Comprimir:$ gzip -q archivo #El archivo lo comprime y lo renombra como “archivo.gz”Descomprimir$ gzip -d archivo.gz # El archivo lo descomprime y lo deja como “archivo” 2

3.3. CompresiónEs el proceso de reducir el tamaño de datos.

41

Page 49: Comandos Basicos Linux

Capítulo 3. Compresión y Empaquetado 42

3.3.1. .tar.gz - .tar.z - .tgz (tar con gzip)

Para suplir el problema de no compresión de directorios por parte de gz, se aplica tar.gz.

Ejemplo 3.3Empaquetar y comprimir:$ tar czvf Fotos.tar.gz /misFotos/2011/*Desempaquetar y descomprimir:$ tar xzvf Fotos.tar.gzListar contenido (sin desempaquetar):$ tar tzvf Fotos.tar.gz 2

3.3.2. .bz2 (bzip2)

bz2 solo comprime archivos, no directorios.

Ejemplo 3.4Comprimir:$ bzip2 archivo$ bunzip2 archivo(El archivo lo comprime y lo renombra como “archivo.bz2”)Descomprimir:$ bzip2 -d archivo.bz2$ bunzip2 archivo.bz2(El archivo lo descomprime y lo deja como “archivo”) 2

3.3.3. .tar.bz2 (tar con bzip2)

Ejemplo 3.5Comprimir:$ tar -c archivos | bzip2 > archivo.tar.bz2Descomprimir:$ bzip2 -dc archivo.tar.bz2 | tar -xv$ tar jvxf archivo.tar.bz2 #versiones recientes de tarListar contenido (sin desempaquetar):$ bzip2 -dc archivo.tar.bz2 | tar -tv 2

3.3.4. .zip (zip)

Ejemplo 3.6Comprimir:$ zip Fotos.zip /misFotos/2011Descomprimir:$ unzip Fotos.zip

Page 50: Comandos Basicos Linux

Capítulo 3. Compresión y Empaquetado 43

Listar contenido (sin descomprimir):$ unzip -v Fotos.zip 2

3.3.5. .lha (lha)

Ejemplo 3.7Comprimir:$ lha Fotos.lha /misFotos/2011Descomprimir:$ lha -x Fotos.lhaListar contenido (sin descomprimir):$ lha -v Fotos.lha$ lha -l Fotos.lha 2

3.3.6. .zoo (zoo)

Ejemplo 3.8Comprimir:$ zoo -a Fotos.zoo /misFotos/2011Descomprimir:$ zoo -x Fotos.zooListar contenido (sin descomprimir):$ zoo -v Fotos.zoo$ zoo -L Fotos.zoo 2

3.3.7. .rar (rar)

Ejemplo 3.9Comprimir:$ rar -a Fotos.rar /misFotos/2011Descomprimir:$ rar -x Fotos.rarListar contenido (sin descomprimir):$ rar -v Fotos.rar$ rar -l Fotos.rar 2

Page 51: Comandos Basicos Linux

Capítulo 4

Acceso remoto a terminal (SSH)

4.1. ¿Que es?

SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol)es un protocolo del nivel de aplicación que proporciona la funcionalidad necesaria para la trans-ferencia y manipulación de archivos sobre un flujo de datos fiable. Se utiliza comúnmente conSSH para proporcionar la seguridad a los datos, aunque permite ser usado con otros protocolosde seguridad. Por lo tanto, la seguridad no la provee directamente el protocolo SFTP, sino SSHo el protocolo que sea utilizado en su caso para este cometido.

En comparación de capacidades con el anterior protocolo SCP, que únicamente permite latransferencia de archivos (copia), el protocolo SFTP permite una serie de operaciones sobrearchivos remotos. SFTP intenta ser más independiente de la plataforma que SCP, por ejemplo,con el SCP encontramos la expansión de comodines especificados por el cliente hasta el servidor,mientras que el diseño SFTP evita este problema. Aunque SCP se aplica con más frecuencia enplataformas Unix, existen servidores SFTP en la mayoría de las plataformas.

El Secure Internet Live Conferencing (SILC) define el protocolo SFTP como su protocolode transferencia de archivos por omisión. En el SILC, los datos del protocolo SFTP no estánprotegidos con SSH pero el protocolo de paquetes seguros de SILC se utiliza para encapsular losdatos SFTP dentro de los paquetes de SILC para que se la llevara de igual a igual (peer to peer,P2P). Esto es posible ya que SFTP está diseñado para ser un protocolo independiente.

4.2. Instalación

Para poder utilizar SSH necesitaremos el paquete ‘openssh-server ’y ‘openssh-client’ para ellonos dirigimos al ‘Centro de Software de Ubuntu’ y hacemos una búsqueda puesto que los paquetesnecesarios están en los repositorios.

Los seleccionamos y presionamos en instalar.Cerramos el Gestor y para asegurarnos de que está el servicio corriendo, nos dirigímos a un

‘Terminal’y hacemos # /etc/init.d/ssh restart

44

Page 52: Comandos Basicos Linux

Capítulo 4. Acceso remoto a terminal (SSH) 45

4.3. Acceso RemotoFunciona en base a clave pública/privada.Para ejecutar el cliente ssh en el terminal(consola, o shell) se ha de hacer lo siguiente:$ ssh login@servidor

$ ssh -l login servidorUna vez iniciada la sesión la terminal local, trabajara como si fuera la del equipo al que

estas accediendo, por lo que cualquier comando ya visto anteriormente, puedes usarlos tal cual,el cambio esta cuando quieres pasar archivos desde el computador local al remoto o viceversa.

Con SSH, los datos viajan encriptados y es uno de los sistemas mas seguros y usados actual-mente.

4.4. Acceso Remoto: Envio/Recepción de ArchivosPara enviar/recibir existen diversos protocolos, al igual que la conexión remota ftp, sftp, scp

(en realidad trabajan sobre ssh).Por razones de seguridad se utiliza scp o sftp.La sintaxis en consola es la siguiente (es similar a cp).Copiar un archivo: $ scp login@servidor:nombre_archivoCopiar un directorio: $ scp -r login@servidor:directorioEnviar un archivo: $ scp archivo login@servidor:Enviar un directorio: $ scp -r directorio login@servidor:

4.5. Acceso Remoto Gráfico (SSH)Desde las ultimas versiones de Gnome, es posible acceder a entornos remotos, por medio de

SSH de forma gráfica, lo que permite visualizar gráficamente el contenido remoto, como si de undirectorio local se tratase.

Para realizar este proceso, solo debes hacer lo siguiente:1. Abrir una ventana de Nautilus.2. Seleccionar Archivo/Conectarse con el Servidor3. Ahora llenamos los campos de manera similar a la imagen siguiente:

4. Por seguridad es preferible no seleccionar “recordad esta contraseña”.5. Seleccionamos conectar y aparecerá en Nautilus, al lado izquierdo, en la sección “Red” una

carpeta.

Page 53: Comandos Basicos Linux

Capítulo 4. Acceso remoto a terminal (SSH) 46

Figura 4.1: llenado de campos para conectarse por SSH gráfico

Page 54: Comandos Basicos Linux

Capítulo 5

Administración Básica

5.1. Administración de UsuariosEl esquema de usuarios es Linux es:Grupos: Cada grupo tiene un nombre e identificador de grupo GIDUsuarios: Cada usuario tiene un nombre e identificador de usuario UID

El usuario principal es “root”, es quien administra el equipo (tiene todos los permisos).Ubuntu desactiva el usuario root por razones de seguridad.El usuario creado durante la instalación es el que puede ejecutar comandos con permisos de

root, mediante “sudo”.Cada Usuario pertenece a un grupo principal, y puede pertenecer a grupos secundariosPara determinar el grupo al que pertenece un usuario se hace: $ groups usuarioEl primer nombre es el grupo principal, del segundo en adelante son los grupos secundarios,

los grupos secundarios se utilizan para dar acceso al usuario.La información de los usuarios se almacena en el archivo /etc/passwd, el cual presenta la

información de la forma:nombre_cuenta:contraseña:UID:GID:GECOS:directorio:shell

Ejemplo 5.1 juaramir:x:1000:1000:Juaramir:/home/juaramir:/bin/bash 2

La contraseña se encuentra en el archivo /etc/shadow.

5.1.1. Comandos para Administrar Usuarios:

useradd : agrega un usuario.

Ejemplo 5.2 $ useradd [opciones] usuario 2

Las opciones son:• -u uid (le asigna el UID)• -g grupo (le asigna el grupo primario)• -G gr1,gr2,gr3 (le asigna los grupos secundarios)

47

Page 55: Comandos Basicos Linux

Capítulo 5. Administración Básica 48

• -m (crea el home del usuario)• -d /ruta/directorio (indica el home del usuario)• -c “COMENTARIO” (crea el GECOS)• -s /ruta/shell (indica la shell)

userdel : Elimina un usuario

Ejemplo 5.3 $ userdel [-r] usuario #elimina el directorio del usuario igual. 2

usermod : Modifica las opciones del usuario

Ejemplo 5.4 $ usermod [opciones] usuario 2

passwd usuario : Modifica o asigna una contraseña al usuario indicado.

Ejemplo 5.5 # passwd usuario 2

5.1.2. Otros Comandos:

chmod : Cambia los permisos de un/os archivo/schown : Cambia el propietario y grupo de un/os archivo/s

Ejemplo 5.6Para cambiar el propietario del archivo “texto.txt” a linuxuser y grupo administracion.$ chown linuxuser:administracion texto.txt 2

chgrp : Cambia el grupo de un/os archivo/S.Los comandos chown y chgrp solo lo puede utilizar el super usuario.

5.2. Administración de GruposLa información de los grupos se almacena en el archivo /etc/group, el cual presenta la

información de la forma:nombre_grupo:contraseña:GID:lista_usuarios

Ejemplo 5.7 adm:x:4:juaramir 2

5.2.1. Comandos para Administrar Grupos:

groupadd : agrega un grupo

Ejemplo 5.8 $ groupadd [-g gid] grupogid: numero del grupo [0 al 999] se reserva para el SISTEMA 2

gruops: Muestra los grupos a los que pertenece el usuariogroupdel : Borra un grupo

Page 56: Comandos Basicos Linux

Capítulo 5. Administración Básica 49

Ejemplo 5.9 $ groupdel grupo 2

groupmod: Modifica un grupo (nombre o id)

Ejemplo 5.10 $ groupmod [-g gid ] [-n nombre] gruponombre: nuevo nombre del grupo 2

5.3. Administración de Aplicaciones

Existen 2 formas de instalar:Desde código fuente: Es la forma universal, es idéntica para todas las distribuciones, secompone de 3 pasos:

• Configurar.• Compilar.• Instalar.

Desde un sistema de paquetes: Resuelve los problemas de la instalación de código fuente, ypara utilizarlo se debe tener instalado un gestor de paquetes, existen 2 formatos de paquetes

• RPM: Utilizado por REDHAT y derivados.• DEB: Utilizado por Debian y derivados.

5.3.1. Sistema de paquetes DEB:

Es el sistema de paquetes utilizado por Ubuntu para la instalación.Formato Interno:

• Esta compuesto por el programa compilado• Archivos de CONFIGURACION• Documentación• Script de procesos• preinst: Son ejecutados antes de que el paquete sea desempaquetado.• postint: Son ejecutados después del proceso de desempaquetado• prerm: son ejecutados antes de la eliminación de un paquete.• postrm: Son ejecutados después de la eliminación de un paquete.

El gestor de paquetes procesas los scripts y copia los archivos donde corresponde. En el casode los paquetes DEB, se utilizan los siguientes programas para procesar estos scripts:

dpkg : Gestor de paquetes, permite instalar/desisntalar/reinstalar/configurar/consultar pa-quetesapt: Interfaz del gestor de paquetes (resuelve dependencias)aptitude: Interfaz de alto nivel de aptdselect: Interfaz de dpkgsynaptic:Interfaz gráfica para gestión de paquetesCentro de Software de Ubuntu: interfaz mas amigable de las anteriores.

Page 57: Comandos Basicos Linux

Capítulo 5. Administración Básica 50

Todas las aplicaciones anteriores, a excepción de dpkg trabajan sobre un repositorio1.Los repositorios tienen un formato dependiendo de la distribución:El directorio que tiene las versiones de una distribución es distEl directorio que contiene todas las aplicaciones es "pool"http://archive.ubuntu.com

En ubuntu, una forma de consultar los paquetes instalados (terminal) es:$ dpkg -l$ dpkg -l gnome-terminal

Estos comandos devuelven los resultados como:Estado del paquete (Un paquete esta instalado si muestra “ii”, Cuando aparce rc"Se hadesinstalado pero aún se mantiene sus archivos de configuración).Estado de selección del paquete.Bandera del paquete.

Opciones de dpkg:

Opción Descripción-i < paquete > Instala un paquete-r < paquete > Desinstala un paquete sin eliminar sus archivos de configuración.-P < paquete > Desinstala y elimina los archivos de configuración.−− get− selections Obtiene la lista de paquetes con su selección.−− set− selections Modifica la selección de paquetes.-C Busca e indica los paquetes que están parcialmente instalados en el sistema.-I < patron > Lista los paquetes instalados siguiendo el patrón.-s < paquete > Muestra el estado del paquete-S < /ruta/archivo > Muestra a que paquete pertenece el archivo.

Las opciones compuestos por mas de una letra usan −−−− get− selections−− set− selections

Ubuntu divide el repositorio en secciones:main : Con Soporte oficial de ubuntuuniverse : Sin Soporte oficialrestricted : Tienen licencias restrictivas soportadas por Ubuntumultiverse : Tiene licencias restrictivas y que podrían tener problemas para su redistribu-ciones (codecs de vídeo y audio)

Los repositorios son utilizados por apt.

5.3.2. APT:

Apt es un conjunto de aplicaciones que permiten instalar paquetes desde un repositorio. La1Lugar donde se encuentran los paquetes (puede ser el mismo equipo o algún lugar en la red)

Page 58: Comandos Basicos Linux

Capítulo 5. Administración Básica 51

configuración personal de los repositorios se encuentra en /etc/apt/sources.listComandos apt:apt-cdrom : Permite agregar un CD como repositorio

Ejemplo 5.11 # apt-cdrom add 2

apt-cache : Permite consultar los paquetes de• apt-cache search “patron”

Ejemplo 5.12 apt-cache search latex 2

• apt-cache show paquete• apt-cache showpkg paquete• apt-cache stats• apt-cache depends

apt-get : permite instalar/desinstalar paquetes• apt-get update: Actualiza el listado de paquetes.• apt-get upgrade : Actualiza todos los paquetes, excepto los que tienen nuevas depen-

dencias.• apt-get dist-upgrade :Actualiza todos los paquete incluyendo los que tienen nuevas

dependencias.• apt-get install “paquete”: instala el paquete y todas sus dependencias• apt-get remove “paquete” : Desinstala el paquete pero no borra sus archivos de con-

figuración.• apt-get remove −− purge "paquete":Desinstala el paquete y sus archivos de configu-

ración.update-alternatives: Este programa permite definir el programa a utilizar cuando existendiversos programas para la misma tarea. Su sintaxis es:

• update-alternatives −− config < nombre >• update-alternatives −− all

Este comando debe ejecutarse al instalar java, ya que por defecto utiliza programas pro-vistos por gnu (openjdk).

• update-alternatives −− config java• update-alternatives −− config keytool• update-alternatives −− config rmiregistry

Page 59: Comandos Basicos Linux

Capítulo 6

Servicio de Impresoras (CUPS)

Es el Sistema de Impresión Común de UNIX (Common UNIX Printing System, CUPS). Estesistema de impresión es una capa de impresión libre y portable que se ha convertido en el nuevoestándar de impresión en la mayoría de las distribuciones de GNU/Linux.

CUPS gestiona los trabajos y tareas de impresión, y proporciona impresión de red utilizandoel protocolo estándar de Impresión en Internet (IPP), que dispone de soporte para una grangama de impresoras, desde matriciales hasta láser. CUPS también soporta PostScript PrinterDescription

(PPD) y auto detección de impresoras de red, y dispone de una sencilla herramienta basadaen web para la configuración y administración.

6.1. Instalación

para instalar el servidor cups debemos instalar los siguientes paquetes y librerías:

# apt-get install cups# apt-get install cups-common# apt-get install cups-driver-gutenprint

Nota: hay muchos comandos para instalar CUPS solo utilizamos estos pocos porque antesde el empezar a instalar CUPS, ejecutamos los comandos apt-get update y apt-get upgrade,entonces cuando le íbamos a instalar las otras librerías sale un mensaje de que hay versiones masrecientes de esa librerías y utilidades.

Si se va a utilizar el servidor de impresoras en una LAN que tenga un servidor DHCP queasigne direcciones IP dinámicas. Es mejor ponerle a nuestro servidor de impresoras un direcciónIP estática.

52

Page 60: Comandos Basicos Linux

Capítulo 6. Servicio de Impresoras (CUPS) 53

6.2. Configuración

Antes de empezar a editar el archivo de configuración /etc/cups/cupsd.conf primero te-nemos que saber que hay una copia de seguridad de la configuración por defecto en el archivo/etc/cups/cupsd.conf.default. Este archivo hay que tenerlo en cuenta por si nosotros llega-mos hacer una configuración mal o de pronto alguna persona nos llegara a dañar este archivo.

# cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.default

6.2.1. Configuración de CUPS

Para configurar a CUPS tenemos que ir a editar el siguiente archivo /etc/cups/cupsd.confque es el que almacena toda la configuración de nuestro servidor como podemos ver en la imagenlo editaremos con el edito de texto nano.

# nano /etc/cups/cupsd.confAhora lo primero que vamos hacer es añadir la dirección IP que tiene nuestro servidor de

impresoras al archivo de configuración de CUPS. Podemos ver en la Figura 6.1 el sitio indicadopara colocar la dirección IP, cambiando localhost por tu ip estática.

Luego lo que vamos hacer es darle los permisos a las estaciones de trabajo que van a teneracceso al servidor CUPS para que podemos acceder a la configuración de interfaz web. Comopodemos ver en la Figura 6.2 en la parte donde dice Restricción de acceso al servidorpermitimos el rango de dirección IP con la orden: * que significa permisos a cualquier PC quetenga esta dirección IP. No importa el numero del ultimo octeto

Vamos hacer algo similar al paso anterior que es permitir que una estación de trabajo enespecifico pueda tener acceso administrativo a nuestro servidor CUPS. Por ejemplo en nuestrocaso seria nuestro mismo PC (ver Figura 6.3). Si no hacemos esto, solo tendríamos acceso alservidor mediante la orden http://localhost:631 en cambio si colocamos una IP del computadoradministrativo se puede acceder al servidor mediante la orden http://192.168.1.100:631 desde unnavegador Web.

Ya hemos terminado la configuración con el archivo cupsd.conf. Guardamos los cambios yreiniciamos el daemon de cups.

# /etc/init.d/cups restartAhora debe ser capaz de conectarse a la interfaz web de CUPS desde la estación de traba-

jo de administrador (IP 192.168.1.100 en este ejemplo) apuntando desde su navegador web ahttp://192.168.1.100:631/ una vez que se abre debería ver la pantalla de la Figura 6.4

En la pestaña administración podemos ver opciones como: Añadir impresoras, administraciónde impresoras, opciones para compartir impresoras, entre otros.

6.3. Configuración de clientes de CUPS

Para configurar las estaciones de trabajo para que puedan hacer uso de servidor de impresorasCUPS tenemos que instalar los siguientes paquetes:

# apt-get install cups-client

Page 61: Comandos Basicos Linux

Capítulo 6. Servicio de Impresoras (CUPS) 54

Figura 6.1: Archivo de Configuración de CUPS

Page 62: Comandos Basicos Linux

Capítulo 6. Servicio de Impresoras (CUPS) 55

Figura 6.2: Restricción de acceso por IP de CUPS

Page 63: Comandos Basicos Linux

Capítulo 6. Servicio de Impresoras (CUPS) 56

Figura 6.3: Restricción de acceso Pagina Administrador de CUPS

Page 64: Comandos Basicos Linux

Capítulo 6. Servicio de Impresoras (CUPS) 57

Figura 6.4: Patalla de CUPS

Ahora lo que vamos hacer es crear el archivo de configuración para que el usuario puedaconectarse con el servidor.

# touch /etc/cups/client.confCuando tengamos el directorio creado pasaremos a editarlo, colocándole información del

servidor como la dirección y el tipo de cifrado que maneja.# nano /etc/cups/client.conf

#Server NameServerName 192.168.1.100#CifradoDefaultEncrytion ifRequested

Ahora solo nos falta agregar la impresora en nuestro cliente entonces nos vamos para Siste-mas>Administración>Impresora, ya parados en esta opción no vamos para la parte donde dicearchivo y damos clic en la parte donde dice Conectando. Nos aparecerá un nueva ventana dondele colocaremos la dirección del servidor CUPS al cual nos queremos conectar.

Después de que conecte nos mostrara la impresora que esta en red.

Page 65: Comandos Basicos Linux

Capítulo 7

Shell Scripts

Un script para bash es un archivo tipo texto, cuyas líneas tienen comandos que son ejecutados(interpretados) por bash. Para lograr que el intérprete de comandos intérprete las líneas de unarchivo puede:

Ejecutar /bin/bash seguido del nombre del archivo (o redireccionar la entrada estándarpara que provenga del archivo).Emplear el comando source seguido del nombre del archivo.Emplear el caracter ’.’seguido de un espacio y el nombre del archivo.Agregar en la primera línea del archivo la cadena #!/bin/bash, dar permiso de ejecuciónal archivo y teclear el nombre del archivo desde el intérprete de comandos —como si fueraun nuevo comando.

7.1. Ejecución de un comando en bashPara determinar cual es la orden bash realiza varias acciones:1. Primero realiza ciertas expansiones a la línea de comando, e identifica la orden, los pará-

metros y eventualmente las variables de ambiente que se den junto con la orden (en estasección se estudiarán las expansiones y variables de ambiente).

2. Si la orden va precedida de una ruta se trata del nombre completo de un archivo y elarchivo existe y es ejecutable, bash lo trata como un programa y lo carga a memoria paraejecutarlo. Si la ruta no conduce a un archivo ejecutable bash presenta un mensaje de error.

3. Si la orden no va precedida de una ruta, busca un alias que pueda corresponder con laorden y si lo encuentra lo remplaza por su valor (más adelante en esta sección explicaremoscomo manejar alias).

4. Si la orden no esta precedida de una ruta y no es un alias, determina si se trata de uncomando interno de bash (como fg o bg) y en caso de serlo realiza la acción correspondiente.

5. Si la orden no está precedida de una ruta, no es un alias y no es un comando interno buscaen varios directorios un archivo ejecutable con el nombre dado y si lo encuentra en algunolo carga a memoria para ejecutarlo (el orden y los directorios donde busca se especificanen la variable de ambiente PATH que se explicará en esta sección).

58

Page 66: Comandos Basicos Linux

Capítulo 7. Shell Scripts 59

6. En otro caso bash presenta un mensaje de error.En caso de que la orden corresponda a un archivo ejecutable (bien porque se dio la ruta

completa o bien porque existe un archivo en un directorio de PATH), bash determinará comoejecutarlo:

1. Si el archivo es tipo texto y comienza con la cadena "#!"seguida del nombre de un programa,bash emplea tal programa como intérprete del archivo. Como parámetros para el intérpreteemplea los que estén en la primera línea del archivo, seguidos del nombre del archivo y acontinuación otros parámetros que el usuario hubiera dado desde la línea de comandos.

2. Si el archivo es tipo texto pero no comienza con #!, lo interpreta con el programa bash1.Es decir lo trata como un script para el intérprete de comandos.

3. Si el archivo es binario lo envía al kernel para su ejecución. El kernel podrá ejecutarlo si estáen un formato reconocido (e.g el ejecutable producido por un compilador en un formatoreconocido por Linux —ELF, a.out).

7.2. Ambiente y variables de ambiente

Una variable es un nombre al cual se le puede asociar un valor, tal valor puede cambiardurante la ejecución de un programa es ’variable’. Cada programa (incluyendo al intérprete decomandos) se inicia en un ambiente el cual consta de variables, variables de ambiente que heredadel programa que lo inició y que pueden tener un significado especial para el programa. Lasvariables de ambiente que un programa usa se especifican en la página del manual del programa.

Para asignar un valor a una variable de ambiente y crearla si no existe, teclee el nombre de lavariable, en seguida el carácter ’=’y después el valor. El valor puede constar de letras, símbolos onúmeros, pero tenga en cuenta que hay algunos caracteres con significado especial y que es mejorevitar en sus primeros experimentos: $, {, }, ‘ , ’ (podrá escribirlos precedidos de \ o encerrandoel valor a asignar entre apostrofes). Por ejemplo para asignar el valor /home a la variable DIR:

$ DIR=/homeDespués de asignar una variable, puede emplear el valor asociado a la misma en comandos

que de al intérprete de comandos, para hacerlo emplee el nombre de la variable precedido delcarácter ’$’. Por ejemplo ls -l $DIR listará los archivos de la ruta asociada a la variable DIR.

En bash puede emplear el comando echo para enviar a salida estándar una cadena (porejemplo echo tarea > porhacer.txt dejar en el archivo porhacer.txt una línea con la palabratarea), esto puede usarse para examinar el valor de una variable de ambiente, e.g. echo $DIRpresentará el valor de la variable DIR.

Puede examinar las variables de ambiente de bash con el comando set. Algunas de las va-riables que verá son: USER y USERNAME cuyo valor es el login del usuario; UID con elnúmero que identifica al usuario; TERM mantiene el nombre de la terminal que está usando(ver Lectura Configuración de una sesión); SHELL la ruta y nombre del intérprete de coman-dos; PWD el nombre del directorio de trabajo; $HOME el nombre del directorio personal delusuario; PS1 y PS2 indican a bash como presentar prompts (see Lectura Configuración de una

1En rigor lo interpreta con /bin/sh pero en Debian /bin/sh es un enlace a /bin/bash

Page 67: Comandos Basicos Linux

Capítulo 7. Shell Scripts 60

sesión); PATH es la ruta de directorios donde bash busca archivos ejecutables, se separan unasrutas de otras con el caracter ’:’; OSTYPE el tipo de sistema operativo; MAILCHECK lafrecuencia en segundos con la que bash debe revisar si ha llegado un nuevo correo a la cola decorreos especificada en la variable MAIL (por defecto la del usuario); LS_COLORS coloresque emplea el programa ls; LINES y COLUMNS indican la cantidad de filas y columnas de laterminal que está usando; LANG, LANGUAGE y otras variables que comienzan con el prefijoLC_ especifican el idioma en el que los programas deben interactuar con el usuario (ver LecturaConfiguración de una sesión); HOSTNAME es el nombre del sistema; HISTFILE mantieneel nombre del archivo con la historia de comandos, su tamaño lo limitan HISTFILESIZE yHISTSIZE; DISPLAY mantiene la dirección del servidor X-Window (see Lectura Servicios dela Intranet).

Cuando se inicia un programa desde bash, el ambiente que tendrá constará de las variablesque estén marcadas como exportables y de otras variables que se especifiquen al comienzo delcomando (pueden separarse unas de otras con espacios y si el valor de alguna variable debe tenerespacios puede encerrar el valor completo entre comillas), por ejemplo para iniciar el programaman en un ambiente con las variable LANGUAGE y LANG en el valor ES_es:

LANG=de_DE LANGUAGE=es_ES man man

Para exportar una variable y lograr así que forme parte del ambiente de procesos creadospor su sesión, puede emplear bien declare -x VAR o export VAR, empleando el nombre de lavariable que desea exportar en lugar de VAR. Empleando sólo export o sólo declare -x puede verlos nombres y valores de variables exportables.

En un script puede emplear ciertas variables especiales ($1, $2, ...) para referenciar los pará-metros que el usuario empleó al iniciarlo. $1 tendrá el valor del primer paramétro, $2 del segundoy así sucesivamente. El siguiente script ejemplifica su uso:

#! / bin /bash

echo " Creando $2 . ta r . gz de $1 "

mkdir $2cp −rf $1 /∗ $2tar cvf $2 . targzip $2 . tar

Este script recibe dos parámetros, el primero es una ruta y el segundo el nombre de unarchivo. Si el nombre del script es comp y tiene permiso de ejecución podría usarse para crearun paquete comprimido d.tar.gz con el contenido del directorio ∼/mand con:

./comp ∼/mand d

Note que en el ejemplo indicamos la ruta completa del archivo comp, suponiendo que esejecutado desde el mismo directorio donde se encuentra. Si la ruta donde está el archivo está enla variable PATH, no es necesario especificar la ruta.

Page 68: Comandos Basicos Linux

Capítulo 7. Shell Scripts 61

7.3. Expansiones

bash trata algunos caracteres de forma especial: ’" $. Al asignar una variable o iniciar uncomando bash “expande” estos caracteres y su contexto de varias formas:

$var - Expansión de variables o parámetros: El caracter ’$és empleado para distin-guir variables o bien parámetros de un script. Las variables son remplazadas por su valor, porejemplo echo $PATH presentará el contenido de la variable PATH. En un script los parámetrosse referencian con números, $1 es el primero, $2 el segundo y así sucesivamente. Otros nombreespeciales en un script son:$# Es remplazado por la cantidad de parámetros que el script recibe.$* Que se expande a todos los parámetros que el script haya recibido, un parámetro se separa

de otro con el valor de la variable IFS que normalmente es un espacio.$? Todo programa al terminar debe retornar un número al sistema operativo, por convención

0 significa operacióne exitosa y números diferente representan errores. $? se expande alnúmero retornado por el último programa ejecutado en primer plano. Un script puederetornar un 3 en lugar de 0 con exit 3

$- Opciones que se pasaron al script durante su ejecución.$$ Identificación del proceso del intérprete de comandos.$! Identificación del proceso del último comando que se ejecutó en segundo plano.$0 Nombre del script o del shell.

“texto” - citas: Cuando un conjunto de caracteres (incluyendo espacios), se encierra entrecomillas, bash los trata como una sola cadena. Esto es útil por ejemplo cuando el nombre de undirectorio o archivo tiene espacios, e.g. cd “los amigos”. Otra forma de representar el caracterespacio es con el caracter ’śeguido de un espacio, así el efecto del ejemplo anterior también podríalograrse con cd los amigos. Hay otros caractéres que pueden representarse con ayuda de ’́, porejemplo:\n Representa el caracter fin de línea.\b Caracter para borrar a la izquierda.\\ \{ \} \$ Representan los caracteres ’́’{”}’y ’$’respectivamente. Esto es útil para producir

estos caracteres sin que bash trate de interpretarlos –estos son caracteres para hacer ex-pansiones.

\a Caracter para emitir un sonido.\t Caracter tabulador (como la tecla Tab).

{letras} - expansión de corchetes: Una cadena que contenga { letra1, letra2, ... } seráexpandida a varias cadenas similares a la inicial pero la posición de {letras1, letra2, ...} seráremplazada por cada una de las letras. Por ejemplo ls /home/pepe/sal{a,e}n se expandirá a ls/home/pepe/salan /home/pepe/salen. Esta expansión es la primera que se realiza cuando hayvarias en un mismo comando, y sólo surge efecto si está fuera de comillas o apóstrofes.

’comandoó $(comando) - sustitución de comandos: Un comando encerrado entre após-trofes invertidos (i.e ‘comando‘) o entre las cadenas ”$(” y ”)”, será expandido al resultado quetal comando envíe a salida estándar cuando es ejecutado. Por ejemplo

TEXTOS=’ls *.txt’

Page 69: Comandos Basicos Linux

Capítulo 7. Shell Scripts 62

asignará a la variable TEXTOS los nombres de los documentos tipo texto (i.e el resultado dels *.txt).

ls $(cat rutas.txt)presentará los archivos de los directorios que estén en el archivo rutas.txt.’texto’- citas: Un texto que se encierra entre apóstrofes no es expandido. Esto es útil cuando

se requiere una cadena que tiene algunos caracteres reservados para expansiones. Por ejemplo

N=10echo ' $N ' es $N

enviará a salida estándar $N es 10$((expresión)) - expansión aritmética: Una expresión aritmética2 será evaluada cuando

se encierre entre $(( y )), por ejemplo:

echo "1+2 es $ ((1+2) ) "

*, ?, ∼ [letras] [rango(s)]- Expansión de rutas: Algunos caracteres y secuencias sonexpandidos a nombres de archivos. A continuación se presentan con ejemplos:echo * presentará todos los nombres de archivos del directorio de trabajo —porque * expande

a todos estos y echo los presenta—. En caso de que no haya archivos el caracter * no seráexpandido y será mostrado por echo.

echo datos?.gnumeric se expandirá a todos los nombres de archivos que comiencen por datosseguidos de un caracter arbitrario a su vez seguido de la cadena .gnumeric.

echo /.*errors presentará todos los nombres de archivos de configuración que estén en eldirectorio del usuario y que terminen con errors.

rm *[cho ] eliminará todos los archivos que terminen con una de las letras o, h o c.echo [0-9 [a-z]*] presentará todos los archivos que comiencen con un dígito seguido de una letra.

7.4. Comandos y programas útiles al hacer scripts

En un script puede emplear cualquier programa o comando, junto con redireccionamiento,procesos y control de tareas. bash ignora comandos que comienzan con el caracter ’#’. Esto esútil para agregar comentarios explicativos a los scripts.

A continuación introducimos algunos comandos de bash y programas útiles al hacer scripts.2En la expresión pueden emplearse los operadores - (unario y binario), + (unario y binario), ** para elevar a

una potencia, * para multiplicar, / para divir,% para obtener residuo de una división. Hay operadores que operana nivel de bits (representación binaria de los números que operan): ∼ para negar bits, & para hacer “Y” entre bitsde operandos y | para efectuar “O”. También pueden emplearse valores booleanos — 0 se interpreta como falsoy 1 como verdadero—, pueden compararse números con los operadores >, <, <= (menor o igual), >= (mayor oigual), == (igualdad), ! = (diferentes) y pueden operarse booleanos con ! para negar, && como conjunción (Y) y ||como disyunción. Los números pueden escribirse en decimal, o en otras bases empleando como prefijo del númerola base seguida del caracter ’#’(también puede escribirse números en octal iniciándolos con 0 o en hexadecimaliniciándolos con 0x).

Page 70: Comandos Basicos Linux

Capítulo 7. Shell Scripts 63

read Lee una línea de entrada estándar y asigna las palabras a las variables que sigan al comandoread. Puede especificarse un mensaje que se presentará como prompt antes de empezar a leercon la opción -p mensaje. El siguiente ejemplo lee dos palabras en las variables NOMBREy APELLIDO:

read −p " Tec lee nombre y a p e l l i d o : " NOMBRE APELLIDO

Si la línea leída tiene más palabras que la cantidad de variables, el resto serán ignoradas.Si tiene menos palabras, las primeras variables (de izquierda a derecha) serán empleadas yel resto quedarán en blanco (i.e con la cadena vacía “”). En caso de que no se den nombresde variables, la línea leída quedará en la variable REPLY.

alias Con este comando puede definir alias para comandos, después de definir un alias bash loremplazará por el comando completo. Por ejemplo un alias para abreviar ls -l puede ser ll,que se definiría como:

al ias ll=" l s − l "

Puede listar los alias definidos con la opción -p del comando alias.unalias Permite eliminar alias creados con el comando alias, por ejemplo para eliminar el alias

ll se emplea:

unalias ll

Si se emplea la opción -a, el comando unalias elimina todos los alias definidos.dirname Recibe como primer parámetro el nombre completo de una archivo, incluyendo su ruta

y envía a salida estándar sólo la ruta. Por ejemplo:

dirname /usr/doc/ xterm / README . Debian

presenta en salida estándar /usr/doc/xterm.basename Análogo a dirname, pero envía a salida estándar el nombre del archivo.hostname Envía a salida estándar el nombre del computador en la red, esto también puede

verse en la variable de ambiente HOSTNAME. Con la opción -f, el programa hostnamepresenta el nombre completo, con la opción -i la dirección IP, con la opción -d el dominioDNS, con la opción -a presenta nombres alternos de su máquina y con la opción -y eldominio NIS —este programa extrae parte de la información del archivo /etc/hosts y de/etc/hostname.

whoami Retorna el nombre del usuario que lo ejecuta. También puede verse en la variable deambiente USER.

id Retorna nombre y número del usuario que lo ejecuta, así como nombre y número del grupo ogrupos a los que pertenezca. Con la opción -g sólo retorna el número del grupo principal,con -u retorna sólo el número del grupo principal, con -G retorna los números de todos los

Page 71: Comandos Basicos Linux

Capítulo 7. Shell Scripts 64

grupos a los que pertenece. Estas opciones pueden seguirse de n para presentar nombresen lugar de números.

declare Las variables de ambiente tienen atributos que pueden examinarse o cambiarse con estecomando interno de bash. Los atributos pueden ser sólo lectura (opción -r), exportable (op-ción -x) y variable entera (opción -i). Una variable de sólo lectura no puede ser modificada,y una variable entera sólo puede asociarse con números3. Para examinar las variables quetengan un cierto atributo se emplea declare seguido del código de la opción, por ejemplopara examinar las variables con atributo de sólo lectura declare -r. Para cambiar un atribu-to a una variable se emplea la opción (precedida de - o + para activar y desactivar) seguidadel nombre de la variable, por ejemplo declare -i N pone el atributo de variable entera a N.

7.5. Script Basico

En el siguiente ejercicio práctico, orientado a usuarios más novatos en esto del sistema ope-rativo basado en Linux, les voy a mostrar cómo realizar un sencillo script que nos ayudará aactualizar repositorios, actualizar todo el software o incluso instalar nuestros programas favori-tos con tan solo un click y de manera automática.

El uso de este script, que realizaremos nosotros mismos, nos evitará tener que ir tecleando enla terminal las ordenes para instalar las diferentes aplicaciones, programas u ordenes que solemosutilizar de manera habitual.

Una de las principales utilidades que le veo yo al script que a continuación realizaremos,es la de una vez que hacemos una instalación limpia de Ubuntu, con tan sólo ejecutar el scriptpodemos actualizar e instalar todos nuestro programas favoritos sin necesidad de introducir nadaen la terminal.

También podemos hacer el script con cualquier comando que solamos utilizar a menudo paraevitarnos tener que abrir la terminal y ejecutarlo de manera manual, todo lo dejo en vuestraimaginación.

7.5.1. Cómo Crear un script sencillo

Para crear un script sencillo que ejecute un comando como el de actualizar los repositorios, oinstalar nuestro programas favoritos tendremos que crear un nuevo archivo de texto e introducirlas siguientes lineas.

Bash 7.1: Script despues de instalar ubuntu#! / bin /bash

echo Despues de Instalar Ubuntu

echo . . dentro 1 seg se inicia el script , o cierra la terminal

sleep 1s

3Otros atributos pueden ser “función” -f y arreglo -a

Page 72: Comandos Basicos Linux

Capítulo 7. Shell Scripts 65

cd ~/

sudo apt−get update

sudo apt−get −y upgrade

sudo apt−get −y install chromium−browser vlc ubuntu−restricted−extras

La primera linea de todas es la que tenemos que respetar ya que es la que da la orden que esun archivo de texto ejecutable en bash y no deberemos modificarla.

Las demás partes las que podemos modificar a nuestro antojo sabiendo lo siguiente:echo Le daremos el nombre que queramos, opcional de cada uno y que describa brevemente

el script.echo. Aquí le podemos decir lo que tarda el script en ejecutarse una vez abierta la terminal,

para así darnos tiempo a cerrar la terminal si no quisiésemos instalarlo.sleep Es el tiempo de espera para que se ejecute el script en la terminalcd y la ruta donde queramos instalar los programas por defecto, se recomienda modificarla

para que así lo instale en nuestra carpeta de usuario por defecto dentro de nuestro Home.Este script básico nos actualizaría la lista de repositorios, actualizaríamos todo el software

instalado y después instalaría todos los programas incluidos después del comando sudo apt-getinstall, siempre dejando un espacio entre cada programa.

7.5.2. Para ejecutarlo

Para ejecutarlo tan solo tendremos que abrir nautilus y desde la opción archivo/preferen-cias/comportamiento y activar la casilla de preguntar cada vez que está dentro de la opciónde Archivos de texto ejecutables.

De este modo con tan solo clicar dos veces en un archivo de texto ejecutable nos preguntarási queremos mostrarlo con el editor de textos o ejecutarlo directamente.

Ahora, si estamos sin entorno grafico lo que hay que hacer es cambiarle los permisos al archivopara que sea un ejecutable, esto se hace escribiendo en la terminal:

$ chmod +x rutaAlScript

7.6. Algunos Ejemplos

Bash 7.2: Que solo el usuario root ejecute el script#! / bin /bashi f [ [ $EUID −ne 0 ] ] ; thenecho " Este s c r i p t debe s e r e j ecutado por e l usuar io root " 1>&2

exit 1f i

De manera similar al código anterior, podríamos querer que solo un usuario específico ejecuteel script. Lo hacemos así:

Page 73: Comandos Basicos Linux

Capítulo 7. Shell Scripts 66

Bash 7.3: Permitir la ejecucion del script solo a un usuario especifico#! / bin /bashAUTHORIZED_USER=" usuar io_permit ido "i f [ $USER != $AUTHORIZED_USER ] ; then

echo " Este s c r i p t debe s e r e j ecutado por e l usuar io $AUTHORIZED_USER" 1>&2exit 1

f i

Si queremos saber si existen procesos de algún servicio o programa ejecutándose podríamos usareste script (en este caso verifica que el demonio de Apache esté corriendo):

Bash 7.4: Verificar que un servicio/proceso se está ejecutando#! / bin / shSERVICE='httpd 'i f ps ax | grep −v grep | grep $SERVICE > /dev/nullthen

echo " El s e r v i c i o $SERVICE e s t a e j e cutandose "else

echo "Vaya , El s e r v i c i o $SERVICE e s t a deten ido "f i

Para verificar que una variable esté asignada/tenga datos hay bastantes maneras de haceresto en shell script. La que considero más sencilla y concisa es esta:

Bash 7.5: Verificar que una variable este asignada/tenga datos#! / bin /bashFOO=: ${FOO : ? "No e x i s t e l a v a r i a b l e FOO o no t i e n e datos " }echo " e s t o nunca se va a imprimir "

El anterior script verifica si una variable existe y tiene datos; si esto no se cumple, el scriptse cierra. Podemos usar esta variación en donde solo comprobamos que la variable exista, sinimportar si tiene datos o no:

Bash 7.6: Verificar que una variable este asignada/tenga datos#! / bin /bashFOO=: ${FOO ? "No e x i s t e l a v a r i a b l e FOO" }echo " e s t o s i se va a imprimir "

A veces debemos asegurarnos que el script no se ejecute dos o más veces simultáneas. Paraello podemos hacer uso de los archivos de bloqueo. Esta es una versión sencilla de un script quenos permite hacer esto:

Bash 7.7: Crear un archivo de bloqueo#! / bin /bash

Page 74: Comandos Basicos Linux

Capítulo 7. Shell Scripts 67

lockfile=/var/lock/ loquesea . locki f [ ! −e $lockfile ] ; then

touch $lockfileecho " hago muchas cosas importantes aqui "rm $lockfile

elseecho " ya hay otro proceso c o r r i e n d o "

f i

En este caso, se verifica que el archivo loquesea.lock exista. En caso de que exista, el scriptNO ejecuta sus tareas. Si no existe, crea el archivo, ejecuta las tareas que deba ejecutar y loelimina.

Pero, esto no es del todo fiable. ¿Qué pasaría si mientras nuestro script se está ejecutandoes cerrado abruptamente (con Ctrl+c por ejemplo)? En ese caso el archivo de bloqueo no seborraría, y por lo tanto, no nos permitiría ejecutar el script de nuevo.

Para cubrir esos casos, podríamos hacer uso del comando trap que nos permite ejecutarcomandos en caso que nuestro script termine de manera inesperada. Esta es una versión másavanzada que además guarda dentro del archivo de bloqueo el PID del script que lo ejecuta:

Bash 7.8: Crear un archivo de bloqueo#! / bin /bashlockfile=/var/lock/ loquesea . locki f ( set −o noclobber ; echo " $$ " > " $ l o c k f i l e " ) 2> /dev/null ;then

trap ' rm −f " $ l o c k f i l e " ; exit $ ? ' INT TERM EXITecho " hago muchas cosas aqui tranqui lamente "rm −f " $ l o c k f i l e "trap − INT TERM EXIT

elseecho "Ya hay otro proceso de e s t e s c r i p t e j e cutandose "echo " c o r r i e n d o con e l PID : $ ( cat $ l o c k f i l e ) "

f i

Entendamos un poco mejor el comando trap. La sintaxis del mismo es básicamente esta:trap comando signal [signal ...]; donde signal es la señal de terminación que quieres atrapar.Si quieres ver una lista de los signals disponibles puedes ejecutar el comando kill -l. Para el casoanterior se usaron los signals INT (captura la terminación producida por un Ctrl + c), TERM(terminación producida por el comando kill) y EXIT (terminación normal de un script, bien seaporque ya no hay más líneas que ejecutar o porque se encuentra con el comando exit).

Para hacer un menú en donde permitimos al usuario seleccionar una serie de opciones podemosusar el siguiente esquema:

Bash 7.9: Menu de opciones#! / bin /bashclearwhile :do

echo " Escoja una opcion "

Page 75: Comandos Basicos Linux

Capítulo 7. Shell Scripts 68

echo " 1 . quien soy ? "echo " 2 . cuanto e s p a c i o tengo "echo " 3 . que es e s t o ? "echo " 4 . S a l i r "echo −n " S e l e c c i o n e una opcion [ 1 − 4 ] "read opcioncase $opcion in

1) echo " e s t e e r e s : " ;whoami ; ;

2) echo " t i e n e s e s t o " ;df ; ;

3) uname −r ; ;4) echo " chao pues parcero " ;

exit 1 ; ;∗) echo " $opc es una opcion i n v a l i d a . Es tan d i f i c i l ? " ;

echo " Pres iona una t e c l a para cont inuar . . . " ;read foo ; ;

esacdone

A veces es útil hacer que el usuario confirme la ejecución de un lote de sentencias, es decir,el típico mensaje que pide al usuario escribir yes o no. Esto lo podemos hacer así:

Bash 7.10: Pedir confirmacion antes de ejecutar un script#! / bin /bashwhile true ; do

echoread −p " e s t a seguro de hacer l o que sea que vaya a hacer " yncase $yn in

yes ) break ; ;no ) exit ; ;∗ ) echo " por favor responda yes o no " ; ;

esacdoneecho " s i se e j e c u t a e s t o es que a c e p t a s t e "

7.7. Lecturas recomendadas: Scripts básicos para bash

Recomendamos de forma especial consultar la página del manual de bash. Hay algunaspartes que complementan lo que se ha presentado en esta guía:

• bash puede hacer más expansiones de parámetros, con la sintaxis ${...} —por ejemplosustituciones en el valor de una variable—. Puede consultar la información completasobre este tema en la sección “expansión de parámetros”.

• Pueden hacerse scripts para bash con otras características que no se han presentadoen esta guía: if, case, while, for, function.

El intérprete de comandos es una parte importante de la filosofía Unix, el libro clásico sobreeste tema es de Brian. W. Kernighan y Rob Pike “El Entorno de Programación UNIX”,Prentice-Hall Hispanoamericana. Este libro explica y muestra el uso de csh, un predecesorde bash —la mayoría de características de csh están disponibles en bash.

Page 76: Comandos Basicos Linux

Capítulo 7. Shell Scripts 69

En Internet puede consultar “Advanced Bash-Scripting Guide: A complete guide to shellscripting, using Bash” de Mendel Cooper, disponible en: http://linuxdoc.org/LDP/abs/html/index.htmlo Programación en BASH - COMO de introducción http://goo.gl/HS4pB

7.8. Ejercicios: Scripts básicos para bash1. Cree un script que sea interpretado por bash, que al ejecutarse busque entre sus directorios,

todos los archivos, ordene los nombres alfabéticamente y le envíe un correo con esa infor-mación. Ayuda: Puede emplear la opción -R de ls para listar subdirectorios, y la opción -ude sort.

2. La variable de ambiente HOME contiene el nombre de su directorio personal. Comprúebeloy después empleela para cambiarse a su directorio. Después cambie esta variable y expliqueque ocurre con el comodín ’ ’.

3. El programa man presenta páginas del manual, empleando el programa especificado en lavariable de ambiente PAGER o en su defecto con el programa less (ver Lectura bash y eljuego de herramientas). Modifique y exporte la variable PAGER para que man emplee elprograma more para presentar información y pruebe el cambio.

4. ¿Qué hace el comando echo ‘ls’? (note que se usan apóstrofes invertidos).5. ¿Qué hace el comando N=6 echo “’1+$N’= $((1+$N))”? Después de dar su respuesta,

compruébela empleando un intérprete de comandos.6. Haga un script que cada 90 minutos presente el mensaje “Hacer tareas”. Ayuda: source.7. Cree un script que al ser ejecutado, cree un archivo script2. El archivo script2 creado debe

poner la variable PATH en el valor que tenga cuando el primer script sea ejecutado, añadira tal variable la ruta /opt/bin y debe crear un alías que cuando se ejecute muestre elcontenido de la variable PATH (no olvide cambiar el modo del archivo script2 generadopara que sea ejecutable).

8. Haga un script que después de ejecutarse pida al usuario 2 números y después presente lasuma, la resta, el producto y la división.

Page 77: Comandos Basicos Linux

Capítulo 8

CRON

Se trata de unos de los servicios básicos de los sistemas GNU/Linux. De hecho, el demoniocron siempre está arrancado; además, dicho servicio asume, asimismo, que el sistema siempreestá en funcionamiento.

La función básica de cron es la de ejecutar tareas programadas para un determinado momento,y por un usuario con los privilegios necesarios para poder programarlas.

8.1. CRON: InstalaciónAunque ya se ha mencionado que los sistema Debian GNU/Linux tienen instalado este ser-

vicio de serie, es importante conocer cuál es el paquete que provee dicha funcionalida.

# apt-get install cron

8.2. CRON: crontabPara editar el archivo crontab, hay que escribir lo siguiente en el prompt shell de Linux /

Unix. $ crontab -e

Ejemplo 8.1 (Sintaxis del Crontab)1 2 3 4 5 /ruta/al/comando arg11 2 3 4 5 /root/backup.sh 2

Donde:1: Minuto (0-59) (* cualquier minuto)2: Horas (0-23) (* cualquier hora)3: Día (0-31) (* cualquier día)4: Mes (0-12 [12 == diciembre]) (* cualquier mes)5: Día de la semana (0-7 [7 or 0 == domingo]) (* cualquier dia)

70

Page 78: Comandos Basicos Linux

Capítulo 8. CRON 71

/ruta/al/comando – Ruta del script o comando a programarUn cron job del sistema luce como la siguiente línea:

Ejemplo 8.2 (Sintaxis del Crontab)1 2 3 4 5 USERNAME /path/to/script.sh 2

Ejemplo 8.3Para ejecutar /path/to/unixcommand 5 minutos después de las 4am cada domingo, añadimos:5 4 * * sun /path/to/unixcommand 2

8.3. CRON: Operadores

Un operador nos permite especificar múltiples valores en un campo. Existen tres operadores:

El asterisco (*) Este operador abarca a todos los valores posibles en un campo. Por ejemplo,un asterisco en el campo de hora, será equivalente a cada hora; o, un asterisco en el campomes será equivalente a cada uno de los meses.

La coma (,) Este operador especifica una lista de valores, por ejemplo: “1,5,10,15,20, 25”.El guión (-) Este operador especifica una serie de valores, por ejemplo: “5-15” días, lo que

equivale a escribir “5,6,7,8,9, ... ,13,14,15” usando el operador coma.

8.4. CRON: Listar todas tus tareas del crontab

Ejemplo 8.4# crontab -l# crontab -u username -l 2

8.5. CRON: Borrar todas tus tareas del crontab

Ejemplo 8.5# crontab -r# crontab -r -u username 2

Page 79: Comandos Basicos Linux

Capítulo 8. CRON 72

8.6. CRON: ahorrar tiempo

Cadena especial Significado@reboot Ejecutar una vez, en el inicio.@yearly Ejecutar una vez al año, “0 0 1 1 *”

@annually (igual que @yearly)@monthly Ejecutar una vez al mes, “0 0 1 * *”@weekly Ejecutar una vez a la semana, “0 0 * * 0”@daily Ejecutar una vez al día, “0 0 * * *”.

@midnight (igual que @daily)@hourly Ejecutar a cada hora, “0 * * * *”

8.7. CRON: ahorrar tiempo

Ejemplo 8.6 @daily /path/to/backup/script.sh 2

8.8. CRON: Creación de un crontab para un usuario

1. creamos con gedit un archivo de texto, con el texto:SHELL=/bin/bashDISPLAY=:0

2. Guardamos este archivo con el nombre: cron-usuario , en el directorio /home/usuario3. En la terminal ejecutamos: crontab cron-usuario4. A partir de ahí puedes ejecutar en la terminal: crontab -e5. Al ejecutar la orden crontab -e en la terminal se abre el editor nano

Con permisos de root se puede editar los crontabs de cualquier otro usuario tecleando:# crontab-e -u nombre_del_usuario

8.9. Ejemplos

Este es un shell script (clean.cache) para limpiar los archivos almacenados en la caché ca-da 10 días. Este script se crea directamente en el directorio “/etc/cron.daily/”, por ejemplo:“/etc/cron.daily/clean.cache”:

Bash 8.1: Limpiar el Cache#! / bin /bash# Un s h e l l s c r i p t de ejemplo para l i m p i a r# a r c h i v o s de l a cache de un s e r v i d o r web l i g h t t p dCROOT=" /tmp/ c a c h e l i g h t t p d / "DAYS=10LUSER=" l i g h t t p d "

Page 80: Comandos Basicos Linux

Capítulo 8. CRON 73

LGROUP=" l i g h t t p d " # empezar l impieza <br>/usr / bin / f i n d ${CROOT} −type f −mtime +${DAYS} ←↩| xargs −r / bin /rm # s i e l d i r e c t o r i o es borrado por algun otro s c r i p t , r e g r e s a r

i f [ ! −d $CROOT ]then

/bin/ mkdir −p $CROOT/bin/ chown ${ LUSER } : ${ LGROUP } ${ CROOT }

f i

Una de las dificultades con una base de datos MySQL grande y activa es la de realizarrespaldos limpios sin tener que desconectar el servidor, sumado a esto esta la necedidad deguardar ese respaldo correctamete.

Lo primero es asegurarnos de tener instalado el paquete mailx indispensable para poder enviarel respaldo que se creara por correo, aunque si solo quieres crear el respaldo y almanacenerlolocalmente no sera necesario, el script y la explicación a continuación:

Bash 8.2: Respaldar MySQL y Enviar por Correo1 #! / bin /bash2 # S c r i p t para c r e a r r e spa ldo de una base de datos MySQL34 mkdir ~\ BDMSQL5 cd ~/ BDMSQL67 mysqldump −−opt −u root −padmin BDMSQL > BDMSQLbackup . sql8 tar zcvf BDMSQLbackup−`date + %d−%m−%y ` . tgz BDMSQLbackup . sql9 echo " Archivos de re spa ldo BDMSQL−`date + %d−%m−%y` " | mailx −s " Respaldo l i n u x conf ←↩

BDMSQL−`date + %d−%m−%y` " −a ∗ . tgz micorreo@gmail . com1011 sleep 51213 rm ∗ . tgz14 rm BDMSQLbackup . sql15 cd ~/16 rm −R −f BDMSQL

Comenzamos a partir de la linea #4:4. se crea un directorio donde almacenaremos el respaldo.5. Nos movemos al directorio recién creado.7. Utilizando el comando mysqldump creamos el respaldo aquí ten en cuenta lo siguiente:

root Nombre de usuario de la base de datos.admin Contraseña para conectarnos a la base de datos.BDMSQL Nombre de la base de datos de la que se hará el respaldo.BDMSQLbackup.sql Nombre del archivo de respaldo que se creara automaticamente.Estos valores tendras que cambiarlos con los que tu tienes correspondientes a los de tu basede datos.

8. Comprimimos en tar el archivo BDMSQLbackup.sql recién creado.9. Mandamos por correo el archivo recién comprimido a la dirección [email protected]

11. Hacemos una pausa de 5 segundos.En las siguientes lineas lo que se hace es eliminar todo archivo que se creo, esto incluye el archivocomprimido, el archivo .sql y por ultimo el directorio.

Page 81: Comandos Basicos Linux

Capítulo 8. CRON 74

Por qué las ultimas 4 lineas?La idea del script (a parte de enseñar) es que este se este ejecutando en un momento de-

terminado, puesto que el respaldo se estará enviando por correo electronico esta de más tenerloalmacenado localmente sobre todo si el servidor se encuentra de forma remota.

Hacer que se ejecute automáticamente.Para hacer que el script se ejecute automáticamente lo único que hay que hacer es meterlo den-

tro de directorio /etc/cron.weekly/ si quieres que se ejecute semanalmente, /etc/cron.daily/si quieres que lo haga diariamente, /etc/cron.monthly/ para hacerlo mensualmente.

A modo de prueba inmediata puedes ejecutarlo y revisar el correo a donde fue enviado, noolvides cambiarle los permisos al archivo con chmod antes de ejecutarlo.

Page 82: Comandos Basicos Linux

Capítulo 9

Manejo de Nuevo Hardware

9.1. Identificar tu Partición o Disco

Lo primero que debemos hacer es identificar donde esta “físicamente” nuestro disco paralinux, esto lo hacemos mediante el comando fdisk # fdisk -l

9.2. Identificar tu Partición o Disco

Lo que necesitamos identificar es el nombre del dispositivo; normalmente Linux maneja lasparticiones con nombres como:

/dev/sda1 (primera partición primaria del disco duro uno)./dev/sda2 (Segunda partición primaria del disco duro uno)./dev/sda5 (primera partición secundaria del disco duro uno)./dev/sdb1 (primera partición primaria del segundo disco duro).

De la lista que nos entrega fdisk, detectamos cual es la nueva que deseamos añadir (asumamosque es sdb1)

Ahora necesitamos conocer cual es el punto de montaje de nuestra unidad, para ello tecleamos:# blkid /dev/sdb1lo cual nos entregará los siguientes datos:El punto de montaje es UUID=“XXXXXXXXXXXXX”.

75

Page 83: Comandos Basicos Linux

Capítulo 9. Manejo de Nuevo Hardware 76

El tipo de unidad que queremos montar es NTFS/vfat/extx.Otra alternativa de encontrar el punto de montaje es mediante el comando: $ ls -l /dev/disk/by-

uuid

9.3. Preparar la Ubicación para MontarAquí tenemos que hacer un par de decisiones: ¿como llamaremos a nuestra partición? ¿donde

la ubicaremos?En el caso de la ubicación, por omisión ubuntu monta discos duros y dispositivos en: /media

, así que es buena idea seguir esta costumbre.Respecto al nombre, eso corresponde completamente a nosotros. si es un disco que contiene

archivos de musica o vídeo, puede ser buena opción llamarla “media” o “datos”. Llamaremos aesta partición “datos”

Para poder montar datos, necesitamos crear una carpeta en la cual montarse, para eso eje-cutamos el siguiente comando en la terminal:

# mkdir /media/datos

9.4. Particionamiento ***(Pendiente)***

Juaramir: Esta sección pronto se completará END.

9.4.1. Crear un sistema de archivos

Un sistema de archivos se crea, esto es, se inicia, con el comando mkfs. Existen en realidadprogramas separados para cada tipo de sistemas de archivos. mkfs es únicamente una careta queejecuta el programa apropiado dependiendo del tipo de sistemas de archivos deseado. El tipo seselecciona con la opción -t fstype.

Los programas a los que -t fstype llama tienen líneas de comando ligeramente diferentes. Lasopciones más comunes e importantes se resumen más abajo.

-t fstype Selecciona el tipo de sistema de archivos.-c Busca bloques defectuosos e inicia la lista de bloques defectuosos en consonancia.-l filenameLee la lista inicial de bloques defectuosos del archivo dado.

9.4.2. Herramientas Gráficas

Para poder trabajar con los sistema de archivos, así como con las particiones, existen he-rramientas en los entornos gráficos que facilitan esa labor. Para el escritorio KDE encontramosla utilidad QtParted, y en los escritorios GNOME la herramienta Gparted. Todas ellas soncapaces de manejar el sistema de particionado de los discos, así como dar el formato deseado acada una de ellas.

Page 84: Comandos Basicos Linux

Capítulo 9. Manejo de Nuevo Hardware 77

9.5. Montar Partición de Manera Temporal

9.5.1. NTFS

Para montar una partición NTFS en algunas distribuciones como debian, es necesario instalarel paquete ntfs-3g para poder escribir en este tipo de particiones, de lo contrario funcionará desolo lectura.

# apt-get install ntfs-3gUna vez abierto el archivo si queremos montar nuestra unidad del tipo NTFS debemos añadir

la siguiente linea:# mount -t ntfs-3g /dev/sdb1 /media/datos -o forceo# mount -t ntfs /dev/sdb1 /media/datos -o force

9.5.2. Fat

Si la partición que queremos montar fuera FAT, entonces tendríamos que cambiar algunascosas, la linea de fstab quedaría de esta forma:

# mount -t vfat /dev/sdb1 /media/datos -o forceo# mount -t /dev/sdb1 /media/datos -o force

Page 85: Comandos Basicos Linux

Capítulo 9. Manejo de Nuevo Hardware 78

9.5.3. ext

Si la partición que queremos montar fuera ext4, la linea de fstab quedaría de esta forma (mássimple que las anteriores):

# mount -t /dev/sdb1 /media/datos -o force

9.6. Montar Partición de Manera DefinitivaYa esta lista la ubicación, pero necesitamos montar en si la partición, para esto, editaremos el

archivo /etc/fstab, que es donde se almacenan las direcciones donde se montan nuestros discosduros. Para ello ejecutamos este comando en la terminal:

# nano /etc/fstabSe abrirá una ventana del editor de textos mostrando el contenido de nuestro fstab.Lo que haremos será agregar al final del archivo (procurando no mover el resto, ya que eso

podría traer consecuencias indeseables al sistema), la siguiente línea:

9.6.1. NTFS

Para montar una partición NTFS en algunas distribuciones como debian, es necesario instalarel paquete ntfs-3g para poder escribir en este tipo de particiones, de lo contrario funcionará desolo lectura.

# apt-get install ntfs-3gUna vez abierto el archivo si queremos montar nuestra unidad del tipo NTFS debemos añadir

la siguiente linea:UUID=XXXXXXXXXXXXX /media/datos ntfs-3g default_permissions,uid=1000,locale=es_ES.UTF-

8 0 0Otra forma puede ser:/dev/sdb1 /media/datos ntfs nls=utf8,umask=0222,uid=1000,locale=es_ES.UTF-8 0 0

9.6.2. Fat

Si la partición que queremos montar fuera FAT, entonces tendríamos que cambiar algunascosas, la linea de fstab quedaría de esta forma:

UUID=XXXXXXXXXXXXX /media/datos vfat rw,uid=1000,gid=1000,locale=es_ES.UTF-8 0 0

Otra forma puede ser:/dev/sdb1 /media/datos vfat iocharset=utf8,umask=000,locale=es_ES.UTF-8 0 0

9.6.3. ext4

Si la partición que queremos montar fuera ext4, la linea de fstab quedaría de esta forma (mássimple que las anteriores):

UUID=XXXXXXXXXXXXX /media/datos ext4 errors=remount-ro 0 1Guardar los cambios y cerrar.

Page 86: Comandos Basicos Linux

Capítulo 9. Manejo de Nuevo Hardware 79

9.7. Montar la particiónYa hemos hecho todo lo necesario para montar nuestra partición, podemos reiniciar para que

los cambios tengan efecto o simplemente volver a montar nuestras particiones con el siguientecomando:

# mount -a

Page 87: Comandos Basicos Linux

Capítulo 10

Servidor GNU/Linux

Con GNU/Linux Ubuntu Server podemos montarnos un servidor que ofrezca variosservicios a terceros como por ejemplo servidor Web, servidor DNS, servidor de correo, servidorSSH, servidor MySQL, servidor de impresión y servidor de archivos entre otros servicios.

Estos tipos de servidores los podemos usar solos en una maquina o en conjunto para quenuestro servidor sea más o menos completo.

Recuerda que cuantos mas servicios vallamos a ofrecer más potente tiene que serla maquina para poder dar a basto con todo.

Servidor Web - Archivos - FTP - SSH

10.1. HardwarePodemos llamar servidor a toda maquina que este conectada a la red y ofrezca

diferentes servicios a los usuarios de la misma. Para esto necesitamos Hardware suficientepara montar un computador que pueda cumplir nuestras necesidades.

Necesitamos:Placa base (2 Puertos USB mínimo)Microprocesador (mínimo 500 Mhz Intel o AMD)Tarjeta gráficaTarjeta de red

80

Page 88: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 81

Memoria Ram (mínimo 128 Mb)Fuente de poder (alimentación)Disco duro (10Gb mínimo recomendado)Lector de CD o usb libres para cargar el SO.

10.2. Sistema Operativo

Si hay algo que caracteriza a Ubuntu frente a otras distribuciones Linux es que está es lamás sencilla de instalar y esto lo notaremos tan solo con instalar el sistema operativo.

Durante su instalación (totalmente intuitiva) podremos activar varios servicios para que nues-tro servidor tenga todo lo que necesitemos para montar de un PC normal un servidor que ofrezcaservicios a internet y a nosotros mismos en nuestra red de área local.

En la siguiente instalación que haremos bajo el sistema operativo Ubuntu Server vamos aindicarle que nos active servicios Web, SSh, Impresión y compartición de archivos.

Respecto a la compatibilidad de este frente a clientes con Linux, Windows o Mac va aser total con lo que podremos compartir todos los servicios sin problemas como pueden ser laimpresora o los archivos, directorioso particiones que compartamos con nuestra red.

Si ya tienes una maquina preparada para que funcione como servidor lo primero que vamosa necesitar es el CD/Pendrive de instalación de Ubuntu Server.

Este lo podemos descargar de su web oficialUna vez nos descarguemos el archivo de imagen ISO necesitamos grabarlo en un CD o en un

Pendrive.

10.2.1. Instalación

Una vez tengamos el CD con el archivo de imagen ISO grabado lo insertamos en lector yencendemos el computador haciendo que arranque desde el CD.

La primera pantalla que aparece nada más arrancar nos pregunta el lenguaje que queremospara la instalación y seleccionaremos nuestro idioma.

Page 89: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 82

Seleccionamos Install Ubuntu Server

Seleccionamos el país donde nos encontramos

Page 90: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 83

A continuación necesitamos indicarle cual va a ser el nombre que le vamos a dar a la maquina(ejemplo: linuxserver)

Configuramos el reloj del sistema seleccionado donde nos encontramos

Page 91: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 84

Llegados a esté punto vamos a crear las particiones para nuestro Linux Ubuntu Server y para ellovamos a usar todo el disco completo ya que se supone que esta maquina que estamos montandoes un servidor y va a estar 24 horas funcionando y no la vamos a usar para otra cosa que no seaun servidor. (Esta es la opción mas sencilla)

En mi caso voy a usar la segunda opción ya que asigna automáticamente las particiones ylas acondiciona a nuestro disco duro y a nuestra memoria ram.

En la siguiente pantalla podemos ver todos los cambios que se van a realizar en nuestro discoduro. Si estamos de acuerdo seleccionamos (Si) si por el contrario no lo tienes claro siemprepuede volver atrás pulsando (No) ...

Page 92: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 85

Seguidamente introduciremos un nombre para nuestro usuario(Ejemplo: Juan Ramírez)

Ahora introducimos el nombre de usuario para la cuenta (Ejemplo: juaramir)

Page 93: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 86

Introduce una contraseña para el usuario que anteriormente creamos y luego la verifica-mos.

Si nos encontramos detrás de un Proxy ahora es el momento de indicarle la dirección, si noes tu caso sigue con el botón (Continuar)

En la siguiente pantalla podemos elegir que servicios queremos que vengan instalados pordefecto una vez concluya la instalación del sistema.

Seleccionamos LAMP server para que nos instale automáticamente el servidor web Apa-che, MySQL y PHP además de otros soportes con los que podremos montar webs o blogs.También instalaremos OpenSSH para poder conectarnos desde otro PC de nuestra red y asíno necesitaremos que el ordenador que estamos montando no disponga de monitor ni teclado.Con la opción Print server podemos montar un servidor de impresión con este ordenador yuna impresora a la que podremos acceder vía red desde otro ordenador e imprimir lo que quera-mos. Samba File server también lo activaremos ya que con el podremos compartir carpetas oparticiones completas en nuestra red y serán compatibles con Windows, Linux y Mac

Page 94: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 87

A continuación introducimos una contraseña para el administrador de las bases dedatos MySQL (root), luego la repetimos para verificarla y continuamos.

Una vez terminada la instalación el sistema expulsara el CD de instalación y lo extraemos dela unidad. A continuación seleccionamos (Continuar) y la maquina se reiniciará sola.

10.3. Configuración de Red

En la instalación del sistema operativo se nos configuró automáticamente el servicio DHCPpara que nuestro router nos asigne automáticamente una IP. Eso esta muy bien y nos ha sidomuy cómodo ya que no hemos tenido que configurar nuestra tarjeta de red para nada durante lainstalación del sistema pero vamos a tener que configurarla manualmente.

¿Porque? Pues muy sencillo

Vamos a necesitar que nuestra tarjeta de red tenga una IP estática ya que cuando com-partamos un servicio Web o Ftp deberemos abrir y redireccionar el puerto 80 para el Web yel 21 para el Ftp hacia nuestro servidor y por consecuente a una IP que a continuación laconfiguraremos para que podamos hacerlo.

Arrancar nuestro servidor y accederemos a una Terminal con el usuario del sistema quecreamos en la instalación de Ubuntu Server (juaramir).

Page 95: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 88

Siempre que modifiquemos un archivo del sistema para configurarlo tenemos que tener encuenta que es necesario hacer una copia de seguridad del mismo para que podamos guiarnos deél en un momento dado.

A continuación haremos una copia del archivo llamado (interfaces) que está situado en laruta (/etc/network) y seguidamente lo editaremos para indicarle que IP estática es la que vaa tener nuestro servidor

Teclea: # cp /etc/network/interfaces /etc/network/interfacesOLD

10.3.1. Asignando IP Estática

Una vez creada la copia vamos a editar el archivo (interfaces) con el editor de texto queviene por defecto en Ubuntu Server llamado nano

Teclea: # nano /etc/network/interfaces

Page 96: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 89

Nuestra tarjeta de red primaria esta configurada para que se nos asigne una IP automática-mente vía DHCP.

Para empezar vamos a cambiar esa palabra por (static) y a continuación especificaremoscual va a ser nuestra IP fija, mascara de subred, puerta de enlace o gateway y resolvedor denombres DNS.

Para conocer cuales son los datos a obtener que necesitaremos llenar solo debemos teclearifconfig en la terminal y aparecera una imagen como la siguiente:

Al teclear ifconfig aparecerá más a la izquierda el dispositivo de red, en mi caso eth0 parael puerto de red cableado y wlan0 para la wifi. Además aparece la dirección ip que tenemos queescribir en el campo address, la submascara de red que hay que escribir en netmask.

Page 97: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 90

Gateway es la ip con la que accedes desde un navegador a tu router para configurarlo yfinalmente la ip que hay que llenar en nameserver se obtiene desde opendns.org

En la siguiente imagen expongo mi configuración estática que le he asignado aunque nonecesariamente tiene que ser igual que la mía puede variar dependiendo de vuestro rango de IPy proveedor de internet para el apartado DNS

Como vez le he asignado la IP 192.168.0.101. Respecto a los servidores DNS he usado lasdirecciones de OpenDNS un servicio de resolvedores de nombres que nos ofrecen gratuitamentedesde Internet.

Una vez hechas todas las modificaciones al archivo (interfaces) guardamos el archivo pul-sando la tecla F2, después la Y y después Enter. Con esto hemos guardado los cambios en elfichero y salimos del editor nano.

A continuación vamos a reiniciar la red para que los cambios surjan efecto.Teclea: # /etc/init.d/networking restartAhora deberíamos tener la IP que configuramos anteriormente. Esto podemos verlo ejecu-

tando el comando ifconfig.Teclea: ifconfigAhora cada vez que arranquemos tendremos la misma IP y no una dinámica como antes.

Page 98: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 91

10.4. Servidor Web con LAMP

Si hay algo que caracteriza a Ubuntu de otras distribuciones Linux es su facilidad de manejo.Al seleccionar LAMP Server durante la instalación se nos ha instalado en nuestra maquina

un conjunto de aplicaciones para poder usar nuestra maquina como un autentico servidor weblisto para poder ofrecer contenido Web en nuestra red de área local o hacia internet.

Si no lo hiciste solo teclea en la terminal:# apt-get install tasksel# tasksel install lamp-server

La opción LAMP Server instala automáticamente Apache HTTP Server, MySQL ysoporte para PHP necesario para montar un Blog.

Una vez efectuada la instalación de LAMP Server tenemos que configurar algunas cosaspara que todo funcione a nuestro gusto y podamos tener control sobre ello.

Antes de nada vamos a comprobar que nuestro Servidor Web Apache y el soporte paraPHP funcionan bien. Para ello abriremos un navegador e introduciremos la IP que tenga nuestroservidor.

(http://192.168.0.101) o http://localhost.Veremos la siguiente pantalla:

Si sale esta pantalla es que de momento todo va bien y el Servidor Web Apache funcionacorrectamente.

¿Pero, tenemos soporte para PHP?Para comprobar esto vamos a acceder a una terminal y nos identificaremos con nuestro usuario

(juaramir). Seguidamente vamos hacia el directorio /var/wwwTeclea: $ cd /var/wwwAhora crearemos un archivo llamado prueba.php con el editor nano.Teclea: # nano prueba.phpAhora tendremos que incluir el código que vez en la siguiente imagen.

<?php echo ’<p>probando probando !!! php</p>’; ?>

Page 99: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 92

Una vez introducidas estas lineas guardamos el archivo y salimos del editor pulsando la teclaF2 -> Y -> Enter.

Ahora tan solo nos queda abrir ese archivo en el navegador introduciendo la dirección IP detu servidor seguido del archivo prueba.php.

(http://192.168.0.101/prueba.php) o http://localhost/prueba.php

Ahora si que podemos estar seguros de que nuestro servidor Web funciona y tiene soportepara PHP.

10.4.1. Configurar MySQL

Una vez visto esto vamos a configurar MySQL que formará parte de este servidor Web enel que podremos montar un Blog como WordPress o usar las bases de datos para lo que cadauno quiera.

Para ello lo primero que haremos es editar el archivo de configuración de MySQL llamadomy.cnf ubicado en la ruta /etc/mysql

Teclea: # nano /etc/mysql/my.cnfUna vez editado tenemos que buscar la linea:bind-address = 127.0.0.1Y la modificamos por la IP de nuestro servidor (192.168.0.101) quedando así: bind-address

= 192.168.0.101Una vez modificada esta linea guardamos el archivo y salimos del editor pulsando la tecla F2

-> Y -> Enter.Seguidamente instalaremos PhpMyAdmin para poder administrar nuestras bases de datos.

Page 100: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 93

PhpMyAdmin

Instalaremos PhpMyAdminTeclea: # apt-get install phpmyadminDurante la instalación veremos una pantalla como esta:

Marcamos la opción Apache2 y continuamos con la opción Ok.Una vez terminada la instalación abriremos un navegador e introducimos la url de nuestro

servidor seguido de la ruta /phpmyadmin/(http://192.168.0.101/phpmyadmin/)

Una que vez veamos esta pantalla vamos a configurar el idioma y el nombre de usuario parapoder acceder a PhpMyAdmin.

Respecto al nombre de usuario y el password vamos a introducir el nombre de usuario root yel password que le dimos al administrador de las bases de datos MySQL durante la instalacióndel sistema operativo.

Page 101: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 94

Si en vez de haber accedido a PhpMyAdmin con el usuario root accediéramos con el usuarioadmin y dejáramos la casilla para el password vacía también podríamos acceder al panel deadministración aunque sin privilegios.

No es bueno que nadie pueda entrar así y ver que bases de datos tenemos en elservidor. Para tapar esta vulnerabilidad del sistema hacemos clic sobre la opción Privilegios.

Ahora marcamos los tres primeros usuarios llamados cualquiera y seguidamente pinchamossobre el botón Continuar que se encuentra más abajo.

Una vez borrados, no mostrara un mensaje de éxito como:

Page 102: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 95

Ahora solo el usuario root con la contraseña que introducimos durante la instalación delsistema operativo podrá acceder a PhpMyAdmin para administrar las bases de datos quenecesitemos.

Esto tan solo ha sido una medida de seguridad no necesaria para el correcto funcionamientodel servidor pero si es recomendable ya que si no hacemos esto nuestras bases de datos puedenverse comprometidas en un momento dado.

10.5. Servidor FTP

Para poder subir y bajar archivos hacia nuestro servidor en Ubuntu Server necesitamosinstalar un software que sea capaz de ofrecernos este servicio.

A continuación vamos a instalarlo y configurarlo para que podamos subir y bajar archivosde nuestro servidor en Ubuntu Server. Para ello vamos a identificarnos con nuestro usuario desistema (juaramir) e instalaremos el software Proftpd

Teclea: # apt-get install proftpdDurante la instalación veremos una pantalla como esta:

Page 103: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 96

Seleccionamos la opción independiente para que nos haga funcionar el servidor FTP comoservidor independiente.

Una vez instalado vamos a añadirle una linea al archivo de configuración de proftpd.confcon la que aremos que cuando un usuario se conecte a nuestro servidor con una cuenta propiano pueda navegar por mas directorios que por los suyos propios.

No es necesario pero así nos aseguramos de que nadie nos tocará nada en el disco duro.Editamos el archivo proftpd.confTeclea: # nano /etc/proftpd/proftpd.confY agregamos al final del archivo DefaultRoot ∼ quedando así

Una vez hagamos esto guardamos el fichero de configuración y salimos del editor nano pul-sando la tecla F2, después la Y y el Enter.

Ahora solo nos queda reiniciar el servidor Proftpd y empezar a subir y bajar archivos desdedonde queramos

Teclea: # /etc/init.d/proftpd restart

Si accedemos a nuestra cuenta FTP con nuestro usuario podremos navegar por nuestro directorio/home/usuario y tendremos permisos suficientes para hacer lo que nos venga en gana.

Esto esta muy bien pero también estaría bien el poder tener la raíz de nuestro servidor Webaccesible desde el FTP para poder manejar los archivos que queremos compartir vía Web ennuestro servidor.

Para esto vamos a configurar uno de los archivos de configuración de Apache Web Servery le indicaremos que la raíz de nuestro servidor Web va a ser uno de los directorios que seencuentra dentro de nuestra cuenta de usuario.

Para empezar vamos a crear un directorio dentro de nuestro home donde todo lo que copiemoslo podremos compartir vía web (Yo le voy a llamar web).

Teclea: $ mkdir /home/[tu usuario]/webUna vez creado el directorio vamos a editar el archivo default ubicado en la ruta /etc/apache2/sites-

available/

Page 104: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 97

Teclea: # nano /etc/apache2/sites-available/defaultVeremos una pantalla como esta pero con /var/[tu usuario]Veremos una pantalla como esta pero con /var/www

Tan solo tenemos que modificar la ruta /var/www/ por la ruta de tu directorio /web. Enmi caso

Una vez hagamos esto guardamos el archivo de configuración y salimos del editor nano pulsandola tecla F2, después la Y y el Enter.

Reiniciamos nuestro Servidor Web Apache para que los cambios surjan efecto.Teclea: # /etc/init.d/apache2 restartSeguidamente borramos el archivo index.html de la ruta /var/www para que podamos ver

todos los archivos que subamos al directorio webTeclea: # rm /var/www/index.htmlAhora todo lo que subamos al directorio /web podremos verlo desde nuestro navegador

simplemente con poner la ip de nuestro servidor (http://192.168.0.101).

Page 105: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 98

10.6. Dominios

Para todos los que no tenemos una IP estática en internet nos es necesario registrarnos enalguna web que ofrezca un servicio de redireccionamiento de DNS y ojala gratuito. Necesita-mos esto para que cuando nuestra IP cambie podamos localizar nuestro servidor desde Internet.Para poder ver lo que tengamos por el apartado web o transferir archivos a nuestro FTP oconectarnos directamente por SSH y tomar el control de la maquina allí donde estemos. Paraello vamos a usar el servicio que nos ofrece DynDNS o No-IP.

Lamentablemente los actualizadores de IP ya no están soportados para que ubuntu lo hagadirectamente, por lo que es importante que tu router tenga esta capacidad y veas cuales soportapara que te elijas crees una de esas cuentas, por lo general los routers mas actuales soportanDynDNS o No-IP.

Para DynDNS, debes registrarte y añadir los datos de una tarjeta de crédito, una vez teinscribas, desactivas la tarjeta y automáticamente quedaras con la cuenta Free que solo permiteuna redirección IP por cuenta. En cambio, No-IP no requiere registrar tarjeta y es mas sencilloy permite mas de una IP por cuenta.

Una vez tengas lo siguientes datos

Email de usuario (Nombre de usuario)Password (Contraseña)Dominio registrado (En mi caso prueba.homelinux.com)

Debes procurar añadirlo a tu router (necesario que el router tenga la capacidad de aceptarredireccionadores de dominio) para que se encargue de hacer el llamado a DynDNS y actualizarlos datos.

Page 106: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 99

Una vez completados todos los pasos ya podemos estar seguros de que cuando nuestra IP cambienuestro router mandará un aviso con nuestra IP hacia el servicio de DNS y relacionará el dominioque registramos (prueba.homelinux.com) con nuestra IP actual.

10.7. Entorno Gráfico

Vamos a instalar un entorno gráfico minimalista como FluxBox que te instala solo lo justo paraque puedas tener un entorno gráfico mas agradable que la terminal a secas.

Si instalas Gnome, KDE o incluso Xfce entiende que sobrecargaras el sistema y no es quese vaya a morir nuestro servidor si no que todo ira más lento, y más si sumamos que hay usuariosvisitando nuestras paginas, subiendo archivos y bajando desde el FTP o imprimiendo algo connuestra impresora. Si tu computador no es potente no lo instales pero si crees que está bien, escosa tuya.

Antes de instalar el entorno gráfico hay que instalar el servidor gráfico Xorg. La instalaciónde estos dos programas es muy sencilla. Para hacerlo accedemos a una Terminal con nuestrousuario de sistema.

Teclea: # apt-get install xorgAhora instalamos el entorno gráfico FluxBoxTeclea: # apt-get install fluxboxUna vez terminada la instalación de Xorg y FluxBox vamos a iniciar el entorno gráfico.Teclea: $ startxAhora estamos ante un entorno súper sencillo sin iconos y con 4 escritorios además de algunas

utilidades que podremos descubrir con un solo clic con el botón derecho de tú ratón.

Page 107: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 100

Si necesitamos una Terminal tenemos que hacer clic con el botón derecho del mouse y seguirel menú Aplicaciones -> Consolas -> Bash una vez allí podemos usarla para seguir comolo hemos estado haciendo hasta ahora.

Este entorno gráfico se ha montado solo para momentos puntuales donde necesite de unnavegador que pueda usarlo sin problemas. Como navegador he elegido firefox.

Teclea: # apt-get install firefoxUna vez instalado lo podemos ejecutar desde una Terminal con solo teclear la palabra firefox

o hacer clic con el botón derecho del mouse y seguir el menú Aplicaciones -> Red -> firefox.Para salir del entorno gráfico y volver al modo Terminal de siempre tan solo tendremos que

hacer clic sobre el botón derecho del mouse y seleccionar ExitAhora cuando necesitemos un entorno gráfico y ligero que nos permita navegar tan solo

tendremos que teclear el comando startx y usarlo sin problemas, eso si solo cuando lo necesitemosasí nuestra maquina irá más ligera de recursos.

10.8. Servidor de archivos Samba

Si recordamos la instalación de Linux Ubuntu Server que hicimos al principio de este manualveremos que marcamos la opción Samba File Server. Al marcar esta opción se instalaronautomáticamente todas las aplicaciones necesarias para poder compartir archivos entre maquinasWindows y Linux.

Page 108: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 101

Si no lo hiciste durante la instalación, teclea:# apt-get install samba samba-common smbclient libpam-smbpassExisten dos maneras de configurarlo, la primera configurando el archivo llamado smb.conf

ubicado en la ruta /etc/samba y hacerlo todo a mano.La otra manera de hacerlo es gráficamente con un interface que nos facilite esta labor.Para empezar vamos a identificarnos en el sistema con nuestro usuario e iniciaremos el entorno

gráfico FluxBox.Teclea: $ startxA continuación accedemos a una Terminal pulsando el botón derecho del ratón y siguiendo

el menú Aplicaciones -> Consolas -> BashAntes de tocar nada vamos a instalar la aplicación system-config-samba y un par de

dependencias que necesita para poder funcionar.Teclea:# apt-get -y install system-config-samba python-gtk2 python-glade2Seguidamente arrancaremos el interfaz gráfico de samba que nos acaba de instalarTeclea: # system-config-samba

A continuación vamos a compartir carpetas de la forma más fácil que pueda existir sin pedircontraseñas ni usuarios a nuestros clientes.

Para hacer esto lo primero que necesitamos hacer es configurar el servidor SAMBA para quesea del mismo grupo de red que los demás equipos conectados a él con Windows.

Para esto vamos a pulsar el botón Preferencias y a continuación Configuración del Ser-vidor.

Page 109: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 102

En la primera casilla Grupo de trabajo debemos incluir el nombre que tenemos como grupode trabajo en Windows.

Una vez configurado lo anterior continuamos con la pestaña Seguridad y dejaremos todaslas casillas tal cual ven en la imagen.

Continuamos con el botón OK y ya estamos listos para compartir carpetas y archivos tanto enWindows como en Ubuntu en este caso.

Para compartir algún directorio haremos lo siguiente. Primero pulsamos el botón AñadirRecurso Compartido y veremos la siguiente ventana.

Ahora pulsaremos el botón Examinar

Page 110: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 103

Ahora vamos a crear una carpeta que compartiremos con todos los computadores de nuestrared con el botón Create Folder e introducimos el nombre que deseemos para ese directorio.

Una vez creado el directorio pulsamos el botón OK y como podemos ver ya se ha agregadoese nombre a la casilla Directorio y a la casilla Nombre de recurso compartido.

En la casilla Descripción podemos incluir una descripción de la carpeta que vamos a com-partir. Esto es opcional ya que no interviene en nada al funcionamiento del servidor.

Marcamos las casillas Permiso de Escritura y Visible (si lo deseamos) quedándonos así

A continuación pulsamos sobre la pestaña Acceso y marcamos la casilla Permitir accesoa todos (si lo deseamos) quedándonos así:

Page 111: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 104

Para finalizar cerramos esta ventana con el botón OK.Esta es la configuración menos segura ya que puede conectarse cualquiera a nuestro recurso

compartido siempre y cuando pueda conectarse físicamente a nuestra red de área local conectandoun cable de red a nuestro switch o router.

Se pueden agregar usuarios e incluso tener que identificarse en el servidor cuando queramosacceder al recurso compartido.

La única medida de seguridad que necesitamos para que nadie pueda acceder al recursocompartido desde Internet es asegurarnos de no tener abierto el puerto para Netbios 139 ennuestro Router así cuando alguien haga desde fuera una petición al puerto 139 nuestro Routerno sabrá a que maquina redireccionarla y no le devolverá respuesta alguna.

Para finalizar la configuración de la carpeta que acabamos de crear necesitamos darle permisospara que se pueda escribir, borrar y leer en ella. Para esto vamos a abrir una Terminal pulsandocon el botón derecho del ratón y siguiendo el menú Aplicaciones -> Consolas -> Bash

En nuestro caso creamos una carpeta llamada almacén y vamos a darle permisos totalespara que todos puedan leer y escribir en el directorio

Teclea: # chmod 777 /home/[tu usuario]/almacenY todo listo ahora en Windows podemos ver el directorio compartido desde Mis Sitios de

Red y desde Linux en Lugares -> Red

10.8.1. Configuración Samba sin Entorno Grafico ***(pendiente)***

Juaramir: Esta sección se completará prontamente END.

10.9. Blog con Wordpress

Page 112: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 105

Si han siguiendo este manual sobre como montar un servidor con Ubuntu Server tendrán unamaquina preparada para funcionar y servir al publico lo que ustedes quieran.

A continuación vamos a instalar WordPress para montar un Blog y tenerlo como paginaprincipal al acceder a nuestro servidor. Para que funcione correctamente necesitamos un servidorApache Web Server, soporte para PHP y bases de datos MySQL cosas que ya deberíantener funcionado a este punto.

Para empezar arrancamos nuestro servidor y nos identificamos con nuestro usuario de sistema.La carpeta raíz de mi servidor Web es /home/[tu usuario]/web y es justo aquí dondetenemos que montar WordPress y así lo veremos directamente al introducir la IP local o desdeInternet con el dominio http://prueba.homelinux.com que registramos anteriormente.

Vamos a situarnos una carpeta más arriba que la que comparte el servidor Web, en /ho-me/[tu usuario]/

Teclea: $ cd /home/[tu usuario]Descargamos la ultima versión de WordPressTeclea: $ wget http://wordpress.org/latest.tar.gzLuego lo descomprimimos: $ tar xvzf latest.tar.gzComo verán se nos ha creado una carpeta llamada wordpress.Este programa para funcionar necesita una base de datos MySQL que vamos a crear a

continuación.Vamos a abrir un navegador desde otro computador de nuestra red y vamos a introducir la

siguiente direcciónhttp://ipdetuservidor/phpmyadmin (http://prueba.homelinux.com/phpmyadmin)

A continuación introducimos el nombre de usuario y el password.Para crear una base de datos tan solo tenemos que seleccionar el botón Base de Datos e

introducir el nombre que queramos en la casilla y luego presionar crear

Page 113: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 106

Una vez creada la base de datos volvemos a nuestra Terminal en el servidor y vamos a accederal directorio que se nos creo llamado wordpress al descomprimir el archivo anteriormente.

Teclea: $ cd /home/usuario/wordpress/Creamos una copia de el archivo wp-config-sample.php y la llamaremos wp-config.phpTeclea: $ cp wp-config-sample.php wp-config.phpAhora vamos a editarlo con el editor nano y lo configuraremos para que WordPress lea y

escriba la base de datos que creamos anteriormenteTeclea: $ nano wp-config.phpEn este archivo tan solo tenemos que modificar tres lineas para que use nuestra base de datos

MySQLdefine(’DB_NAME’, ’putyourdbnamehere’); // Nombre de la base de datosdefine(’DB_USER’, úsernamehere’); // Nombre de usuario de MySQLdefine(’DB_PASSWORD’, ’yourpasswordhere’); // Password del usuario

Una vez modificados estos datos en negrita por los nuestros guardamos el archivo y salimos conla tecla F2 -> Y -> Enter.

Ahora vamos a copiar todo el contenido de la carpeta wordpress a el directorio raíz denuestro servidor Web

Teclea: $ cp -r /home/usuario/wordpress/* /home/usuario/web/Ahora volvemos a abrir un navegador en un computador cliente o desde nuestro entorno

gráfico e introducimos http://ipdetuserver y veremos la siguiente pantalla

Page 114: Comandos Basicos Linux

Capítulo 10. Servidor GNU/Linux 107

Rellenamos las casillas con el nombre y correo electrónico y luego pulsar el botón Install Word-Press

Y listo!, ahora solo debes acceder a tu web con http://ipdetuservidor/wp-admin y co-menzar a publicar.

10.10. Lecturas Recomendadas

10.10.1. Bloquear Ataques de Fuerza Bruta

Pueden proteger mas su servidor web siguiendo este manual:Bloquear Ataques de Fuerza Bruta

10.10.2. Añadir Host Personalizado

Unmanual bastante practico para añadir un host personalizado se encuentra regoremor.com

10.10.3. Otros Servidores

Blog Forat.info sobre Servidores en GNU/Linux.

Page 115: Comandos Basicos Linux

Capítulo 11

Punto de Restauración con Clonezilla

Clonezilla es un programa que nos permite crear imágenes de nuestro disco duro, de modoque después podamos volcarlas en el mismo equipo (a modo de copia de seguridad del sistema) oen otro con iguales características (para tener varios equipos instalados con el mismo software).

Los únicos requisitos son tener un CD o USB de arranque con el sistema Clonezilla y unDisco Duro Externo.

11.1. Inicio

Seleccionamos en nuestra bios el arranque desde el CD/USB que habremos preparado pre-viamente con Clonezilla. Nos aparece el menú inicial dónde seleccionamos qué tipo de interfazpreferimos.

108

Page 116: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 109

Selección del Idioma:

Selección del Teclado:

Page 117: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 110

Seleccionamos qué tipo de imagen vamos a realizar, de disco a imagen o de disco a disco.Seleccionamos de disco a imagen.

Seleccionamos dónde vamos a subir/extraer la imagen: a un disco local o externo, a unservidor nfs, ssh...

Seleccionamos local_dev para utilizar el disco externo.

Page 118: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 111

11.2. Crear Imagen para Respaldo

Selecciona Disco externo para almacenar la imagen:

Seleccionamos el modo que vamos a emplear:savedisk: salvar la imagen de todo el disco.restoredisk: restaurar la imagen de todo el disco.saveparts: salvar una partición.restoreparts: restaurar una partición.

Seleccionamos “savedisk”

Le damos un nombre al Archivo que albergará nuestra imagen.

Page 119: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 112

Última pregunta de confirmación antes de comenzar a Crear la imagen, respondemos “y”

Page 120: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 113

11.3. Utilizar Imagen para Restaurar

Seleccionamos el modo que vamos a emplear:savedisk: salvar la imagen de todo el disco.restoredisk: restaurar la imagen de todo el disco.saveparts: salvar una partición.restoreparts: restaurar una partición.

Seleccionamos “restoredisk”Selección del Disco de la Imagen:

Selección del la Imagen:

Selección del Disco de Destino:

Page 121: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 114

Comienza el Proceso de Restauración:

Presiona y para continuar (elimina todo el contenido del disco)

11.4. Resumen

11.4.1. Creación de Imagen

1. Enter2. Enter3. Enter4. Enter5. Enter6. Enter7. Seleccionar Partición del disco externo donde guardar la imagen (Flechas, Espacio y Enter)8. Seleccionar el modo (savedisk o saveparts)9. Nombre de la imagen y Enter

10. Seleccionar el Disco o partición(es) a respaldar (Flechas, Espacio y Enter)11. Teclea y y luego presiona Enter.12. esperar a que finalice y luego presionar Enter.

Page 122: Comandos Basicos Linux

Capítulo 11. Punto de Restauración con Clonezilla 115

11.4.2. Restauración de Imagen

1. Enter2. Enter3. Enter4. Enter5. Enter6. Enter7. Seleccionar Partición del disco externo donde esta la imagen (Flechas, Espacio y Enter)8. Seleccionar el modo (restoredisk o restoreparts)9. Selecciona la imagen y Enter

10. Seleccionar el Disco o partición(es) a restaurar (Flechas, Espacio y Enter)11. Teclea y y luego presiona Enter.12. esperar a que finalice y luego presionar Enter.