Manual Mantenimiento Básico de servidores basados en GNU/Linux Universidad Nacional Heredia, Costa Rica Actualizado al 06 de Agosto de 2009 Por: José Pablo Carvajal Chaves Para efectos de la ejecución de los comandos explicados en este manual se recomienda total seguridad, principalmente en servidores que se encuentran en producción. Licencia de Publicación Esta obra está licenciada bajo una Licencia Atribución 3.0 Unported de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by/3.0/ o envíenos una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. PNUD 1/23
Índice Contenido Página Primer Parte: Conceptos Básicos 1 Segunda Parte: Conexiones remotas 7 Tercera Parte: Editores de texto en consola 11 Cuarta Parte: Comandos básicos 12 Quinta Parte: Comandos de administración 14 Sexta Parte: Administración de usuarios 18 Séptima Parte: Actualización del sistema 21 Referencias 22 PNUD 2/23
Primera Parte Conceptos Básicos 1. Distribución utilizada por los servidores: Debian es una comunidad conformada por desarrolladores y usuarios, que mantiene un sistema operativo GNU/Linux basado en software libre, para múltiples arquitecturas de computador y en varios núcleos. Existen varias fases para la distribución Debian: Estable (se refiere a la versión totalmente estable del sistema operativo. Es la que más se recomienda instalar), Pruebas (conocida como testing y es la versión que permite probar la mayoría de paquetes para próximas versiones estables), Inestable (versión activa de desarrollo) y Congelada (se congela en caso de localizar muchos errores en la versión de desarrollo). En caso de necesitar otros conceptos básicos del proyecto y distribución Debian visite: http://www.debian.org/intro/about.es.html#what 2. Algunos conceptos iniciales: Qué es una Partición? Es la división física de nuestro disco duro en partes más pequeñas. Qué es la memoria virtual? Es la memoria utilizada para realizar y completar las operaciones en ejecución en una máquina, generalmente esta memoria es parte del disco duro o un archivo que funciona como extensión de la memoria convencional de la máquina. Qué es un punto de montaje? Una vez que tenemos una partición en nuestro disco duro y es debidamente formateada, para efectos de visualizarla como parte de un sistema de archivos se hace necesario montarla en un sistema, para lo cual se debe indicar el punto de montaje y la localización específica dentro del sistema. Al instalar nuestro sistema operativo, el mismo se encarga de levantar los puntos PNUD 3/23
de montaje. Qué es un paquete? Un paquete de software es la compilación específica para una arquitectura de procesador (32 bits ó 64 bits) de un programa, el cual permite instalarlo en nuestro sistema con sus especificaciones y documentación respectiva. Qué es un filesystem? Es la forma de organizar archivos y directorios en un sistema, posee operaciones, y estructuras de datos. Algunos ejemplo de sistemas de archivos son: fat, fat32, NTFS, ext3, xfs. Los servidores utilizan por defecto ext3, en caso contrario el que sea definido por la persona que instala. Actualmente la tendencia es definir nuestro sistema de archivos como ext4. 3. Anatomía de un sistema GNU/Linux La forma de un sistema GNU/Linux se define de acuerdo a la estructura basada en capas según su aplicabilidad: A. Kernel: Se refiere al núcleo del sistema operativo el cual está basado en Linux. B. Aplicaciones GNU: El proyecto GNU y colaboradores se encargan de producir una serie de aplicaciones (Software Libre). Éstas aplicaciones son pequeños módulos funcionales separados unos de otros que se ligan al kernel. PNUD 4/23
C. Niveles: hay diferentes aplicaciones según el tipo de usuario dentro del sistema: aplicaciones y módulos para programadores, módulos para administradores, bibliotecas e interpretadores de alto nivel y programas para usuario final. Cabe aclarar que cada paquete instalado en GNU/Linux posee ciertas dependencias y cuando un programa es eliminado del sistema operativo se eliminan consigo las dependencias (si éstas no están ligadas a otro programa) manteniendo la estabilidad del sistema operativo por mayor tiempo. 4. Jerarquía de sistema de archivos en GNU/Linux PNUD 5/23
5. Intérprete de comandos Es un programa que permite comunicarse a nivel de usuario con una serie de funcionalidades que están presentes en cada distribución. El intérprete de comandos proporciona una serie de instrucciones similares a un lenguaje de programación por lo cual se le llama Shell programable. 6. Conceptos de Red A. Host: Es una máquina o dispositivo existente dentro de una red. B. Localhost: Es la máquina de red en la que nos encontramos ubicados físicamente. C. Gateway: Puerta de enlace o máquina que nos sirve de ruteo para obtener servicios de red. D. DNS: Servidor de nombres de la red, es el que hace posible que una dirección IP sea conocida como dominio (p ej. www.cc.una.ac.cr). PNUD 6/23
Segunda Parte Conexiones Remotas 1. Servicio SSH: SSH (Secure Shell: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos. SSH trabaja de forma similar al comando telnet, difieren en que SSH usa técnicas de cifrado para que la información que viaja por el medio de comunicación vaya de manera no legible y ninguna tercera persona pueda descubrir el usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión. 2. Conexión SSH (cliente) desde GNU/Linux: Para iniciar una conexión SSH (cliente) desde GNU/Linux debemos ingresar a la terminal o consola en: Aplicaciones Accesorios Terminal La pantalla mostrada es: Para iniciar una sesión SSH con un servidor escribimos: :~$ ssh direccion IP l usuario Ejemplo: :~$ ssh 10.0.2.2 l administrador PNUD 7/23
Realizamos una conexión segura al servidor: Nótese que ya nos encontramos (en la misma pantalla) bajo el dominio del host ccomputo@web:~$, lo cual nos indica que nos encontramos dentro del servidor. A partir de este momento podemos ejecutar acciones sobre el servidor de manera remota. 3. Conexión SSH (cliente) desde MS/Windows: Para la conexión utilizaremos el programa SSHSecureShellClient, en caso de no tenerlo instalado es posible obtenerlo del servicio FTP de la Universidad Nacional en la siguiente dirección: ftp://ftp.una.ac.cr/pub/pc/otros/ssh Tools/ Para iniciar una conexión SSH (cliente) desde MS/Windows debemos ingresar al programa en: A. El escritorio: Encontrará dos accesos directos, el SSH Secure Shell Client permite realizar conexiones a nivel de consola; el SSH Secure File Transfer Client permite transferir archivos de manera segura al servidor. B. Inicio Todos los programas Ssh Secure Shell SSH Secure Shell Client PNUD 8/23
Se nos mostrará una pantalla igual a la siguiente: Para iniciar la sesión con el servidor presionamos la tecla Enter ó la barra espaciadora. Igualmente podemos iniciar sesión presionando File Quick Connect... PNUD 9/23
Nótese que ya nos encontramos (en la misma pantalla) bajo el dominio del host ccomputo@web:~$, lo cual nos indica que nos encontramos dentro del servidor. A partir de este momento podemos ejecutar acciones sobre el servidor de manera remota. NOTAS: En caso de problemas para realizar la conexión SSH a un servidor recordemos verificar: A. El estado de la conexión a la red del servidor: si tenemos acceso al servidor verifiquemos las conexiones de red y el parpadeo de los dos led's que posee la tarjeta de red. B. Utilicemos el comando ping para verificar si el servidor escucha al mundo exterior. Para ejecutar el comando ping (tanto en MS/Windows como en GNU/Linux) utilizamos: ping ip (del servidor). Ej. ping 10.0.2.2 En caso de realizar las pruebas anteriores y no obtener respuesta del servidor, algunas de las posibles causas del problema: A. Problema del sistema operativo y de su conexión a red. B. El servidor está siendo víctima de un ataque de negación de servicio. PNUD 10/23
Tercera Parte Editores de texto en consola Entre los principales editores de texto en consola se encuentran: pico, vi, etc. Nos centraremos en el editor pico, el cual nos permite de una forma rápida, a nivel de consola, editar archivos e inclusive crear nuevos archivos. Principales acciones en el editor pico: Control + g : Permite visualizar la ayuda del pograma Control + o : Permite guardar el documento Control + w : Permite buscar coincidencias dentro del texto Control + k : Permite copiar la selección de texto hecha dentro del documento Control + u : Permite pegar texto Control + x : Permite salir del programa La consola se visualiza de la siguiente manera: Nótese la leyenda de comandos en la parte inferior. Para aplicar el comando pico basta con hacer lo siguiente: PNUD 11/23
ccomputo@web:~$ pico nombredearchivo ccomputo@web:~$ pico prueba.txt ccomputo@web:~$ pico /etc/php5/apache2/php.ini Cuarta Parte Comandos Básicos A. Lista ls cd du top date find mkdir rm cp clear Comando Acción Lista los archivos que se encuentran en un directorio específico. Permite navegar dentro del sistema de directorios. Similar al comando cd de MSDOS. Permite determinar las características de tamaño de un archivo. Permite ver los procesos que se están ejecutando en la máquina. Permite visualizar la fecha actual del sistema. Permite localizar archivos o carpetas dentro del sistema de archivos. Se utiliza para crear directorios. Permite borrar archivos y directorios. Se utiliza para copiar archivos. Permite limpiar la pantalla de la consola. B. Aplicación de los comandos Comando ls: $ ls l Nos permite visualizar el contenido de una carpeta y los permisos de cada archivo. $ ls a Nos permite visualizar el contenido de una carpeta incluyendo las carpetas ocultas. Comando cd: $ cd / Nos llevará al punto de montaje /. PNUD 12/23
$ cd home Nos permite acceder a la carpeta home. $ cd.. Nos permite salir de la carpeta en la que estamos situados actualmente. Manual Básico Comando du: $ du archivo.txt Nos dice el tamaño en BYTES $ du sh archivo.txt Nos dice el tamaño en MEGAS Comando top: Al ejecutar el comando top tendremos una salida como la siguiente: Podemos visualizar la información de procesos (PID USER, consumo de memoria, consumo de procesador), así como la memoria utilizada por el sistema, la memoria disponible, entre otra información importante. Comando date: $date Nos permite visualizar la fecha y hora del servidor. Comando find: $ find / name archivo.txt Busca todas las conincidencias con archivo.txt desde / por todo el árbol del sistema de archivos. PNUD 13/23
$find name archivo.txt Busca en la ruta actual el archivo especificado. NOTA: para ejecutar efectivamente dicho comando muchas veces se necesitan privilegios de administrador. Comando mkdir: $ mkdir nuevacarpeta Permite crear nuevas carpetas. Comando rm: $ rm archivo.txt Permite eliminar el archivo especificado. $ rm r directorio Permite eliminar una carpeta y todo su contenido. NOTA: para ejecutar efectivamente dicho comando muchas veces se necesitan privilegios de administrador. Comando cp: $ cp archivo ruta Permite copiar el archivo especificado en la ruta determinada. $ cp texto.txt /var/www NOTA: para ejecutar efectivamente dicho comando muchas veces se necesitan privilegios de administrador. Comando clear: $ clear Limpia la pantalla de cosola PNUD 14/23
Quinta Parte Comandos de Administración A. Lista su init 0 init 6 ifconfig init.d man free sysstat Ctrl + c route df netstat ping Comando Acción Permite loguearse como superusuario dentro de la máquina. Permite apagar el equipo. Permite reiniciar el equipo. Permite visualizar la dirección IP de la máquina. Permite iniciar/reiniciar/detener los servicios dentro de la máquina. Permite visualizar la ayuda en consola para un comando. Permite visualizar la cantidad de memoria libre y utilizada. Paquete con utilidades para monitorear el rendimiento del sistema. Permite cancelar acciones. Permite visualizar la tabla de ruteo de nuestro equipo. Permite visualizar el espacio libre y utilizado en disco. Monitorea los procesos de red en el equipo. Permite verificar la respuesta vía red de un equipo específico. B. Aplicación de los comandos NOTA: para ejecutar efectivamente dichos comandos muchas veces se necesitan privilegios de administrador. PNUD 15/23
Comando su: $ su Inmediatamente el sistema le solicitará la contraseña de superusuario. Comando init 0: $ init 0 Apagará de manera inmediata el equipo Comando init 6: $ init 6 Reiniciará de manera inmediata el equipo. Comando ifconfig: $ ifconfig Permite visualizar el ip de la máquina. Comando init.d: Para iniciar, reiniciar, detener servicios en una distribución GNU/Linux se debe hacer uso de init.d $ /etc/init.d/mysql start/restart/stop $ /etc/init.d/apache2 start/restart/stop Comando man: $ man ls Permite visualizar la ayuda del sistema para el comando ls. Para salir de la ayuda presionar q. Comando free: $ free Nos muestra el nivel de uso de la memoria del sistema PNUD 16/23
Comando sysstat: NOTA: para la ejecución de estos comandos es necesario instalar el paquete sysstat. $ iostat d 2 Reporte continuo de dispositivos cada 2 segundos. $ mpstat P ALL 2 5 Muestra cinco reportes de estadísticas globales para todos los procesadores en intervalos de 2 segundos. $ sar u 2 5 Reporta el uso de CPU por cada 2 segundos. Comando ctlr + c: Permite detener cualquier acción en consola. Comando route: $ route Permite visualizar la tabla de ruteo de nuestro equipo. Comando df: $ df h Visualiza el espacio libre y ocupado de nuestro equipo. PNUD 17/23
Comando netstat: $ netstat Permite visualizar los procesos de red de nuestro equipo Comando ping: $ ping 10.0.5.10 Permite visualizar la respuesta del IP especificado (conexión a la red) PNUD 18/23
Sexta Parte Administración de usuarios A. Lista passwd ls l chgrp chown chmod Comando Acción Permite cambiar la contraseña de un usuario específico. Permite listar (archivos y carpetas) con los permisos de cada uno. Permite cambiar el grupo al que pertenece un archivo ó carpeta. Permite cambiar el usuario al que pertenece una carpeta ó archivo. Permite cambiar los permisos de un archivo ó carpeta. B. Aplicación de los comandos Al ejecutar un comando como ls l, la salida por pantalla es la siguiente: PNUD 19/23
La notación simbólica de los atributos es Read ( r ), write (w), Execute (x). Comando passwd: Si no es usuario administrador, éste comando lo podrá utilizar únicamente para cambiar su propia contraseña, en casos de ser superusuario podrá cambiar cualquier password de cualquier usuario de la máquina. $ passwd Changing password for usuario Old password : xxxx New password: xxxx Retype new password: xxxx $ passwd usuario Cambia la contraseña para el usuario especificado. Comando ls l: $ ls l Permite visualizar los permisos de archivos y carpetas. $ ls l /var/www Permite visualizar los permisos de la carpeta especificada. Comando chgrp: $ chgrp others archivo Permite cambiar el grupo al que pertenece un archivo ó carpeta. Comando chown: $ chown operadores archivo Permite cambiar el usuario al que pertenece el archivo ó carpeta especificada. Comando chmod: PNUD 20/23
FORMA OCTAL: $ chmod 755 archivo $ chmod 644 /var/www FORMA SIMBÓLICA $ chmod u+r archivo $ chmod u+rwx /var/www SIGNIFICADO MODO SIMBÓLICO Quiénes: u : Usuario dueño del archivo g : Grupo de miembros o : Otros, es decir el mundo entero a : Todos Qué hacer: : quita el permiso indicado +: Activa el permiso indicado =: deja igual los permisos Permisos: r : Acceso lectura w : Acceso de escritura x : Acceso de ejecución PNUD 21/23
FORMA OCTAL: Séptima Parte Actualización del sistema Para realizar instalaciones ó actualizaciones en el sistema debe estar identificado como superusuario: 1. Archivos de repositorios: Conocido como el source list, es el archivo que le indica al sistema operativo los repositorios o mirrors de donde descargar paquetes ó actualizaciones del sistema. $ pico /etc/apt/sources.list PNUD 22/23
2. Comandos: $ apt get update Actualiza la información de repositorios en nuestro sistema. $ apt get upgrade Ejecuta un actualización total de nuestro sistema. $ apt get install paquete Realiza una instalación del paquete seleccionado. $ apt cache search paquete Realiza una búsqueda del paquete ó coincidencias. Referencias Manual de capacitación GNU/Básico, Coral Systems. Biblioteca en línea Wikipedia. Material GNU/Avanzado, UOC. PNUD 23/23