Академический Документы
Профессиональный Документы
Культура Документы
ADMINISTRACIÓN DE
GNU/LINUX WWW.SUGEEK.CO
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 -
2 www.sugeek.co
SOBRE EL AUTOR
Twitter: @franksanabria
Facebook: frankharbey
LinkedIn: franksanabria
6 www.sugeek.co
Comando depmod...........................................................72
Comando insmod.............................................................72
Comando rmmod.............................................................73
Comando modprobe........................................................73
Archivo /etc/sysctl.conf y comando sysctl............................73
Algunas Opciones de Interés...........................................74
HERRAMIENTAS GNU/LINUX...............................................................75
Comando find.......................................................................75
Comando locate...................................................................76
Comando date......................................................................76
Comando ntpdate................................................................77
Comando Calc......................................................................78
Comando history..................................................................78
Comando time......................................................................79
Comprimir y Descomprimir..................................................79
Comando tar....................................................................79
Comando zip y unzip.......................................................79
Comando gzip y gunzip...................................................79
Comando wget.....................................................................80
Comando bc.........................................................................80
EDITOR DE TEXTO VI.........................................................................83
Funcionamiento...................................................................83
Comandos............................................................................83
Inserción de datos...........................................................83
Salir y Guardar.................................................................84
Corrección.......................................................................84
Desplazamiento...............................................................85
Búsqueda de Texto..........................................................86
Comandos de Sustitución................................................86
Copiar y Pegar.................................................................87
Sustitución.......................................................................87
Edición Avanzada............................................................87
Comando set...................................................................88
EDITOR DE TEXTO NANO...................................................................89
GESTIÓN DE PAQUETES.....................................................................91
Comando aptitude y apt.......................................................91
Archivo /etc/apt/source.list...................................................93
Comando ldd........................................................................94
Comando ldconfig................................................................94
Comando dpkg.....................................................................95
Instalación desde las fuentes...............................................96
ADMINISTRACIÓN DE USUARIOS........................................................97
Usuario root.........................................................................97
8 www.sugeek.co
Comando update-rc.d..........................................................115
Servicios..............................................................................116
REDIRECCIONES, TUBERÍAS Y FILTROS..............................................117
Redirección de salida con > y >>........................................117
Redirección de errores con 2>.............................................118
Redirección de entrada con <..............................................118
Redirección con here-documment <<.................................118
Tuberías y Filtros..................................................................118
Comando basename y dirname.......................................119
Comando tee...................................................................119
Comando grep.................................................................119
Comando egrep...............................................................120
Comando cut...................................................................121
Comando column.............................................................121
Comando tr......................................................................122
Comando sort..................................................................122
Comando uniq.................................................................123
Comando paste...............................................................123
Comando diff...................................................................124
Comando sed.......................................................................124
Coincidencia con más caracteres....................................125
Ejemplos..........................................................................126
LA SHELL DE GNU/LINUX...................................................................129
Regionalización e Internacionalización.................................129
Regionalización(l10n)......................................................129
Internacionalización (i18n)..............................................129
Usos Horarios..................................................................131
Codificación de Caracteres..............................................131
Operadores de Control Shell................................................132
Operador &&...................................................................132
Operador ||......................................................................132
Operador &......................................................................132
Operador ;.......................................................................132
Operador \.......................................................................132
Operador #......................................................................133
Agrupación de Comandos................................................133
Argumentos del Shell...........................................................133
Comando echo.................................................................134
Comillas Doble “”............................................................134
Comillas Simples ' '..........................................................134
Comillas invertidas ` `.....................................................134
Variables Shell.....................................................................134
Declaración de Variables.................................................135
10 www.sugeek.co
Comando Smartctl...............................................................192
ADMINISTRACIÓN DE RED.................................................................193
Archivo /etc/network/interfaces............................................193
Archivo /etc/protocols..........................................................193
Archivo /etc/resolv.conf........................................................194
Archivo /etc/hosts................................................................194
Comando ifconfig.................................................................194
Comando ip..........................................................................194
Comando route....................................................................196
Comando whois....................................................................196
Comando mtr.......................................................................197
Comando arp.......................................................................197
Comando ping......................................................................197
Comando traceroute............................................................198
Comando nslookup...............................................................198
Comando dig........................................................................199
Comando IPTraf....................................................................199
Archivo /etc/networks..........................................................200
REGISTROS DEL SISTEMA..................................................................201
Servicio rsyslog....................................................................201
sysklogd..........................................................................202
RainerScript.....................................................................203
Servicio logrotate.................................................................204
Probando los logs locales.....................................................206
Archivo /var/log/messages...................................................206
TAREAS PLANIFICADAS......................................................................207
Archivo /etc/crontab.............................................................207
Comando crontab.................................................................209
Comando at.........................................................................209
SEGURIDAD EN GNU/LINUX...............................................................211
Archivo /etc/securetty..........................................................211
Rootkits................................................................................211
Virus.....................................................................................212
Bloquear USB.......................................................................213
Herramienta SUDO...............................................................213
Archivo /etc/sudoers........................................................214
Autenticación PAM...............................................................216
Tipo de Modulo................................................................217
Control.............................................................................218
Modulo.............................................................................218
Limites del Usuario...............................................................218
Proteger el GRUB2 con contraseñas.....................................219
BIBLIOGRAFÍA....................................................................................221
¡IMPORTANTE!
Esta obra tiene como requisito que el lector tenga nociones básicas
sobre sistemas informáticos como redes y sistemas operativos.
¿Qué 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.
Desde la versión 0.12, Linux está licenciado con GPLv2, 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,
Amazon, y la misma Microsoft usa Linux en algunos de sus
colaboradores.
¿Que es GNU/Linux?
GNU/Linux es la combinación de los anteriores desarrollos mencionados,
así que en pocas palabras podría indicarse lo siguiente.
Resumen Histórico
A continuación enumeramos los hitos más importantes dentro de la
historia de GNU/Linux.
14 www.sugeek.co
• 2002 El primer gusano conocido para GNU/Linux, Slapper-worm.
• 2007 Google presenta Android el sistema operativo para
Smartphones y Tablet's el cual está basado en GNU/Linux .
• Mayo de 2011 sale la versión 3.0
• 2013 GNU/Linux es el sistema base más usado en todo el mundo
Contenido Digital
El presente Libro posee contenido digital, el cual son vídeo tutoriales que
sirven como complemento de estudio y capacitación.
GNU/Linux en Empresas/Gobierno
GNU/Linux está en la capacidad de prestar la gran mayoría -por no decir
todos- los servicios que esta necesita, ya sea para estaciones de trabajo
o servidores, dándole la oportunidad a no depender directamente de una
tercera empresa extranjera para soportar su plataforma y la inversión
realizada al ser menor a largo plazo, puede ser reinvertida en la
empresa.
S. Privado S. Libre
Licencia ✔ ✘
Capacitación ✔ ✔
Implementación ✔ ✔
Soporte ✔ ✔
Renovación ✔ ✘
GNU/Linux en la Educación
Usar GNU/Linux en entidades educacionales fomenta el desarrollo
18 www.sugeek.co
¿DONDE ESTA LINUX?
Actualmente Linux se encuentra en cualquier dispositivo que
imaginemos, solo por mencionar algunos:
• Automóviles
• Teléfonos Inteligentes
• Neveras
• Hornos Microondas
• Lavadoras
• Televisores
• Satélites
• Servidores
• Portátiles
• Tablets
• Navíos
• Y un largo etc.
• Facebook
• Google
• IBM
• Gobierno Alemán
• Bolsas de Valores
• Ejércitos
• El 80% de los sitios web están sobre GNU/Linux
• El 98% de los 500 servidores de mayor rendimiento
Distribuciones
Como ya mencionamos, GNU/Linux tiene diferentes sabores para cada
uno, en esta ocasión mencionaremos algunos con sus derivados y a
quienes están enfocados.
20 www.sugeek.co
SELECCIÓN DE LA DISTRIBUCIÓN E
INSTALACIÓN
Seleccionar la distribución ideal para lo que deseamos hacer, es muy
importante, aunque 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 están 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 es una de las distribuciones
que mas se encuentran instaladas en el mercado de servidores, además
Ubuntu ha iniciado un proceso de expansión significativo, por lo tanto
este libro le servirá para la una como para la otra.
Instalación
Después de haber descargado y grabado en un DVD/USB la imagen de
Debian procederemos a realizar la instalación. Al iniciar el servidor con
el medio dentro de la unidad lectora, aparecerá la ventana de
instalación. Debian posee dos 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, seleccionamos la normal la cual es sin interfaz gráfica.
22 www.sugeek.co
Esperamos un momento a que algunos componentes se carguen para
poder continuar con la instalación.
26 www.sugeek.co
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, al indicarle que va a estar al principio del disco, sera
un poco mas rápido el arranque del sistema ya que en esta partición
vamos a crear la unidad de arranque.
28 www.sugeek.co
Seleccionamos el espacio libre, 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”.
30 www.sugeek.co
Esperamos a que termine la configuración, procederá a reiniciar y ya
tendremos el sistema listo para ingresar, ya sea con la cuenta root o con
el usuario que hemos creado durante el proceso de instalación.
¡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.
Hoy en día, la BIOS fue reemplazada por el EFI o UEFI el cual requiere
que el hardware instalado este firmado por el fabricante, esto con la
finalidad de que ningún hardware no firmado pueda tomar control sobre
el sistema.
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 Define si se muestra o no el contador con
_QUIET 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_D Parámetros pasados al núcleo Linux,
EFAULT únicamente para entradas “normales”
GRUB_CMDLINE_LINUX Parámetros por defecto para todos los
núcleos Linux
GRUB_GFXMODE Resolución utilizada por el GRUB2
32 www.sugeek.co
Variable Significado
GRUB_TERMINAL Sin comentar y con valor console, se activa el
modo texto
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
Ya dentro del sistema nos queda solo montar las unidades en forma de
escritura, ya que están montadas en solo lectura, para ello ejecutamos
el comando mount -n -o remount,rw / ya con esto tenemos permisos de
root, y podremos cambiar nuestra contraseña con el comando passwd.
Init System V
El Proceso init, es el primer proceso que arranca y el último en ser
cerrado al apagarse el sistema, tiene como función principal 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 identificador de proceso 1.
¡IMPORTANTE!
Init o SystemV fue soportado hasta la versión 7 de Debian, desde la
versión 8 se inició el proceso de migración a systemd.
Niveles de Ejecución
Existen 6 niveles por el cual init podría iniciar al arrancar el sistema
34 www.sugeek.co
• init 5 → Predeterminado, con GUI, red y multiusuario.
• Init 6 → Reinicia el sistema
Archivo /etc/inittab
A continuación se definen las variables de dicho archivo, así como su
estructura.
Id:Niveles:acción:comando
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.
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 init espera el final de la ejecución del comando antes de
continuar leyendo el archivo inittab
off Se ignora la línea
once Se ejecuta el comando a cada cambio de nivel para los
niveles especificados
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.
Servicios en /etc/init.d
En este directorio se define qué servicios se inician, paran, o reinician
según el nivel seleccionado. Para cada nivel de ejecución podemos
encontrar un directorio.
36 www.sugeek.co
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, llama 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.
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, cada servicio inicia con una S pero también
podría iniciar con una K, la S indica que inicia el servicio, la K que lo
“Mata”, luego le precede un número, el cual es el orden de inicio o
“Muerte” y por último el servicio que se ve afectado.
Systemd
Este demonio reemplaza a init o SystemV en Debian a partir de la
versión 8, aunque 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.
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 más rápido.
• Gestión de dependencias de procesos más veloz al utilizar
invocaciones a funciones en el núcleo Linux.
• Posee interfaz gráfica en GTK para la gestión de procesos
llamada systemadm.
Desventajas Generales
• Solo disponible para núcleo Linux
• Realiza funciones que no le corresponde como la gestión de Logs
y de dispositivos de forma dictatorial.
• Requiere reinicio para aplicar cambios al kernel correspondiente
a los modules que SystemD administra.
• Se apropia de las tareas programadas (Elimina a crontab)
• Los logs ya no se crean en texto plano si no en un archivo binario.
Servicios
Los servicios acaban con el sufijo .service (Aunque SystemD intentará
determinar el objetivo de forma automática si no se le indica el sufijo). A
continuación se muestra un ejemplo con el contenido del servicio
bluetooth que representa sus dependencias y su comando de ejecución:
38 www.sugeek.co
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
Acciones
El comando sytemctl permite controlar la ejecución de unidades.
40 www.sugeek.co
SISTEMA DE ARCHIVOS
GNU/Linux Tiene el sistema de archivos ext de forma predeterminada,
este a su vez 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, cuenta con las siguientes
características.
42 www.sugeek.co
Toda esta información podrá encontrarla escribiendo en su consola el
comando man hier
Tipos de Archivos
En GNU/Linux todo son archivos.
Inodo
El inodo es el encargado de tener toda la información sobre un archivo,
excepto el nombre, el cual está asociado dentro de la información que
contiene el archivo tipo catalogo o mas conocido como Directorio. El
número de un inodo es único dentro de un sistema de archivos, además
la cantidad de inodos dentro de un sistema de archivos define la
cantidad de archivos que se pueden crear.
• Tamaño
• ID del periférico
• Propietario
• Grupo Propietario
• Número del inodo
• Permisos
• Fecha de último acceso
• Fecha de última modificación
• Información de ubicación de las partes del archivo dentro del
sistema de archivos
• Contador de enlaces
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.
sda1
| | |_______El # ( 1, 2, etc) identifica la partición dentro del disco.
| |_________Identifica el Disco (a = 1er disco, b = 2do disco, etc).
|____________Identifica el tipo de dispositivo.
44 www.sugeek.co
Dispositivo Nomenclatura Descripción
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
Terminales o Consolas tty Usuarios Logueados
localmente
Terminales Remotas pty Usuarios Logueados de
forma remota
Puertos Seriales ttys
Interfaces de Red eth
Cableada
Interfaces de Red eth0 1ra interfaz de red
Cableada
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
¡IMPORTANTE!
udev es reemplazado por systemd en la versión 8 de Debian.
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
de almacenamiento 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 en 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, las cuales se encuentran soportados dentro de la api xhci_hcd
-última API desarrollada por Intel para soportar todas las versiones de
USB-. Para obtener mas información al respecto, dirigirse a
https://www.kernel.org/doc/htmldocs/usb/.
46 www.sugeek.co
TRABAJANDO CON GNU/LINUX
El Trabajo con GNU/Linux por consola o shell (CLI), para algunos es el
impedimento para usar GNU/Linux, pero existen soluciones como
Zentyal, la cual es una distribución GNU/Linux para servidores basada
en Ubuntu con una GUI via web y su uso es literalmente fácil, o paquetes
independientes como Webmin.
user@host: ~ $
| | | |_Tipo de Usuario, $ es usuario normal, # es el usuario root
| | |___Indica el path o ruta donde se encuentra el usuario.
| |_______Indica el nombre del host.
|_____________Nombre del usuario con el que se esta logueado.
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 si es interno o externo.
usuario@sugeek:~$ type cd
cd es una orden interna del shell
Comando man
Para conocer sobre un comando -también contamos con el comando
info, el arrojará información correspondiente sobre el comando indicado
o la opción --help del comando-, nos ayudamos con la página manual de
este, man. Por ejemplo la página 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 la contraseña de un usuario, pero al
mismo tiempo existe el archivo /etc/passwd el cual contiene información
de los usuarios. 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.
48 www.sugeek.co
Sección 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 los 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 vacío)
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.
NAME
passwd - the password file
DESCRIPTION
/etc/passwd contains one line for each user account, with
seven fields delimited by colons (“:”). These fields are:
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
50 www.sugeek.co
Verificando el estado del Sistema
Es muy importante saber cómo se encuentra nuestro sistema antes de
hacer cualquier cosa, ya sea porque el sistema está lento o solo para
saber conexiones y demás.
Comando top
Este comando mostrará por completo la información del estado del
sistema como por ejemplo, el consumo de procesador y memoria RAM
en tiempo real, así mismo cuántos usuarios se encuentran conectados
en ese momento, hace cuanto esta encendido el servidor, etc. Al escribir
top en la consola nos aparecerá una pantalla como la siguiente.
Comando free
Con este comando tendremos información del uso de la memoria RAM y
swap.
Comando w
Con este sabremos qué usuarios están conectados en nuestro sistema,
52 www.sugeek.co
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 y la información
arrojada hace referencia las cargas del sistema.
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
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
23585894 CPU context switches
1384197460 boot time
191137 forks
Comando lspci
Mostrará 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.
root@sugeek:~# lspci
00:00.0 Host bridge: Intel 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:03.0 Ethernet: Intel 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek GmbH VirtualBox Guest Service
00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0b.0 USB controller: Intel 82801FB/FBM/FR/FW/FRW USB2 EHCI
00:0d.0 SATA controller: Intel 82801HM/HEM (ICH8M/ICH8M-E) (rev 02)
Comando lsusb
Mostrara la información de los puertos usb. Podemos mostrar mas
información con la opción v.
root@sugeek:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Comando lscpu
Mostrará información sobre los procesadores.
root@sugeek:~# lscpu
Architecture: i686
CPU op-mode(s): 32-bit
54 www.sugeek.co
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
...
Comando uname
Este comando es usado para obtener información del kernel. Por si solo
no muestra mucha información así que hay que usarlo con la opción a
root@sugeek:~# uname -a
Linux franksanabria 3.13.0-58-generic #97~precise1-Ubuntu SMP Wed
Jul 8 14:07:17 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Comando uptime
Este comando es usado para saber cuánto tiempo lleva encendido el
sistema.
root@debian:~# uptime
09:02:19 up 51 min, 2 users, load average: 0,00, 0,01, 0,05
Comando lshw
Este comando similar al comando hwinfo y dmidecode -este último
consulta directamente a la BIOS, en ocasiones no confiable- el cual
mostrará la información del hardware del sistema, como board,
procesador, RAM, HD, etc. Es un comando con una salida muy extensa.
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 mostrará el uso de espacio de los discos y unidades de
almacenamiento, usando la opción h podremos comprender las unidades
de medida.
Como podemos observar la 1ra partición del 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%.
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"
56 www.sugeek.co
Comando fdisk -l
Aunque este comando permite particionar, Lo veremos a mayor
profundidad mas adelante, pero en esta ocasión lo utilizaremos para
visualizar información de los discos duros.
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 mostrará el tamaño de
la carpeta y de forma legible.
Comando dmesg
Se usa para desplegar los mensajes que se mostraron en pantalla
cuando se inicio (boot) el sistema. Ideal para validar que todos los
módulos, drivers y demonios arrancaron adecuadamente y no
presentaron fallas, o si presentaron fallas poder tomar las medidas
correctivas.
Comando arch
Con este comando sabremos cual es la arquitectura del sistema, lo cual
también se podría obtener con comando uname -i.
58 www.sugeek.co
Comando pstree
Este mostrará los procesos de manera organizada, mostrando que
procesos pertenecen a cuál servicio. Se recomienda usarlo con las
opciones Agu.
Comando ps
Mostrara los procesos que está 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.
Comandos ifconfig, ip
Ifconfig además de ser un comando para mostrar información de las
interfaces de red, también es un comando para asignación de dirección
IP lo cual veremos mas adelante.
60 www.sugeek.co
ip es un comando también muy completo -mas completo que ifconfig-,
con este podremos saber si la interfaz está conectada, si está
funcionando, crear rutas, etc. Pero para este apartado solo nos interesa
saber el estado de las interfaces.
root@sugeek:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether c8:60:00:b4:af:f1 brd ff:ff:ff:ff:ff:ff
root@sugeek:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 08:00:27:ad:a6:72 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.91/24 brd 192.168.1.255 scope global eth0
Comando netstat
Este comando permitirá verificar las conexiones que posee el sistema,
algunas de las opciones son:
Comando ss
Aunque similar al comando netstat, este comando solo muestra las
conexiones activas y puertos abiertos del sistema enfocados a sockets.
root@sugeek:~# ss -na
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::111 :::*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 :::59507 :::*
LISTEN 0 5 127.0.0.1:53 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 128 127.0.0.1:5944 *:*
LISTEN 0 128 *:56963 *:*
Si solo nos interesa saber que conexiones tenemos por el socket que
utiliza el puerto 80 le agregamos al final del comando sport = :80 -tener
en cuenta los espacios-.
62 www.sugeek.co
sistema y la tabla arp del mismo.
Archivo /etc/services
En este archivo encontramos todos los servicios que tiene nuestro
sistema y el puerto de escucha que tiene configurado. Muy útil cuando
se crean reglas de cortafuegos.
Alias
Los alias son seudónimos que se asocian a un comando, ya sea con las
opciones establecidas o no. Por ejemplo, el comando ls ya tiene por
defecto un alias.
user@sugeek:~$ alias
alias ls='ls –color=auto'
Como vemos la salida al ejecutar alias sin opciones, muestra que alias
tenemos establecidos en ese momento. Para poder establecer un alias
para dicha shell solo basta escribir el comando alias mas el nuevo
“comando” y que comando se va ejecutar, por ejemplo vamos a crear un
alias llamado update.
Directorios:
Es una colección de Archivos y otros directorios de forma jerárquica.
Estos archivos también se le denominan archivos tipo catálogos.
Rutas Absolutas:
Señalan la ubicación de un archivo o directorio desde el directorio raíz
del sistema de archivos. Por ejemplo es una ruta absoluta
/home/dir1/arc1.fil que señala la ubicación de arc1.fil desde la raíz del
sistema de archivos.
Rutas Relativas:
Señalan la ubicación de un archivo o directorio a partir de la posición
actual del cursor. Por ejemplo esto una ruta relativa dir1/arc1.fil la cual
señala al archivo arc1.fil dentro del directorio dir1 en la ubicación actual
del cursor.
64 www.sugeek.co
◦ cd → Ingresa al directorio del usuario.
◦ cd ~ → Ingresa al directorio del usuario.
◦ cd - → Devuelve al directorio anterior.
• ls → Lista el contenido de una carpeta.
◦ ls -a → Lista todo el contenido incluyendo los archivos
ocultos.
◦ ls -h → Muestra el contenido con cifras entendibles por
nosotros.
◦ ls -i → Muestra el ID del inodo.
◦ ls -l → Muestra el contenido en modo lista con información
adicional como:
drwxr-xr-x 7 sugeek sugeek 12288 jul 4 09:29 Descargas
Permisos Propietario Grupo Size Fecha Mod Nombre Dir.
◦ ls -r → Muestra de Forma inversa el contenido listado.
◦ ls -s → Muestra el tamaño del archivo o carpeta.
◦ ls -S → Organiza la salida de mayor tamaño a menor
◦ ls -t → Muestra el contenido por hora/fecha de
modificación, mas reciente a la mas antigua.
◦ ls -R → Muestra el contenido de los subdirectorios.
• Mkdir → Crea un directorio. EJ: mkdir dir1
◦ mkdir -p → Permite crear directorios y subdirectorios al
tiempo. EJ: mkdir -p dir1/dir2/dir3
• rmdir → Permite borrar un directorio si y solo si está vacío.
◦ rmdir -p → Borra un subdirectorio.
66 www.sugeek.co
• zcat miarchivo.txt.tar → Muestra el contenido del archivo
comprimido
• zdiff miarchivo1.txt.tar miarchivo2.txt.tar → Compara los 2
archivos comprimidos
Shell globbing
En ocasiones cuando se está trabajando con muchos archivos, es
necesario utilizar “Comodines” ya sea para buscarlos y modificarlos, o
solamente listarlos.
Archivos Enlaces
Los archivos enlaces simbólicos (softlinks) son aquellos archivos
especiales que hacen de acceso directo hacia otro archivo que se ubica
en un path diferente. Se identifica que es un archivo enlace cuando
posee una L al principio de los permisos.
¡IMPORTANTE!
Los Hardlinks no se pueden usar entre dos unidades de almacenamiento
distintas ya que cada unidad o partición poseen sus propios inodos.
68 www.sugeek.co
COMPILANDO EL KERNEL
Cuando existen nuevas características, o mejoras de seguridad en Linux,
es recomendable compilar un nuevo kernel, para ello se explicará el
paso a paso de cómo compilarlo.
root@sugeek:/usr/src# wget
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.16.tar.bz2
Ingresamos al directorio:
root@sugeek:/usr/src# cd linux-3.16
root@sugeek:/usr/src# make
Luego a instalarlos:
Actualizamos el Grub:
root@sugeek:/usr/src# update-grub
root@sugeek:/usr/src# reboot
¡IMPORTANTE!
No eliminar un kernel antiguo si aún no se han realizado todas las
pruebas pertinentes, dejarlo por lo menos un mes de forma de Backup.
El kernel queda eliminado, pero aun falta la actualización del grub para
que tome los cambios, ejecutamos update-grub.
Gestión de Módulos
Los módulos son archivos que nos permiten gestionar algunas de las
características de nuestro sistema, asociados al kernel.
70 www.sugeek.co
Comando lsmod
La finalidad de este comando es poder verificar qué módulos tiene
cargados el sistema /lib/modules/mikernel/.
root@debian:~# lsmod
Module Size Used by
nfsd 173686 2
nfs 260905 0
nfs_acl 12463 2 nfs,nfsd
auth_rpcgss 32012 2 nfs,nfsd
fscache 31662 1 nfs
lockd 57192 2 nfs,nfsd
sunrpc 143216 6 lockd,auth_rpcgss,nfs_acl,nfs,nfsd
loop 17851 0
parport_pc 22036 0
parport 31375 1 parport_pc
video 17459 0
thermal_sys 17752 1 video
battery 12986 0
snd_pcm 53473 0
snd_page_alloc 12867 1 snd_pcm
snd_timer 22478 1 snd_pcm
snd 42962 2 snd_timer,snd_pcm
soundcore 12921 1 snd
i2c_piix4 12480 0
psmouse 68555 0
evdev 13175 4
pcspkr 12554 0
serio_raw 12848 0
i2c_core 19116 1 i2c_piix4
ac 12552 0
button 12817 0
crc32c_intel 12659 0
ext4 302460 2
crc16 12327 1 ext4
jbd2 51626 1 ext4
mbcache 12938 1 ext4
Comando depmod
Este comando actualiza el árbol de dependencias de cada uno de los
módulos ubicados en el archivo
/lib/modules/VersionDelKernel/modules.dep, dicho archivo contiene 2
columnas, la primera indica el módulo a cargar -ruta- y la segunda indica
los módulos que se deben de cargar para que el primero cargue.
Comando insmod
Este comando permite cargar un módulo que este fallando, pero se debe
de tener cuidado con las dependencias del módulo, ya que si no se
cargan primero no se podrá cargar el módulo indicado.
root@sugeek:/lib/modules/3.2.0-61-generic/kernel/fs/fat# insmod
fat.ko
root@sugeek:/lib/modules/3.2.0-61-generic/kernel/fs/fat# insmod
vfat.ko
72 www.sugeek.co
módulos que no esté utilizando, ganando así un poco de recursos
Comando rmmod
A diferencia de insmod, este los descarga, pero si dicho módulo se
encuentra utilizado o asociado a otro módulo no se podrá descargar.
Para descargar un módulo del sistema, se procede a quitar primero el
módulo principal y luego sus módulos de dependencias, todo lo contrario
a insmod.
Comando modprobe
Este comando engloba y facilita la carga o descarga de módulos, a
diferencia de insmod o rmmod los cuales deben de cumplir ciertos
“Pasos” para cargar o descargar los módulos, con modprobe se carga el
módulo y sus dependencias de una sola vez. Con la opción -r permite
descargar un módulo del sistema siempre y cuando no este siendo
utilizado
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
◦ vm.swappiness=30
◦ net.ipv4.conf.all.rp_filter=1
◦ nett.ipv4.conf.default.rp_filter=1
74 www.sugeek.co
HERRAMIENTAS GNU/LINUX
Comando find
Busca archivos o directorios con el argumento escrito. Vamos a observar
algunas estructuras “Básicas”, para mas información no dude en
consultar el manual del comando.
Buscar archivos con más de 4 días y proceder a borrar, ideal para las
“Papeleras” en servidor de archivos.
Comando locate
Similar a find pero menos “Completo”, este requiere actualizar su base
de datos para incluir los archivos nuevos. Para actualizar la base de
datos de locate se usa el comando updatedb.
Comando date
Muestra la hora/fecha del sistema en ingles.
usuario@sugeek:~$ date
jue jul 11 16:12:50 COT 2013
76 www.sugeek.co
Como se pudo observar, imprime que día sera dentro de 3 días, el days
se puede cambiar por week, year, month, hour, minute, second, next,
ago,
Comando ntpdate
Es el comando que permite tener los servidores y equipos sincronizados
con la hora local. Ideal para servidores de LDAP, AD, DNS, Archivos,
Logs, etc.
Comando cal
Muestra el Calendario según el año seleccionado.
Comando History
Guarda el historial de comandos de la sesión
78 www.sugeek.co
128 2013-10-16 20:29:32 : sudo service minidlna force-reload
129 2013-10-16 20:29:32 : sudo /etc/init.d/vboxdrv setup
130 2013-10-16 20:29:32 : ifconfig
131 2013-10-16 20:29:32 : ping 192.168.2.5
132 2013-10-16 20:29:32 : sudo service minidlna force-reload
133 2013-10-16 20:29:32 : ifconfig
Comando time
Indica cuanto tiempo se demora en ejecutar el comando indicado. Ej:
time ls
Comprimir y Descomprimir
Comando tar
Sirve para comprimir y descomprimir archivos en formato tar.
Comando wget
Permite descargar archivos desde un servidor. Se puede descargar sitios
web completos y demás.
Lo anterior indica:
Comando bc
La calculadora que podemos usar desde la consola, mas completa que
expr, que aparte de sumar y restar puede realizar cálculos con una
80 www.sugeek.co
precisión de varios decimales (expr solo muestra resultados enteros),
cambiar de base numérica o programarla, etc.
root@sugeek:~# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software
Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
root@sugeek:~# bc -q
5+5 #Suma que realizo
10 #Resultado
scale=3 #Indico que quiero trabajar con hasta 3 decimales
27/68 #Realizo la división
.397 #Resultado de la división
quit #Cierro el programa
Podemos definir las variables para trabajar con estas, pero dentro del
entorno del programa tenemos unas ya predefinidas como:
root@sugeek:~$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software
Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=5 #Definimos los decimales a tener
myvar=1
1/myvar #Operacion a resolver utilizando mi variable
1.00000 #Resultado de la operación, teniendo en cuenta los decimales
indicados
ibase=10 #Definimos la base de entrada
obase=2 #Definimos la base de salida
82 www.sugeek.co
EDITOR DE TEXTO VI
Aunque no es el mas fácil de usar, pero si es el editor mas completo de
todos en cuanto a consola, además ya viene instalado de forma
predeterminadas en todas las distribuciones GNU/Linux.
Funcionamiento
Existen 3 modos de funcionamiento:
Cuando se abre VI, por defecto está en modo comando. Para empezar a
introducir texto hay que teclear un comando de inserción de texto.
Comandos
Inserción de datos
Se deben de efectuar las acciones siguientes en modo comando. Antes
se debe pulsar [Esc][i] o [Esc][a], o [Esc][:].
Comando Acción
a Añadir después del carácter actual
A Añadir texto al final de la línea actual.
i Insertar delante del carácter actual
Salir y Guardar
Recuerde que [Esc][:] Significa que el comando se introduce en la línea
de comandos, se introduce el comando y luego se oprime [Intro].
Comando Acción
ZZ Guarda el archivo y Sale
:q! Sale sin guardar
:q Sale si no se modificó el archivo (En caso contrario se
usa :q! O :wq O :x)
:w Guarda el Archivo, se puede indicar el nombre
:wq o :x Guarda y Sale
1,10w fichero Guarda las líneas de 1 a 10 en el fichero indicado
Corrección
Así como en los procesadores de texto tenemos retroceso y suprimir, en
VI tenemos:
Comando Acción
x Suprimir el carácter debajo del cursor
X Borra el carácter delante del cursor
r<c> Sustituye el carácter bajo el cursor por el carácter
indicado <c>
dw Borra la palabra desde el cursor
d$ o D Borra desde el cursor hasta el final de la línea
dO Borra desde el principio de la línea hasta el cursor
df<c> Borra todo hasta el carácter indicado
84 www.sugeek.co
Comando Acción
dG Borra todo hasta la última línea, incluyendo la línea
actual
d1G Borra todo hasta la línea 1, incluyendo la línea actual
dd Borra la línea actual
u Cancela la última acción
:u# Cancela los últimos cambios indicados. :u5 cancela los
últimos 5 cambios
Se pueden repetir estos comandos, como 5dd suprime 5 líneas; 4dw,
borra 4 palabras; 5x, 5 Caracteres, etc.
Desplazamiento
Aunque en las nuevas versiones de VI ya se aceptan las teclas de cursor,
aun posee sus teclas propias de desplazamiento.
Comando Acción
h Ir a la izquierda
l Ir a la Derecha (L minúscula)
k Ir hacia arriba
j Ir hacia abajo
0 (cero) Principio de Linea
:0 Primera línea del archivo
$ Fin de Linea
:$ Última línea del archivo
w Ir a la palabra siguiente
b Ir a la palabra anterior
[Ctrl] + f Avanzar una pantalla igual que Av Pag
[Ctrl ] + b Volver una pantalla igual a Re Pág
G Última línea del archivo, similar a :$
#G Salta a la línea indicada (10G salta a la 10ma línea)
:# Igual a la anterior, :10 salta a la 10ma línea.
Lo anterior solo busca una sola vez, para seguir la búsqueda se usa
comando n -hacia delante- y N -hacia atrás-.
Comandos de sustitución
Para sustituir algún texto, hay que posicionarse al principio de la cadena
a modificar, luego teclear uno de los comandos siguientes. A
continuación, teclee simplemente su texto.
86 www.sugeek.co
Comando Acción
cw Sustituye la palabra corriente
c$ Sustituye hasta el final de la línea
c0 (Cero) Sustituye hasta el principio de la línea
cf<c> Sustituye hasta el próximo carácter indicado
c/<rech> Sustituye hasta la próxima coincidencia de la cadena
indicada
Copiar y Pegar
El comando v permite una selección visual para poder seleccionar el
texto a copiar mediante las teclas de cursor, luego se pueden usar los
siguientes comandos.
Sustitución
La sustitución permite reemplazar de manera automática varias
coincidencias por otra cadena.
:1,$s/[Ll]inux/LINUX/g
Sustituye desde la 1ra línea (1) hasta la última línea ($), todas las
coincidencias encontradas de Linux o linux y los remplaza por LINUX.
Edición avanzada
Comando Acción
:r fichero Inserta el contenido del fichero indicado desde la
posición del cursor
:! cmd Ejecuta el comando indicado
Comando set
El comando set permite dotar de características al editor.
88 www.sugeek.co
EDITOR DE TEXTO NANO
El editor de texto nano es una versión libre del editor pico, a diferencia
del editor por excelencia vi o vim el cual fue ideal para aquellos equipos
o teclados donde no se poseía teclas de desplazamiento, pero con la
masificación de teclados con dichas teclas, el editor vi se volvió
“obsoleto” pero aun así algunas personas lo siguen utilizando por
motivos de facilidad -para usuarios expertos-, ya que vi es un editor muy
completo para realizar múltiples tareas.
¡IMPORTANTE!
Desde la versión 8 de Debian, apt se simplifico notablemente, dejando a
un lado el -get y solo se utiliza apt. EJ: apt install openssh
92 www.sugeek.co
◦ apt-cache gencaches → Construye el paquete y la caché de
origen
◦ apt-cache showpkg → Muestra información general para un
paquete
◦ apt-cache showsrc → Muestra registros del origen
◦ apt-cache stats → Muestra algunas estadísticas básicas
◦ apt-cache dump → Muestra el archivo entero en formato
breve
◦ apt-cache dumpavail → Imprime un archivo disponible en la
salida estándar
◦ apt-cache unmet → Muestra dependencia no conseguidas
◦ apt-cache search → Busca una lista de paquetes para un
patrón de expresión de registro
◦ apt-cache show → Muestra un registro legible para el paquete
◦ apt-cache depends → Muestra información de dependencia en
bruto para un paquete
◦ apt-cache rdepends → Muestra información de la dependencia
inversa para un paquete
◦ apt-cache pkgnames → Lista los nombres de todos los
paquetes en el sistema
Archivo /etc/apt/sources.list
En este archivo encontramos los sitios de donde se descarga el software.
Son en realidad unas urls ya sean http o ftp, seguidas de una “opción”
especial.
Main: Software para los que hay soporte disponible por parte del equipo
Debian.
Comando ldd
Este comando permite ver las librerías dependientes de un ejecutable,
mostrando la ubicación de la librería. Muy útil cuando hacemos jaulas
con chroot.
Comando ldconfig
Con este comando podremos reconfigurar la cache de librerías
compartidas. Normalmente las librerías compartidas se encuentran
configuradas en /etc/ld.so.conf y si lo abrimos, observaremos que están
los directorios donde se encuentran los archivos *.conf que incluyen la
información de las distintas rutas que contienen las librerías. Cada vez
que tengamos un nuevo directorio con librerías nuestras u otro
programa deberemos configurar el archivo indicando la ruta, y luego
ejecutando el comando ldconfig.
94 www.sugeek.co
Debemos de tener especial cuidado con la librería de c o libc, ya que
esta librería es esencial para el 90% de los comandos ejecutados y
servicios de GNU/Linux.
Comando dpkg
Dpkg es el gestor de paquetes de las distribuciones basadas en Debian,
este no usa los repositorios por defecto que se encuentran en
/etc/apt/sources.list, si no que es el encargado de administrar e instalar
aquellos paquetes ya empaquetados como .deb
Aunque dpkg cuenta con mas opciones, estas son las mas usadas, para
el resto de actividades se recomienda el uso de aptitude o apt.
96 www.sugeek.co
ADMINISTRACIÓN DE USUARIOS
En GNU/Linux los usuarios poseen identificadores únicos (UID), los cuales
según su función se les asigna un identificador. El usuario root siempre
tendrá como identificador 0, en cambio los procesos del sistema están
dentro del rango 1-99, y servicios de red se encuentran en un rango de
100-999 -en CentOS van de 100-499-, los usuarios creados toman como
identificadores mayores a 1000 así como los respectivos grupos (GID)
los cuales también inician desde 1000.
• /etc/passwd
• /etc/group
• /etc/shadow
Usuario root
Root es el principal usuario dentro de cualquier sistema GNU/Linux, es el
usuario que todo lo puede y al mismo tiempo el mas peligroso, por este
motivo debemos evitar usarlo si no poseemos suficientes conocimientos
sobre lo que estamos haciendo o vamos a hacer.
Directorio /etc/skel/
En este directorio se guardan los archivos/carpetas predeterminados que
se copian al home de cada usuario nuevo. Normalmente los archivos
que se encuentran en esta carpeta y que son copiados a cada usuario
nuevo son:
• .bash_logout
• .bashrc
• .profile
Archivo /etc/passwd
En este archivo encontramos información de las cuentas de usuario. Una
línea del contenido de dicho archivo seria:
root:x:0:0:root:/root:/bin/bash
1. Nombre de la cuenta
2. Contraseña Cifrada. La x indica que la contraseña está en
/etc/shadow, si es un signo de admiración (!) indica que el usuario
esta deshabilitado y si tiene dos signos (!!) indica que la cuenta
no tiene contraseña.
3. Identificador de usuario o User ID
4. Identificador de grupo o Group ID
5. Comentarios o nombre completo del usuario
6. Path del Home del usuario
7. Shell que usa el usuario -para no permitir el uso de una shell se
usa /bin/false o /bin/nologin-
98 www.sugeek.co
Archivo /etc/group
Este archivo contiene información de los distintos grupos de nuestro
sistema y los usuarios pertenecientes a este.
sudo:x:27:sugeek, user
Archivo /etc/shadow
En este archivo se guardan las contraseñas cifradas de los usuarios y la
información de caducidad de las mismas.
• $1$ → MD5
• $2a$ → Blowfish
• $5$ → SHA-256
• $6$ → SHA-512
sugeek:$6$ODV71rF1$B4soSzgSJycaC7wi7LK:15764:0:99999:7:::
Archivo /etc/default/useradd
En este archivo se encuentra la configuración para crear un usuario. Al
escribir el comando useradd -D también observaremos la configuración
predeterminada al crear los usuarios.
Archivo .bashrc
En este archivo se establecen las configuraciones de las shells
(Variables, Alias, etc). En cada home de usuario existe un .bashrc.
Comando adduser
adduser solicita información guiada del usuario que se desea crear,
como dirección, teléfonos, etc. Y creará la carpeta del usuario dentro de
/home/.
100 www.sugeek.co
Home Phone []: 3
Other []: 4
Is the information correct? [Y/n] y
Comando useradd
Como hemos visto, el comando adduser se puede decir que es mas
amigable, ya que crea todo de una sola vez, directorios, comentarios, y
contraseña, cosa que con useradd no sucede y por tal motivo se indica
las diferentes opciones, pero su ventaja radica en la personalización que
se puede dar a un usuario durante el proceso de creación.
Comando passwd
Por si solo indicará que se cambie la contraseña del usuario actual, para
cambiar la contraseña de otro usuario se debe de indicar el usuario
después del comando.
passwd -n 5 -x 45 -w 7 sugeek
Comando chage
Su función es guiar al usuario durante el cambio de una contraseña y las
respectivas políticas que debe de tener.
¡IMPORTANTE!
Para elaborar contraseñas seguras, se recomienda el uso del comando
pwgen con las opciones -S (Password Seguro difícil de recordar) -N
(Número de contraseñas a generar) -y (Incluir Símbolos) y el número al
final indica la longitud de la contraseña.
102 www.sugeek.co
groupadd sugeek -g 1004
Comando Usermod
Si requerimos modificar un usuario, lo realizamos con usermod el cual
es un comando que me permite cambiar el path del usuario, shell, y
mucho mas.
Comando groupmod
Similar a usermod pero para grupos.
Comando Chsh
Con este comando, el usuario podrá cambiar su consola predeterminada,
por ejemplo cambiarla de sh a bash.
Comando Chfn
Este comando permite cambiar el comentario de la cuenta, así con este
podemos definir el nombre completo, dirección, etc.
Comando su
El Comando su (Substitute User) sin opciones, sirve para cambiar hacia
el usuario root, pero si indica un nombre de cuenta, este cambiara hacia
dicha cuenta. Si se esta en el usuario root y se desea cambiar hacia otro
usuario, este no solicitara contraseña, pero si se esta en un usuario
estándar y se desea cambiar hacia root u otro usuario este solicitara la
104 www.sugeek.co
contraseña del usuario al cual se desea acceder.
Archivo /etc/login.defs
Muchos comandos, como, por ejemplo, login, useradd, groupadd y
passwd, utilizan este archivo para definir algunos valores por defecto y
la validez de los login.
Por ejemplo:
106 www.sugeek.co
PERMISOS DE ARCHIVOS Y CARPETAS
De forma predeterminada el usuario que crea un archivo o carpeta se
convierte en propietario, y el grupo de este también, pero estas
características pueden ser cambiadas. Para visualizar los permisos de un
archivo o carpeta basta con escribir el comando ls -l nombrearchivo.
• r → Permiso de Lectura.
• x → Permiso de ejecución.
• w → Permiso de Escritura.
• - → Sin permiso.
¡IMPORTANTE!
Los permisos de una carpeta no son lo mismo que los permisos de un
archivo.
Permisos Absolutos
Es mas rápido asignar permisos de forma absoluta. Cada valor numérico
toma el espacio de un grupo de permisos.
108 www.sugeek.co
Permisos Relativos:
Esta forma es la menos usada por la mayoría de administradores, pero
no significa que no sea igual de eficiente, a diferencia de colocar valores
numéricos, usa valores alfabéticos, pero la ejecución del comando es
mas larga. Para definir un permiso relativo es necesario indicar a que
grupo va a afectar y los grupos son relacionados de la siguiente manera:
Volviendo al archivo que teníamos el cual poseía los permisos rwx r-x r-
x, usando permisos relativos seria de la siguiente manera:
u=+rwx,g=+rx,o=+rx
u=+r-wx,g=-rw+x,o=-rxw
Comando chown
Este comando cambia el usuario y grupo propietario de un
archivo/carpeta. Su estructura es:
Comando chgrp
A diferencia de chown, este solo cambia el grupo propietario. Su
estructura es: chgrp opciones grupo archivo
Comando umask
Este comando mostrara los permisos predeterminados con los que se
crea un archivo/directorio, si se escribe solo, muestra los permisos de
forma octal invertida, y si se agrega la opción -S mostrara los permisos
predeterminados de forma relativa.
Comando chmod
Ya hemos visto como cambiar el propietario de un archivo/directorio,
pero no hemos establecido los permisos a los archivos, con el comando
chmod es donde aplicamos los permisos relativos o absolutos.
110 www.sugeek.co
Para asignar permisos a un archivo, debemos de tener en cuenta la
siguiente estructura del comando:
Permisos Avanzados
Sticky bit
Solo el propietario del archivo tipo directorio puede modificar el
contenido de este. Para saber si un archivo/carpeta tiene dicha opción,
en la columna de permisos del archivo, al final de los permisos de otros
usuarios encontramos una t, esta indica que el archivo tiene permiso de
sticky bit, y la forma de agregar un sticky bit a un archivo es: chmod +t
archivo.
setgid y setuid
Se aplica a los directorios, y la finalidad de este es que todos los
subdirectorios que se crean dentro de este directorio “especial” hereda
el grupo propietario del directorio principal sin importar el grupo al cual
pertenece el usuario que creo el directorio. La forma de activar dicho
permiso es chmod g+s path y desactivarlo chmod g-s path.
Con chmod u+s comando permite que un archivo se ejecute con los
112 www.sugeek.co
GESTIÓN DE PROCESOS Y SERVICIOS
Los procesos son ejecutados ya sea, por un software, un script, o
demonios y estos procesos tienen relación unos con otros para el
funcionamiento adecuado de dicho software.
Procesos en Background
Los procesos son ejecutados directamente en la consola, pero hasta que
el comando no termine de ejecutarse no se podrá realizar otra actividad.
Corriendo un proceso en Background es posible ejecutar un comando y
aun así seguir trabajando sobre la shell, sin necesidad de abrir otra ya
que el comando se ejecuta en un segundo plano.
root@sugeek:~# jobs
[1]+ Ejecutando sleep 20000 &
root@sugeek:~#
114 www.sugeek.co
Procesos en Foreground
Como vimos en el punto anterior, es probable que necesitemos pasar un
comando nuevamente a la consola principal para seguir trabajando o
visualizar su estado.
Comando nice:
Este le brinda prioridad a un proceso antes de ser ejecutado.
Comando renice
Este cambia la prioridad de un proceso que se encuentre en ejecución,
se utilizan los mismos valores de nice. Para cambiar la prioridad de un
proceso escribimos renice -n -1 -p PID -cambiar –1 por un + si se desea
un número mayor a cero-.
Comando nohup
Se sabe que si cerramos la terminal o se cierra de forma accidental, el
comando se deja de ejecutar, y si estábamos realizando un comando
con un proceso demorado seria un poco molesto que esto sucediera.
Para evitar esto, existe el comando nohup, el cual permite cerrar la
terminal pero continuara ejecutando el comando indicado y la salida del
comando lo tendremos en el archivo nohup.out., Este archivo se crea
automáticamente en el directorio desde donde se ejecuto el comando.
Comando update-rc.d
Este comando permite añadir, suprimir, activar o desactivar los scripts,
por nivel de ejecución. Para que un servicio o script inicie por defecto
con el sistema, solo se debe de indicar update-rc.d servicio defaults.
Servicios
Para administrar servicios o demonios, iniciar, parar, o recargar
podemos utilizar la estructura:
/etc/init.d/nombredeldemonio
¡IMPORTANTE!
Recordar que los dos comandos anteriormente mencionados son
remplazados en su totalidad por SystemD
116 www.sugeek.co
REDIRECCIONES, TUBERÍAS Y FILTROS
Los redireccionadores son herramientas que permiten modificar los
canales estándar (stdin, stdout y stderr). Como sabemos el stdin por
defecto es el teclado, podemos cambiar esta entrada por un archivo, o el
resultado de un comando etc, lo mismo con el stdout y stderr.
Tuberías y Filtros
Las tuberías son una herramienta para la ejecución de un comando con
el resultado del comando anterior. Normalmente esta se utiliza para
filtrar el contenido de una salida de comandos y ubicar con exactitud un
argumento descrito.
118 www.sugeek.co
La tubería se identifica con el carácter ( | ) el cual indica que la salida del
comando anterior sera la entrada del siguiente comando.
Comando tee
Permite copiar la salida de un comando a un archivo y aun asi enviarlo al
stdout. Se puede usar con una tubería.
Comando grep
Busca una palabra o frase indicada dentro de un archivo para mostrar en
pantalla la linea relacionada. Normalmente se usa con una tubería pero
se puede usar por si solo.
Comando egrep
Es igual que utilizar grep -E, para realizar búsquedas o filtros mas
avanzados.
El anterior comando busca las líneas que inicien con e o E, continué con
mpresa y termine con SuGE3K o sugeek en el archivo file. Ahí no queda
todo, se pueden usar muchas mas combinaciones.
Conjunto Función
| Lógico, la expresión colocada antes o después debe de
desaparecer
(...) Agrupación de Caracteres
[...] Un carácter tiene esta posición entre los indicados
. Punto, cualquier carácter
+ Repetición, el carácter colocado antes debe de
aparecer al menos una vez
* Repetición, el carácter colocado antes debe de
aparecer de 0 a n veces.
? El carácter colocado antes debe de aparecer una sola
vez como máximo
{n} El carácter colocado antes debe de aparecer
exactamente n veces
120 www.sugeek.co
Conjunto Función
{n,} Aparece n veces o mas
{n,n} Aparece entre n y m veces
^ Inicio de la Cadena
$ Final de la cadena
Comando cut
Este filtro permite delimitar el contenido de la salida de un comando, o
de un archivo para mostrar el contenido de ciertas columnas, muy
utilizado en archivos de bases de datos, o que tienen como contenido
una base de datos.
Comando tr
Permite cambiar una determinada información de un archivo por otra, en
pocas palabras, permite cambiar un termino por otro.
Algunos ejemplos:
Comando sort
Ordena de alfabéticamente o numéricamente el contenido de un archivo
o la salida de un comando.
122 www.sugeek.co
El anterior comando listara alfabéticamente el contenido del archivo
/etc/passwd y la salida la redirigirá sin sobrescribir el contenido del
archivo usuarios. Si se desea organizar de forma inversa dicho
contenido, solo se ingresa la opción -r.
Comando uniq
Este comando permite remover o mostrar las líneas repetidas que se
encuentran dentro de un archivo o salida de un comando.
Comando paste
El comando paste agrupa n archivos en uno. Para ello, concatena las
líneas de cada uno de los archivos en una sola línea, línea1 del file1 con
la línea 1 del file2 usando delimitadores ( d) para identificar el file1 del
file2.
Además la salida del comando devuelve un < y otro >, el < indica el
contenido de file1, y > indica el contenido de file2, normalmente este
comando se utiliza para corroborar los datos de un archivo ( file1) contra
el “Original” (file2).
Comando sed
Es bueno automatizar el proceso de editar archivos, de forma que se
pueda "procesar por lotes" la edición de archivos, e incluso crear macros
con la habilidad de realizar cambios sofisticados a archivos existentes.
sed es un ligero editor de flujo que está incluido en casi todos los
sabores de UNIX, Linux incluido. Dado que sed es un editor de flujo,
puede editar los datos que recibe de stdin, como aquellos direccionados,
por lo que no se necesita tener los datos a editar almacenados en un
archivo del disco, dado que los datos pueden redirigirse a sed. Es muy
fácil usar sed como parte de un largo y complejo direccionamiento en un
archivo por lotes de nuestro intérprete de comandos.
124 www.sugeek.co
búsqueda o coincidencia. Si hemos usado alguna vez el carácter
asterisco (*) en un comando, es algo muy similar, aunque no idéntico, a
las expresiones regulares. Aquí tenemos los caracteres especiales que
pueden usarse en las expresiones regulares de sed:
'[a-x]*'
Es una gran ventaja usar clases de caracteres siempre que sea posible,
dado que se adaptan mejor a las localizaciones no inglesas incluyendo
caracteres con acentos siempre que sea necesario.
Ejemplos
126 www.sugeek.co
espacios o tabuladores, luego seguido por un paréntesis abierto. Lo cual
debería coincidir con el comienzo de nuestra declaración main() en ANSI
C.
https://gentoo-handbook.lugons.org/doc/es/articles/l-sed1.xml
Regionalización e Internacionalización
A diferencia de otros sistemas, las distribuciones GNU/Linux vienen
adaptadas para funcionar con múltiples idiomas. Para cumplir un
estándar, los desarrolladores, si desean que su software este disponible
no solo en el idioma natal sino en un idioma global (Ingles) se
recomienda utilizar la internacionalización y regionalización del software
ya que utiliza las librerías del sistema para su traducción.
Regionalización(l10n)
Consiste en facilitar una traducción de un producto que corresponde a la
cultura local (Idioma, Moneda, representación simbólica, etc.)
Internacionalización (i18n)
Una función encargada de recuperar una cadena de texto en cualquier
idioma, dentro de una base verificará que idioma se utiliza y sacará la
cadena correspondiente a dicha palabra o frase.
La variable del entorno que hace referencia sobre el idioma del sistema
es LANG, suele establecerse en /etc/profile y se encuentra con el
formato idioma_Pais.norma@Variable, un ejemplo seria Español -
Colombia, la variable LANG tendría como valor es_CO.UTF-8.
root@sugeek:~# locale
LANG=es_CO.UTF-8
LANGUAGE=es_CO:es
LC_CTYPE="es_CO.UTF-8"
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_COLLATE="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_MESSAGES="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"
LC_ALL=
130 www.sugeek.co
• LC_TELEPHONE → Formato de teléfono
• LC_MEASUREMENT → Formato de medidas
• LC_IDENTIFICATION → Formato de identificación
• LC_ALL → Reglas para todas las otras variables de LC
Husos Horarios
GNU/Linux gestiona los husos horarios, por defecto sin configuración de
uso, se elige la hora universal UTC (Universal Time Coordinate)
invariable en el mundo.
Codificación de Caracteres
Cuando se habla de codificación, hace referencia al idioma en el cual
esta escrito el archivo original, puede ser diferente al de nosotros -o al
de nuestra región-, se puede hablar el mismo idioma pero los caracteres
no son los mismo, por ejemplo se tendría que descodificar el es_ES si
nuestro idioma es es_CO ya que en España se maneja el Euro y en
Colombia el Peso, seria aun mas engorroso cuando el idioma de origen
es un idioma simbólico como es el Mandarín.
Operador &&
Es el operador si y solo si el cual permite la ejecución de un comando
siempre y cuando el primero se cumpla y de resultados sin errores.
Operador ||
Dicho operador significa or, es valido siempre y cuando el comando
anterior no se ejecute.
Operador &
Permite enviar un proceso o ejecución a background para poder seguir
trabajando sobre la shell, para llamar nuevamente dicho proceso al
foreground se usa el comando fg solo si tenemos ese comando en
background, si no, verificando el ID del Job con jobs y colocando dicho ID
después de fg.
Operador ;
Permite que un comando se ejecute cuando el comando anterior termine
sin importar si se ejecuto con errores.
Operador \
Si se coloca al final de la línea de un comando, estamos indicando que el
comando o línea de comandos que estamos escribiendo continuara en la
siguiente línea.
132 www.sugeek.co
root@sugeek.co:~#more /var/log/apt/history.log || less \
/var/log/apt/history.log > echo “Aca continuamos”
• \a → Alerta
• \b → backspace
• \n → Nueva Linea
• \r → Retorno de Carro
• \t → Tabulador Horizontal
• \v → Tabulador Vertical
• \\ → BackSlash
• \' → Comilla Simple
• \" → Comilla Doble
• \ → Espacio
Operador #
Define un comentario al final de una línea de comandos.
Agrupación de Comandos
Se pueden agrupar comandos -Entre paréntesis- para luego hacer una
sola redirección o una sola acción con ellos.
Lo anterior es igual a:
• $# → Número de argumentos
• $* → Todos los argumentos del shell
• $- → Opciones suministradas al shell
Comando echo
El comando echo Imprime en pantalla los argumentos o frases escritos
después de este.
Comillas Doble “”
Este tipo de comillas tendrá como base la frase o argumento descrito,
teniendo en cuenta las variables o caracteres especiales que dentro de
esta se escriban.
Comillas invertidas ` `
Estas comillas se utilizan en especial cuando se asocia un comando a
una variable para que este pueda ser interpretada en un futuro.
Variables Shell
Las variables en la shell de GNU/Linux van precedidas de un signo de
pesos ($). Recordemos que la variable es un valor que que se le asigna a
134 www.sugeek.co
un nombre simbólico para después ser llamada durante un proceso de
ejecución de determinado script, este valor puede o no puede cambiar.
Declaración de Variables
Para declarar una variable en la shell es muy sencillo, solo se establece
el nombre de la variable, y luego su valor.
• $BASH=/bin/bash
• $COLUMNS=149
• $DESKTOP_SESSION=gnome-shell
• $DISPLAY=:0
• $EUID=1000
• $GDMSESSION=gnome-shell
• $HISTFILE=/home/sugeek/.bash_history
• $HISTFILESIZE=500
• $HISTSIZE=500
• $HOME=/home/sugeek
• $HOSTNAME=sugeek
• $HOSTTYPE=x86_64
• $LANG=es_CO.UTF-8
• $LANGUAGE=es_CO:en
• $MACHTYPE=x86_64-pc-linux-gnu
• $OSTYPE=linux-gnu
• $PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/s
bin:/usr/bin:/sbin:/bin
• $PWD=/home/sugeek
• $SHELL=/bin/bash
• $UID=1000
• $USER=sugeek
Variables Tipadas
Las variables pueden ser de tipo numérico entero (integer), se
convierten con el comando typeset -i. La ventaja es que permite
efectuar cálculos y comparaciones sin pasar por expr. el comando let
permite cálculos sobre variables
Operador Función
+-*/ Operaciones Sencillas
% Modulo
< > <= >= Comparaciones, 1 si es verdadero o 0
si es falso
!= == Diferente o Igual
&& || Comparaciones Relacionadas con un
operador lógico
&|^ Lógico binario AND OR XOR
Programación en Shell
Ya vimos algunas de las variables, comandos y opciones que hacen
parte de la shell de GNU/Linux, pero es hora de aprender como
136 www.sugeek.co
agrupamos dichas órdenes en un archivo para hacer las cosas mas
fáciles.
Para crear un script se usa un editor de texto preferido, vi, nano, emacs
o los GUI como gedit, scratch, etc.
#!/bin/bash
echo “Hola Mundo”
root@sugeek:~# ./miscript.sh
Hola Mundo
Control de Flujo
No siempre hay un solo camino a seguir y estas proposiciones permiten
que el programa realice distintas tareas, según las condiciones de las
variables a interpretar.
Control If:
El "if" es un proposición de control que verifica si es verdadera o falsa
una condición.
Sintaxis:
if comando-condición
then
Comandos si la condición es verdadera
else
Comandos si la condición es falsa
fi
Unos Ejemplos:
#!/bin/bash
if ps ax | grep httpd | grep -v grep
then
echo "El web server está funcionando"
else
echo "El web server NO esta funcionando"
138 www.sugeek.co
fi
#!/bin/bash
if [ -w /etc/passwd ]
then
echo "Tengo permisos de escritura en el archivo /etc/passwd"
else
echo "NO tengo permisos de escritura en el archivo /etc/passwd"
fi
Puede suceder que tengamos que probar mas de una condición, para
esto, podemos utilizar la siguiente estructura:
if condición1
then
Comando1
Comando2
elif condición2
then
Comando1
Comando2
else
Comando-por-defecto #Ninguna de las anteriores es verdadera
fi
La estructura de control if, es muy utilizada con test, que no es más que
una operación de comparación, en las condiciones que se requieran.
Control case:
El "case" es una proposición que puede analizar y validar varios casos
(opciones) del valor de una variable.
Sintaxis:
case variable in
patrón | patrón)
Comando;
Comando;
Comando;;
#!/bin/bash
case $mes in
ene*|Ene*)
echo "Mes de Enero";;
feb*|Feb*)
echo "Mes de Febrero";;
mar*|Mar*)
echo "Mes de Marzo";;
*)
echo "Algún otro mes!";;
esac
Ciclos
Los ciclos contienen secciones del programa que se repetirán una
determinada cantidad de veces o hasta que alguna condición cambie.
Ciclo for
El for debe ser el ciclo más utilizado, es muy práctico cuando se trabaja
con shell scripts.
La variable utilizada en el for (en este caso $i) es reemplazada por cada
una de las palabras de la lista, en cada ciclo del for.
Sintaxis:
140 www.sugeek.co
#!/bin/bash
for i in `ls -1 /tmp`
do
echo $i
rm -i $i
done
Ciclo while
Este ciclo utiliza la condición de terminación de un comando -valor de
retorno- para controlar la ejecución de los comando dentro del ciclo.
Termina la ejecución del ciclo, cuando el comando devuelve falso -algo
diferente a 0-.
Sintaxis:
while comando
do
cuerpo del ciclo ejecutado a condición de
que el comando devuelva verdadero
done
#!/bin/bash
while sleep 60s
do
who | grep daniel
done
Ciclo until
Este ciclo se comporta de una manera muy similar al anterior, ya que
define su control dependiendo del comando que ejecuta (si éste da
verdadero, se sigue ejecutando el ciclo).
until comando
do
cuerpo del ciclo ejecutado a condición
de que el comando devuelva falso.
done
#!/bin/bash
until who | grep daniel
do
sleep 60s
done
En este ejemplo, a diferencia del ejemplo del ciclo while, el ciclo ejecuta
primero el comando, de esta forma no es necesario esperar 60 segundos
para saber si el usuario Daniel esta conectado en el equipo, si el usuario
esta conectado, el ciclo termina.
Funciones
Las funciones son un recurso esencial para la buena programación,
permiten escribir una sola vez un pedazo de código que se repita varias
veces en el script, y así, minimizar el margen de error y también la
cantidad de líneas en el programa.
#!/bin/bash
. /home/funciones.sh #Se cargan las funciones de un archivo externo
142 www.sugeek.co
Expliquémosla:
• : → Nombre de la Función.
• { → Abre el contenedor y tareas de la función.
• :|: → Se llama a si misma y el resultado se lo envía así misma.
• & → Se envía así misma a un proceso de segundo plano.
• } → Cierra las actividades de la función.
• ; → Termina la Función.
• : → Se llama nuevamente
Valores de retorno
Las funciones pueden devolver valores de error utilizando el comando
"return <valor>". En caso de que no se especifique un valor de retorno
de esta forma, el valor retornado será el que retorne el último comando
ejecutado dentro de la función. Desafortunadamente no es posible
asignar el valor retornado en una sola línea, siempre es necesario
utilizar la variable especial "$?".
Ejemplo:
#!/bin/sh
func () {
return $1
}
func 0
echo "ret: ($?)"
func 1
echo "ret: ($?)"
func 2
echo "ret: ($?)"
func 3
echo "ret: ($?)"
Operaciones Aritméticas
Existen varias formas de calcular valores dentro de un shell script.
Tradicionalmente, estos cálculos se hicieron con programas externos,
esto generaba un retardo inmenso en la ejecución del shell script.
$[<expresión>]
Ejemplo:
#!/bin/sh
x=2
tot=$[$x+1]
echo "tot: ($tot)"
144 www.sugeek.co
para comparar variables.
#!/bin/bash
if [ ! -x $FILE ]
then
chmod +x $FILE
else
echo "$FILE es ejecutable"
fi
Comando read
El comando read es muy sencillo. Le indicamos que solicite el valor de
#!/bin/bash
echo “Escriba el contenido de la Variable A”
read A
echo “Se imprime en pantalla el valor de la variable A”
echo $A
root@sugeek:~# ./script.sh
Escriba el contenido de la Variable A
www.sugeek.co
Se imprime en pantalla el valor de la variable A
www.sugeek.co
Comando dialog
Este comando permite generar una “GUI” dentro del CLI, permitiendo
interactuar al usuario con las teclas del cursor, de esta manera el
programa o script se vuelve mas amigable.
146 www.sugeek.co
ADMINISTRACIÓN DE UNIDADES DE
ALMACENAMIENTO
Como ya sabemos, GNU/Linux identifica los distintos dispositivos de
almacenamiento (Discos Duros) como es el sd (sda, sdb, etc...) y el hd
(hda, hdb, etc...), estos dispositivos tienen características especiales
como velocidades de escritura/lectura, recordando que los discos de
estado sólido o SSD son de mejor rendimiento que los mecánicos o
discos duros convencionales. En cuanto a los discos duros mecánicos
están compuestos por platos, cabezales, pistas, sectores, etc. Así como
lo podremos encontrar tanto para computadoras de escritorio,
servidores, portátiles, etc.
¡IMPORTANTE!
Los discos duros están divididos por bloques, y un archivo SIEMPRE
ocupa un bloque completo sin importar su tamaño, por eso si un archivo
pesa solo 1byte y el bloque por defecto es de 4096bytes significa que se
están perdiendo 4095bytes, a lo que conlleva a una ocupación rápida del
espacio en disco. Se debe tener en cuenta la finalidad del sistema de
archivos, no es lo mismo un servidor de archivos, a un servidor de base
de datos y a un servidor de hosting web.
Superbloque
Cada sistema de archivos dispone de al menos un superbloque, el cual
es el encargado de contener información respecto al sistema de archivos
como:
• Tipo
• Tamaño
• Estado
• Otros Superbloques
• Tabla de Inodos
MBR
El MBR o Master Boot Record se encuentra en el sector 0 de un
dispositivo de almacenamiento, normalmente en este se guarda
información del arranque del SO, tablas de particiones, identificador del
disco. El MBR tiene un tamaño de 512 Bytes.
¡IMPORTANTE!
Actualmente MBR solo es soportado por BIOS o UEFI/EFI en modo legacy,
se recomienda el uso de particiones GPT.
Particiones soportadas
GNU/Linux soporta una gran cantidad de tipos de particiones, que se
listan a continuación.
148 www.sugeek.co
Archivo /etc/fstab
FileSystem Table o Tabla de sistema de Archivos. En este archivo se
encuentran las diferentes configuraciones de los sistemas de archivos
soportados por GNU/Linux. Este archivo se usa a menudo cuando se
tienen unidades externas y deseamos que se monten al iniciar el
sistema operativo. La estructura de este archivo es:
150 www.sugeek.co
que tiene derechos a montar y desmontar el dispositivo) será
aquel que lo montó (el primer usuario distinto de root
conectado al sistema localmente), pero normalmente sera el
usuario root si el sistema de ficheros viene configurado para
montarse automáticamente durante el arranque.
◦ Ro → read-only. Con esta opción hacemos que no se pueda
escribir en el dispositivo, que tan solo se pueda leer.
◦ Rw → read-write. Con esto montamos la partición para que
sea posible tanto leer como escribir en el dispositivo físico,
esta opción es muy usada con dispositivos que permiten la
escritura como por ejemplo los pendrive o los disquets, ya
que sin esta opción, no podríamos guardar datos en dichos
dispositivos.
◦ User → Permite a cualquier usuario del sistema montar o
desmontar un dispositivo físico sin necesidad de ser root, esta
opción es muy útil para dispositivos de uso frecuente, como
cd-roms o disquetes. Pero también debe tenerse en cuenta,
que el usuario que montó el dispositivo, solo el mismo usuario
podrá desmontar el dispositivo.
◦ Users → Indica que cualquier usuario puede montar y
cualquiera también, puede desmontar el dispositivo.
◦ Nouser → Debes ser el usuario root para montar el sistema de
ficheros, nadie más que el superusuario podrá hacerlo.
• dump-freq → Es el comando que utiliza dump para hacer
respaldos del sistema de archivos, si es cero no se toma en
cuenta ese dispositivo.
• Pass-num → Indica el orden en que la aplicación fsck revisará la
partición en busca de errores durante el inicio, si es cero el
dispositivo no se revisa.
Comando lsscsi
Este comando identifica los discos que tenemos conectados en nuestro
sistema, normalmente no viene instalado en Debian, pero se puede
instalar con aptitude install lsscsi.
152 www.sugeek.co
* FLUSH_CACHE_EXT
* Gen2 signaling speed (3.0Gb/s)
* Native Command Queueing (NCQ)
Checksum: correct
Pero hdparm no solo sirve para obtener información del disco, este
también permite realizar modificación al disco, como ancho de banda del
bus de datos, etc.
Comando mount
Este comando permite montar las unidades que deseemos indicando
unas opciones o sin estas. La estructura de este comando es:
Además las opciones de este, son similares -por no decir iguales- a las
contenidas del archivo /etc/fstab ya que en este archivo utiliza el
comando mount.
Comando umount
A contrario del mount este se encarga de desmontar la unidad
montada, este comando es sencillo de usar la estructura es:
umount /dev/dispositivo
umount /carpetamontada
Comando lsof
Este comando permite verificar que archivos están usando el dispositivo
-sin opciones muestra todos los archivos abiertos y asociados al
proceso-, ya que en ocasiones cuando se desea desmontar un
dispositivo arroja el mensaje “Dispositivo Ocupado, no se puede
desmontar”
154 www.sugeek.co
pantheon- 25828 soporte 29r REG 8,17 18356 104
/media/SUGEEK/img.jpg
8 0 20971520 sda
8 1 194560 sda1
8 2 1 sda2
8 5 20773888 sda5
11 0 1048575 sr0
254 0 1949696 dm-0
254 1 9764864 dm-1
Comando fdisk
!IMPORTANTE¡
Con este comando solo podremos crear particiones de máximo 2TB, lo
cual se supondría que seria mas que suficiente si vamos a crear
RAID+LVM, y aun son pocos los discos que superen esta capacidad, para
particiones con mayor capacidad se recomienda usar gdisk el cual usa
GPT como método de particionado y esta disponible para UEFI.
fdisk /dev/dispositivo
Al ingresar, nos pregunta qué deseamos hacer, para tener mas claro las
opciones solo oprimimos la tecla m de fdisk. (Eliminar, listar, crear, etc)
156 www.sugeek.co
Building a new DOS disklabel with disk identifier 0x6dfdc02e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Como vemos ya el disco sdb tiene una partición creada en memoria mas
no se han escrito los campos en el disco, para que dichos cambios
tomen efecto, damos la opción w la cual indica Write sobre el disco.
158 www.sugeek.co
Si sobre el disco que estamos trabajando cuenta con particiones y no es
posible desmontarlo, pero aun así tiene bloques disponibles para crear
una nueva partición y dicha partición después de crearla no se muestra
en el sistema, se usa el comando partprobe /dev/sdx -la x indica la letra
del disco-, esto con el fin de sincronizar nuevamente las tablas de
particiones del sistema.
Comando gdisk
Como ya hemos visto, el comando fdisk está diseñado para administrar
particiones con MBR no mayores a 2TB, pero si vamos a administrar
particiones de mayor tamaño se recomienda el uso de UEFI y particiones
GPT.
¡IMPORTANTE!
Ya la noción de particiones primarias o extendidas se pierden con GPT,
Evidenciamos que las opciones son similares a las del comando fdisk,
Crear una partición con la opción n, eliminarla con la d, imprimir en
pantalla las particiones creadas o del disco con p, escribir los cambios en
el disco con w, pero la ayuda es con el signo de interrogación ?.
Final checks complete. About to write GPT data. THIS WILL OVERWRITE
EXISTING
PARTITIONS!!
160 www.sugeek.co
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
Otro aspecto que cambia, son los códigos de particiones -se muestran
con la opción L-.
Si abrimos el disco con fdisk arroja una advertencia donde indica que se
use GNU Parted (gparted).
Formatear Unidades
Después de tener preparado nuestro disco con las particiones, es
momento de darle un formato a dichas particiones para que este se
pueda usar como medio de almacenamiento. Para ello usamos el
comando mkfs.
162 www.sugeek.co
Algunas opciones que tiene el comando mkfs es:
La Swap tiene como desventaja que al estar en el disco duro, hace que
sea demasiado lento las consultas de este, por tal motivo, si se tiene un
disco duro con RPM menores a 7200 se recomienda tener la SWAP en un
dispositivo externo u otro disco, pero el sistema solo pasara aquellos
procesos que estén “Estáticos” o los que demoren mas tiempo en
memoria, los procesos temporales siguen en la memoria RAM.
164 www.sugeek.co
a afectar el sistema de algún modo. En servidores de producción se
recomienda tener un disco aparte para la swap o en el común de los
casos tenerla en un archivo para poderla manipular a nuestro gusto
cuando el sistema así lo requiera -aumentar o disminuir el tamaño-.
Activamos la swap
166 www.sugeek.co
Las Cuotas de Disco
Las cuotas permiten poner límites al uso del espacio en los sistemas de
archivos, estos límites pueden ser de 2 tipos:
¡IMPORTANTE!
Abre con el editor de texto predeterminado y los bloques de las cuotas
168 www.sugeek.co
son de 1KB.
Los valores de Blocks e inodes no se deben modificar, ya que es un valor
dinámico.
Para verificar que una cuota ha sido aplicada se usa el comando quota
usuario, y si se desea que un usuario tenga las misma cuota que otro se
ejecuta edquota -p sugeek user.
170 www.sugeek.co
dispositivo.
• FAULTY: Un dispositivo que emula varios escenarios de falla de
disco. Sólo se utiliza para pruebas y desarrollo.
• CONTAINER: Grupo de dispositivos que son gestionados como un
único dispositivo sobre el cual se pueden crear dispositivos RAID.
Creamos el RAID 10
Layout : near=2
Chunk Size : 512K
Lo ideal seria tener otro disco para funcionar como hotspare o disco de
respaldo por si uno de los del arreglo falla. Para ello, seria ejecutar el
comando que mencionamos anteriormente “agregar un disco nuevo al
arreglo” y al ejecutar el mdadm --detail /dev/md126 observaremos que
al final tenemos la línea:
4 8 81 - spare /dev/sdf1
172 www.sugeek.co
root@debian:/home/soporte# mdadm --add /dev/md126 /dev/sdf1
mdadm: added /dev/sdf1
root@debian:/home/soporte# mdadm --detail /dev/md126
/dev/md126:
Version : 1.2
Creation Time : Mon Jun 30 17:14:01 2014
Raid Level : raid10
Array Size : 16765952 (15.99 GiB 17.17 GB)
Used Dev Size : 8382976 (7.99 GiB 8.58 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Layout : near=2
Chunk Size : 512K
Nuestro RAID queda listo para crear la partición con fdisk, luego formato
con mkfs.ext4 y montarlo en /etc/fstab.
174 www.sugeek.co
Writing physical volume data to disk "/dev/md126p1"
Physical volume "/dev/md126p1" successfully created
Writing physical volume data to disk "/dev/sdg1"
Physical volume "/dev/sdg1" successfully created
root@sugeek:/home/soporte# pvdisplay -v
En la líneas MAX LV, y MAX PV, las cuales indican el número máximo de
176 www.sugeek.co
volúmenes lógicos que podemos crear en este grupo de volúmenes,
siendo 0 el valor que indica infinito y el número máximo de pv que
pueden ser asociados a dicho vg respectivamente.
Luego para poder utilizar este LV, solo nos queda darle el formato
adecuado, montarlo y darle el uso que deseemos.
root@sugeek:/home# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
rootfs 5,0G 1,9G 2,9G 40% /
udev 10M 0 10M 0% /dev
tmpfs 101M 332K 100M 1% /run
/dev/mapper/System-etc 5,0G 1,9G 2,9G 40% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 201M 0 201M 0% /run/shm
/dev/sda1 184M 23M 152M 14% /boot
/dev/mapper/System-home 5,0G 139M 4,6G 3% /home
/dev/mapper/System-var 9,2G 343M 8,4G 4% /var
178 www.sugeek.co
/dev/mapper/vg01-Datos1 7,9G 146M 7,4G 2% /home/LVM
Ampliar y Reducir un VG
Si tenemos un nuevo disco duro, y lo queremos agregar a un sistema
LVM debemos de prepararlo y luego agregarlo a un VG para usarlo en un
LV.
180 www.sugeek.co
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 8,00 GiB
PE Size 4,00 MiB
Total PE 2047
Alloc PE / Size 2047 / 8,00 GiB
Free PE / Size 0 / 0
VG UUID K79hjk-dmOc-DvVF-ounS-XbAx-7jv0-e3OrAA
Ampliar y Reducir un LV
Como ya tenemos un nuevo PV dentro del VG el cual hace parte el LV,
solo queda asociarle el PV nuevo al LV, para ello utilizamos el comando
lvextend el cual permite los parámetros -l (Número de extensiones
lógicas LE) o -L como para lvcreate. Luego precisamos el nuevo tamaño
del LV o, si añadimos el prefijo +, el tamaño adicional que deseamos.
182 www.sugeek.co
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 23,98 GiB
PE Size 4,00 MiB
Total PE 6139
Alloc PE / Size 5119 / 20,00 GiB
Free PE / Size 1020 / 3,98 GiB
VG UUID K79hjk-dmOc-DvVF-ounS-XbAx-7jv0-e3OrAA
root@sugeek:/home/soporte# df -h /home/LVM
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1 7,9G 146M 7,4G 2% /home/LVM
root@sugeek:/home/soporte# df -h /home/LVM
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1 7,9G 146M 7,4G 2% /home/LVM
Como hemos notado el LV paso de 8GB a 20GB, con las 12GB que le
hemos agregado. Nunca debemos de reducir por debajo del espacio real
utilizado por los datos contenidos en el LV.
Ahora queda reducir nuestro LV, vamos reducirlo a 10GB, para ello se
recomienda seguir los siguientes pasos.
184 www.sugeek.co
WARNING: Reducing active logical volume to 10,00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce Datos1? [y/n]: y
Reducing logical volume Datos1 to 10,00 GiB
Logical volume Datos1 successfully resized
root@sugeek:/home/soporte# mount /dev/vg01/Datos1 /home/LVM/
root@sugeek:/home/soporte# df -h /home/LVM
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1 10G 146M 7,8G 2% /home/LVM
Sin precisar nada como destino, LVM va a mover todos los PE del PV -Lo
mas común-, en los otros PV del VG. Debemos de tener en cuenta que
para mover el contenido de un PV hacia otro, el otro PV debe de
encontrarse en el mismo VG.
186 www.sugeek.co
Found volume group "vg01"
Loading vg01-pvmove0 table (254:4)
Suppressed vg01-pvmove0 identical table reload.
Resuming vg01-Datos1 (254:1)
Creating volume group backup "/etc/lvm/backup/vg01" (seqno 9).
Checking progress before waiting every 15 seconds
/dev/sdg1: Moved: 100,0%
Found volume group "vg01"
Found volume group "vg01"
Loading vg01-Datos1 table (254:1)
Loading vg01-pvmove0 table (254:4)
Suspending vg01-Datos1 (254:1) with device flush
Suspending vg01-pvmove0 (254:4) with device flush
Found volume group "vg01"
Resuming vg01-pvmove0 (254:4)
Found volume group "vg01"
Resuming vg01-Datos1 (254:1)
Found volume group "vg01"
Removing vg01-pvmove0 (254:4)
Removing temporary pvmove LV
Writing out final volume group after pvmove
Creating volume group backup "/etc/lvm/backup/vg01" (seqno 11).
Suprimir un VG
Para poder suprimir de forma adecuada un LVM de nuestro sistema, es
necesario seguir la siguiente estructura.
188 www.sugeek.co
root@sugeek:/home# umount /home/LVM && lvremove /dev/vg01/Datos1
Do you really want to remove active logical volume Datos1? [y/n]: y
Logical volume "Datos1" successfully removed
¡IMPORTANTE!
Una snapshot puede ser de RW o RO, pero aun así es recomendable que
al usar una snapshot solo sea montada -la snapshot se puede montar
como cualquier otro disco- en RO para no afectar la información allí
contenida.
190 www.sugeek.co
dm_crypt.
¡IMPORTANTE!
Podemos cifrar particiones RAID y LVM pero cuando ya están listas para
ser formateadas, en pocas palabras, antes de darle formato a la
partición debemos de cifrarla.
WARNING!
========
Sobrescribirá los datos en /dev/sdb1 de forma irrevocable.
Comando smartctl
Este comando es muy útil si deseamos obtener información sobre los
discos, como por ejemplo la salud de estos y poder tomar medidas
preventivas antes de una posible falla que afecte el sistema.
El siguiente ejemplo arroja todos los datos posibles del disco /dev/sda, la
salida es extensa, por tal motivo se deja a criterio de cada quien el
análisis de la información que este arroja.
192 www.sugeek.co
ADMINISTRACIÓN DE RED
Al principio vimos algunos comandos para el diagnóstico de la red, como
netstat y ss, En esta ocasión vamos a profundizar sobre otros comandos
de red.
Archivo /etc/network/interfaces
En este archivo encontramos la configuración de las interfaces de red
del sistema. Este archivo no funciona adecuadamente si estamos usando
GUI.
auto lo
iface lo inet loopback
#Direccionamiento Estatico
auto eth0
iface eth0 inet static
address DireccionIP
network DirecciondeRed
gateway Ipdelrouter
netmask mascaradered
broadcast direcciondebroadcast
up comando a ejecutar cuando la interfaz suba, como un route
#Direccionamiento Dinamico
auto eth1
iface eth1 inet dhcp
Archivo /etc/resolv.conf
Encontramos los servidores DNS, se inicia la primera columna (Opciones)
con nameserver para indicar luego la IP del servidor DNS. Esta opción es
la principal.
#DNS de OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
domain sugeek.co
search sugeek.co
options timeout:5 attemps:1
Archivo /etc/hosts
Archivo encargado de asociar IP con nombres de host, el sistema
primero consulta este archivo y luego el archivo resolv.conf -según
configuración del archivo nsswitch-.
127.0.0.1 localhost
Comando ifconfig
Por si solo muestra información de las interfaces activas del sistema
194 www.sugeek.co
• up → Activa una interfaz de red
ifconfig eth0 up
• down → Desactiva una interfaz de red
ifconfig eth0 down
Comando ip
• addr → Muestra la información de las interfaces
root@sugeek:~# ip addr
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 00:24:e8:c9:e8:ee brd ff:ff:ff:ff:ff:ff
inet 192.168.252.60/24 brd 192.168.252.255 scope global eth0
inet6 fe80::224:e8ff:fec9:e8ee/64 scope link
valid_lft forever preferred_lft forever
root@sugeek:~# ip link
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP mode DEFAULT qlen 1000
link/ether 00:24:e8:c9:e8:ee brd ff:ff:ff:ff:ff:ff
Comando route
Por si solo visualiza las rutas que tiene creadas el sistema.
196 www.sugeek.co
route add -net 192.168.238.0/24 gw 192.168.3.1 dev eth1
Para Eliminar una ruta ya creada, solo basta con cambiar el add por del.
Para crear la ruta predeterminada del sistema (gateway) se escribe.
Comando whois
Este comando permite obtener información sobre un dominio/IP
especificado, así sabremos quien lo registró, cuanto tiempo ha estado
registrado, cuando fue la última renovación, cuando se vence, etc.
Comando mtr
Permite hacer pruebas de conexión desde el servidor al host indicado, su
hermano menor es el comando traceroute, pero como se evidencia en el
siguiente ejemplo, mtr es mas informativo y útil en pruebas de VozIP.
Comando arp
Verifica el estado de las tablas ARP del sistema, recordemos que las
tablas ARP son tablas que asocian las direcciones MAC con las IP's de los
distintos host que se conectan al servidor.
soporte@sugeek:~$ arp -n
Dirección TipoHW DirecciónHW Indic Máscara Interfaz
172.16.5.105 (incompleto) eth0
172.16.4.194 ether 74:d4:35:28:fb:a1 C eth0
172.16.5.108 ether 50:46:5d:45:33:ba C eth0
172.16.4.1 ether ac:f1:df:73:d3:55 C eth0
Comando ping
Permite corroborar si un host es alcanzable
Comando traceroute
A diferencia de mtr, solo envía un tres paquetes, por lo demás hace
exactamente lo mismo que mtr, enviar un paquete para verificar los
saltos desde un host origen a un host destino.
198 www.sugeek.co
2 181.63.92.1 52.320 ms 32.375 ms 44.426 ms
3 172.21.16.190 53.450 ms 52.248 ms 54.038 ms
4 190.157.11.186 54.669 ms 55.285 ms 55.909 ms
5 * * *
6 173.205.63.221 75.159 ms 80.353 ms 79.478 ms
7 199.229.229.174 93.108 ms 74.186 ms 78.410 ms
8 4.69.147.163 235.146 ms 237.084 ms 234.838 ms
9 4.69.147.163 235.429 ms 233.593 ms 234.724 ms
10 4.53.150.46 156.079 ms 149.967 ms 150.134 ms
11 207.98.64.39 136.895 ms 133.279 ms 130.617 ms
12 207.98.64.39 140.201 ms !X * *
Comando nslookup
Obtiene la dirección ip de un dominio especificado
Non-authoritative answer:
Name: sugeek.co
Address: 184.107.53.15
Comando dig
Similar a nslookup, pero a diferencia del anterior, con este se puede
cambiar el servidor DNS, dig @servidordns dominioaconsultar
;; QUESTION SECTION:
;sugeek.co. IN A
;; ANSWER SECTION:
Comando IPTraf
Este comando -es necesario instalarlo- nos permite visualizar en tiempo
real la actividad de la red a través de una GUI. Las opciones mas usadas
son:
Archivo /etc/networks
En este archivo encontramos las redes que están directamente
conectadas a nuestro sistema o asociadas a este.
200 www.sugeek.co
REGISTROS DEL SISTEMA
Ya habíamos mencionado sobre el comando dmesg (Consulta el archivo
/var/log/dmesg), last y lastb, pero no son los únicos que generan
registros en el sistema.
Servicio rsyslog
Rsyslog es un servicio muy completo y complejo, pero interesante,
podemos encontrar mas información en http://www.rsyslog.com/ , ya
que en este apartado se tocaran temas muy superficiales.
¡IMPORTANTE!
Systemd, en futuras versiones sera el encargado de administrar los
registros.
mail.info /var/log/mail.log
mail.err @server.example.net
local1.err /var/log/mylog
202 www.sugeek.co
• 0 (Emergencia - panic) → El sistema está inutilizable
• 1 (Alerta - alert) → Se debe actuar inmediatamente
• 2 (Crítico - crit) → Condiciones críticas
• 3 (Error - err) → Condiciones de error
• 4 (Peligro - warn) → Condiciones de peligro
• 5 (Aviso - notice) → Pero condiciones notables
• 6 (Información - info) → Mensajes informativos
• 7 (Depuración - debug) → Mensajes de bajo nivel
Prioridad=Recurso*8+Severidad
RainerScript
Es el lenguaje predeterminado de rsyslog y el recomendado a utilizar
cuando poseemos mayores conocimientos sobre rsyslog. Este lenguaje
se asemeja al lenguaje utilizado en la creación de scripts en Bash.
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP `cat /var/run/inn.pid`
204 www.sugeek.co
endscript
nocompress
}
Archivo /var/log/messages
En este archivo se guardan la mayoría de mensajes que arrojan los
servicios del sistema, se puede cambiar el archivo de registro según la
configuración de cada servicio.
206 www.sugeek.co
TAREAS PLANIFICADAS
Poder automatizar algunos procesos del sistema hace que la labor del
administrador sea mas eficiente, para esto existen los comandos crond y
at, además de la herramienta anacron la cual no veremos en esta
ocasión ya que esta herramienta se enfoca para computadores de
escritorio.
Archivo /etc/crontab
En este archivo se encuentra la configuración general del demonio
crond. El contenido de dicho archivo es similar a:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
• m → Minutos
• h → Horas
• dom → Día del Mes (Day of Month)
• mon → Mes (Month)
• dow → Día de la Semana (Day of Week) 0-6 (0 Es domingo y 6 es
el Sábado)
• 17 → A los 17 Minutos
• * → De cada hora
• * → Todos los Días
• * → Todos los meses
• * → Todos los días de la Semana
• root → Con el Usuario Root
• cd / && run-parts --report /etc/cron.hourly → Ejecutar este
comando
208 www.sugeek.co
• @monthly → Ejecutar una vez al mes, es igual que indicar "0 0 1
* *".
• @weekly → Ejecutar una vez a la semana, es igual que indicar "0
0 * * 0".
• @daily → Ejecutar una vez al día, es igual que indicar "0 0 * * *".
• @midnight → (igual que @daily)
• @hourly → Ejecutar a cada hora, es igual que indicar "0 * * * *".
Comando crontab
Con este comando se puede gestionar las funciones del demonio crond
por usuario, siempre y cuando tenga permisos de ejecutarlo.
Dependiente de los archivos /etc/cron.allow /etc/cron.deny y
/var/spool/cron/crontabs/ en este último se guardan las tareas
planificadas del usuario. Algunas opciones este comando son:
• u → Indica el usuario
• l → Lista la tareas del usuario indicado
• e → Edita las tareas planificadas del usuario
• r → Elimina los crontabs del usuario indicado
Comando at
Este comando a diferencia del crontab -también posee at.allow y at.deny
dentro de /etc- solo permite ejecutar una tarea planificada, por ende, si
se va a ejecutar mas de una sola vez, se recomienda el uso de crontab.
root@sugeek:/etc# at 19:58
warning: commands will be executed using /bin/sh
at> echo "HOLA"
at> <EOT>
job 2 at Tue May 13 19:58:00 2014
210 www.sugeek.co
SEGURIDAD EN GNU/LINUX
Aunque GNU/Linux es uno de los sistemas operativos mas robustos en
cuanto a seguridad se refiere, una mala configuración o administración
podría afectar notablemente la integridad de la información allí
almacenada o en su defecto que nuestro servidor sea usado en una
bootnet.
Archivo /etc/securetty
Este archivo permite bloquear las consolas TTY para su conexión local,
solo basta con eliminar o comentar las TTY que no deseemos conexión,
se recomienda dejar 3 por lo mínimo.
Rootkits
Un RootKit permite suplantar cierto comando para poder obtener
credenciales de root y así darle permisos al atacante de realizar
cualquier actividad en nuestro servidor.
soporte@debian:~$ pwd
/home/soporte
soporte@debian:~$ cat su
#!/bin/bash
echo -e "Contraseña: \c"
read -s password
echo "$@ $password" > /tmp/fic
echo
echo "su: Fallo de Autenticación"
/bin/su $@
soporte@debian:~$ chmod +x su
soporte@debian:~$ export PATH=$HOME:$PATH
soporte@debian:~$ su root
Contraseña: #Falso Su
su: Fallo de Autenticación #Falso su
Contraseña: #Verdadero SU
root@debian:/home/soporte# cat /tmp/fic
root D3B14N
Virus
Se tiene que desmitificar la frase “En GNU/Linux no existen virus”, ya
que si existen virus en GNU/Linux, pero no tanto como en otros sistemas
mas extendidos, es mas, para que un virus sea ejecutado en GNU/Linux
debe de tener acceso a root, el cual accede con el permiso del usuario
-el usuario instala software sin saber que es-, Pero aun así es difícil que
dicho virus afecte notablemente el sistema por la estructura del sistema
de archivos de Linux (FHS).
212 www.sugeek.co
Bloquear USB
En ocasiones es necesario bloquear ciertos dispositivos USB para evitar
el robo de información, o posibles infecciones.
¡IMPORTANTE!
HCI hace referencia a Host Controller Interface o Interfaz Controladora
de Host, OHCI es OpenHCI proveniente de Compaq -actual HP-, UHCI es
UniversalHCI, EHCI es EnhancedHCI y XHCI eXtensibleHCI, las dos
últimas desarrolladas por Intel. Si se tiene XHCI instalado, las anteriores
no son necesarias ya que XHCI soporta las antiguas versiones de USB.
Herramienta SUDO
El comando de sustitución de usuario (substitute user do), o SUDO,
permite ejecutar ciertos comandos de y usuario con x usuario. En Debian
por defecto no viene instalado, lo podemos instalar con el comando apt-
¡IMPORTANTE!
La configuración por defecto de SUDO hace que cualquier usuario del
sistema pueda ejecutar actividades de root, se recomienda instalar sudo
y no dejar la configuración por defecto.
Archivo /etc/sudoers
En este archivo se definen las reglas por defecto del comando sudo.
Las reglas generales son las Defaults, estas son utilizadas para modificar
el comportamiento de sudo. Dichas opciones son aplicables tanto a nivel
global, a nivel de usuario o a nivel de maquina. Ya el resto de opciones
es donde se definen los permisos por usuarios o por grupos.
214 www.sugeek.co
• secure_path: Ubicación de los binarios que se ejecutan con sudo
• logfile: Podemos definir la ubicación del log, adicional las reglas
log_host, log_year, log_input y log_output mejora el registro.
• badpass_message: Muestra el mensaje definido cuando se
ingresa mal la contraseña, se puede insultar al usuario con la
regla insults.
• passwd_tries: Limite de intentos para ingresar la contraseña es
(por defecto 3), podemos disminuirlo o aumentarlo. se
recomienda combinar con la regla passwd_timeout la cual define
el tiempo que se espera en minutos para que el usuario ingrese
la contraseña.
• timestamp_timeout: Cuando se ingresa la contraseña por primera
vez al ejecutar sudo, el sistema lo recordara por defecto durante
15 minutos, podemos disminuirlo o aumentar este tiempo,
recomendamos dejarlo en 0 para que siempre pida la contraseña.
#ALIAS (Comandos)
Cmnd_Alias ADMIN =/sbin/,/usr/sbin/,/usr/local/sbin/
Cmnd_Alias TECNI =/sbin/ifconfig,/sbin/fsck
#REGLAS (ACL)
#Usuario root y grupo sudo continúan con sus reglas
root ALL=(ALL) ALL
216 www.sugeek.co
Para saber si un comando utiliza PAM, se valida si está montado con la
librería PAM libpam.so:
Tipo de Modulo
• Auth → Módulo de autenticación (por ejemplo, petición de login y
contraseña).
• Account → Autorización, gestión de cuentas (verificación del
usuario para el servicio dado. ¿Se autoriza?).
• Password → Comprobación y actualización de la información de
seguridad (p. ej.: ¿sigue siendo válida la contraseña? Si no es así,
petición de una nueva contraseña).
• Session → Modificación del entorno del usuario.
Control
• Required → Éxito requerido. En caso de denegación, se llama a
los módulos restantes a pesar de todo, pero, pase lo que pase, al
final PAM devolverá una denegación.
• Requisite → La denegación termina de manera inmediata la
autenticación. El éxito le autoriza a proseguir.
• Sufficient → Un éxito evita los otros módulos. Dicho de otro modo,
PAM devuelve ok pase lo que pase en caso de éxito.
• Optional → Se ignora el resultado.
Modulo
• pam_unix.so → Autenticación estándar mediante la función C
getpw().
218 www.sugeek.co
• pam_env.so → Definición de las variables de entorno.
• pam_securetty.so → Prohíbe una conexión de superusuario (root)
desde un terminal sin suficiente seguridad. Se coloca la lista de
los terminales autorizados en /etc/securetty.
• pam_stack.so → Llama a otro servicio PAM para cargar módulos
adicionales.
• pam_nologin.so → Prohíbe la conexión de usuarios si el archivo
/etc/nologin está presente. En ese caso, se visualiza su contenido.
• pam_deny.so → Siempre devuelve una denegación.
• pam_console.so → Da permisos adicionales a un usuario local.
root@debian:/var/Kernel# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7534
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7534
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
root@sugeek:/# grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
Your PBKDF2 is
grub.pbkdf2.sha512.10000.D29EE80C313168F16E637F3D5B579AA5F08C40B5949
71B01D9E8B8DE39CB78F664CB8ABE5605B00878E34ECCD326FA848CD201ACDD24EBC
4E25F0259C1D63D2E.F840FED5C672E80C5F50BA46289AB5C45B9B444B34B0A33D3
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply
type the
# menu entries you want to add after this comment. Be careful not
to change
# the 'exec tail' line above.
set superusers="admin"
password_pbkdf2 admin
grub.pbkdf2.sha512.10000.D29EE80C313168F16E637F3D5B579AA5F08C40B5949
71B01D9E8B8DE39CB78F664CB8ABE5605B00878E34ECCD326FA848CD201ACDD24EBC
4E25F0259C1D63D2E.F840FED5C672E80C5F50BA46289AB5C45B9B444B34B0A33D3
220 www.sugeek.co
BIBLIOGRAFÍA
Parte del contenido de esta obra se sustrajo de:
• Wikipedia (https://www.wikipedia.org)
• Documentación de Debian (https://www.debian.org/doc/)
• Debian-Administration (https://www.debian-administration.org/)
• Debian Handbook (http://debian-handbook.info/)
• Gentoo Handbook (https://gentoo-handbook.lugons.org/)
• Certificación Linux LPIC-1 (http://www.ediciones-eni.com)