• No se han encontrado resultados

Sug3k Administracion de GNULinux

N/A
N/A
Protected

Academic year: 2021

Share "Sug3k Administracion de GNULinux"

Copied!
180
0
0

Texto completo

(1)

Su|GE3K

ADMINISTRACIÓN DE

GNU/LINUX

Frank Harbey Sanabria Florez @franksanabria

(2)

INDICE DE CONTENIDO

Licencia...7

SOBRE DEL AUTOR...8

Prólogo...10

¿Por Que Gnu/Linux?...13

¿Donde Esta Linux?...15

Selección De La Distribución E Instalación...17

Recuperar Password de root por GRUB...35

Niveles de Ejecución...36

Archivo /etc/inittab...36

Archivo /etc/init.d/rc...37

Servicios en /etc/init.d...38

Ventajas Generales...38

Desventajas Generales...38

Unidades Objetos y Servicios...39

Servicios...39

Acciones...40

Sistema De Archivos...41

Trabajando Con Gnu/Linux...46

Comando TOP...49

Comando free...51

Comando w...51

Comando vmstat -s...51

Comando who y whoami...52

Comando id y groups...52

Comando lspci...52

Comando lsusb...52

Comando lscpu...53

Comando uname...53

Comando uptime...53

Comando lshw...53

Comando lsblk...54

Comando df...54

Comando blkid...55

Comando fdisk -l...55

Comando last y lastb...60

Comando du...61

Comando dmesg...61

Comando arch...61

Comando pstree...61

(3)

Comandos ifconfig, ip...62

Comando netstat...63

Comandos route -e y arp -e...64

Archivos de Estado del Sistema...64

Archivo /etc/services...64

Directorios:...65

Rutas Absolutas:...65

Rutas Relativas:...65

Trabajando con Directorios:...65

Trabajando con Archivos...66

Trabajando con Archivos y Directorios...66

Trabajando con la familia del comando z...67

Shell globbing...67

Archivos Enlaces...67

Compilando el Kernel...69

Comando lsmod...70

Comando modinfo...71

Comando depmod...71

Comando insmod...71

Comando rmmod...72

Comando modprobe...72

Algunas Opciones de Interés...73

Herramientas GNU/Linux...74

Comando tar...77

Comando zip y unzip...77

Comando gzip y gunzip...78

Editor de Texto vi...80

Introducción de datos...80

Salir y Guarar...81

Corrección...81

Desplazamiento...81

Búsqueda de texto...82

Comandos de sustitución...83

Copiar y Pegar...83

Sustitución...83

Edición avanzada...83

Comando set...84

Editor de Texto nano...85

Gestión de paquetes...86

Administración de Usuarios...91

adduser...94

(4)

chage...95

deluser y userdel...95

Usermod...96

groupmod...96

Chsh...97

Chfn...97

Permisos de Archivos y Carpetas...99

Sticky bit...102

set gid y set uid...103

Gestión de procesos y Servicios...104

Comando nice:...105

Comando renice...105

Redirecciones, Tuberías y Filtros...107

Comando basename y dirname...108

Comando tee...108

Comando grep...109

Comando egrep...109

Comando cut...110

Comando column...110

Comando tr...111

Comando sort...111

Comando uniq...112

Comando paste...112

Comando diff...112

Coincidencia con más caracteres...114

Ejemplos...114

La Shell en GNU/Linux...117

Regionalización(l10n)...117

Internacionalización (i18n)...117

Usos Horarios...118

Codificación de Caracteres...119

Operador &&...119

Operador ||...119

Operador &...120

Operador ;...120

Operador \...120

Operador #...120

Agrupación de Comandos...120

Comando echo...121

Comillas Doble “”...121

Comillas Simples ' '...121

Comillas invertidas ` `...121

Declaración de Variables...122

(5)

Variables Tipadas...123

Nuestro primer script...124

Control de Flujo...124

Control If:...124

Control case:...126

Ciclos:...126

Ciclo for...126

Ciclo while...127

Ciclo until...128

Funciones...128

Valores de retorno...129

Variables locales a la función...129

Operaciones Aritméticas...130

Operaciones lógicas y de comparación:...130

Interacciones con el Usuario:...131

Administración de Unidades de Almacenamiento...133

Comando mount...138

Comando umount...139

Comando fdisk...139

Habilitar las Cuotas...147

Habilitar las Cuotas a Usuarios...148

Habilitar las Cuotas a Grupos...148

Preparar los Discos Duros...149

Creando RAID con mdadm...149

Eliminar un RAID del sistema...152

Volúmenes Físicos (Physical Volumen)...153

Grupo Volúmenes (Volumen Group)...154

Volúmenes Lógicos (Logical Volumen)...155

Ampliar y Reducir un VG...156

Ampliar y Reducir un LV...159

Mover el contenido de un PV a otro PV...162

Suprimir un VG...165

Administración de Red...167

Logs del Sistema...174

sysklogd...174

RainerScript...176

TAREAS PLANIFICADAS...179

SEGURIDAD EN GNU/LINUX...182

Archivo /etc/sudoers...185

Limites del Usuario...186

(6)

LICENCIA

Esta obra esta bajo licencia de Creative Commons, la cual le permitirá distribuir y copiar esta obra cuantas veces quiera, y si piensa realizar alguna derivación de esta deberá de dar crédito a la obra mencionándola como fuente, y dicha obra derivada debe de estar bajo esta misma licencia o alguna similar, además esta obra no podrá usarse para fines comerciales a menos que cuente con la autorización del autor.

(7)

SOBRE DEL AUTOR

Frank Harbey Sanabria Florez, Nacido en la ciudad de Ibague/Colombia el 5 de septiembre de 1989, hijo único de un padre agricultor y madre ama de casa.

• 8 Años: Inicie clases de sistemas aprendiendo a manejar lo

que en su momento estaba de moda, el MS-DOS.

• 10 años: Me di cuenta que Windows Millenium no era estable y se mantenía bloqueando, aprendí a “Formatear” y reemplacé Millenium por el Windows 98 SE.

• 14 años: Conocí el Overlocking básico y como hacerlo, además ya mi Windows 98 SE por ciertas modificaciones que había hecho se parecía mas a un Windows XP.

• 15 Años: Inicio mi carrera como técnico en sistemas en un instituto salesiano, destacándome con honores.

• 17 Años: Mi primer trabajo como técnico en sistemas, y a los 3 meses me dan la

oportunidad de dirigir el mantenimiento a mas de 500 computadores en una entidad estatal.

• 19 Años: Inicio mi nueva carrera en el SENA como Tecnólogo en

Telecomunicaciones. Ya Windows no se adaptaba a mis necesidades y se había vuelto aburrido, es en donde descubro el mundo de GNU/Linux con Ubuntu 9.04 y empieza mi travesía.

Usando Ubuntu como herramienta para configurar Routers, Switch, a diseñar diagramas de red, me enamoro de la consola y descubro las herramientas necesarias que me servirían para implementar la red de un hospital estatal.

Luego Cambiaría a Ubuntu por Debian y luego este ultimo por eOS, pero usando Debian como servidor y ocasionalmente CentOS.

• 21 Años: Inicie como tecnico en un Callcenter. A los 5 meses de estar laborando se

me asignaron responsabilidades de la administración de los sistemas de datos y redes de la compañía (Dominio, Servidor de Archivos, Sharepoint, Firewall, Switch). Actualmente laboro en la misma compañía como coordinador de infraestructura, durante el tiempo que he laborado alli he logrado algunas metas como:

• Migrar Microsoft Share Point a Alfresco

(8)

• Migrar Office 2003 de 300 estaciones a LibreOffice

• Generar Documentación para ISO27000, ITIL, y ISO9001

Durante mi estadía en la empresa también he realizado actividades como independiente:

• Implementar Infraestructura de Red en NoMoreCards sede Bogota

• Instructor del Diplomado en Integración de Redes en Aula Matriz

• Instructor para Certificación LPIC-1 en NetSecuritySolutions

• Participar en como ponente en diferentes eventos (Flisol, SFD Bogota, Alcaldia de

Bogota).

• Vídeos sobre GNU/Linux (https://www.youtube.com/SuGE3K).

(9)

PRÓLOGO

La presente Obra se realiza con el fin de que usted, con pocos o medios conocimientos en GNU/Linux pueda desenvolverse en un mercado con una demanda de profesionales cada vez mayor en la utilización de este sistema. GNU/Linux se esta convirtiendo en la mejor alternativa para las Pymes y empresas en crecimiento.

Con esta, Iniciaremos un proceso largo pero interesante, iniciando con los aspectos generales de instalación y uso de la consola, hasta poder llegar a armar nuestra propia “Distribución” adaptada a nuestras necesidades.

Esperamos que esta obra sea de su agrado y la aproveche al máximo. ¡IMPORTANTE!

Esta obra tiene como requisito que el lector tenga nociones básicas sobre arquitectura de computadores.

No le presto mucha atención a lo que se hace con otros sistemas

operativos. No compito, Solo me preocupa hacer que Linux se

supere así mismo, no a los otros.

Linus Torvalds

(10)

-¿Que Es Linux?

Linux por si solo es la base de muchos sistemas operativos, los cuales van desde dispositivos móviles pasando por electrodomésticos, llegando a grandes proyectos como bolsas de valores y misiones espaciales.

Cabe destacar el hecho que Linux no es igual a GNU/Linux ya que como se menciona en el párrafo anterior, Linux es la base y GNU es el software, la fusión de estos dos lo hace un Sistema Operativo funcional para cualquier persona.

Linux es el bien conocido Kernel, el cual es el encargado de hacer la interacción de maquina – software – usuario - software – maquina, y en cualquier distribución llámese como se llame tendrá el mismo Kernel, diferenciado uno del otro con las diferentes modificaciones que cada distribución le haga a este para mejorar ciertos apartados del software usado.

Linux esta licenciado bajo GNUv2 la cual permite que cualquier persona u empresa copie, modifique y realice la actividad que desee con este, dicha libertad permitió que muchas empresas usen Linux hoy en día, como IBM, HP, DELL, Google, Facebook, NASA, Bolsa de Valores de NYC, y la misma Microsoft usa Linux en algunos de sus colaboradores.

¿Que Es GNU?

GNU es un proyecto fundado por Richard Stallman el 27 de septiembre de 1983, con el objetivo de crear un sistema operativo completamente libre, este ya posee la suficiente cantidad de Software para completar el sistema operativo, pero le hace falta el Núcleo, la comunicación entre sus programas y la maquina, para ello crearon el Kernel Hurd basándose en Unix, pero dicho kernel esta aun muy inmaduro para su correcto funcionamiento, así que se decidió usar el kernel Linux para integrar el software que ya estaba desarrollado.

GNU es el acrónimo de “GNU is not Unix” o en español “GNU no es Unix”

¿Que Es GNU/Linux?

GNU/Linux es la combinación de los anteriores desarrollos mencionados, asi que en pocas palabras podría indicarse lo siguiente.

GNU Provee el software y herramientas para que Linux sea mas amigable con el→ usuario final.

Linux Provee el núcleo (Kernel) con el cual estas herramientas se comuniquen con el→

Hardware.

Historia

A continuación enumeramos los hitos mas importantes dentro de la historia de GNU/Linux.

(11)

• Desarrollado por Linus Torvalds en la universidad de Helsinki como un hobby y es escrito en lenguaje C

• Basado en minix mas no derivado

• Nombre “Interno” inicial Freax

• 17 de septiembre de 1991 1ra versión publica

• Febrero de 1992 nace MCC Interim Linux la primera distribución de Linux

• 1993 Se adapta al proyecto GNU y nace Slakeware la distribución mas antigua

• Marzo del '94 lanzada la versión 1 de Linux

• 1996 la versión 2 es lanzada soportando gran cantidad de procesadores

• 1998 IBM, Compaq (Hoy parte de HP), y Oracle anuncian el soporte oficial a Linux.

• Torvalds escoge a Tux como mascota dibujado Por Larry Ewing.

• 2002 El primer gusano conocido para Linux. Slapper-worm.

• 2007 Google presenta Android el sistema operativo para Smartphones y Tablet's el

Cual esta basado en Linux .

• Mayo de 2011 sale la versión 3.0

(12)

¿POR QUE GNU/LINUX?

GNU/Linux hoy en día es la mejor opción para muchas empresas/gobierno, educación y usuarios finales, ya sea para trabajos de oficina, juegos, navegación por internet, desarrollos, y prestar servicios como servidores de alto rendimiento.

GNU/Linux en Empresas/Gobierno

En las empresas GNU/Linux esta en la capacidad de prestar la gran mayoría (por no decir el 100%) de los servicios que esta necesita ya sea para estaciones de trabajo o servidores, dándole la oportunidad a esta de no depender directamente de una 3ra empresa para soportar su plataforma y la inversión realizada se queda en el país donde se hizo la implementación y no se va para el arca de otros países, ayudando así al desarrollo.

GNU/Linux es la mejor alternativa para aquellos entes que desean, seguridad, estabilidad, fiabilidad, sumándole a todo esto el ahorro de costos a largo plazo que una empresa obtiene al implementar una solución de software libre.

En 5 puntos que se divide el gasto de una empresa al migrar de una plataforma a otra, GNU/Linux solo requiere la inversión en 3.

En la siguiente tabla se relaciona los gastos que se realiza al implementar software privativo y software libre.

Software

Privativo

Software Libre

Licencia

Capacitación

Implementación

Soporte

(13)

GNU/Linux en la Educación

Usar GNU/Linux en entes educacionales fomenta el desarrollo mental ya que alienta a los estudiantes a desarrollar o indagar mas sobre dicho sistema, ayudando asi al desarrollo integral del alumno y depender de si mismo y no de un 3ro. Además de dicho desarrollo integral que tendría el alumno, la utilización de herramientas de software libre, hace que las instituciones inviertan menos en software y mas en material didáctico.

Existen muchas distribuciones GNU/Linux enfocadas a la educación y software para que los alumnos aprendan el manejo de este sistema, pero GNU/Linux no solo se enfoca en el aprendizaje de su funcionamiento si no que también alienta a los mas pequeños a aprender con software sobre Matemáticas, Física, Calculo, Química y muchas mas áreas de interés según sea el enfoque de cada instituto.

Cabe destacar que la gran mayoría de estar herramientas son gratuitas y acceso publico, se recomienda realizar donaciones a las empresas desarrolladoras de estos software para alentar dicho trabajo para que asi sigan mejorando dia a dia.

GNU/Linux para Usted

Es y sera la mejor alternativa, ya que el uso normal de los usuarios es la navegación por internet, cliente de correo, y software de ofimática, todo esto se encuentra en GNU/Linux. GNU/Linux tiene una distribución para cada uno, para el científico, matemático, diseñador, DJ, desarrollador, etc.

Además dejar a un lado la piratería y estar tranquilo de que el software que usa es totalmente legal es otra de las ventajas de GNU/Linux, y mencionar el hecho de que no tendrá que preocuparse por los virus, troyanos y demás infecciones que afectan al software privativo, esto no quiere decir que no existan virus y demás en GNU/Linux solo que es mas difícil que sea infectado.

(14)

¿DONDE ESTA LINUX?

Actualmente Linux se encuentra en cualquier dispositivo que imaginemos, solo por mencionar algunos: • Automóviles • Smartphones • Neveras • Hornos Microondas • Lavadoras • Televisores • Satélites • Servidores • Portátiles • Tablets • Navíos • Y un largo etc.

Además grandes compañías y gobiernos usan hoy en día Software Libre y GNU/Linux.

• Facebook • Google • IBM • Gobierno Alemán • Bolsa de Valores • Ejércitos

• El 80% de los sitios web están sobre GNU/Linux

• El 98% de los 500 servidores mas poderosos están sobre Linux.

Distribuciones

Como ya mencionamos, GNU/Linux tiene diferentes sabores para cada uno, en esta ocasión mencionaremos algunas con sus derivados y a quienes están enfocadas.

• Debian (Servidores y Usuario Final)

◦ Ubuntu (Servidores y Usuario Final)

▪ Kubuntu (Usuario Final)

▪ Edubuntu (Instituciones educativas)

▪ Lubuntu (Usuario Final)

▪ Xubuntu (Usuario Final)

▪ Ubuntu Studio (Editores Multimedia)

(15)

▪ Zentyal (Servidores)

▪ ElementaryOS (Usuario Final)

• Slackware (Servidores y Usuario Final)

◦ Suse (Servidores)

▪ OpenSUSE (Servidores y Usuario Final)

• RedHat (Servidores)

◦ Fedora (Servidores y Usuario Final)

◦ Centos (Servidores y Usuario Final)

▪ Elastix (Servidor de Voz IP)

Faltan muchas distribuciones, las cuales las podrá observar en: Distribuciones Linux -Wikipedia.

(16)

SELECCIÓN DE LA DISTRIBUCIÓN E INSTALACIÓN

Seleccionar la distribución ideal para lo que deseamos hacer, es muy importante, ya que todas tengan el mismo núcleo no todas se van a comportar lo mismo. Por mencionar algunos aspectos, CentOS es la distribución predilecta para servidores y la mejor alternativa para implementar sistemas de PBX con Asterisk ya que la mayoría de controladores para dichas implementaciones esta desarrollados para esta distribución pero no significa que no se pueda usar en otras tareas. La otra distribución por excelencia es Debian, la cual es la alternativa que en esta ocasión vamos a usar, ya que el personal capacitado sobre Debian es mayor y la documentación sobre Debian también es abundante.

Ya que tenemos nuestra distribución seleccionada procederemos con la descarga de la imagen y instalación.

La imagen de Debian la podremos descargar de

http://www.debian.org/CD/http-ftp/#stable.

Antes de iniciar una instalación debemos de tener en cuenta lo siguiente.

Finalidad: Se va usar como servidor o como estación de trabajo? Teniendo en cuenta esto podremos guiarnos adecuadamente, la finalidad de este sera como servidor.

Hardware: En algunas ocasiones Debian no es la mejor opción en cuanto a drivers privativos, por ende debe de tenerse en cuenta si el hardware que tiene nuestro servidor es soportado por Debian, CentOS en cambio posee en su interior ya dichos drivers privativos. Además de esto debemos de tener en cuenta cuantos usuarios se van a conectar al servidor y que servicio va a prestar, por que el consumo de un servidor de correo no es lo mismo que un servidor web o de archivos.

Limitaciones: Si vamos a instalar a nuestro riesgo un servidor (No contratamos a un 3ro) y no poseemos la experiencia o conocimiento suficiente sobre la distribución y servicio a implementar, no vamos a tener soporte oficial si no directamente por la comunidad o foros, los cuales no siempre tienen las mejores soluciones.

(17)

Instalación

Después de haber descargado y grabado en un DVD la imagen de Debian procederemos a realizar la instalación. Al iniciar el computador/servidor con el medio dentro de la unidad lectora, aparecerá la ventana de instalación. Debian posee 2 formas de realizar la instalación (además de la forma avanzada), una es la clásica y la otra es usando un entorno gráfico.

Lo primero que vamos a ver es la selección del idioma aquí, seleccionamos el idioma con el cual va a quedar nuestro sistema.

(18)
(19)

Esperamos un momento a que algunos componentes se carguen para poder continuar con la instalación.

Procederá a solicitar nombre de la maquina, configuración de la red (si no posee servidor DHCP), dominio, contraseña para el usuario root, la creación del usuario del sistema y su respectiva contraseña.

(20)
(21)
(22)

Después de un rato que el sistema cargue, nos encontraremos frente al sistema de particionado del sistema.

• Guiado – Utilizar todo el disco

Esta opción realiza de forma automatizada el particionado y la instalación del sistema.

• Guiado – Utilizar el disco completo y configurar LVM

Esta opción es usar todo el disco y de paso configurar el LVM (Logical Volume Manager)

• Guiado – Utilizar todo el disco y configurar LVM Cifrado.

Lo mismo que la opción anterior solo que le agrega cifrado al disco.

• Manual

Como su nombre lo indica, es hacer de forma manual las particiones y demás, esta es la que vamos a escoger.

Como vemos en la siguiente imagen, me muestra los discos que se tienen en este momento configurados, el que se muestra es un SCSI3 en el puerto 0,0,0 y esta identificado como sda, además cuenta con una capacidad de 8,6GB y es de referencia VBOX HARDDISK. Procedemos a seleccionarlo y a crear la tabla de particiones. Quedando como se muestra en la segunda imagen.

(23)
(24)

Seleccionamos el espacio libre y creamos una nueva partición de 250 MB (Tener cuidado con las unidades escribir 250 MB tal cual, con el espacio) luego nos preguntara que tipo de partición es si primaria o lógica, la seleccionamos como primaria e indicamos que va a ser en el principio del disco.

(25)

Esta partición al ser tan pequeña no cabra mucha información pero sera una de las mas importantes, ya que contara con los archivos necesarios para arrancar el sistema. Además desde este apartado podremos crear los Volúmenes Lógicos, los RAIDS por software etc.

• Utilizar Como Ingresamos y seleccionamos el sistema de archivos ext4→

• Punto de Montaje En este seleccionamos el path a montar en dicha partición. (En→

esta ocasión seleccionamos el path /boot)

• Opciones de Montaje Las dejamos por defecto→

• Etiqueta Si desea ingresar un nombre para la partición acá lo podrá hacer.→

• Bloques Reservados Lo dejamos tal cual→

• Uso habitual Podemos definir que vamos a hacer con esa partición, la dejamos→

tal cual.

• Marcar Como Arranque Esta opción la activamos, ya que esta partición es la que→

contiene los archivos de arranque.

Por ultimo seleccionamos “Se ha terminado de definir la partición” y nos devolverá a la configuración del disco nuevamente, pero esta vez ya muestra la partición que esta por escribirse.

(26)

Seleccionamos el espacio libre, le asignamos el restante de espacio indicamos que es una partición lógica, estará al principio del disco y definimos el punto de montaje la raiz (/), indicamos el sistema de archivos ext4 y seleccionamos nuevamente “Se ha terminado de definir la partición”.

Ya con esto, vamos a finalizar el particionado y escribimos los cambios en el disco, aparecerá una advertencia indicando que hace falta definir el área de intercambio o /swap, esta partición es necesaria cuando el equipo tiene poca memoria ram, pero la veremos mas adelante para administrarla mas eficazmente. A dicha advertencia le indicamos que no, y por ultimo me pide confirmación de querer continuar con la instalación, procedemos con un SI y empezara la instalación. Dicha instalación se demorara unos 10 minutos dependiendo del computador donde se esta realizando la instalación.

Luego de esperar un rato, solicitara si deseamos insertar el otro DVD (Decimos que no). Luego seleccionamos la descarga de repositorios por red, aparecerá desde donde queremos descargar los diferentes repositorios, buscamos nuestro país (o el país mas cerca, el cual en ocasiones no es la mejor opción), lo seleccionamos y continuamos con la instalación. (Algunas ocasiones mostrara mas de un solo servidor en dicho país, seleccionamos el que mejor nos parezca).

(27)

Después de haber esperado un rato, preguntara si deseamos participar en popularity-contest el cual enviara de forma anónima información a los desarrolladores sobre los paquetes que usamos (Es a criterio de cada uno) y luego listara los programas

(28)

Ya por ultimo nos preguntara si deseamos instalar el GRUB a lo cual respondemos afirmativamente.

Esperamos a que termine las configuración, procederá a reiniciarse y ya tendremos el sistema listo para loguearnos, ya sea con la cuenta root o con el usuario que hemos creado durante el proceso de instalación.

Proceso de Arranque de GNU/Linux

• Inicio de la BIOS → Esto es normal en cualquier sistema ya sea Linux o no, la

BIOS (Basic Input Output System) es el encargado de reconocer todos los dispositivos que se encuentren conectados al sistema o placa base del servidor o

(29)

computador (Unidades, RAM, Procesador, Bus, Etc) y según la configuración de esta se iniciara con la unidad seleccionada. (Normalmente para ingresar a esta y cambiar algunas configuraciones se oprime F2, o F9, o Supr).

¡IMPORTANTE!

Tener cuidado si se ingresa a esta memoria ya que podría dañar el servidor. Se recomienda leer el manual de dicho sistema antes de hacer cualquier actividad.

• Ejecución del Disco con GNU/Linux → Después que la BIOS detecta todos los

dispositivos y arranca con la unidad seleccionada, esta buscara dentro del MBR de dicho disco la información necesaria o el encargado de administrar la ejecución del(os) sistema(s) como podría ser el GRUB.

• Selección del Sistema y Kernel Luego que el GRUB carga este mostrara (o→

puede que no) los distintos sistemas instalado en el servidor, así como las diferentes versiones de kernel instalados si es un servidor GNU/Linux.

Trabajando con el GRUB2

(GRand Unified Bootloader) Es el encargado de la gestión de arranque de los distintos Kernel o Sistemas Operativos que se encuentren instalados en los discos del sistema. GRUB2 Presente ya en la gran mayoría de distribuciones GNU/Linux es una versión reescrita de GRUB, mejorando notablemente la compatibilidad con varios sistemas de discos, BIOS, etc.

Los archivos de inicio de GRUB2 se encuentra en /boot/grub, la configuración del menú

esta en /boot/grub/menu.cfg, pero cuidado, estos archivos NO se editan, ya que son

los usados por el sistema, para ello vamos a ver donde se configura.

Dentro del archivo /etc/default/grub contiene las variables que define las opciones del GRUB2 y opciones por defecto de los núcleos GNU/Linux.

Variable Significado

GRUB_DEFAULT Entrada del menú, seleccionado por defecto es el 0

GRUB_HIDDEN_TIMEOUT Tiempo de menú Oculto, para después iniciar el sistema predeterminado, para mostrarlo el usuario tiene que oprimir [ESC] o [SHIFT]

GRUB_TIMEOUT Duración del menú del GRUB2 antes de iniciar el sistema GRUB_HIDDEN_TIMEOUT_QUIET Define si se muestra o no el contador con true o false

GRUB_DISTRIBUTOR Linea de comandos que define la generación automática del texto en la entrada del menú

GRUB_CMDLINE_LINUX_DEFAULT Parámetros pasados al núcleo Linux, únicamente para entradas “normales”

(30)

Variable Significado GRUB_GFXMODE Resolución utilizada por el GRUB2

GRUB_TERMINAL Sin comentar y con valor console, se activa el modo texto

Los menús se guardan en /etc/grub.d/

root@sugeek:~# ls -l /etc/grub.d/ total 56

-rwxr-xr-x 1 root root 7806 dic 6 05:06 00_header

-rwxr-xr-x 1 root root 5522 jul 19 2013 05_debian_theme -rwxr-xr-x 1 root root 7877 dic 6 05:06 10_linux

-rwxr-xr-x 1 root root 6449 dic 6 05:06 20_linux_xen -rwxr-xr-x 1 root root 6675 dic 6 05:06 30_os-prober -rwxr-xr-x 1 root root 1388 jul 19 2013 30_uefi-firmware -rwxr-xr-x 1 root root 214 jul 19 2013 40_custom

-rwxr-xr-x 1 root root 95 jul 19 2013 41_custom -rw-r--r-- 1 root root 483 jul 19 2013 README

Estos archivos se ejecutan en el orden de listado (orden alfanumérico de forma predeterminada) de ls. Es por este motivo que empieza con un valor numérico. Los dos scripts de interés son 10_linux y 30_os-pober.

Si se verifica el primero, se encontrara como elemento particular los bucles que buscan los núcleos Linux en /boot y en la raiz, asi como ramdisk iniciales, para detectar los distintos núcleos Linux y crear automáticamente las entradas asociadas añadiendo los parámetros por defecto.

En el segundo, vera que se ejecuta el comando os-prober, que busca el resto de sistemas operativos en los restantes discos o dispositivos, como Windows, Mac OS, Unix, etc.

Se puede agregar uno de forma manual utilizando la plantilla 40_custom y para

actualizar las tablas de grub se usa update-grub

Recuperar Password de root por GRUB

En ocasiones se presenta que por algún motivo y otro se perdió la contraseña del usuario root, para poderla recuperar se puede realizar por medio del GRUB, acá explicamos como.

Al iniciar nuestro sistema y tener al frente el menú de GRUB, vemos que la opción e nos

permite editar las lineas de boot, nos dejara ver las lineas de “booteo”, para ello

seleccionamos la que indican kernel y nuevamente presionamos e a lo cual nos dejara

editarlas, al final de la linea del kernel (La que indica vmlinuz) agregamos init=/bin/bash (Este cambio es temporal, próximo reinicio el sistema dejara tal cual las lineas), luego solo queda arrancar el sistema con la combinación de tecla [CTRL] + [X].

(31)

Ya dentro del sistema nos queda solo montar la unidades en forma de escritura, ya que

están montadas en forma de solo lectura, para ello ejecutamos el comando mount -n -o

remount,rw / ya con esto tenemos funciones de root, y podremos cambiar nuestro

password con el comando passwd.

Después de haberlo cambiado solo queda reiniciar el sistema y listo.

Init System V

El Proceso init es el primer proceso que arranca y el ultimo en ser cerrado al apagarse el sistema, tiene como principal función ejecutar todos los demás procesos de forma Ordenada según sea la necesidad. Se podría decir que el INIT es el proceso padre de los demás procesos y tiene como PID 1.

Este sistema de arranque de forma secuencial tiene un defecto, el cual demora el proceso de arranque del sistema, dicho problema es solventado con SystemD.

La configuración del init lo podemos encontrar en /etc/inittab, sin este archivo el sistema no podrá arrancar, y se tendría que recuperar desde un medio externo.

¡IMPORTANTE!

Init o SystemV fue soportado hasta la versión 7 de Debian, desde la Versión 8 se inicio el proceso de migración a systemd.

Niveles de Ejecución

Existen 6 posibilidades principales de arrancar un sistema GNU/Linux. ◦ Init 0 o runlevel 0 Apaga el Sistema →

◦ init 1 monousuario si entorno de red ni gráfico (CLI o GUI).→ ◦ init 2 Multiusuario sin gestor de red ni gráfico (CLI o GUI).→ ◦ init 3 Multiusuario sin entorno gráfico pero con entorno de red.→ ◦ init 4 Sin uso.→

◦ init 5 El por predeterminado, con entorno gráfico, de red y multiusuario.→ ◦ Init 6 Reinicia el sistema→

Dicha formas de arranque se podrán configurar en el archivo /etc/inittab, además algunas distribuciones usan los niveles del 7 al 9 los cuales son totalmente validos.

Archivo /etc/inittab

A continuación se define las variables de dicho archivo, así como su estructura. Id:Niveles:acción:comando

(32)

Campo Descripción id Identificador único del proceso

Niveles Muestra los niveles de ejecución a los que se aplica esta entrada.

Acción Identifica el modo en que el proceso que está especificado en el campo del proceso se ejecutará.

Comando Define el comando o la secuencia de comandos para ejecutar.

La acción es muy importante, ya que define las actividades de init durante el arranque y cambio de nivel, las principales acciones son:

Acción Significado

initdefault Define el nivel por defecto durante el boot y el inicio de init sysinit Se ejecuta una única vez durante el arranque del sistema boot Idéntico al anterior pero después del sysinit

bootwait Idem, pero init espera el final de la ejecución del comando antes de continuar leyendo el archivo inittab

off Se ignora la linea

once Se ejecuta el comando a cada cambio de nivel para los niveles especificados wait Idem, pero init espera al final de la ejecución antes de proseguir

respawn El comando se ejecuta para los niveles correspondientes. Si el proceso termina, vuelve a arrancarse de nuevo automáticamente. Es el caso para los terminales si un usuario se desconecta de ellos.

powerwait Inicia el comando si el servidor es alimentado mediante una UPS powerfail Idem, pero sin esperar el final de ejecución del comando

powerokwait Se ejecuta el comando cuando se restablece la corriente

powerfailnow Comando de ultimo recurso cuando la alimentación de emergencia esta casi vacía

ctrlaltdel Init recibe una señal SIGINT procedente de una secuencia [CTRL][ALT][SUPR]

En este archivo también encontramos configuradas las consolas virtuales conocidas como tty, las cuales se acceder con la combinación de teclas [Ctrl ] + [Alt ] + [F1-F6 ] la [F7] en la mayoría de distribuciones esta asociada a la interfaz gráfica.

Archivo /etc/init.d/rc

Dicho archivo o script inicia el nivel de ejecución deseado, es responsable del inicio y de la parada de los servicios asociados cuando el nivel de ejecución cambia.

Después que inicia nuestro sistema con sus respectivos demonios se procede a iniciar el servicio getty el cual es el encargado de iniciar la sesión en una terminal, getty es el encargado de solicitar usuario y contraseña para poder ingresar a CLI, este usuario y

(33)

contraseña getty lo obtiene de los archivos /etc/passwd y /etc/shadow asi como los

correspondientes mensajes de bienvenida desde /etc/motd . Cuando se cierra la sesión

de un terminal getty realiza un respawn para solicitar nuevamente usuario y contraseña.

Servicios en /etc/init.d

Directorio se define que servicios se iniciaran, pararan, o reinician según el nivel seleccionado. Para cada nivel de ejecución podemos encontrar un directorio.

root@sugeek:~# ls /etc/rc

rc0.d/ rc2.d/ rc4.d/ rc6.d/ rcS.d/ rc1.d/ rc3.d/ rc5.d/ rc.local

Cuando el init arranca llamara primero a los scripts dentro del directorio /etc/rcS.d que son servicios single, luego procederá a iniciar el sistema según el runlevel seleccionado. Cuando verifiquemos dichos directorios veremos algo como.

root@sugeek:~# ls /etc/rc5.d/

README S14nfs-common S17acpid S17exim4 S20rc.local S01motd S16rsyslog S17atd S17ssh S20rmnologin S13rpcbind S16virtualbox-guest-utils S17cron S19bootlogs

Como se podrá observar, inicia con una S pero podría iniciar con una K, la S indica que inicia el servicio, la K que lo “Mata”, luego le procede un numero, el cual es el orden de inicio o “Muerte” y por ultimo el servicio que se ve afectado.

Systemd

Este remplazo a init o system v en Debian a partir de la versión 8, aunque ya en algunas distribuciones como Fedora ya lo implementan, lo malo de este nuevo “Gestor de Procesos”, es el hecho que solo es compatible con Linux, por este motivo hubo un revuelo dentro de la comunidad Debian, ya que este no solo tiene núcleo Linux si no también versiones con núcleo BSD y Hurd, haciéndolo completamente incompatible. Podemos ver tabla comparativas en http://0pointer.de/blog/projects/why.html

Ventajas Generales

• Ejecución de procesos de inicio de forma asíncrona, permitiendo ejecutar varios

procesos al tiempo aprovechando los hilos del procesador y ejecutando el sistema mas rápido.

• Gestión de dependencias de procesos mas veloz al utilizar invocaciones a funciones en el núcleo Linux.

• Posee interfaz gráfica en GTK para la gestión de procesos

(34)

• Desarrollo muy Joven

• Se cree el Dios todo poderoso de GNU/Linux

• Requiere reinicio para aplicar cambios al kernel

Unidades Objetos y Servicios

En Systemd, el concepto de nivel de ejecución ya solo existe para la compatibilidad con SystemV. El estado deseado por el sistema después de haber ejecutado los servicios se llama la unidad objetico o target unit. El componente básico de systemd es la unidad o unit. Existen Varias: servicios, sockets, periféricos, objetivos, etc. Un objetivo es básicamente el punto de sincronización entre unidades en espera. De este modo, dispondrá, por ejemplo, de unidades objetivos correspondientes a cada nivel de ejecución, pero puede llamarles como desee.

Las definiciones de las distintas unidades se encuentran en /lib/systemd/system. Las

unidades objetivos o los servicios que deben ser gestionados por el sistema durante el

arranque se ubican en /etc/system/system, en forma de enlaces simbólicos o copias

de los archivos anteriores.

Puede activar o definir varios objetivos al mismo tiempo no limitarse a uno solo, único y pesado. Por ejemplo, un objetivo contendrá la activación de los servicios de red, otro, los servicios de audio y un ultimo para el inicio del entorno gráfico, etc. Un Objetivo se puede agrupar en otro.

Servicios

Los servicios acaban con el sufijo .service. A continuación se muestra un ejemplo con el contenido del servicio bluetooth que representa sus dependencias y su comando de ejecución:

root@sugeek:/lib/systemd/system# cat bluetooth.service [Unit] Description=Bluetooth service After=syslog.target [Service] Type=dbus BusName=org.bluez ExecStart=/usr/sbin/bluetoothd -n StandardOutput=syslog [Install] WantedBy=bluetooth.target

La linea WantedBy, esta linea sirve para indicar que este servicio es necesario para el objetivo bluetooth.target. Un objetivo no define que servicios gestiona, pero cada servicio define que unidad es necesario, por lo tanto, es factible construir un árbol de dependencias.

(35)

Acciones

El comando sytemctl permite controla la ejecución de servicios

• Systemctl Lista las unidades activas→

• Systemctl –all Muestra todas las unidades (activas, inactivas)→ • systemctl stop servicio.service Parar el servicio→

• systemctl restart servicio.service Reiniciar el servicios→ • systemctl start servicio.service Iniciar el servicios→

(36)

SISTEMA DE ARCHIVOS

GNU/Linux Tiene el sistema de archivos ext de forma predeterminada, este a su ves ha

ido evolucionando para irse adaptando a las necesidades del mercado, ya que en su

versión mas reciente ext4 el cual fue desarrollado por Mingming Cao, Dave Kleikamp,

Alex Tomas, Andrew Morton y otro grupo de personas, este sistema de archivos cuenta con las siguientes características.

• Considerado un sistema de archivos de transición a btrfs

• Maneja volúmenes de hasta 1 Exibyte

• Ficheros individuales de hasta 16 Terabytes

• Compatibilidad con anteriores y futuras versiones

• Soporta hasta 64000 subdirectorios

• Desfragmentacion en caliente de forma automática

• Chequeo de Archivos mas veloz

• Journaling para recuperarse ante desastres

Aunque el sistema de archivos btrfs a la escritura de este documento, aun se encontraba en fase de desarrollo, lo cual no se recomienda para sistemas en producción. Dentro de las ventajas que tiene este sistema de archivos es:

• Las mismas ventajas del ext4

• Posibilidad de Crear snapshots en caliente

• Soporte de quotas por default

• Verificación de Datos para corroborar integridad

• Permite funcionalidades de LVM

◦ Redimencionar las Particiones en Caliente

◦ Agregar discos en caliente y adaptarlo a una particion “Virtual

Además GNU/Linux esta en la capacidad de soportar la lectura/escritura de sistemas de archivos como lo son el NTFS, Fat, Fat16, Fat32, XFS, raiserfs, xfs, y muchos mas.

Directorios y Arquitecturas

GNU/Linux se basa en un orden de sus directorios totalmente jerárquico tomando como inicio el / “Slash” el cual sera el punto de montaje de los diferentes dispositivos y demás directorios.

/ Este es el directorio Raiz, es el directorio principal.

/bin Este directorio contiene los programas ejecutables que cualquier usuario podrá usar o ejecutar.

(37)

/dev Archivos especiales o de dispositivos haciendo referencia a los dispositivos físicos. /etc Contiene los archivos/directorios de configuración de los servicios prestados por la

maquina local, como el dhcp, X11 (Video), dns, etc.

/etc/skel Archivos que al crear una cuenta nueva en el sistema se copian estos archivos al directorio home de la cuenta creada.

/home En este directorio se guardan la estructura de directorios/archivos de los usuarios /lib Este directorio contiene las librerías compartidas que son necesarias para ejecutar

programas e iniciar el sistema.

/media Este directorio contiene las unidades montadas como CD/DVD.

/mnt Es similar a la anterior, pero a diferencia que en este directorio se montan las unidades temporales como USB. (No en todas las distribuciones es lo mismo).

/opt Este directorio contiene archivos estáticos o aplicaciones independiente que traen sus propias librerías.

/proc Este directorio contiene información sobre el funcionamiento y el hardware del sistema.

/root home del usuario root.

/sbin Similar al directorio /bin pero a diferencia de este, es que los ejecutables dentro de /sbin son solo ejecutados por usuarios con permisos especiales o root.

/tmp Contiene los archivos temporales del sistema.

/usr Este directorio usualmente contiene la configuración de los usuarios y aplicaciones que este usa.

/var Este directorio los archivos que cambian de tamaño dinámicamente o por intervención del usuario, normalmente se encuentra los logs del sistema y aplicativos.

Toda esta información podrá encontrarla escribiendo en su consola el comando man hier

Tipos de Archivos

En GNU/Linux todo son archivos.

• Archivos que tienen los datos del usuario

• Los Archivos que contienen y proveen la jerarquia de otros Archivos (Directorios)

• Los archivos Enlaces que son como un “Acceso Directo” a otro archivo.

• Los archivos de Dispositivos que encontramos en el directorio /dev

• Archivos Binarios o Ejecutables

Inodo

Hemos hablado sobre los inodos en el transcurso del libro, pero no hemos entrado a definirlo a profundidad. En pocas palabras el inodo es el encargado de tener toda la información sobre un archivo, excepto el nombre de este, el cual esta asociado dentro de la información que contiene el archivo tipo catalogo o mas conocido como carpeta. El

(38)

inodos dentro de un sistema de archivos define la cantidad de archivos que se pueden crear.

El inodo tiene como información:

• Tamaño

• ID del periférico

• Propietario

• Grupo Propietario

• Número del inodo

• Permisos

• Fecha de ultimo acceso

• Fecha de ultima modificación

• Información de ubicación de las partes del archivo dentro del sistema de archivos

• Contador de enlaces

Con el comando df -i podremos observar el total de inodos de cada sistema de archivos,

asi como los usados y libres.

Además si queremos ver las características de un archivo con respecto a su inodo, basta con escribir el comando stat.

root@sugeek:~# stat sugeek Fichero: «sugeek»

Tamaño: 0 Bloques: 0 Bloque E/S: 4096 fichero regular vacío

Dispositivo: fe00h/65024d Nodo-i: 42619 Enlaces: 1

Acceso: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Acceso: 2014-05-06 20:36:14.546982597 -0500

Modificación: 2014-05-06 20:36:14.546982597 -0500 Cambio: 2014-05-06 20:36:14.546982597 -0500 Creación: -

Identificando Dispositivos

La identificación de los dispositivos en GNU/Linux es relativamente fácil, ya que según sea el tipo de dispositivo se identifica con letras y según la cantidad, se enumera cada uno.

(39)

Para tomar como ejemplo, utilizaremos un disco sata que es reconocido como sd. s d a1...

| | |_______El # (Puede ser 1, 2, 3 4, 5 etc) identifica la partición dentro del disco. | |________Identifica el Numero del Disco (a = 1err disco, b = 2do disco, etc) |___________Identifica el tipo de dispositivo.

El resto de dispositivos se enumera de una forma similar (por no decir igual).

A continuación listaremos los distintos tipos de dispositivos que reconoce GNU/Linux.

Dispositivo Nomenclatura Descripción Unidad de Diskette fd

Unidad de Diskette fd0 1ra Unidad de Diskette Disco Duro / DVD IDE hd

Disco Duro / DVD IDE hda Disco Maestro en el Bus IDE 0 (hda1 1ra partición de hda)

Disco Duro / DVD IDE hdb Disco Esclavo en el Bus IDE 0 (hdb5 5ta partición de hdb)

Unidad SCSI (SATA) sd

Unidad SCSI (SATA) sda 1ra Unidad SCSI conectada al puerto sata0 Unidad SCSI (SATA) sdb 2da Unidad SCSI conectada al puerto sata1 Unidad de DVD SCSI scd

Unidad de DVD SCSI scd0 1ra Unidad de DVD con identificador mas bajo Puerto Paralelo lp

Terminales o Consolas tty Usuarios Logueados localmente Terminales Remotas pty Usuarios Logueados de forma remota Puertos Seriales ttys

Interfaces de Red Cableada

eth Interfaces de Red

Cableada

eth0 1ra interfaz de red Red Inalámbrica wlan

Red Inalámbrica wlan0 1ra interfaz de red inalámbrica

Periféricos

Todos los dispositivos como teclados, mouse, auriculares, impresoras son asociados a un archivo, y estos dispositivos son catalogados en archivos especiales según sea el caso y se podrán observar al listar el contenido del directorio /dev/ el primer carácter de los permisos indican el tipo de archivo (Tema visto mas adelante en permisos).

(40)

• c Dispositivo tipo carácter, envía información bit por bit, o solo un Byte a la vez,→ ideal para mouse, teclados, puertos paralelos, puertos de comunicación (com), terminales.

• b Dispositivo tipo bloque, como son las unidades de almacenamiento sea cual→

sea.

• s Dispositivo tipo socket, lo cual permite una comunicación entre los distintos→

procesos del sistema.

• Otros Archivos Como /dev/null o /dev/zero, el primero es el “Hoyo Negro” de→

GNU/Linux, el segundo genera una secuencia de ceros.

Los dispositivos para su reconocimiento y funcionamiento debe de ser cargados durante la carga del sistema o después de esta. El servicio encargado de la carga de los dispositivos es udev (Su respectiva configuración la encontramos en /etc/udev/), el cual crea el archivo solamente de los dispositivos conectados (En caliente o en frío) para la comunicación del sistema con el kernel. Udev fue el remplazo de devfs. Para obtener información de cierto dispositivo, se utiliza el comando udevadm info –query=all –name /dev/dispositivo

¡IMPORTANTE!

udev es remplazado por systemd en la versión 8 de Debian.

Al listar el contenido del directorio /dev/ con ls -l en la parte donde normalmente esta el tamaño del archivo, se identifican con el numero mayor, el driver del dispositivo, y el numero menor se suele identificar el periférico o dispositivo.

Como es conocido por la gran mayoría de personas, las USB soporta una inimaginable cantidad de dispositivos, los cuales deben de ser catalogados según su función y versión, ya que no es lo mismo un medio masivo a un teclado, y en ocasiones es necesario bloquear el acceso a medios masivos por USB pero que el teclado siga funcionando, para ello existen unos módulos especializados para este tema, los cuales están integrados a uno solo el cual es usbcore. El cual tiene las api para soportar las distintas versiones de USB como lo son la versión 1, 1.1, 2.0 y 3.0, los cuales se encuentran soportados dentro de la api xhci_hcd (Ultima API desarrollada por Intel para soportar todas las versiones de USB)

Para obtener mas información al respecto dirigirse a:

(41)

TRABAJANDO CON GNU/LINUX

El Trabajo con GNU/Linux por consola o shell (CLI), para algunos es el impedimento de usar GNU/Linux, aunque ya muchos saben las ventajas que este tiene, pero existen soluciones como Zentyal la cual es un servidor GNU/Linux basado en Ubuntu con una GUI via web y su uso es literalmente fácil.

Cuando iniciemos nuestro servidor Debian, nos encontraremos con una solicitud de login, el cual podría ser con root o con el usuario que se creo. Solamente es loguearnos con dichas credenciales y ya podemos trabajar con nuestro Debian, tendremos una consola con la siguiente estructura del prompt.

usuario@nombremaquina:~$

↓ ↓ ↓↓

1 2 34 Desglosemos este prompt:

1. Indica el nombre del usuario con el que estamos logueados. 2. Indica el nombre del host.

3. indica el path o ruta donde nos encontramos el ~ indica que estamos en el home del usuario.

4. Tipo de Usuario, el $ indica un usuario normal, el # indica el usuario root

Los Shells poseen tanto comandos internos como externos (La gran mayoría suministrado por GNU). Para saber si un comando es interno o externo solo es ingresar el comando type y el comando que deseamos saber.

El resultado de esto con el comando cd seria la siguiente:

usuario@sugeek:~$ type cd cd es una orden interna del shell

Y con el comando fdisk:

usuario@sugeek:~$ type fdisk

fdisk is /sbin/fdisk

De esta manera sabemos si un comando es interno o externo a la shell. Los Shell también usan 3 flujos de entrada/salida estándar:

• Stdin Es el flujo de entrada estándar y proporciona los datos de entrada a los→ comandos, normalmente el teclado.

• Stdout → Es el flujo de salida estándar y muestra los datos de salida de los comandos, normalmente el monitor.

(42)

comandos, Normalmente el monitor.

Estructura de los comandos

En GNU/Linux como en todo sistema, la ejecución de ordenes tiene una interpretación organizada en donde, si no se cumple dará como resultado un error en la orden o en casos extremos, daño del sistema.

La sintaxis común para ejecutar un comando es:

comando opciones archivo/directorioafectado

↓ ↓ ↓

rm -r /home/suge3k/*

Las opciones, en la mayoría de ocasiones van precedidas por un guión, como vimos en el

ejemplo anterior.

Para cancelar la ejecución de un comando basta con realizar la combinación de teclas [ Ctrl ] + [ C ].

Para saber la ubicación de un comando usamos el comando which. Si existen mas comandos con la misma estructura solo indicamos la opción -a.

root@sugeek:~# which fdisk /sbin/fdisk

Comando man

Para conocer mas sobre un comando (también contamos con el comando info o la opción

–help del comando), nos ayudamos con la pagina manual de este, man. Por ejemplo la

pagina manual del comando rm seria:

man rm

Pero man, también tiene sus opciones, por ejemplo existe el comando passwd el cual

sirve para cambiar el password de un usuario, pero al mismo tiempo existe el archivo /etc/passwd el cual contiene información de los usuarios, y uno como el poca relación tienen. Para diferenciar uno del otro se utilizan secciones, man siempre busca en la sección 1 y va bajando poco a poco hasta encontrar la coincidencia.

(43)

Seccíon Contenido 1 Instrucciones ejecutables o comandos del shell 2 Llamadas del Sistema (API del núcleo)

3 Llamadas de las Librerías (funciones c) 4 Archivos Especiales (contenido de /dev )

5 Formato de ls Archivos (/etc/passwd, /etc/hosts, etc.) 6 Juegos, Salvapantallas, Programas Varios, etc.

7 Varios, Comandos no estándares que no encuentran sitio en otra parte 8 Comandos de Administración del sistema Linux

9 Subprogramas del núcleo (Normalmente vacio)

Ya teniendo en cuenta la anterior tabla, si ejecutamos solo man passwd nos mostrara:

PASSWD(1) User Commands PASSWD(1) NAME

passwd - change user password SYNOPSIS

passwd [options] [LOGIN] DESCRIPTION

The passwd command changes passwords for user accounts. A normal user may only change the password for his/her own account, while the superuser may change the password for any account. passwd also changes the account or associated password validity period.

Pero si ejecutamos man 5 passwd, le estamos indicando que tome como referencia la

sección 5, y tendremos como resultado:

PASSWD(5) File Formats and Conversions PASSWD(5) NAME

passwd - the password file DESCRIPTION

/etc/passwd contains one line for each user account, with seven fields delimited by colons (“:”). These fields are:

· login name

· optional encrypted password · numerical user ID

· numerical group ID

(44)

En ocasiones es normal olvidar el comando exacto, pero sabemos parte de su contenido, así que utilizamos la opción -k indicando el contenido del comando, así que utilizamos man -k passwd tendremos como resultado:

update-passwd (8) - Actualiza /etc/passwd, /etc/shadow y /etc/group de forma segura

chgpasswd (8) - update group passwords in batch mode chpasswd (8) - update passwords in batch mode

fgetpwent_r (3) - get passwd file entry reentrantly getpwent_r (3) - get passwd file entry reentrantly gpasswd (1) - administer /etc/group and /etc/gshadow grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB lppasswd (1) - add, change, or delete digest passwords. pam_localuser (8) - require users to be listed in /etc/passwd passwd (1) - change user password

passwd (1ssl) - compute password hashes passwd (5) - the password file

passwd2des (3) - RFS password encryption

smbpasswd (5) - The Samba encrypted password file smbpasswd (8) - change a user's SMB password

SSL_CTX_set_default_passwd_cb (3ssl) - set passwd callback for encrypted PEM file handling

SSL_CTX_set_default_passwd_cb_userdata (3ssl) - set passwd callback for encrypted PEM file handling

Vemos los distintos comandos que poseen el contenido de passwd.

Apagar el sistema

• shutdown -h now Apaga el sistema→

◦ shutdown -r now Reinicia el Sistema→

◦ shutdown -h HORA:MIN & Apagado planificado→

◦ shutdown -c Cancelar el apagado planificado→

• reboot Reinicia el sistema→ • halt Apaga el sistema→ • init 0 Apaga el sistema→

Verificando el estado del Sistema

Es muy importante saber como se encuentra nuestro sistema antes de hacer cualquier cosa, ya sea por que el sistema esta lento o solo para saber conexiones y demás.

Comando TOP

Este comando me mostrara por completo la información del estado del sistema como por ejemplo, mostrara el consumo de procesador y memoria ram en tiempo real, así mismo cuantos usuarios se encuentran logueados en ese momento, hace cuanto esta encendida la maquina etc. al escribir top en la consola nos aparecerá una pantalla como la

(45)

siguiente.

1. En esta parte mostrara información como: Usuarios logueados, Carga del sistema (Ultimo Minuto, Últimos 5 Minutos, y últimos 15 min), procesos en ejecución, uso de procesador, memoria ram y swap. En la tercera linea (CPU) muestra información importante como el porcentaje usado por los usuarios (us) por el kernel (sy), porcentaje de procesos con baja prioridad (ni), porcentaje de procesos inactivos (id), el porcentaje de procesos en espera (wa), Hadware Interrupts (hi) y Software Interrupts (si), el steal time (st) es usado generalmente con VM.

2. Este apartado muestra los procesos que están corriendo en el sistema, con el usuario que lo esta ejecutando y su respectivo PID (Process ID).

Algunos de los comandos de top son:

• t Muestra u oculta el resumen, la 2da y 3ra linea→

• m Muestra u oculta información de la memoria, la 4ta y 5ta linea→

• A Ordena los procesos según consumo de recursos→

• r Cambia la prioridad de un proceso→ • k Mata el proceso indicado→

• q Cierra top→

• u Busca los procesos del usuario indicado→

(46)

Comando free

Con este comando tendremos información del uso de la memoria ram y swap.

Como podemos observar, este comando muestra la información en kilobytes y en

ocasiones es difícil leerlo así que para ello usamos la opción m para que muestre las

cantidades en sumas redondas como megabytes o la opción g para que los muestre en gigabytes.

Comando w

Con este sabremos que usuarios están logueados en nuestro sistema, los procesos que están corriendo, cuanto tiempo lleva el sistema encendido, la carga del mismo los últimos minutos (1, 5 y 15).

Comando vmstat -s

Este comando es similar que indicar cat /proc/meminfo.

sugeek@sugeek~$ vmstat -s 8079804 K total memory 5013668 K used memory 2318480 K active memory 2387252 K inactive memory 3066136 K free memory 113348 K buffer memory 3087384 K swap cache 7812092 K total swap 0 K used swap 7812092 K free swap

275687 non-nice user cpu ticks 2583 nice user cpu ticks 59034 system cpu ticks 1755387 idle cpu ticks 39844 IO-wait cpu ticks 22 IRQ cpu ticks 7264 softirq cpu ticks 0 stolen cpu ticks 1460577 pages paged in 2548113 pages paged out 0 pages swapped in 0 pages swapped out 14374381 interrupts

(47)

23585894 CPU context switches 1384197460 boot time

191137 forks

Comando who y whoami

El comando who indicara quienes están conectados y por que consola, y whoami mostrara la identificación del usuario actual.

Comando id y groups

Con el comando id obtenemos información sobre el usuario actual, si escribimos id nombreusuario obtenemos información sobre el usuario solicitado, como su id, grupo principal y grupos a los cuales pertenece.

uid=0(root) gid=0(root) grupos=0(root)

Con el comando groups, obtendremos información sobre los grupos a los cuales pertenece el usuario actual o solicitado.

Comando lspci

Mostrara la información de las ranuras y adaptadores relacionadas con el bus PCI del

sistema. Se puede obtener mayor información agregando la opción v o vv.

Comando lsusb

Mostrara la información de los puertos usb. Podemos mostrar mas información con la opción v

(48)

Comando lscpu

Mostrara información sobre los procesadores.

Comando uname

Este comando es el mas usado para conocer información del sistema, pero por si solo no muestra mucha información así que hay que usarlo con la opción a

Como podemos observar en el resultado del comando, muestra el tipo kernel, el nombre de la maquina, la versión del kernel, fecha y hora, arquitectura del procesador.

Podemos tener información especifica como el hardware (-m) nombre de la maquina (-n) la versión del núcleo (-r) tipo de procesador (-p) versión del sistema (-v) o nombre del sistema -s).

Comando uptime

Este comando es usado para saber cuanto tiempo lleva encendido el sistema.

Como se observa muestra primero la hora actual del sistema, cuanto tiempo ha estado encendido (1 dia 5 horas y 32 min) Cuantos usuarios se encuentran logueados y la carga del sistema.

Comando lshw

Este comando similar al comando hwinfo y dmidecode (Este ultimo consulta directamente a la BIOS, en ocasiones no confiable)el cual mostrara la información de todo el hardware del sistema, como board, procesador, memorias ram, discos duros, unidades

(49)

DVD, etc. Es un comando con una salida muy extensa.

Comando lsblk

Con este comando podremos conocer todos los discos, en forma de árbol, la información es obtenida del sistema de archivos del sistema.

sugeek@sugeek:~$ lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 698,7G 0 disk

├─sda1 8:1 0 237M 0 part /boot ├─sda2 8:2 0 7,5G 0 part [SWAP] ├─sda3 8:3 0 46,6G 0 part / └─sda4 8:4 0 644,4G 0 part /home sr0 11:0 1 1024M 0 rom

Comando df

Este comando mostrara el uso de espacio de los discos y unidades de almacenamiento,

(50)

Como podemos observar la 1ra partición de mi disco duro principal (sda) tienen un tamaño de 76GB y tiene usados 6,8 G y disponibles 65G con un porcentaje de ocupación del 10% y la partición 6 del mismo disco duro el cual se encuentra montado home tiene un uso de 420G y libres 155GB.

Comando blkid

Con este comando obtendremos información de los UUID de los discos duros, para poderlos montar con su respectivo ID, evitando fallas de montaje al arranque del sistema.

Este comando es similar al usar ls -l /dev/disk/by-uuid y ls -l /dev/disk/by-label

root@sugeek:~#blkid

/dev/sda1: UUID="23287c8d-45f2-4b2c-bf9c-465060141f03" TYPE="ext4" /dev/sda2: UUID="9fe6a649-530f-4ce7-a215-add68169d792" TYPE="swap" /dev/sda3: UUID="9e638ed8-41c1-410f-938b-ba0f3ba6813d" TYPE="ext4" /dev/sda4: UUID="4795786e-ab9d-40d4-abd9-657d026ce0a7" TYPE="ext4"

Comando fdisk -l

Aunque este comando permite particionar, etc. Lo veremos a mayor profundidad mas adelante, pero en esta ocasión lo utilizaremos para visualizar información de los discos duros.

(51)

750GB e información de las particiones, sectores, etc.

Comando last y lastb

last muestra un listado de los últimos usuarios logueados al sistema (desde el archivo

/var/log/wtmp) e información relevante, lastb, (Obtiene la información de /var/log/btmp) muestra los últimos intentos de logueo al sistema que fracasaron.

Como podemos observar que usuario se logueo, en que terminal, fecha y hora y si se encuentra o no logueado (still logged in).

Con lastb obtenemos los intentos de logueo fallidos. Por ejemplo, en un sistema donde no existiera el usuario 'fulano' resultaría obvio que alguien esta tratando de obtener acceso remoto, adivinando usuario:contraseña.

Comando du

Este comando permitirá ver el tamaño de una carpeta, archivo, o del contenido de una carpeta. Con las opciones s y h mostrara el tamaño de la carpeta y de forma legible. usuario@sugeek:/$du -sh /var 1,3G /var

Comando dmesg

Se usa para desplegar los mensajes que se mostraron en pantalla cuando se inicio (boot) el sistema. Se usa para realizar depuraciones al sistema de como se están cargando los diversos módulos y componentes al arranque del sistema o ya en ejecución y poder asi corregir posibles errores al iniciar el sistema, además no solo al iniciar al sistema, ya que sigue generando información, por ejemplo cuando conectamos un teclado, o alguna unidad de almacenamiento o cualquier dispositivo conectados en caliente. En pocas palabras, son los mensajes generados por el Kernel.

(52)

Comando arch

Con este comando sabremos cual es la arquitectura del sistema, lo cual también se

podría obtener con comando uname -i.

Comando pstree

Este mostrara los procesos de manera organizada, mostrando que procesos pertenecen a cual servicio. Se recomienda usarlo con las opciones Agu.

Comando ps

Mostrara los procesos que esta ejecutando el usuario actual sobre la consola, para poder ver por completo todos los procesos que se están ejecutando se recomienda el uso de las

opciones aux.

Sin opciones:

Con opciones:

Comandos ifconfig, ip

Ifconfig además de ser un comando para mostrar información también es un comando para asignación de dirección IP lo cual veremos mas adelante. Pero por si solo vamos a

(53)

usar algunas opciones.

• Ifconfig -a Mostrara información de todas las interfaces→

• ifconfig interfaz → Muestra información sobre la interfaz solicitada. Ej: ifconfig eth0

ip es un comando también muy completo (mas completo que el ifconfig), con este podremos saber si la interfaz esta conectada, si esta funcionando, crear rutas etc. Pero para este apartado solo nos interesa saber el estado de las interfaces.

• ip link Mostrara si la interfaz se encuentra arriba o abajo asi el cable este→

conectado.

• Ip addr Mostrara además del estado de la interfaz si esta arriba o abajo mostrara→ información extra sobre el direccionamiento ip.

(54)

Comando netstat

Este comando me permitirá verificar las conexiones que posee el sistema, algunas de las opciones son:

• -i Permite verificar el estado de las tarjetas de red→

• -a Permite visualizar todas las conexiones, para todos los protocolos,→ incluidos los puertos de escucha.

• -at Lista todas las conexiones TCP.→ • -au Lista toda las conexiones UDP.→ • -l Lista las conexiones de escucha.→

• -s Muestra estadísticas por protocolo como IP, ICMP, TCP, UDP. Se puede→

• especificar con -su para udp -st para TCP.

• -tp Muestra el ID del proceso que usa el puerto.→

• -c Muestra la información cada 5 segundos, se recomienda combinar con→

a o t. Ejem: -cat para mostrar cada 5 seg información de conexiones TCP. • -A Permite especificar el protocolo a consultar, como inet, inet6, unix, ipx,→

ax25, netrom y ddp.

• -n Muestra las tablas de enrutamiento.→

Comandos route -e y arp -e

Estos comandos me mostraran en pantalla la tabla de rutas que tiene el sistema y la tabla arp del mismo.

Archivos de Estado del Sistema

En el sistema de archivos o path /proc podremos encontrar toda la información del sistema, vamos a listar alguno de los archivos.

• cat /proc/cpuinfo Muestra la información del procesador, similar a → lscpu.

• cat /proc/meminfo Muestra información sobre la memoria ram.→

• cat /proc/net/dev Muestra información de los dispositivos de red y estadísticas.→

• cat /proc/mdstat Muestra el estado de los RAIDS montados.→

Referencias

Documento similar