Sunteți pe pagina 1din 180

Primera Edicion

Su|GE3K

ADMINISTRACIN DE

GNU/LINUX
Frank Harbey Sanabria Florez
@franksanabria

INDICE DE CONTENIDO
Licencia......................................................................................................................................................7
SOBRE DEL AUTOR................................................................................................................................8
Prlogo.....................................................................................................................................................10
Por Que Gnu/Linux?..............................................................................................................................13
Donde Esta Linux?.................................................................................................................................15
Seleccin De La Distribucin E Instalacin............................................................................................17
Recuperar Password de root por GRUB.........................................................................................35
Niveles de Ejecucin......................................................................................................................36
Archivo /etc/inittab.........................................................................................................................36
Archivo /etc/init.d/rc.......................................................................................................................37
Servicios en /etc/init.d....................................................................................................................38
Ventajas Generales..........................................................................................................................38
Desventajas Generales....................................................................................................................38
Unidades Objetos y Servicios.........................................................................................................39
Servicios.........................................................................................................................................39
Acciones.........................................................................................................................................40
Sistema De Archivos................................................................................................................................41
Trabajando Con Gnu/Linux.....................................................................................................................46
Comando TOP................................................................................................................................49
Comando free..................................................................................................................................51
Comando w.....................................................................................................................................51
Comando vmstat -s.........................................................................................................................51
Comando who y whoami................................................................................................................52
Comando id y groups......................................................................................................................52
Comando lspci................................................................................................................................52
Comando lsusb...............................................................................................................................52
Comando lscpu...............................................................................................................................53
Comando uname.............................................................................................................................53
Comando uptime.............................................................................................................................53
Comando lshw................................................................................................................................53
Comando lsblk................................................................................................................................54
Comando df....................................................................................................................................54
Comando blkid...............................................................................................................................55
Comando fdisk -l............................................................................................................................55
Comando last y lastb.......................................................................................................................60
Comando du....................................................................................................................................61
Comando dmesg.............................................................................................................................61
Comando arch.................................................................................................................................61
Comando pstree..............................................................................................................................61
Comando ps....................................................................................................................................61
2
www.sugeek.co

Comandos ifconfig, ip....................................................................................................................62


Comando netstat.............................................................................................................................63
Comandos route -e y arp -e.............................................................................................................64
Archivos de Estado del Sistema.....................................................................................................64
Archivo /etc/services......................................................................................................................64
Directorios:.....................................................................................................................................65
Rutas Absolutas:.............................................................................................................................65
Rutas Relativas:..............................................................................................................................65
Trabajando con Directorios:...........................................................................................................65
Trabajando con Archivos................................................................................................................66
Trabajando con Archivos y Directorios..........................................................................................66
Trabajando con la familia del comando z.......................................................................................67
Shell globbing.................................................................................................................................67
Archivos Enlaces............................................................................................................................67
Compilando el Kernel..............................................................................................................................69
Comando lsmod..............................................................................................................................70
Comando modinfo..........................................................................................................................71
Comando depmod...........................................................................................................................71
Comando insmod............................................................................................................................71
Comando rmmod............................................................................................................................72
Comando modprobe........................................................................................................................72
Algunas Opciones de Inters..........................................................................................................73
Herramientas GNU/Linux........................................................................................................................74
Comando tar....................................................................................................................................77
Comando zip y unzip......................................................................................................................77
Comando gzip y gunzip..................................................................................................................78
Editor de Texto vi.....................................................................................................................................80
Introduccin de datos......................................................................................................................80
Salir y Guarar..................................................................................................................................81
Correccin.......................................................................................................................................81
Desplazamiento...............................................................................................................................81
Bsqueda de texto...........................................................................................................................82
Comandos de sustitucin................................................................................................................83
Copiar y Pegar................................................................................................................................83
Sustitucin......................................................................................................................................83
Edicin avanzada............................................................................................................................83
Comando set...................................................................................................................................84
Editor de Texto nano................................................................................................................................85
Gestin de paquetes.................................................................................................................................86
Administracin de Usuarios.....................................................................................................................91
adduser............................................................................................................................................94
useradd............................................................................................................................................94
passwd............................................................................................................................................94
3
www.sugeek.co

chage...............................................................................................................................................95
deluser y userdel.............................................................................................................................95
Usermod..........................................................................................................................................96
groupmod........................................................................................................................................96
Chsh................................................................................................................................................97
Chfn................................................................................................................................................97
Permisos de Archivos y Carpetas.............................................................................................................99
Sticky bit.......................................................................................................................................102
set gid y set uid.............................................................................................................................103
Gestin de procesos y Servicios.............................................................................................................104
Comando nice:..............................................................................................................................105
Comando renice............................................................................................................................105
Redirecciones, Tuberas y Filtros...........................................................................................................107
Comando basename y dirname.....................................................................................................108
Comando tee.................................................................................................................................108
Comando grep...............................................................................................................................109
Comando egrep.............................................................................................................................109
Comando cut.................................................................................................................................110
Comando column..........................................................................................................................110
Comando tr....................................................................................................................................111
Comando sort................................................................................................................................111
Comando uniq...............................................................................................................................112
Comando paste..............................................................................................................................112
Comando diff................................................................................................................................112
Coincidencia con ms caracteres..................................................................................................114
Ejemplos.......................................................................................................................................114
La Shell en GNU/Linux.........................................................................................................................117
Regionalizacin(l10n)...................................................................................................................117
Internacionalizacin (i18n)...........................................................................................................117
Usos Horarios...............................................................................................................................118
Codificacin de Caracteres...........................................................................................................119
Operador &&................................................................................................................................119
Operador ||.....................................................................................................................................119
Operador &...................................................................................................................................120
Operador ;.....................................................................................................................................120
Operador \.....................................................................................................................................120
Operador #...................................................................................................................................120
Agrupacin de Comandos.............................................................................................................120
Comando echo..............................................................................................................................121
Comillas Doble .........................................................................................................................121
Comillas Simples ' '.......................................................................................................................121
Comillas invertidas ` `..................................................................................................................121
Declaracin de Variables..............................................................................................................122
4
www.sugeek.co

Variables Tipadas..........................................................................................................................123
Nuestro primer script....................................................................................................................124
Control de Flujo............................................................................................................................124
Control If:.................................................................................................................................124
Control case:............................................................................................................................126
Ciclos:...........................................................................................................................................126
Ciclo for...................................................................................................................................126
Ciclo while...............................................................................................................................127
Ciclo until.................................................................................................................................128
Funciones......................................................................................................................................128
Valores de retorno....................................................................................................................129
Variables locales a la funcin...................................................................................................129
Operaciones Aritmticas..........................................................................................................130
Operaciones lgicas y de comparacin:.......................................................................................130
Interacciones con el Usuario:........................................................................................................131
Administracin de Unidades de Almacenamiento.................................................................................133
Comando mount...........................................................................................................................138
Comando umount.........................................................................................................................139
Comando fdisk..............................................................................................................................139
Habilitar las Cuotas.......................................................................................................................147
Habilitar las Cuotas a Usuarios.....................................................................................................148
Habilitar las Cuotas a Grupos.....................................................................................................148
Preparar los Discos Duros............................................................................................................149
Creando RAID con mdadm..........................................................................................................149
Eliminar un RAID del sistema......................................................................................................152
Volmenes Fsicos (Physical Volumen)........................................................................................153
Grupo Volmenes (Volumen Group)............................................................................................154
Volmenes Lgicos (Logical Volumen)........................................................................................155
Ampliar y Reducir un VG.............................................................................................................156
Ampliar y Reducir un LV.............................................................................................................159
Mover el contenido de un PV a otro PV.......................................................................................162
Suprimir un VG............................................................................................................................165
Administracin de Red...........................................................................................................................167
Logs del Sistema....................................................................................................................................174
sysklogd........................................................................................................................................174
RainerScript..................................................................................................................................176
TAREAS PLANIFICADAS...................................................................................................................179
SEGURIDAD EN GNU/LINUX...........................................................................................................182
Archivo /etc/sudoers.....................................................................................................................185
Limites del Usuario.......................................................................................................................186
Bibliografa............................................................................................................................................189

5
www.sugeek.co

LICENCIA
Esta obra esta bajo licencia de Creative Commons, la cual le permitir distribuir y copiar
esta obra cuantas veces quiera, y si piensa realizar alguna derivacin de esta deber de
dar crdito a la obra mencionndola como fuente, y dicha obra derivada debe de estar
bajo esta misma licencia o alguna similar, adems esta obra no podr usarse para fines
comerciales a menos que cuente con la autorizacin del autor.

6
www.sugeek.co

SOBRE DEL AUTOR


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

8 Aos: Inicie clases de sistemas aprendiendo a manejar lo


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

10 aos: Me di cuenta que Windows Millenium no era


estable y se mantena bloqueando, aprend a Formatear y
reemplac Millenium por el Windows 98 SE.

14 aos: Conoc el Overlocking bsico y como hacerlo,


adems ya mi Windows 98 SE por ciertas modificaciones que haba hecho se
pareca mas a un Windows XP.

15 Aos: Inicio mi carrera como tcnico en sistemas en un instituto salesiano,


destacndome con honores.

17 Aos: Mi primer trabajo como tcnico en sistemas, y a los 3 meses me dan la


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

19 Aos: Inicio mi nueva carrera en el SENA como Tecnlogo en


Telecomunicaciones. Ya Windows no se adaptaba a mis necesidades y se haba
vuelto aburrido, es en donde descubro el mundo de GNU/Linux con Ubuntu 9.04 y
empieza mi travesa.
Usando Ubuntu como herramienta para configurar Routers, Switch, a disear
diagramas de red, me enamoro de la consola y descubro las herramientas
necesarias que me serviran para implementar la red de un hospital estatal.
Luego Cambiara a Ubuntu por Debian y luego este ultimo por eOS, pero usando
Debian como servidor y ocasionalmente CentOS.

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


me asignaron responsabilidades de la administracin de los sistemas de datos y
redes de la compaa (Dominio, Servidor de Archivos, Sharepoint, Firewall, Switch).

Actualmente laboro en la misma compaa como coordinador de infraestructura, durante


el tiempo que he laborado alli he logrado algunas metas como:

Migrar Microsoft Share Point a Alfresco


Migrar Servidor de Archvios a SAMBA
Migrar Firewall a Firewall UTM con Endian
7
www.sugeek.co

Migrar Office 2003 de 300 estaciones a LibreOffice


Generar Documentacin para ISO27000, ITIL, y ISO9001

Durante mi estada en la empresa tambin he realizado actividades como independiente:

Implementar Infraestructura de Red en NoMoreCards sede Bogota


Instructor del Diplomado en Integracin de Redes en Aula Matriz
Instructor para Certificacin LPIC-1 en NetSecuritySolutions
Participar en como ponente en diferentes eventos (Flisol, SFD Bogota, Alcaldia de
Bogota).
Vdeos sobre GNU/Linux (https://www.youtube.com/SuGE3K).

El conocimiento no llega solo, tienes que buscarlo instruyndote todos los das.

8
www.sugeek.co

PRLOGO
La presente Obra se realiza con el fin de que usted, con pocos o medios conocimientos en
GNU/Linux pueda desenvolverse en un mercado con una demanda de profesionales cada
vez mayor en la utilizacin de este sistema. GNU/Linux se esta convirtiendo en la mejor
alternativa para las Pymes y empresas en crecimiento.
Con esta, Iniciaremos un proceso largo pero interesante, iniciando con los aspectos
generales de instalacin y uso de la consola, hasta poder llegar a armar nuestra propia
Distribucin adaptada a nuestras necesidades.
Esperamos que esta obra sea de su agrado y la aproveche al mximo.
IMPORTANTE!
Esta obra tiene como requisito que el lector tenga nociones bsicas sobre arquitectura de
computadores.

No le presto mucha atencin 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 -

9
www.sugeek.co

Que Es Linux?
Linux por si solo es la base de muchos sistemas operativos, los cuales van desde
dispositivos mviles pasando por electrodomsticos, llegando a grandes proyectos como
bolsas de valores y misiones espaciales.
Cabe destacar el hecho que Linux no es igual a GNU/Linux ya que como se menciona en
el prrafo anterior, Linux es la base y GNU es el software, la fusin de estos dos lo hace
un Sistema Operativo funcional para cualquier persona.
Linux es el bien conocido Kernel, el cual es el encargado de hacer la interaccin de
maquina software usuario - software maquina, y en cualquier distribucin llmese
como se llame tendr el mismo Kernel, diferenciado uno del otro con las diferentes
modificaciones que cada distribucin le haga a este para mejorar ciertos apartados del
software usado.
Linux esta licenciado bajo GNUv2 la cual permite que cualquier persona u empresa copie,
modifique y realice la actividad que desee con este, dicha libertad permiti que muchas
empresas usen Linux hoy en da, como IBM, HP, DELL, Google, Facebook, NASA, Bolsa de
Valores de NYC, y la misma Microsoft usa Linux en algunos de sus colaboradores.

Que Es GNU?
GNU es un proyecto fundado por Richard Stallman el 27 de septiembre de 1983, con el
objetivo de crear un sistema operativo completamente libre, este ya posee la suficiente
cantidad de Software para completar el sistema operativo, pero le hace falta el Ncleo, la
comunicacin entre sus programas y la maquina, para ello crearon el Kernel Hurd
basndose en Unix, pero dicho kernel esta aun muy inmaduro para su correcto
funcionamiento, as que se decidi usar el kernel Linux para integrar el software que ya
estaba desarrollado.
GNU es el acrnimo de GNU is not Unix o en espaol GNU no es Unix

Que Es GNU/Linux?
GNU/Linux es la combinacin de los anteriores desarrollos mencionados, asi que en pocas
palabras podra indicarse lo siguiente.
GNU Provee el software y herramientas para que Linux sea mas amigable con el
usuario final.
Linux Provee el ncleo (Kernel) con el cual estas herramientas se comuniquen con el
Hardware.

Historia
A continuacin enumeramos los hitos mas importantes dentro de la historia de
GNU/Linux.
10
www.sugeek.co

Desarrollado por Linus Torvalds en la universidad de Helsinki como un hobby y es


escrito en lenguaje C
Basado en minix mas no derivado
Nombre Interno inicial Freax
17 de septiembre de 1991 1ra versin publica
Febrero de 1992 nace MCC Interim Linux la primera distribucin de Linux
1993 Se adapta al proyecto GNU y nace Slakeware la distribucin mas antigua
Marzo del '94 lanzada la versin 1 de Linux
1996 la versin 2 es lanzada soportando gran cantidad de procesadores
1998 IBM, Compaq (Hoy parte de HP), y Oracle anuncian el soporte oficial a Linux.
Torvalds escoge a Tux como mascota dibujado Por Larry Ewing.
2002 El primer gusano conocido para Linux. Slapper-worm.
2007 Google presenta Android el sistema operativo para Smartphones y Tablet's el
Cual esta basado en Linux .
Mayo de 2011 sale la versin 3.0
2013 Linux es el sistema base mas usado en todo el mundo

11
www.sugeek.co

POR QUE GNU/LINUX?


GNU/Linux hoy en da es la mejor opcin para muchas empresas/gobierno, educacin y
usuarios finales, ya sea para trabajos de oficina, juegos, navegacin por internet,
desarrollos, y prestar servicios como servidores de alto rendimiento.

GNU/Linux en Empresas/Gobierno
En las empresas GNU/Linux esta en la capacidad de prestar la gran mayora (por no decir
el 100%) de los servicios que esta necesita ya sea para estaciones de trabajo o
servidores, dndole la oportunidad a esta de no depender directamente de una 3ra
empresa para soportar su plataforma y la inversin realizada se queda en el pas donde
se hizo la implementacin y no se va para el arca de otros pases, ayudando as al
desarrollo.
GNU/Linux es la mejor alternativa para aquellos entes que desean, seguridad, estabilidad,
fiabilidad, sumndole a todo esto el ahorro de costos a largo plazo que una empresa
obtiene al implementar una solucin de software libre.
En 5 puntos que se divide el gasto de una empresa al migrar de una plataforma a otra,
GNU/Linux solo requiere la inversin en 3.
En la siguiente tabla se relaciona los gastos que se realiza al implementar software
privativo y software libre.

Software
Privativo

Software Libre

Licencia

Capacitacin

Implementacin

Soporte

Renovacin

12
www.sugeek.co

GNU/Linux en la Educacin
Usar GNU/Linux en entes educacionales fomenta el desarrollo mental ya que alienta a los
estudiantes a desarrollar o indagar mas sobre dicho sistema, ayudando asi al desarrollo
integral del alumno y depender de si mismo y no de un 3ro. Adems de dicho desarrollo
integral que tendra el alumno, la utilizacin de herramientas de software libre, hace que
las instituciones inviertan menos en software y mas en material didctico.
Existen muchas distribuciones GNU/Linux enfocadas a la educacin y software para que
los alumnos aprendan el manejo de este sistema, pero GNU/Linux no solo se enfoca en el
aprendizaje de su funcionamiento si no que tambin alienta a los mas pequeos a
aprender con software sobre Matemticas, Fsica, Calculo, Qumica y muchas mas reas
de inters segn sea el enfoque de cada instituto.
Cabe destacar que la gran mayora de estar herramientas son gratuitas y acceso publico,
se recomienda realizar donaciones a las empresas desarrolladoras de estos software para
alentar dicho trabajo para que asi sigan mejorando dia a dia.

GNU/Linux para Usted


Es y sera la mejor alternativa, ya que el uso normal de los usuarios es la navegacin por
internet, cliente de correo, y software de ofimtica, todo esto se encuentra en GNU/Linux.
GNU/Linux tiene una distribucin para cada uno, para el cientfico, matemtico,
diseador, DJ, desarrollador, etc.
Adems dejar a un lado la piratera y estar tranquilo de que el software que usa es
totalmente legal es otra de las ventajas de GNU/Linux, y mencionar el hecho de que no
tendr que preocuparse por los virus, troyanos y dems infecciones que afectan al
software privativo, esto no quiere decir que no existan virus y dems en GNU/Linux solo
que es mas difcil que sea infectado.

13
www.sugeek.co

DONDE ESTA LINUX?


Actualmente Linux se encuentra en cualquier dispositivo que imaginemos, solo por
mencionar algunos:

Automviles
Smartphones
Neveras
Hornos Microondas
Lavadoras
Televisores
Satlites
Servidores
Porttiles
Tablets
Navos
Y un largo etc.

Adems grandes compaas y gobiernos usan hoy en da Software Libre y GNU/Linux.

Facebook
Google
IBM
Gobierno Alemn
Bolsa de Valores
Ejrcitos
El 80% de los sitios web estn sobre GNU/Linux
El 98% de los 500 servidores mas poderosos estn sobre Linux.

Distribuciones
Como ya mencionamos, GNU/Linux tiene diferentes sabores para cada uno, en esta
ocasin mencionaremos algunas con sus derivados y a quienes estn enfocadas.

Debian (Servidores y Usuario Final)


Ubuntu (Servidores y Usuario Final)
Kubuntu (Usuario Final)
Edubuntu (Instituciones educativas)
Lubuntu (Usuario Final)
Xubuntu (Usuario Final)
Ubuntu Studio (Editores Multimedia)
Linux Mint (Usuario Final)
14
www.sugeek.co

Zentyal (Servidores)
ElementaryOS (Usuario Final)
Slackware (Servidores y Usuario Final)
Suse (Servidores)
OpenSUSE (Servidores y Usuario Final)
RedHat (Servidores)
Fedora (Servidores y Usuario Final)
Centos (Servidores y Usuario Final)
Elastix (Servidor de Voz IP)

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

15
www.sugeek.co

SELECCIN DE LA DISTRIBUCIN E INSTALACIN


Seleccionar la distribucin ideal para lo que deseamos hacer, es muy importante, ya que
todas tengan el mismo ncleo no todas se van a comportar lo mismo. Por mencionar
algunos aspectos, CentOS es la distribucin predilecta para servidores y la mejor
alternativa para implementar sistemas de PBX con Asterisk ya que la mayora de
controladores para dichas implementaciones esta desarrollados para esta distribucin
pero no significa que no se pueda usar en otras tareas. La otra distribucin por excelencia
es Debian, la cual es la alternativa que en esta ocasin vamos a usar, ya que el personal
capacitado sobre Debian es mayor y la documentacin sobre Debian tambin es
abundante.
Ya que tenemos nuestra distribucin seleccionada procederemos con la descarga de la
imagen y instalacin.
La
imagen
de
Debian
http://www.debian.org/CD/http-ftp/#stable.

la

podremos

descargar

de

Antes de iniciar una instalacin debemos de tener en cuenta lo siguiente.


Finalidad: Se va usar como servidor o como estacin de trabajo? Teniendo en cuenta
esto podremos guiarnos adecuadamente, la finalidad de este sera como servidor.
Hardware: En algunas ocasiones Debian no es la mejor opcin en cuanto a drivers
privativos, por ende debe de tenerse en cuenta si el hardware que tiene nuestro servidor
es soportado por Debian, CentOS en cambio posee en su interior ya dichos drivers
privativos. Adems de esto debemos de tener en cuenta cuantos usuarios se van a
conectar al servidor y que servicio va a prestar, por que el consumo de un servidor de
correo no es lo mismo que un servidor web o de archivos.
Limitaciones: Si vamos a instalar a nuestro riesgo un servidor (No contratamos a un
3ro) y no poseemos la experiencia o conocimiento suficiente sobre la distribucin y
servicio a implementar, no vamos a tener soporte oficial si no directamente por la
comunidad o foros, los cuales no siempre tienen las mejores soluciones.

16
www.sugeek.co

Instalacin

Despus de haber descargado y grabado en un DVD la imagen de Debian procederemos


a realizar la instalacin. Al iniciar el computador/servidor con el medio dentro de la
unidad lectora, aparecer la ventana de instalacin. Debian posee 2 formas de realizar la
instalacin (adems de la forma avanzada), una es la clsica y la otra es usando un
entorno grfico.
Lo primero que vamos a ver es la seleccin del idioma aqu, seleccionamos el idioma con
el cual va a quedar nuestro sistema.

17
www.sugeek.co

Luego sigue la seleccin de ubicacin del sistema y la distribucin del teclado.

18
www.sugeek.co

Esperamos un momento a que algunos componentes se carguen para poder continuar


con la instalacin.
Proceder a solicitar nombre de la maquina, configuracin de la red (si no posee servidor
DHCP), dominio, contrasea para el usuario root, la creacin del usuario del sistema y su
respectiva contrasea.

19
www.sugeek.co

20
www.sugeek.co

21
www.sugeek.co

Despus de un rato que el sistema cargue, nos encontraremos frente al sistema de


particionado del sistema.

Guiado Utilizar todo el disco


Esta opcin realiza de forma automatizada el particionado y la instalacin del
sistema.
Guiado Utilizar el disco completo y configurar LVM
Esta opcin es usar todo el disco y de paso configurar el LVM (Logical Volume
Manager)
Guiado Utilizar todo el disco y configurar LVM Cifrado.
Lo mismo que la opcin anterior solo que le agrega cifrado al disco.
Manual
Como su nombre lo indica, es hacer de forma manual las particiones y dems, esta
es la que vamos a escoger.

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

22
www.sugeek.co

23
www.sugeek.co

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

Tendremos una pantalla en la cual nos indicara las propiedades para particionar el disco.

24
www.sugeek.co

Esta particin al ser tan pequea no cabra mucha informacin pero sera una de las mas
importantes, ya que contara con los archivos necesarios para arrancar el sistema.
Adems desde este apartado podremos crear los Volmenes Lgicos, los RAIDS por
software etc.

Utilizar Como Ingresamos y seleccionamos el sistema de archivos ext4


Punto de Montaje En este seleccionamos el path a montar en dicha particin. (En
esta ocasin seleccionamos el path /boot)
Opciones de Montaje Las dejamos por defecto
Etiqueta Si desea ingresar un nombre para la particin ac lo podr hacer.
Bloques Reservados Lo dejamos tal cual
Uso habitual Podemos definir que vamos a hacer con esa particin, la dejamos
tal cual.
Marcar Como Arranque Esta opcin la activamos, ya que esta particin es la que
contiene los archivos de arranque.

Por ultimo seleccionamos Se ha terminado de definir la particin y nos devolver a la


configuracin del disco nuevamente, pero esta vez ya muestra la particin que esta por
escribirse.

25
www.sugeek.co

Seleccionamos el espacio libre, le asignamos el restante de espacio indicamos que es una


particin lgica, 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 particin.
Ya con esto, vamos a finalizar el particionado y escribimos los cambios en el disco,
aparecer una advertencia indicando que hace falta definir el rea de intercambio o
/swap, esta particin es necesaria cuando el equipo tiene poca memoria ram, pero la
veremos mas adelante para administrarla mas eficazmente. A dicha advertencia le
indicamos que no, y por ultimo me pide confirmacin de querer continuar con la
instalacin, procedemos con un SI y empezara la instalacin. Dicha instalacin se
demorara unos 10 minutos dependiendo del computador donde se esta realizando la
instalacin.
Luego de esperar un rato, solicitara si deseamos insertar el otro DVD (Decimos que no).
Luego seleccionamos la descarga de repositorios por red, aparecer desde donde
queremos descargar los diferentes repositorios, buscamos nuestro pas (o el pas mas
cerca, el cual en ocasiones no es la mejor opcin), lo seleccionamos y continuamos con la
instalacin. (Algunas ocasiones mostrara mas de un solo servidor en dicho pas,
seleccionamos el que mejor nos parezca).

26
www.sugeek.co

Despus de haber esperado un rato, preguntara si deseamos participar en


popularity-contest el cual enviara de forma annima informacin a los desarrolladores
sobre los paquetes que usamos (Es a criterio de cada uno) y luego listara los programas
que podemos instalar, solo seleccionamos Utilidades de sistema y Servidor SSH.
27
www.sugeek.co

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


afirmativamente.
Esperamos a que termine las configuracin, proceder a reiniciarse y ya tendremos el
sistema listo para loguearnos, ya sea con la cuenta root o con el usuario que hemos
creado durante el proceso de instalacin.

Proceso de Arranque de GNU/Linux

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


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

computador (Unidades, RAM, Procesador, Bus, Etc) y segn la configuracin de


esta se iniciara con la unidad seleccionada. (Normalmente para ingresar a esta y
cambiar algunas configuraciones se oprime F2, o F9, o Supr).
IMPORTANTE!
Tener cuidado si se ingresa a esta memoria ya que podra daar el servidor. Se
recomienda leer el manual de dicho sistema antes de hacer cualquier actividad.

Ejecucin del Disco con GNU/Linux Despus que la BIOS detecta todos los
dispositivos y arranca con la unidad seleccionada, esta buscara dentro del MBR de
dicho disco la informacin necesaria o el encargado de administrar la ejecucin
del(os) sistema(s) como podra ser el GRUB.
Seleccin del Sistema y Kernel Luego que el GRUB carga este mostrara (o
puede que no) los distintos sistemas instalado en el servidor, as como las
diferentes versiones de kernel instalados si es un servidor GNU/Linux.

Trabajando con el GRUB2


(GRand Unified Bootloader) Es el encargado de la gestin de arranque de los distintos
Kernel o Sistemas Operativos que se encuentren instalados en los discos del sistema.
GRUB2 Presente ya en la gran mayora de distribuciones GNU/Linux es una versin
reescrita de GRUB, mejorando notablemente la compatibilidad con varios sistemas de
discos, BIOS, etc.
Los archivos de inicio de GRUB2 se encuentra en /boot/grub , la configuracin del men
esta en /boot/grub/menu.cfg, pero cuidado, estos archivos NO se editan, ya que son
los usados por el sistema, para ello vamos a ver donde se configura.
Dentro del archivo /etc/default/grub contiene las variables que define las opciones del
GRUB2 y opciones por defecto de los ncleos GNU/Linux.
Variable

Significado

GRUB_DEFAULT

Entrada del men, seleccionado por defecto es el 0

GRUB_HIDDEN_TIMEOUT

Tiempo de men Oculto, para despus iniciar el sistema


predeterminado, para mostrarlo el usuario tiene que oprimir
[ESC] o [SHIFT]

GRUB_TIMEOUT

Duracin del men del GRUB2 antes de iniciar el sistema

GRUB_HIDDEN_TIMEOUT_QUIET

Define si se muestra o no el contador con true o false

GRUB_DISTRIBUTOR

Linea de comandos que define la generacin automtica del


texto en la entrada del men

GRUB_CMDLINE_LINUX_DEFAULT Parmetros pasados al ncleo Linux, nicamente para entradas


normales
GRUB_CMDLINE_LINUX

Parmetros por defecto para todos los ncleos Linux

29
www.sugeek.co

Variable

Significado

GRUB_GFXMODE

Resolucin utilizada por el GRUB2

GRUB_TERMINAL

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

Los mens se guardan en /etc/grub.d/


root@sugeek:~# ls
total 56
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rw-r--r-- 1 root

-l /etc/grub.d/
root
root
root
root
root
root
root
root
root

7806
5522
7877
6449
6675
1388
214
95
483

dic
jul
dic
dic
dic
jul
jul
jul
jul

6
19
6
6
6
19
19
19
19

05:06
2013
05:06
05:06
05:06
2013
2013
2013
2013

00_header
05_debian_theme
10_linux
20_linux_xen
30_os-prober
30_uefi-firmware
40_custom
41_custom
README

Estos archivos se ejecutan en el orden de listado (orden alfanumrico de forma


predeterminada) de ls. Es por este motivo que empieza con un valor numrico. Los dos
scripts de inters son 10_linux y 30_os-pober.
Si se verifica el primero, se encontrara como elemento particular los bucles que buscan
los ncleos Linux en /boot y en la raiz, asi como ramdisk iniciales, para detectar los
distintos ncleos Linux y crear automticamente las entradas asociadas aadiendo los
parmetros por defecto.
En el segundo, vera que se ejecuta el comando os-prober, que busca el resto de
sistemas operativos en los restantes discos o dispositivos, como Windows, Mac OS, Unix,
etc.
Se puede agregar uno de forma manual utilizando la plantilla 40_custom y para
actualizar las tablas de grub se usa update-grub

Recuperar Password de root por GRUB


En ocasiones se presenta que por algn motivo y otro se perdi la contrasea del usuario
root, para poderla recuperar se puede realizar por medio del GRUB, ac explicamos
como.
Al iniciar nuestro sistema y tener al frente el men de GRUB, vemos que la opcin e nos
permite editar las lineas de boot, nos dejara ver las lineas de booteo, para ello
seleccionamos la que indican kernel y nuevamente presionamos e a lo cual nos dejara
editarlas, al final de la linea del kernel (La que indica vmlinuz) agregamos
init=/bin/bash (Este cambio es temporal, prximo reinicio el sistema dejara tal cual las
lineas), luego solo queda arrancar el sistema con la combinacin de tecla [CTRL] + [X].

30
www.sugeek.co

Ya dentro del sistema nos queda solo montar la unidades en forma de escritura, ya que
estn montadas en forma de solo lectura, para ello ejecutamos el comando mount -n -o
remount,rw / ya con esto tenemos funciones de root, y podremos cambiar nuestro
password con el comando passwd.
Despus de haberlo cambiado solo queda reiniciar el sistema y listo.

Init System V
El Proceso init es el primer proceso que arranca y el ultimo en ser cerrado al apagarse el
sistema, tiene como principal funcin ejecutar todos los dems procesos de forma
Ordenada segn sea la necesidad. Se podra decir que el INIT es el proceso padre de los
dems procesos y tiene como PID 1.
Este sistema de arranque de forma secuencial tiene un defecto, el cual demora el
proceso de arranque del sistema, dicho problema es solventado con SystemD.
La configuracin del init lo podemos encontrar en /etc/inittab, sin este archivo el
sistema no podr arrancar, y se tendra que recuperar desde un medio externo.
IMPORTANTE!
Init o SystemV fue soportado hasta la versin 7 de Debian, desde la Versin 8 se inicio el
proceso de migracin a systemd.

Niveles de Ejecucin
Existen 6 posibilidades principales de arrancar un sistema GNU/Linux.

Init 0
init 1
init 2
init 3
init 4
init 5
Init 6

o runlevel 0 Apaga el Sistema


monousuario si entorno de red ni grfico (CLI o GUI).
Multiusuario sin gestor de red ni grfico (CLI o GUI).
Multiusuario sin entorno grfico pero con entorno de red.
Sin uso.
El por predeterminado, con entorno grfico, de red y multiusuario.
Reinicia el sistema

Dicha formas de arranque se podrn configurar en el archivo /etc/inittab, adems


algunas distribuciones usan los niveles del 7 al 9 los cuales son totalmente validos.

Archivo /etc/inittab
A continuacin se define las variables de dicho archivo, as como su estructura.

Id:Niveles:accin:comando

31
www.sugeek.co

Campo

Descripcin

id

Identificador nico del proceso

Niveles

Muestra los niveles de ejecucin a los que se aplica esta entrada.

Accin

Identifica el modo en que el proceso que est especificado en el campo del


proceso se ejecutar.

Comando

Define el comando o la secuencia de comandos para ejecutar.

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

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

Idntico al anterior pero despus del sysinit

bootwait

Idem, pero init espera el final de la ejecucin del comando antes de continuar
leyendo el archivo inittab

off

Se ignora la linea

once

Se ejecuta el comando a cada cambio de nivel para los niveles especificados

wait

Idem, pero init espera al final de la ejecucin antes de proseguir

respawn

El comando se ejecuta para los niveles correspondientes. Si el proceso


termina, vuelve a arrancarse de nuevo automticamente. Es el caso para los
terminales si un usuario se desconecta de ellos.

powerwait

Inicia el comando si el servidor es alimentado mediante una UPS

powerfail

Idem, pero sin esperar el final de ejecucin del comando

powerokwait

Se ejecuta el comando cuando se restablece la corriente

powerfailnow

Comando de ultimo recurso cuando la alimentacin de emergencia esta casi


vaca

ctrlaltdel

Init recibe una seal SIGINT procedente de una secuencia [CTRL][ALT][SUPR]

En este archivo tambin encontramos configuradas las consolas virtuales conocidas como
tty, las cuales se acceder con la combinacin de teclas [Ctrl ] + [Alt ] + [F1-F6 ] la [F7]
en la mayora de distribuciones esta asociada a la interfaz grfica.

Archivo /etc/init.d/rc
Dicho archivo o script inicia el nivel de ejecucin deseado, es responsable del inicio y de
la parada de los servicios asociados cuando el nivel de ejecucin cambia.
Despus que inicia nuestro sistema con sus respectivos demonios se procede a iniciar el
servicio getty el cual es el encargado de iniciar la sesin en una terminal, getty es el
encargado de solicitar usuario y contrasea para poder ingresar a CLI, este usuario y
32
www.sugeek.co

contrasea getty lo obtiene de los archivos /etc/passwd y /etc/shadow asi como los
correspondientes mensajes de bienvenida desde /etc/motd . Cuando se cierra la sesin
de un terminal getty realiza un respawn para solicitar nuevamente usuario y contrasea.

Servicios en /etc/init.d
Directorio se define que servicios se iniciaran, pararan, o reinician segn el nivel
seleccionado. Para cada nivel de ejecucin podemos encontrar un directorio.
root@sugeek:~# ls /etc/rc
rc0.d/
rc2.d/
rc4.d/
rc1.d/
rc3.d/
rc5.d/

rc6.d/
rc.local

rcS.d/

Cuando el init arranca llamara primero a los scripts dentro del directorio /etc/rcS.d que
son servicios single, luego proceder a iniciar el sistema segn el runlevel seleccionado.
Cuando verifiquemos dichos directorios veremos algo como.
root@sugeek:~# ls /etc/rc5.d/
README
S14nfs-common
S17acpid S17exim4
S20rc.local
S01motd
S16rsyslog
S17atd
S17ssh
S20rmnologin
S13rpcbind S16virtualbox-guest-utils S17cron S19bootlogs

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

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

Ventajas Generales

Ejecucin de procesos de inicio de forma asncrona, permitiendo ejecutar varios


procesos al tiempo aprovechando los hilos del procesador y ejecutando el sistema
mas rpido.
Gestin de dependencias de procesos mas veloz al utilizar invocaciones a
funciones en el ncleo Linux.
Posee interfaz grfica en GTK para la gestin de procesos

Desventajas Generales

Solo disponible para ncleo Linux


33
www.sugeek.co

Desarrollo muy Joven


Se cree el Dios todo poderoso de GNU/Linux
Requiere reinicio para aplicar cambios al kernel

Unidades Objetos y Servicios


En Systemd, el concepto de nivel de ejecucin ya solo existe para la compatibilidad con
SystemV. El estado deseado por el sistema despus de haber ejecutado los servicios se
llama la unidad objetico o target unit. El componente bsico de systemd es la
unidad o unit. Existen Varias: servicios, sockets, perifricos, objetivos, etc. Un objetivo
es bsicamente el punto de sincronizacin entre unidades en espera. De este modo,
dispondr, por ejemplo, de unidades objetivos correspondientes a cada nivel de
ejecucin, pero puede llamarles como desee.
Las definiciones de las distintas unidades se encuentran en /lib/systemd/system. Las
unidades objetivos o los servicios que deben ser gestionados por el sistema durante el
arranque se ubican en /etc/system/system, en forma de enlaces simblicos o copias
de los archivos anteriores.
Puede activar o definir varios objetivos al mismo tiempo no limitarse a uno solo, nico y
pesado. Por ejemplo, un objetivo contendr la activacin de los servicios de red, otro, los
servicios de audio y un ultimo para el inicio del entorno grfico, etc. Un Objetivo se puede
agrupar en otro.

Servicios
Los servicios acaban con el sufijo .service. A continuacin se muestra un ejemplo con el
contenido del servicio bluetooth que representa sus dependencias y su comando de
ejecucin:
root@sugeek:/lib/systemd/system# cat bluetooth.service
[Unit]
Description=Bluetooth service
After=syslog.target
[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/sbin/bluetoothd -n
StandardOutput=syslog
[Install]
WantedBy=bluetooth.target

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

34
www.sugeek.co

Acciones
El comando sytemctl permite controla la ejecucin de servicios

Systemctl Lista las unidades activas


Systemctl all Muestra todas las unidades (activas, inactivas)
systemctl stop servicio.service Parar el servicio
systemctl restart servicio.service Reiniciar el servicios
systemctl start servicio.service Iniciar el servicios
systemctl reload servicio.service Recarga la configuracin del servicio

35
www.sugeek.co

SISTEMA DE ARCHIVOS
GNU/Linux Tiene el sistema de archivos ext de forma predeterminada, este a su ves ha
ido evolucionando para irse adaptando a las necesidades del mercado, ya que en su
versin mas reciente ext4 el cual fue desarrollado por Mingming Cao, Dave Kleikamp,
Alex Tomas, Andrew Morton y otro grupo de personas, este sistema de archivos cuenta
con las siguientes caractersticas.

Considerado un sistema de archivos de transicin a btrfs


Maneja volmenes de hasta 1 Exibyte
Ficheros individuales de hasta 16 Terabytes
Compatibilidad con anteriores y futuras versiones
Soporta hasta 64000 subdirectorios
Desfragmentacion en caliente de forma automtica
Chequeo de Archivos mas veloz
Journaling para recuperarse ante desastres

Aunque el sistema de archivos btrfs a la escritura de este documento, aun se


encontraba en fase de desarrollo, lo cual no se recomienda para sistemas en produccin.
Dentro de las ventajas que tiene este sistema de archivos es:

Las mismas ventajas del ext4


Posibilidad de Crear snapshots en caliente
Soporte de quotas por default
Verificacin de Datos para corroborar integridad
Permite funcionalidades de LVM
Redimencionar las Particiones en Caliente
Agregar discos en caliente y adaptarlo a una particion Virtual

Adems GNU/Linux esta en la capacidad de soportar la lectura/escritura de sistemas de


archivos como lo son el NTFS, Fat, Fat16, Fat32, XFS, raiserfs, xfs, y muchos mas.

Directorios y Arquitecturas
GNU/Linux se basa en un orden de sus directorios totalmente jerrquico tomando como
inicio el / Slash el cual sera el punto de montaje de los diferentes dispositivos y dems
directorios.
/

Este es el directorio Raiz, es el directorio principal.

/bin

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

/boot

Contiene los archivos encargados del arranque del sistema.

36
www.sugeek.co

/dev

Archivos especiales o de dispositivos haciendo referencia a los dispositivos fsicos.

/etc

Contiene los archivos/directorios de configuracin de los servicios prestados por la


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

/etc/skel

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

/home

En este directorio se guardan la estructura de directorios/archivos de los usuarios

/lib

Este directorio contiene las libreras compartidas que son necesarias para ejecutar
programas e iniciar el sistema.

/media

Este directorio contiene las unidades montadas como CD/DVD.

/mnt

Es similar a la anterior, pero a diferencia que en este directorio se montan las


unidades temporales como USB. (No en todas las distribuciones es lo mismo).

/opt

Este directorio contiene archivos estticos o aplicaciones independiente que traen sus
propias libreras.

/proc

Este directorio contiene informacin sobre el funcionamiento y el hardware del


sistema.

/root

home del usuario root.

/sbin

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

/tmp

Contiene los archivos temporales del sistema.

/usr

Este directorio usualmente contiene la configuracin de los usuarios y aplicaciones


que este usa.

/var

Este directorio los archivos que cambian de tamao dinmicamente o por intervencin
del usuario, normalmente se encuentra los logs del sistema y aplicativos.

Toda esta informacin podr encontrarla escribiendo en su consola el comando man hier

Tipos de Archivos
En GNU/Linux todo son archivos.

Archivos que tienen los datos del usuario


Los Archivos que contienen y proveen la jerarquia de otros Archivos (Directorios)
Los archivos Enlaces que son como un Acceso Directo a otro archivo.
Los archivos de Dispositivos que encontramos en el directorio /dev
Archivos Binarios o Ejecutables

Inodo
Hemos hablado sobre los inodos en el transcurso del libro, pero no hemos entrado a
definirlo a profundidad. En pocas palabras el inodo es el encargado de tener toda la
informacin sobre un archivo, excepto el nombre de este, el cual esta asociado dentro de
la informacin que contiene el archivo tipo catalogo o mas conocido como carpeta. El
numero de un inodo es nico dentro de un sistema de archivos, adems la cantidad de
37
www.sugeek.co

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


crear.
El inodo tiene como informacin:

Tamao
ID del perifrico
Propietario
Grupo Propietario
Nmero del inodo
Permisos
Fecha de ultimo acceso
Fecha de ultima modificacin
Informacin de ubicacin de las partes del archivo dentro del sistema de archivos
Contador de enlaces

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


asi como los usados y libres.

Adems si queremos ver las caractersticas de un archivo con respecto a su inodo, basta
con escribir el comando stat.
root@sugeek:~# stat sugeek
Fichero: sugeek
Tamao: 0
Bloques: 0
Bloque E/S: 4096
fichero regular
vaco
Dispositivo: fe00h/65024d
Nodo-i: 42619
Enlaces: 1
Acceso: (0644/-rw-r--r--) Uid: (
0/
root)
Gid: (
0/
root)
Acceso: 2014-05-06 20:36:14.546982597 -0500
Modificacin: 2014-05-06 20:36:14.546982597 -0500
Cambio: 2014-05-06 20:36:14.546982597 -0500
Creacin: -

Identificando Dispositivos
La identificacin de los dispositivos en GNU/Linux es relativamente fcil, ya que segn
sea el tipo de dispositivo se identifica con letras y segn la cantidad, se enumera cada
uno.

38
www.sugeek.co

Para tomar como ejemplo, utilizaremos un disco sata que es reconocido como sd.
s d a1......
| | |_______El # (Puede ser 1, 2, 3 4, 5 etc) identifica la particin dentro del disco.
| |________Identifica el Numero del Disco (a = 1err disco, b = 2do disco, etc)
|___________Identifica el tipo de dispositivo.
El resto de dispositivos se enumera de una forma similar (por no decir igual).
A continuacin listaremos los distintos tipos de dispositivos que reconoce GNU/Linux.
Dispositivo

Nomenclatura

Descripcin

Unidad de Diskette

fd

Unidad de Diskette

fd0

Disco Duro / DVD IDE

hd

Disco Duro / DVD IDE

hda

Disco Maestro en el Bus IDE 0 (hda1 1ra particin de


hda)

Disco Duro / DVD IDE

hdb

Disco Esclavo en el Bus IDE 0 (hdb5 5ta particin de


hdb)

1ra Unidad de Diskette

Unidad SCSI (SATA)

sd

Unidad SCSI (SATA)

sda

1ra Unidad SCSI conectada al puerto sata0

Unidad SCSI (SATA)

sdb

2da Unidad SCSI conectada al puerto sata1

Unidad de DVD SCSI

scd

Unidad de DVD SCSI

scd0

1ra Unidad de DVD con identificador mas bajo

Puerto Paralelo

lp

Terminales o Consolas

tty

Usuarios Logueados localmente

Terminales Remotas

pty

Usuarios Logueados de forma remota

Puertos Seriales

ttys

Interfaces de Red
Cableada

eth

Interfaces de Red
Cableada

eth0

Red Inalmbrica

wlan

Red Inalmbrica

wlan0

1ra interfaz de red

1ra interfaz de red inalmbrica

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

39
www.sugeek.co

c Dispositivo tipo carcter, enva informacin bit por bit, o solo un Byte a la vez,
ideal para mouse, teclados, puertos paralelos, puertos de comunicacin (com),
terminales.
b Dispositivo tipo bloque, como son las unidades de almacenamiento sea cual
sea.
s Dispositivo tipo socket, lo cual permite una comunicacin entre los distintos
procesos del sistema.
Otros Archivos Como /dev/null o /dev/zero, el primero es el Hoyo Negro de
GNU/Linux, el segundo genera una secuencia de ceros.

Los dispositivos para su reconocimiento y funcionamiento debe de ser cargados durante


la carga del sistema o despus de esta. El servicio encargado de la carga de los
dispositivos es udev (Su respectiva configuracin la encontramos en /etc/udev/ ), el
cual crea el archivo solamente de los dispositivos conectados (En caliente o en fro) para
la comunicacin del sistema con el kernel. Udev fue el remplazo de devfs. Para obtener
informacin de cierto dispositivo, se utiliza el comando udevadm info query=all
name /dev/dispositivo
IMPORTANTE!
udev es remplazado por systemd en la versin 8 de Debian.
Al listar el contenido del directorio /dev/ con ls -l en la parte donde normalmente esta el
tamao del archivo, se identifican con el numero mayor, el driver del dispositivo, y el
numero menor se suele identificar el perifrico o dispositivo.
Como es conocido por la gran mayora de personas, las USB soporta una inimaginable
cantidad de dispositivos, los cuales deben de ser catalogados segn su funcin y versin,
ya que no es lo mismo un medio masivo a un teclado, y en ocasiones es necesario
bloquear el acceso a medios masivos por USB pero que el teclado siga funcionando, para
ello existen unos mdulos especializados para este tema, los cuales estn integrados a
uno solo el cual es usbcore. El cual tiene las api para soportar las distintas versiones de
USB como lo son la versin 1, 1.1, 2.0 y 3.0, los cuales se encuentran soportados dentro
de la api xhci_hcd (Ultima API desarrollada por Intel para soportar todas las versiones de
USB)
Para obtener mas informacin al respecto dirigirse a:
https://www.kernel.org/doc/htmldocs/usb/

40
www.sugeek.co

TRABAJANDO CON GNU/LINUX


El Trabajo con GNU/Linux por consola o shell (CLI), para algunos es el impedimento de
usar GNU/Linux, aunque ya muchos saben las ventajas que este tiene, pero existen
soluciones como Zentyal la cual es un servidor GNU/Linux basado en Ubuntu con una GUI
via web y su uso es literalmente fcil.
Cuando iniciemos nuestro servidor Debian, nos encontraremos con una solicitud de login,
el cual podra ser con root o con el usuario que se creo. Solamente es loguearnos con
dichas credenciales y ya podemos trabajar con nuestro Debian, tendremos una consola
con la siguiente estructura del prompt.
usuario@nombremaquina:~$

1
2
34
Desglosemos este prompt:
1. Indica el nombre del usuario con el que estamos logueados.
2. Indica el nombre del host.
3. indica el path o ruta donde nos encontramos el ~ indica que estamos en el home
del usuario.
4. Tipo de Usuario, el $ indica un usuario normal, el # indica el usuario root
Los Shells poseen tanto comandos internos como externos (La gran mayora suministrado
por GNU). Para saber si un comando es interno o externo solo es ingresar el comando
type y el comando que deseamos saber.
El resultado de esto con el comando cd seria la siguiente:
usuario@sugeek:~$ type cd
cd es una orden interna del shell

Y con el comando fdisk :


usuario@sugeek:~$ type fdisk
fdisk is /sbin/fdisk

De esta manera sabemos si un comando es interno o externo a la shell.


Los Shell tambin usan 3 flujos de entrada/salida estndar:

Stdin Es el flujo de entrada estndar y proporciona los datos de entrada a los


comandos, normalmente el teclado.
Stdout Es el flujo de salida estndar y muestra los datos de salida de los
comandos, normalmente el monitor.
Stderr Es el flujo de error estndar y muestra datos de salida de error de los
41
www.sugeek.co

comandos, Normalmente el monitor.

Estructura de los comandos


En GNU/Linux como en todo sistema, la ejecucin de ordenes tiene una interpretacin
organizada en donde, si no se cumple dar como resultado un error en la orden o en
casos extremos, dao del sistema.
La sintaxis comn para ejecutar un comando es:
comando

rm

opciones archivo/directorioafectado

-r
/home/suge3k/*

Las opciones, en la mayora de ocasiones van precedidas por un guin , como vimos en el
ejemplo anterior.
Para cancelar la ejecucin de un comando basta con realizar la combinacin de teclas
[ Ctrl ] + [ C ].
Para saber la ubicacin de un comando usamos el comando which . Si existen mas
comandos con la misma estructura solo indicamos la opcin -a.
root@sugeek:~# which fdisk
/sbin/fdisk

Comando man
Para conocer mas sobre un comando (tambin contamos con el comando info o la opcin
help del comando), nos ayudamos con la pagina manual de este, man. Por ejemplo la
pagina manual del comando rm seria:

man rm
Pero man, tambin tiene sus opciones, por ejemplo existe el comando passwd el cual
sirve para cambiar el password de un usuario, pero al mismo tiempo existe el archivo
/etc/passwd el cual contiene informacin de los usuarios, y uno como el poca relacin
tienen. Para diferenciar uno del otro se utilizan secciones, man siempre busca en la
seccin 1 y va bajando poco a poco hasta encontrar la coincidencia.

42
www.sugeek.co

Seccon

Contenido

Instrucciones ejecutables o comandos del shell

Llamadas del Sistema (API del ncleo)

Llamadas de las Libreras (funciones c)

Archivos Especiales (contenido de /dev )

Formato de ls Archivos (/etc/passwd, /etc/hosts, etc.)

Juegos, Salvapantallas, Programas Varios, etc.

Varios, Comandos no estndares que no encuentran sitio en otra parte

Comandos de Administracin del sistema Linux

Subprogramas del ncleo (Normalmente vacio)

Ya teniendo en cuenta la anterior tabla, si ejecutamos solo man passwd nos mostrara:
PASSWD(1)
NAME

User Commands

PASSWD(1)

passwd - change user password

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

Pero si ejecutamos man 5 passwd, le estamos indicando que tome como referencia la
seccin 5, y tendremos como resultado:
PASSWD(5)
NAME

File Formats and Conversions

PASSWD(5)

passwd - the password file

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

login name
optional encrypted password
numerical user ID
numerical group ID
user name or comment field
user home directory
optional user command interpreter
43
www.sugeek.co

En ocasiones es normal olvidar el comando exacto, pero sabemos parte de su contenido,


as que utilizamos la opcin -k indicando el contenido del comando, as que utilizamos
man -k passwd tendremos como resultado:
update-passwd (8)
- Actualiza /etc/passwd, /etc/shadow y /etc/group de forma
segura
chgpasswd (8)
- update group passwords in batch mode
chpasswd (8)
- update passwords in batch mode
fgetpwent_r (3)
- get passwd file entry reentrantly
getpwent_r (3)
- get passwd file entry reentrantly
gpasswd (1)
- administer /etc/group and /etc/gshadow
grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB
lppasswd (1)
- add, change, or delete digest passwords.
pam_localuser (8)
- require users to be listed in /etc/passwd
passwd (1)
- change user password
passwd (1ssl)
- compute password hashes
passwd (5)
- the password file
passwd2des (3)
- RFS password encryption
smbpasswd (5)
- The Samba encrypted password file
smbpasswd (8)
- change a user's SMB password
SSL_CTX_set_default_passwd_cb (3ssl) - set passwd callback for encrypted PEM file
handling
SSL_CTX_set_default_passwd_cb_userdata (3ssl) - set passwd callback for encrypted
PEM file handling

Vemos los distintos comandos que poseen el contenido de passwd.

Apagar el sistema

shutdown -h now Apaga el sistema


shutdown -r now Reinicia el Sistema
shutdown -h HORA:MIN & Apagado planificado
shutdown -c Cancelar el apagado planificado
reboot Reinicia el sistema
halt Apaga el sistema
init 0 Apaga el sistema

Verificando el estado del Sistema


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

Comando TOP
Este comando me mostrara por completo la informacin del estado del sistema como por
ejemplo, mostrara el consumo de procesador y memoria ram en tiempo real, as mismo
cuantos usuarios se encuentran logueados en ese momento, hace cuanto esta encendida
la maquina etc. al escribir top en la consola nos aparecer una pantalla como la
44
www.sugeek.co

siguiente.

1. En esta parte mostrara informacin como: Usuarios logueados, Carga del sistema
(Ultimo Minuto, ltimos 5 Minutos, y ltimos 15 min), procesos en ejecucin, uso de
procesador, memoria ram y swap. En la tercera linea (CPU) muestra informacin
importante como el porcentaje usado por los usuarios (us) por el kernel (sy), porcentaje
de procesos con baja prioridad (ni), porcentaje de procesos inactivos (id), el porcentaje de
procesos en espera (wa), Hadware Interrupts (hi) y Software Interrupts (si), el steal time
(st) es usado generalmente con VM.
2. Este apartado muestra los procesos que estn corriendo en el sistema, con el usuario
que lo esta ejecutando y su respectivo PID (Process ID).
Algunos de los comandos de top son:

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


m Muestra u oculta informacin de la memoria, la 4ta y 5ta linea
A Ordena los procesos segn consumo de recursos
r Cambia la prioridad de un proceso
k Mata el proceso indicado
q Cierra top
u Busca los procesos del usuario indicado

El comando htop es por asi decirlo, una interfaz grfica y mas amigable que top .

45
www.sugeek.co

Comando free
Con este comando tendremos informacin del uso de la memoria ram y swap.

Como podemos observar, este comando muestra la informacin en kilobytes y en


ocasiones es difcil leerlo as que para ello usamos la opcin m para que muestre las
cantidades en sumas redondas como megabytes o la opcin g para que los muestre en
gigabytes.

Comando w

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

Comando vmstat -s
Este comando es similar que indicar cat /proc/meminfo.
sugeek@sugeek~$ vmstat -s
8079804 K total memory
5013668 K used memory
2318480 K active memory
2387252 K inactive memory
3066136 K free memory
113348 K buffer memory
3087384 K swap cache
7812092 K total swap
0 K used swap
7812092 K free swap
275687 non-nice user cpu ticks
2583 nice user cpu ticks
59034 system cpu ticks
1755387 idle cpu ticks
39844 IO-wait cpu ticks
22 IRQ cpu ticks
7264 softirq cpu ticks
0 stolen cpu ticks
1460577 pages paged in
2548113 pages paged out
0 pages swapped in
0 pages swapped out
14374381 interrupts
46
www.sugeek.co

23585894 CPU context switches


1384197460 boot time
191137 forks

Comando who y whoami


El comando who indicara quienes estn conectados y por que consola, y whoami
mostrara la identificacin del usuario actual.

Comando id y groups
Con el comando id obtenemos informacin sobre el usuario actual, si escribimos id
nombreusuario obtenemos informacin sobre el usuario solicitado, como su id, grupo
principal y grupos a los cuales pertenece.
uid=0(root) gid=0(root) grupos=0(root)
Con el comando groups , obtendremos informacin sobre los grupos a los cuales pertenece el
usuario actual o solicitado.

Comando lspci

Mostrara la informacin de las ranuras y adaptadores relacionadas con el bus PCI del
sistema. Se puede obtener mayor informacin agregando la opcin v o vv.

Comando lsusb
Mostrara la informacin de los puertos usb. Podemos mostrar mas informacin con la
opcin v

47
www.sugeek.co

Comando lscpu
Mostrara informacin sobre los procesadores.

Comando uname
Este comando es el mas usado para conocer informacin del sistema, pero por si solo no
muestra mucha informacin as que hay que usarlo con la opcin a

Como podemos observar en el resultado del comando, muestra el tipo kernel, el nombre
de la maquina, la versin del kernel, fecha y hora, arquitectura del procesador.
Podemos tener informacin especifica como el hardware (-m) nombre de la maquina (-n)
la versin del ncleo (-r) tipo de procesador (-p) versin del sistema (-v) o nombre del
sistema -s).

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

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

Comando lshw
Este comando similar al comando hwinfo y dmidecode (Este ultimo consulta
directamente a la BIOS, en ocasiones no confiable)el cual mostrara la informacin de todo
el hardware del sistema, como board, procesador, memorias ram, discos duros, unidades
48
www.sugeek.co

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

Comando lsblk
Con este comando podremos conocer todos los discos, en forma de rbol, la informacin
es obtenida del sistema de archivos del sistema.
sugeek@sugeek:~$ lsblk
NAME
MAJ:MIN RM
SIZE RO TYPE MOUNTPOINT
sda
8:0
0 698,7G 0 disk
sda1
8:1
0
237M 0 part /boot
sda2
8:2
0
7,5G 0 part [SWAP]
sda3
8:3
0 46,6G 0 part /
sda4
8:4
0 644,4G 0 part /home
sr0
11:0
1 1024M 0 rom

Comando df
Este comando mostrara el uso de espacio de los discos y unidades de almacenamiento,
usando la opcin h Podremos entender mucho mejor las unidades de medida.

49
www.sugeek.co

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

Comando blkid
Con este comando obtendremos informacin 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"
/dev/sda2: UUID="9fe6a649-530f-4ce7-a215-add68169d792"
/dev/sda3: UUID="9e638ed8-41c1-410f-938b-ba0f3ba6813d"
/dev/sda4: UUID="4795786e-ab9d-40d4-abd9-657d026ce0a7"

TYPE="ext4"
TYPE="swap"
TYPE="ext4"
TYPE="ext4"

Comando fdisk -l
Aunque este comando permite particionar, etc. Lo veremos a mayor profundidad mas
adelante, pero en esta ocasin lo utilizaremos para visualizar informacin de los discos
duros.

Como podemos observar me identifica el disco /dev/sda el cual tiene un tamao de


50
www.sugeek.co

750GB e informacin de las particiones, sectores, etc.

Comando last y lastb


last muestra un listado de los ltimos usuarios logueados al sistema (desde el archivo
/var/log/wtmp ) e informacin relevante, lastb , (Obtiene la informacin de
/var/log/btmp ) muestra los ltimos intentos de logueo al sistema que fracasaron.

Como podemos observar que usuario se logueo, en que terminal, fecha y hora y si se
encuentra o no logueado (still logged in).
Con lastb obtenemos los intentos de logueo fallidos. Por ejemplo, en un sistema donde
no existiera el usuario 'fulano' resultara obvio que alguien esta tratando de obtener
acceso remoto, adivinando usuario:contrasea.

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

Comando dmesg
Se usa para desplegar los mensajes que se mostraron en pantalla cuando se inicio (boot)
el sistema. Se usa para realizar depuraciones al sistema de como se estn cargando los
diversos mdulos y componentes al arranque del sistema o ya en ejecucin y poder asi
corregir posibles errores al iniciar el sistema, adems no solo al iniciar al sistema, ya que
sigue generando informacin, por ejemplo cuando conectamos un teclado, o alguna
unidad de almacenamiento o cualquier dispositivo conectados en caliente. En pocas
palabras, son los mensajes generados por el Kernel.

51
www.sugeek.co

Comando arch
Con este comando sabremos cual es la arquitectura del sistema, lo cual tambin se
podra obtener con comando uname -i.

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

Comando ps
Mostrara los procesos que esta ejecutando el usuario actual sobre la consola, para poder
ver por completo todos los procesos que se estn ejecutando se recomienda el uso de las
opciones aux.
Sin opciones:

Con opciones:

Comandos ifconfig, ip
Ifconfig adems de ser un comando para mostrar informacin tambin es un comando
para asignacin de direccin IP lo cual veremos mas adelante. Pero por si solo vamos a
52
www.sugeek.co

usar algunas opciones.

Ifconfig -a Mostrara informacin de todas las interfaces

ifconfig interfaz Muestra informacin sobre la interfaz solicitada. Ej:


ifconfig eth0

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

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

conectado.
Ip addr Mostrara adems del estado de la interfaz si esta arriba o abajo mostrara
informacin extra sobre el direccionamiento ip.

53
www.sugeek.co

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

-i Permite verificar el estado de las tarjetas de red


-a Permite visualizar todas las conexiones, para todos los protocolos,
incluidos los puertos de escucha.
-at Lista todas las conexiones TCP.
-au Lista toda las conexiones UDP.
-l Lista las conexiones de escucha.
-s Muestra estadsticas por protocolo como IP, ICMP, TCP, UDP. Se puede
especificar con -su para udp -st para TCP.
-tp Muestra el ID del proceso que usa el puerto.
-c Muestra la informacin cada 5 segundos, se recomienda combinar con
a o t. Ejem: -cat para mostrar cada 5 seg informacin de conexiones TCP.
-A Permite especificar el protocolo a consultar, como inet, inet6, unix, ipx,
ax25, netrom y ddp.
-n Muestra las tablas de enrutamiento.

Comandos route -e y arp -e


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

Archivos de Estado del Sistema


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

cat
cat
cat
cat
cat

/proc/cpuinfo Muestra la informacin del procesador, similar a lscpu.


/proc/meminfo Muestra informacin sobre la memoria ram.
/proc/net/dev Muestra informacin de los dispositivos de red y estadsticas.
/proc/mdstat Muestra el estado de los RAIDS montados.
/proc/scsi/scsi Muestra informacin de los dispositivos SCSI.

54
www.sugeek.co

Archivo /etc/services
En este archivo podemos encontrar todos los servicios que tiene nuestro sistema y el
puerto de escucha que tiene configurado. Muy til cuando se crean reglas de firewall.

Alias
Los alias son seudnimos que se asocian a un comando ya sea con las opciones
establecidas o no. Por ejemplo, el comando ls ya tiene por default un alias.
usuario@sugeek.co:~$ alias
alias ls='ls color=auto'
Como vemos la salida al ejecutar alias sin opciones, me mostrara que alias tenemos
establecidos en ese momento. Para poder establecer un alias para dicha shell solo costa
escribir el comando alias mas el nuevo comando y que va a hacer al ejecutar, por
ejemplo vamos a crear un alias llamado update.
root@sugeek.co:~# alias update = 'apt-get update && apt-get upgrade'

Como podemos observar asociamos el nuevo Comando update el cual al escribirlo en


realidad ejecutara apt-get update y luego si y solo si el anterior comando se ejecuto de
forma correcta (&& ) se ejecutara apt-get upgrade.
Los alias son de gran ayuda cuando queremos agilizar un poco los procesos, pero es un
arma de doble filo, ya que si la persona usa muchos alias, podra olvidarse la utilizacin
de los comandos verdaderos.
Los cambios solo se mantendrn en la sesin hasta que el equipo sea reiniciado
nuevamente, cuando esto sucede dichos alias desaparecen, para solventar esto solo es
crear dichos alias en el archivo .bashrc que se encuentra en el home del usuario.

Manejo de Archivos y Directorios


Directorios:
Es una coleccin de Archivos y otros directorios de forma jerrquica.
/ = Representa el directorio raiz.
Para conocer el listado de directorios principales de la distribucin usamos el comando
man hier .

Rutas Absolutas:
Sealan la ubicacin de un archivo o directorio desde el directorio raz del sistema de
archivos. Por ejemplo es una ruta absoluta /home/dir1/arc1.fil que seala la ubicacin de
55
www.sugeek.co

arc1.fil desde la raz del sistema de archivos.

Rutas Relativas:
Sealan la ubicacin de un archivo o directorio a partir de la posicin actual del sistema
operativo en el sistema de archivos. Por ejemplo es una ruta relativa dir1/arc1.fil que
seala al archivo arc1.fil dentro del directorio dir1 en la ubicacin actual.

Trabajando con Directorios:

pwd Imprime en Pantalla la ruta del directorio actual.


cd Cambia de un directorio a otro hacia adelante indicando al directorio al
cual se desea ingresar.
cd .. Devuelve al directorio superior.
cd ../.. Devuelve a 2 directorios superiores.
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 informacin 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 tamao del archivo o carpeta.
ls -S Organiza la salida de mayor tamao a menor
ls -t Muestra el contenido por hora/fecha de modificacin, 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 esta vaco.
rmdir -p: Borra un subdirectorio.

Trabajando con Archivos

touch Crea un archivo


file Indica el tipo de archivo
cat Muestra el contenido de un archivo o varios
tac Muestra el contenido de un archivo de forma inversa
head Muestra las 10 primeras lineas de un archivo.
head -20 Muestra las 20 primeras lineas de un archivo, el 20 puede ser
56
www.sugeek.co

cambiado por cualquier valor numrico entero.


tail Muestra las 10 ultimas lineas de un archivo.
tail -20 Muestra las 20 ultimas lineas de un archivo, el 20 puede ser
cambiado por cualquier valor numrico entero.
tail -f Va actualizando el archivo a medida que se van generando datos.
wc Muestra informacin de lineas, palabras y caracteres de un archivo.
more Muestra la informacin de un archivo de texto en forma paginada.
less Es similar a more pero a contrario de este, less permite devolverse a
visualizar una parte del archivo que ya ha sido pasada.
strings Permite visualizar los caracteres ASCLL de un archivo ejecutable.

Trabajando con Archivos y Directorios

cp Permite copiar un archivo o directorio, su estructura es: cp


archivo/pathacopiar rutadestino
cp -i Copia de forma interactiva, solicita confirmacin de realizar la copia
si encuentra un archivo con el mismo nombre.
cp -r Copia recursiva, cuando se requiere copiar todo el contenido.
cp -f Copia forzada.
cp -n No sobrescribe archivos con el mismo nombre.
cp -p Perseverante, mantiene la informacin de los metadatos del archivo
origen (permisos, fecha, etc)
rm Permite borrar un archivo o directorio
rm -r Permite borrar de forma recursiva todo el contenido del directorio
indicado.
rm -i Solicita confirmacin para eliminar un archivo
rm -f Fuerza la eliminacin de un archivo
En ocasiones cuando un archivo inicia con un carcter especial como un
guin, es necesario indicar la finalizacin de las opciones del comando con
guin guin. - -. Por ejemplo para eliminar el archivo -file.txt es necesario
escribir rm -r -- -file.txt
mv Permite mover un archivo o directorio y tambin es usado para cambiar
nombres,
su
estructura
es:
mv
archivo/pathamover
rutadestino/nombrenuevo
mv -n No sobrescribe si el archivo ya existe.
mv -i Solicita confirmacin para mover el archivo.

Trabajando con la familia del comando z


La familia del comando z permite verificar y trabajar con archivos que se encuentran
dentro de un archivo comprimido, se usan indicando z antes del comando a usar, zcat,
zless, zgrep, etc.

zcat miarchivo.txt.tar Muestra el contenido del archivo comprimido


zdiff miarchivo1.txt.tar miarchivo2.txt.tar Compara los 2 archivos
comprimidos
57
www.sugeek.co

Shell globbing
En ocasiones cuando se esta trabajando con muchos archivos, es necesario utilizar
Comodines ya sea para buscarlos y modificarlos, o solamente listarlos.

El asterisco * Es el comodn general el cual es usado para remplazar x cantidad


de caracteres, Ej: ls *.php Listara todo el contenido de la carpeta que tenga
archivos con extensin .php. Ej2: ls file.* Listara todos los archivos que se llamen
file sin importar su extensin. Ej3: ls *doc.pdf Listara todos los archivos que
tengan la extensin .pdf y al finalizar el nombre de este contenga los caracteres
doc.
El Signo de Interrogacin ? A diferencia de * el ? Solo remplaza un carcter. Ej: ls
?ile.txt Listara los archivos que empiecen con a-z 0-9 A-Z y que continu con
la palabra ile.
Corchetes [ ] Muestra los archivos que contengan cualquier carcter indicado
dentro de los corchetes. Ej: ls file[AB].txt Listara los archivos fileA o fileB
continuando con la extensin .txt. Ej2: ls file[a-t]* Listara cualquier archivo
llamado file continuando con una letra dentro del rango a hasta la t, y cualquier
extensin.

Archivos Enlaces
Los archivos enlaces simblicos (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.
lrwxr-xr-x

7 sugeek sugeek 12288

jul

4 09:29

Descargas /root/Descargas

Como podemos observar al principio de la linea nos muestra una l indicando que es un
archivo enlace, y al final indica la direccin en donde se encuentra el archivo original.
La forma para crear un archivo enlace es ln -s archivooriginal nombreenlace
Si listamos el contenido de nuestro directorio con ls -li veremos que este tiene un cdigo
de inodo totalmente distinto al archivo original.
root@sugeek:~# ls -li | grep Descargas
3932179 drwxr-xr-x 7 root root 12288
jul 4 09:29
Descargas
root@sugeek:~# ln -s /root/Descargas /home/sugeek/Descargas
root@sugeek:~# ls -li /home/sugeek/ | grep Descargas
4922879 lrwxr-xr-x 7 sugeek sugeek 12288
ago 3 12:29
Descargas
/root/Descargas

Adems de estos tipos de enlaces tenemos un enlace duro o hardlink el cual mantiene
el inodo original, a diferencia del enlace normal.
Para crear un enlace duro se usa ln archivoriginal nombreenlace
root@sugeek:~# ls -li | grep Descargas
58
www.sugeek.co

3932179 drwxr-xr-x 7 root root 12288


jul 4 09:29
Descargas
root@sugeek:~# ln /root/Descargas /home/sugeek/Descargas
root@sugeek:~# ls -li /home/sugeek/ | grep Descargas
3932179 drwxr-xr-x 7 sugeek sugeek 12288
jul 4 09:29
Descargas

Como podemos observar, al crear un enlace duro dicho enlace contiene la misma
informacin del inodo a diferencia del softlink que lo crea con nueva informacin de
inodo. Para eliminar un Hardlink solo basta con borrar alguno de los 2 archivos, puede ser
el archivo fuente, no hay problema. Los Hardlinks no se podrn usar entre 2 unidades de
almacenamiento distintas.

59
www.sugeek.co

COMPILANDO EL KERNEL
Cuando existen nuevas caractersticas, o mejoras de seguridad en Linux, es
recomendable compilar un nuevo kernel, para ello se explicara el paso a paso de como
compilarlo.
Descargar el kernel a nuestro sistema desde www.kernel.org, en esta ocasin se descarga
el kernel 3.16:
root@sugeek:/usr/src# wget
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.16.tar.bz2

Despus de descargar procedemos a desempaquetarlo:


root@sugeek:/usr/src# tar jxvf linux-3.16.tar.bz2

Ingresamos al directorio
root@sugeek:/usr/src# cd linux-3.16

Limpiamos cualquier configuracin previa y copiamos la configuracin de nuestro


sistema, esto con el fin de adaptar mejor nuestro nuevo kernel.
root@sugeek:/usr/src# make mrproper
root@sugeek:/usr/src# cp /boot/config-3.8.0-39-generic /usr/src/ .config

Configuramos nuestro Kernel a instalar segn sean nuestros requerimientos.


root@sugeek:/usr/src# make menuconfig

Luego de haber configurado a nuestro gusto el nuevo Kernel, le damos salir y seguimos
con el siguiente comando para compilar el kernel.
root@sugeek:/usr/src# make

Luego a instalarlos.
root@sugeek:/usr/src# make modules_install

Procedemos a instalar el kernel.


root@sugeek:/usr/src# make install

Instalamos la imagen init


root@sugeek:/usr/src# mkinitramfs -o /boot/initrd.img-3.16 3.16
60
www.sugeek.co

Actualizamos el Grub.
root@sugeek:/usr/src# update-grub

Por ultimo reiniciamos el sistema.


root@sugeek:/usr/src# reboot

Ya solo el prximo inicio del sistema, este arrancara con el nuevo kernel, lo podemos
validar con el comando uname -r

Eliminar un Kernel Antiguo


Para poder eliminar un kernel antiguo procedemos con lo siguiente:
IMPORTANTE!
No eliminar un kernel antiguo si aun no se han realizado todas las pruebas pertinentes,
dejarlo por lo menos 1 mes de forma de Backup.
Ejecutamos el comando dpkg l | grep linux-image y como resultado tendremos los
kernels instalados, luego de saber que kernel deseamos desinstalar procederemos a
eliminarlo con el comando aptitude remove -purge linux-image-3.# y por ultimo
ejecutamos dpkg l | grep linux-headers y realizamos la misma actividad anterior
pero con el header correspondiente.
El kernel quedo eliminado, pero aun falta la actualizacin del grub para que tome los
cambios, con el comando update-grub.

Gestin de Mdulos
Los mdulos son archivos que nos permiten gestionar algunas de las caractersticas de
nuestro sistemas, asociados al kernel.

Comando lsmod
La finalidad de este comando es poder verificar que mdulos tiene cargados el sistema
/lib/modules/mikernel/.

61
www.sugeek.co

La primera columna indica el nombre del modulo cargado, La segunda da el tamao del
modulo, la tercera suministra un contador de utilizacin (cuantos componentes del
sistema acceden al modulo) y la ultima columna proporciona la lista de mdulos que
dependen del modulo cargado.
En realidad lsmod solo organiza la informacin contenida en el archivo /proc/modules.

Comando modinfo
Con este comando obtengo informacin necesaria sobre un modulo.
root@sugeek:~# modinfo asus_wmi
filename: /lib/modules/3.8.0-39-generic/kernel/drivers/platform/x86/asus-wmi.ko
license:
GPL
description:
Asus Generic WMI Driver
author:
Corentin Chary <corentin.chary@gmail.com>, Yong Wang
<yong.y.wang@intel.com>
srcversion:
62CA511243680BE13E8641A
depends:
sparse-keymap,wmi,video
intree:
Y
vermagic:
3.8.0-39-generic SMP mod_unload modversions

Comando depmod
Este comando actualiza el rbol de dependencias de cada uno de los mdulos ubicados
en el archivo /lib/modules/VersionDelKernel/modules.dep, dicho archivo contiene 2
columnas, la 1ra indica el modulo a cargar (ruta) y la 2da indica los modulos que se
deben de cargar para que el 1ro cargue.
Si presentamos problemas con algunos mdulos con sus dependencias, debemos
reestructurar con el comando depmod -a.

Comando insmod
Este comando permite cargar un modulo que este fallando, pero se debe de tener
62
www.sugeek.co

cuidado con las dependencias del modulo, ya que si no se cargan primero no se podr
cargar el modulo 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

Como podr observar, primero se cargo el fat.ko, ya que el modulo vfat.ko depende de
fat.ko
root@sugeek:/lib/modules/3.2.0-61-generic# grep vfat.ko modules.dep
kernel/fs/fat/vfat.ko: kernel/fs/fat/fat.ko

Con la opcin -k permite la limpieza automtica, liberando al sistema de mdulos que no


este utilizando, ganando as un poco de recursos

Comando rmmod
A diferencia de insmod , este los descarga, pero si dicho modulo se encuentra utilizado o
asociado a otro modulo no se podr descargar, para descargar un modulo del sistema, se
procede a quitar primero el modulo principal y luego sus mdulos de dependencias, todo
lo contrario a insmod.

Comando modprobe
Este comando engloba y facilita la carga o descarga de mdulos, a diferencia de insmod
o rmmod los cuales deben de cumplir ciertos Pasos para cargar o descargar los
mdulos, con modprobe se carga el modulo y sus dependencias de una sola vez. Con la
opcin -r permite descargar un modulo del sistema siempre y cuando no este siendo
utilizado

Archivo /etc/sysctl.conf y comando sysctl


Sysctl nos permite cambiar parmetros del kernel sin tener que reiniciar el sistema
Los parmetros a modificar se encuentran en /proc/sys/ , algunos de los mas
interesantes son:

dev Establece los parmetros de configuracin de los dispositivos conectados


fs Los parmetros relacionados con los sistemas de ficheros, inodes, quota, etc
kernel Comportamiento general del kernel
net Contiene los parmetros para configuracin de la red
vm Se utiliza para la configuracin de la memoria virtual.

La estructura del comando sysctl es :

sysctl opcin variable=valor


63
www.sugeek.co

Las opciones ms habituales son :

-a Muestra todos los valores disponibles


-w Establece el valor indicado
-p Carga en sysctl los valores definidos en el archivo /etc/sysctl.conf

La opcin -w solo permitir establecer la caracterstica en la sesin actual, y


desaparecer cuando se reinicie el sistema. Para evitar que esto ocurra hay que escribir
los cambios en /etc/sysctl.conf

Algunas Opciones de Inters


Las siguientes configuraciones se realizan directamente al archivo /etc/sysctl.conf,
Para que sean aplicados los cambios de este archivos se usa el comando sysctl -p.

Forwarding de paquetes IP, con el fin de que podamos usar reglas de redireccin
con iptables y nuestro sistema funcione como router.

net.ipv4.ip_forward = 1

Desactiva las respuesta del kernel a las peticiones ARP. Esta tcnica es til a la
hora de configurar dos maquinas con la misma direccin IP.

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

Indicar al sistema que use mas la memoria RAM en ves de la Swap, ideal para
equipos con 8GB de ram o mas. El valor normal es de 60, siendo un valor menor,
menos uso de la swap.
vm.swappiness=30

Si nuestra mquina no tiene varias Ips, es interesante activar el rp_filter, que


rechaza paquetes cuyo origen no se corresponde con una direccin alcanzable por
la interfaz. Esta opcin nos puede ayudar a evitar IP spoofing:
net.ipv4.conf.all.rp_filter=1
nett.ipv4.conf.default.rp_filter=1

64
www.sugeek.co

HERRAMIENTAS GNU/LINUX
Comando find
Buscara archivos o directorios con el argumento escrito. Vamos a observar algunas
estructuras Bsicas, para mas informacin no dude en consultar el manual del
comando. Man find

find . Buscara en el directorio actual.


find path -name nombrearchivo.txt Buscar por nombre del archivo tal
cual.
find path -iname nombrearchivo Busca el archivo ignorando maysculas
y minsculas
find -type Buscara por tipo de archivo ( L F D ) L = Link, F = File, D =
Directory. Ej: find -type F *.odt
find /home/Files -iname '*.exe' -delete Busca los ejecutables y procede a
eliminarlos.
Find . -user usuario Busca todos los archivos perteneciente al usuario
indicado, se puede hacer lo mismo pero con el grupo indicando -group.
Find -size +100k Buscar archivos mayores a 100k, se puede definir el
menos (-) para indicar que sea de menor tamao al indicado.
Find -atime (access time), busca en la fecha del ultimo acceso, se
entiende acceso como una lectura del archivo o simplemente un listado.
Find -mtime (modification time), busca la fecha de la ultima modificacin,
dicha modificacin es directamente al contenido del archivo.
Find . -mtime 1 Busca archivos modificados dentro de las pasadas 24
Horas
find . -mtime -3 Busca archivos modificados hace menos de 3 das
find . -mtime +4 Busca archivos modificados mayores a 4 das.

Buscar tipos de archivos y proceder a copiar a otro directorio.

find /home/Files -iname '*.avi' -exec cp '{}' /home/Videos \; Busca archivos


con extensin .avi procede a ejecutar el comando cp, toma el resultado de
la bsqueda ' {}' y los copia en la carpeta indicada , lo mismo seria para
mover archivos, solo seria cambiar cp por mv.

Buscar archivos con mas de 4 das y proceder a borrar, ideal para las Papeleras en
servidor de archivos.

Find /home/papelera -mtime +4 -exec rm -r {} \;

Adems de los comandos anteriores, es posible utilizar acciones lgicas, como AND (-a) /
OR (-o) / NOT ( !).
65
www.sugeek.co

Find . ! -name *.doc Busca todos los archivos, excepto los .doc

Comando locate
Similar a find pero penos Completo, solo que 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.
Estructura del comando locate archivo/pathabuscar

Comando date
Muestra la hora/fecha del sistema en ingles.
usuario@sugeek:~$ date
jue jul 11 16:12:50 COT 2013

Establecer Hora y fecha al sistema: Para poder establecer la hora y fecha del
sistema se debe de tener en cuenta la estructura del comando el cual es.
date MMDDhhmmyyyy Donde MM = Mes, DD = Dia , hh = Hora, mm =
Minutos y yyyy = Ao
Nota: La hora siempre debe de ser en formato de 24H

Conocer el que da sera dentro de X tiempo:

usuario@sugeek:~$ date -d "3 days"


dom jul 14 16:14:20 COT 2013

Como se pudo observar me imprimi que da sera dentro de 3 das, el days se


puede cambiar por week, year, month, hour, minute, second, next, ago,

Saber que da fue hace X tiempo:

usuario@sugeek:~$ date -d "3 days ago"


lun jul 8 16:18:43 COT 2013

Algunos ejemplos que por si solos se explican.


usuario@sugeek:~$ date -d "next monday"
lun jul 15 00:00:00 COT 2013
usuario@sugeek:~$ date -d "last monday"
lun jul 8 00:00:00 COT 2013
usuario@sugeek :~$ date -d "3 years 2 month 4 weeks 4 days 10 hours 30 minutes 6
seconds"
vie oct 14 02:55:32 COT 2016
usuario@sugeek :~$ date -d "48 hours ago"
mar jul 9 16:26:09 COT 2013
usuario@sugeek:~$ date -d "-48 hours"
66
www.sugeek.co

mar jul

9 16:26:40 COT 2013

Adems de eso podremos organizar la salida del comando con el smbolo + y el smbolo
%. Para mayor informacin favor visitar la pagina man de date.
Para modificar la ubicacin de nuestro sistema solo basta con ejecutar el comando
tzselect el cual modificara el timezone de nuestro sistema con una series de preguntas,
el archivo que modificara es el /etc/timezone.

NOTA: Si deseas sincronizar el reloj de la bios con el del sistema escribimos hwclock -hctosys y si deseamos sincronizar el reloj del sistema con el de la bios escribimos
hwclock - -systohc.

Comando ntpdate
Network Time Protocol, es el comando que me permite tener los servidores sincronizados
ideal para servidores de LDAP, AD, DNS, Archivos, Logs, etc.
Para sincronizar el reloj del sistema con un servidor, se utiliza el comando ntpdate -U
Server donde server puede ser el nombre del servidor o la IP de este.
Si deseamos configurar un servidor de forma persistente, tendremos que modificar el
archivo /etc/ntp.conf y buscar las lineas que inicien con server y agregar el servidor
que deseemos.

Comando cal
Muestra el Calendario segn el ao seleccionado.

cal Mostrara el calendario del ao actual.


cal year Mostrara el calendario del ao solicitado
cal month year Mostrara el calendario del Mes/Ao Solicitado

usuario@sugeek:~$
Febrero 2055
do lu ma mi ju vi
1 2 3 4 5
7 8 9 10 11 12
14 15 16 17 18 19
21 22 23 24 25 26

cal 2 2055
s
6
13
20
27

28

Comando History
Guarda el historial de comandos de la sesin

history Muestra el historial d e comandos


!# Llama el comando que se encuentra en el numero de la linea indicado
history -c Borra el historial de comandos
67
www.sugeek.co

128
129
130
131
132
133

.bachrc En este archivo que se encuentra en el home de cada usuario se puede


configurar el tamao del history (Disminuir o aumentar los comandos recordados,
fecha, etc).
Con el comando:
echo "export HISTTIMEFORMAT='%F %T : '" >> $HOME/.bashrc
Podremos Indicarle a la shell que guarde el historial con la fecha de ejecucin del
comando.
2013-10-16 20:29:32 : sudo service minidlna force-reload
2013-10-16 20:29:32 : sudo /etc/init.d/vboxdrv setup
2013-10-16 20:29:32 : ifconfig
2013-10-16 20:29:32 : ping 192.168.2.5
2013-10-16 20:29:32 : sudo service minidlna force-reload
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.

tar -x Extraer el Contenido de un archivo comprimido .tar


tar -v Muestra los archivos descomprimidos o procesados.
tar -f Usa el formato de archivos del comprimido
tar -z Extraer archivos gzip
tar -j Extraer archivo bzip2
tar -A Agrega archivos a otra archivo comprimido
tar -p Mantiene los permisos del los archivos/carpetas a comprimir
tar -zxvf Extrae el contenido del archivo gzip2 mostrando los archivo procesados.
tar -cvzf Nombre.tar.gz archivoacomprimir Crea un archivo con formato gz
tar -tvf Visualizar el contenido del archivo comprimido
tar -xtv Directorio/Archivo/Especifico/a/Extraer Extraer un archivo/directorio
especifico.
tar backup=t Renombra el archivo si ya se encuentra creado, ideal para realizar
Backups
tar exlude=~* No toma en cuenta los archivos iniciados por ~, podra ser
cualquier archivo como *.mp3, no crea backup de archivos .mp3.

Comando zip y unzip


Sirve para comprimir y descomprimir en formato zip

68
www.sugeek.co

Comando gzip y gunzip


Comprime y descomprime e formato gzip

Comando wget
Permite descargar archivos desde un servidor. Se puede descargar sitios web completos y
dems.
Su sintaxis es: wget -opcion rutadearchivoadescargar
Un ejemplo complejo es:
root@sugeek:/# wget -r -S -b -p -U Mozilla -l1 -H -np -nd -A.xls* -t1 -N -o
milog.log -i list

Lo anterior indica:

r De forma recursiva, descarga todos los directorios y archivos posibles


S Imprime las respuestas header del servidor
b Background, el comando se ejecutara en segundo plano
p Descarga todo lo necesario para mostrar adecuadamente el sitio
U Indica el tipo de Navegador usado, el famoso user agent
l Indica que siga los enlaces pero solo en un primer nivel
H Indica que descargue los archivos de otros dominios que estn enlazados al
indicado
np No volver al directorio padre
nd No cree la estructura de directorios, solo descargue los archivos indicados.
A Archivos que deseo descargar del sitio
t Nmeros de intento para descargar un enlace
N Indica que no descargue el archivo 2 veces
o Indica el archivo log, ideal si se usa el comando en Background
i Si tenemos varios dominios para descargar, en un archivo lo podemos escribir y
wget lo podr interpretar.

Comando bc
La calculadora que podemos usar desde la consola similar pero mas completa que expr ,
que aparte de sumar y restar puede realizar clculos con una precisin de varios
decimales (expr solo muestra resultados enteros), cambiar de base numrica 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'.

69
www.sugeek.co

Al escribir bc nos deja el promp listo para trabajar con expresiones matemticas. Para
salir solo escribimos quit o halt. Con la opcin -q ocultamos la leyenda del copyright.
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 divisin
.397 #Resultado de la divisin
quit #Cierro el programa

Adems podemos definir las variables para trabajar con estas, pero dentro del entorno
del programa tenemos unas ya predefinidas como:

scale Permite definir cuantos decimales podr tener el resultado


last Esta variable almacena el ultimo resultado
ibase Define la base de entrada, Binario, Decimal, Hexadecimal
obase Define la base de salida, Binario, Decimal, Hexadecimal, ideal para
convertir Decimales a Binarios, o a Hexadecimales y viceversa.

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 operacin, teniendo en cuenta los decimales indicados
ibase=10 #Definimos la base de entrada
obase=2 #Definimos la base de salida
1+1 #Nuestra operacin a base decimal
10 #Resultado de nuestra operacin a base binario

Si queremos tener operaciones matemticas ms complejas tenemos que ejecutar el bc


-l para cargar la librera matemtica:

s (x) Seno de x, en radianes


c (x) Coseno de x
a (x) Arcotangente de x
l (x) Logaritmo neperiano de x
e (x) Exponencial de x
j (n,x) Funcin de Bessel de un entero de orden n de x

70
www.sugeek.co

EDITOR DE TEXTO VI
Aunque no es el mas fcil de usar, pero si es el editor mas completo de todos en cuanto a
consola, adems ya viene instalado de forma predeterminadas en todas las distribuciones
GNU/Linux.
VI requiere que se aprendan todos los comandos de memoria, vamos a ver algunos ya
que este editor tiene libros dedicados.
Nota: VI ya permite desplazarnos con las teclas de cursor.

Funcionamiento
Existen 3 modos de funcionamiento:

Comando: Las inserciones representan comandos. Se accede a ellos al presionar


[Esc]. Cada tecla o combinacin de teclas activa una accin.
Insercin: Se trata de la insercin de texto clsico, se accede al presionar [i] o
[a] desde la ventana comando.
Linea de Comandos: Una linea en la parte inferior de la pantalla permite
insertar comandos especiales, validada con la tecla [Intro]. Se accede a ella
presionar, en modo comando la tecla [: ]

Cuando se abre VI, por defecto esta en modo comando. Para empezar a introducir texto
hay que teclear un comando de insercin de texto.

Comandos
Introduccin de datos
Se deben de efectuar las acciones siguientes en modo comando. Antes se debe pulsar
[Esc][i] o [Esc][a], o [Esc][:].
Comando

Accin

Aadir despus del carcter actual

Aadir texto al final de la linea actual.

Insertar delante del carcter actual

Insertar texto al inicio de la linea

Aadir una linea debajo de la linea actual

Insertar una linea encima de la linea actual

71
www.sugeek.co

Salir y Guarar
Recuerde que [Esc][:] Significa que el comando se introduce en la linea de comandos, se
introduce el comando y luego se oprime [Intro].
Comando

Accin

ZZ

Guarda el archivo y Sale

:q!

Sale sin guardar

:q

Sale si no se modifico el archivo (En caso contrario se usa :q! O :wq O :x)

:w

Guarda el Archivo, se puede indicar el nombre

:wq o :x
1,10w fichero

Guarda y Sale
Guarda las lineas de 1 a 10 en el fichero indicado

Correccin
As como en los procesadores de texto tenemos retroceso y suprimir, en VI tenemos:
Comando

Accin

Suprimir el carcter debajo del cursor

Borra el carcter delante del cursor

r<c>
dw
d$ o D
dO
df<c>
dG
d1G
dd
u
:u#

Sustituye el carcter bajo el cursor por el carcter indicado <c>


Borra la palabra desde el cursor
Borra desde el cursor hasta el final de la linea
Borra desde el principio de la linea hasta el cursor
Borra todo hasta el carcter indicado
Borra todo hasta la ultima linea, incluyendo la linea actual
Borra todo hasta la linea 1, incluyendo la linea actual
Borra la linea actual
Cancela la ultima accin
Cancela los ltimos cambios indicados. :u5 cancela los ltimos 5 cambios

Se pueden repetir estos comandos, como 5dd suprime 5 lineas; 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
h

Accin
Ir a la izquierda
72
www.sugeek.co

Comando

Accin

Ir a la Derecha (L minscula)

Ir hacia arriba

Ir hacia abajo

0 (cero)

Principio de Linea

:0

Primera linea del archivo

Fin de Linea

:$

Ultima linea del archivo

Ir a la palabra siguiente

Ir a la palabra anterior

[Ctrl] + f

Avanzar una pantalla igual que Av Pag

[Ctrl ] + b

Volver una pantalla igual a Re Pg

Ultima linea del archivo, similar a :$

#G

Salta a la linea indicada (10G salta a la 10ma linea)

:#

Igual a la anterior, :10 salta a la 10ma linea.

Bsqueda de texto
Esta es una de las caractersticas especiales que tiene VI, ya que no solo permite buscar
palabras o frases sencillas, si no que tambin permite realizar muchos criterios de
bsqueda.
Para buscar una palabra se usa en el modo comando insertando el carcter / y luego el
criterio de bsqueda, por ejemplo para buscar Debian en un archivo se escribe /Debian,
pero esta bsqueda la realizara desde la posicin del cursor, para hacerlo forma inversa
se usa ? En vez de /.
Lo anterior solo buscara 1 sola vez, para seguir la bsqueda se usa comando n (Hacia
delante) y N (Hacia atrs) de forma inversa.
Algunos criterios son:

/[CcBb]ola Da como resultado las palabras que tengan Cola, cola, Bola y bola
/[A-Z]e Todo lo que empiece con una mayscula y continu con una e
/[A-Za-Z0-9] Todo lo que empiece con una mayscula, una minscula o una
cifra.
/[^a-z] Intervalo negativo, todo lo que NO empieza con una minscula.
/co.a El punto sustituye un carcter. Coma, cola, coca, etc.
/Au*o El * Indica cualquier cantidad de caracteres. Una palabra que inicie con Au
y termine con o sin importar la cantidad de caracteres en medio.
/.* Una cadena cualquiera de tamao variable
73
www.sugeek.co

/^Auto El ^ indica que sera buscado y deber de estar al principio de una linea
/Auto$ El $ indica que sera buscado y deber de estar al final de una linea

Comandos de sustitucin
Para sustituir algn texto, hay que colocarse al principio de la cadena a modificar, luego
teclear uno de los comandos siguientes. A continuacin, teclee simplemente su texto.
Comando

Accin

cw

Sustituye la palabra corriente

c$

Sustituye hasta el final de la linea

c0 (Cero)
cf<c>
c/<rech>

Sustituye hasta el principio de la linea


Sustituye hasta el prximo carcter indicado
Sustituye hasta la prxima coincidencia de la cadena indicada

Copiar y Pegar
El comando v permite una seleccin visual para poder seleccionar el texto a copiar
mediante las teclas de cursor, luego se pueden usar los siguientes comandos.

El comando d corresponde a cortar el texto seleccionado


Nos desplazamos hasta donde deseamos pegar el texto y usamos el comando p

Una manera mas Rpida es la utilizacin de los comandos:

yy Permite copiar la linea actual


#yy Permite copiar las siguientes X lineas

Sustitucin
La sustitucin permite reemplazar de manera automtica varias coincidencias por otra
cadena.
:1,$s/[Ll]inux/LINUX/g
Sustituye desde la 1ra linea (1) hasta la ultima linea ($), todas las coincidencias
encontradas de Linux o linux y los remplaza por LINUX.

Edicin avanzada
Comando
:r fichero

Accin
Inserta el contenido del fichero indicado desde la posicin del cursor

:! cmd

Ejecuta el comando indicado

.r! cmd

Se inserta el resultado del comando ejecutado en la posicin del cursor


74
www.sugeek.co

Comando
:e fichero
:e#

Accin
Carga el fichero para editarlo
Conmuta entre los diferentes archivos abiertos, es igual a [Alt ] + [Tab]

Comando set
El comando set permite dotar de caractersticas al editor.

:set all Muestra las opciones posibles


:set number / nonumber Muestra los nmeros de lineas / Deshabilita los
nmeros
:set showmode / noshowmode Habilita / Deshabilita la vista del estado del editor

75
www.sugeek.co

EDITOR DE TEXTO NANO


El editor de texto nano es una versin 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 posea
teclas de desplazamiento, pero ya con la masificacin de teclados con dichas teclas el
editor vi se volvi obsoleto pero aun asi algunas personas lo siguen utilizando por
motivos de facilidad (Para usuarios expertos), ya que vi (como vimos) es un editor muy
completo.
Se recomienda nano para aquellas personas que estn acostumbradas a los editores de
texto de escritorio o son principiantes en este mundo Linux.

Nano mejoro notablemente la interaccin del usuario final con la edicin de archivos por
consola (Su funcionamiento es muy similar al editor de texto grfico como writer), ac
mencionaremos algunos de los comandos.

Desplazarse entre prrafos, lineas, frases y dems se realiza con las teclas de
cursor.
Ctrl + g (F1) Muestra la ayuda
ctrl + x (F2) Cierra el archivo actual
ctrl + o (F3) Guarda el trabajo actual
ctrl + j (F4) Justificar el Prrafo Actual.
Ctrl + r (F5) Insertar otro fichero en el actual
ctrl + w (F6) Buscar una cadena o expresin regular
ctrl + y (F7) Ir a la pantalla anterior
ctrl + v (F8) Ir a la siguiente pantalla
ctrl + k (F9) Cortar la lnea actual y guardarla en el cutbuffer
ctrl + u (F10) Pegar el cutbuffer en la lnea actual
ctrl + c (F11) Mostrar la posicin del cursor
ctrl + t (F12) Invocar el corrector ortogrfico (si est disponible)

Adems puedes editar nano para que muestre mas informacin, en el archivo /etc/nanorc
podremos editar como nano muestra la informacin.

76
www.sugeek.co

GESTIN DE PAQUETES
El software en GNU/Linux comparte libreras por ende al descargar o instalar software
directamente, se realiza en un tiempo inferior que utilizar software empaquetado (.deb).
Existen 3 maneras de realizar una instalacin, mediante repositorios, instalacin desde
los binarios empaquetados, o desde sus fuentes.

Comando aptitude y apt


Ambos sirven para instalar, desinstalar software y actualizar el sistema, aunque
aptitude de forma predeterminada no viene en Ubuntu (12.04), pero si en Debian. La
diferencia principal de aptitude contra apt es que este ultimo tiene muchas
herramientas hasta casi olvidarlas, en cambio aptitude lo fusiona todo en una sola.
(Aunque aptitude es la GUI de apt )
Normalmente tienen la sintaxis muy similar: comando accion software. Ej: aptitude
install firefox

aptitude Por si solo mostrara un men de instalacin de software amigable.


aptitude install Instala software junto con las dependencias necesarias.
aptitude remove Elimina paquetes junto con las dependencias que queden
hurfanas.
aptitude purge Elimina paquetes y dependencias hurfanas junto con los
ficheros de configuracin.
aptitude search Busca paquetes en las listas de paquetes locales de apt.
aptitude update Actualiza las listas de paquetes locales.
aptitude upgrade Actualiza los paquetes disponibles.
aptitude clean Elimina ficheros temporales descargados durante la instalacin de
un software.
aptitude dist-upgrade Actualiza paquetes, incluso si eso significa que debe
desinstalar otros.
aptitude show Muestra detalles acerca del paquete nombrado.
aptitude autoclean Elimina los paquetes deb obsoletos.
aptitude hold Fuerza a que un paquete permanezca en su versin actual, y no se
actualice.
aptitude reinstall Reinstala el paquete o software en mencin.
aptitude full-upgrade Actualizar paquetes instalados a su versin ms reciente,
instalando o eliminando paquetes si es necesario.
aptitude safe-upgrade Actualiza solo aquellos paquetes indicados.
aptitude keep-all Cancela cualquier cambio programado.
aptidude show Muestra informacin sobre el paquete solicitado.

Como hemos podido observar con solo aptitude podemos realizar muchas tareas con
respecto al software, con apt tambin pero este usa otras herramientas.
77
www.sugeek.co

apt-get Instala o desinstala software


apt-get install Instala Software indicado
apt-get remove Desinstala el software indicado
apt-get autoremove - Elimina automticamente todos los paquetes no usados o
libreras hurfanas.
apt-get purge Elimina el software y tambin archivos de configuracin.
apt-get autoclean Limpia completamente los archivos temporales usados
durante la instalacin de un software
apt-get clean Limpia los archivos temporales generados durante la
instalacin de un software.
apt-get update Consigue listas de paquetes nuevos y actualizaciones.
apt-get upgrade Realiza actualizaciones de los paquetes
apt-get source Descarga archivadores origen
apt-get build-dep Configura las dependencias de compilacin para paquetes
origen
apt-get dist-upgrade Actualiza la distribucin.
apt-get check Verifica que no hay dependencias rotas.
apt-get markauto Marca los paquetes dados como instalados
automticamente
apt-get unmarkauto Marca los paquetes dados como instalados manualmente
apt-get changelog Descarga y muestra el registro de cambios del paquete
dado
apt-get download Descarga el paquete binario en el directorio actual
apt-cache Busca paquetes dentro del sistema local
apt-cache gencaches Construye el paquete y la cach de origen
apt-cache showpkg Muestra informacin general para un paquete
apt-cache showsrc Muestra registros del origen
apt-cache stats Muestra algunas estadsticas bsicas
apt-cache dump Muestra el archivo entero en formato breve
apt-cache dumpavail Imprime un archivo disponible en la salida estndar
apt-cache unmet Muestra dependencia no conseguidas
apt-cache search Busca una lista de paquetes para un patrn de expresin de
registro
apt-cache show Muestra un registro legible para el paquete
apt-cache depends Muestra informacin de dependencia en bruto para un
paquete
apt-cache rdepends Muestra informacin de la dependencia inversa para un
paquete
apt-cache pkgnames Lista los nombres de todos los paquetes en el sistema

Aunque apt tiene muchas mas herramientas, mencionamos las mas destacadas.
La utilizacin de uno u otro se deja a criterio propio, ya que algunos se sienten mas
cmodos usando apt y otros aptitude .

78
www.sugeek.co

Archivo /etc/apt/sources.list
En este archivo encontramos los sitios de donde se descargan el software, son en
realidad unas urls ya sean http o ftp, seguidas de una opcin especial.
Un Ejemplo de las lineas que podemos encontrar:
deb http://ftp.us.debian.org/debian stable main contrib non-free
deb-src http://ftp.us.debian.org/debian stable main contrib non-free

Como observamos despus de la url tiene unas opciones.


Oldstable | Stable | testing | unstable | experimental: Esta opcin indica la
versin del sistema, como la versin sin soporte, la versin actual o la estable, la
siguiente versin que esta en pruebas, la que sera lanzada pero no se esta probando a
profundidad, y la experimental que es la que incluye los mas recientes paquetes. Se
podra decir que la versin testing es similar a la version 12.04 de Ubuntu, la unstable a
la 13.04 y as sucesivamente.
Main: Software para los que hay soporte disponible por parte del equipo Debian.
Contrib: Contiene el software que desarrolladores externos al equipo de Debian han
contribuido para su integracin.
Non-free: Software que no esta bajo ninguna licencia de Software Libre (Software
Privativo) y son distribuidos en los repositorios oficiales como lo son flash-player

Comando ldd
Este comando permite ver las libreras dependientes de un ejecutable (Share Object),
mostrando la librera y la ruta dependiente, muy til cuando hacemos jaulas con chroot.
Los directorios por defecto de las libreras son:

/lib Libreras principales del sistema


/usr/lib Libreras de usuarios
/usr/local/lib Libreras de Programas

root@fsugeek:~# ldd /sbin/fdisk


linux-vdso.so.1 => (0x00007fff8d1ff000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fe6b7eb4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe6b7af4000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe6b78ee000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe6b80f9000)

Comando ldconfig
Con

este

comando

podremos

reconfigurar
79
www.sugeek.co

la

cache

de

libreras

compartidas,

normalmente las libreras compartidas se encuentran configuradas en /etc/ld.so.conf


en el cual observaremos que estn los directorios donde se encuentran los archivos
*.conf que incluyen la informacin de los distintos paths que contienen las libreras. Cada
vez que tengamos un nuevo directorio con libreras nuestras u otro programa deberemos
configurar el archivo indicando la ruta, y luego ejecutando el comando ldconfig.
Debemos de tener especial cuidado con la librera de c o libc ya que esta librera 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 estndar que se encuentran en /etc/apt/sources.list si no que es el encargado
de administrar e instalar aquellos paquetes ya empaquetados como .deb
dpkg -i Instala el paquete indicado
dpkg -r Desinstala el paquete o software que se hace mencin pero se mantiene
la configuracin.
dpkg -Ri Instalar todos los paquetes .deb de un directorio.
dpkg -l Lista todos los paquetes instalados en el sistema.
dpkg -P Elimina el paquete indicado con su respectiva configuracin.
Aunque dpkg cuenta con mas opciones estas 2 son las mas usadas, para el resto de
actividades se recomienda el uso de aptitude o apt.

Adems existen otros comandos asociados a dpkg, ac listamos algunos.

dpkg-architecture Configura y determina la arquitectura para la construccin


paquetes.
dpkg-query Muestra los paquetes de la base de datos de dpkg
dpkg-source Herramienta de manipulacin de paquetes fuente de Debian .dsc
dpkg-reconfigure Reconfigurar un paquete ya configurado como MySql
dpkg-split Divide/Une el paquete indicado en varias partes
dpkg-buildpackage Crea un paquete .deb a partir de sus fuentes
dpkg-name Renombra el paquete segn su contenido
dpkg-scanpackages Escanea y genera un ndice de los paquetes dentro de
directorio.
dpkg-checkbuilddeps Compruebas las dependencias del paquete y conflictos
compilacin.
dpkg-deb Administra los paquetes .deb
dpkg-preconfigure Permite que los paquetes realicen las preguntas
configuracin.
dpkg-vendor Consulta la informacin sobre el autor del paquete.

de

un
de
de

Instalacin desde las fuentes


La instalacin desde las fuentes de un programa es la manera mas clsica de instalacin,
80
www.sugeek.co

ya que requiere cumplir primero con las dependencias del programa (Al contrario de apt
que las cumple durante la instalacin) para luego proceder con la configuracin,
compilacin e instalacin del software.
Los pasos a continuacin son aplicables en la mayora de programas que se instalen
desde las fuentes, pero siempre es recomendable leer su manual o documento de
instalacin.
1. Confirmar que se cuentan con las dependencias del programa, las esenciales son
gcc y make
2. Descargar el programa fuente, normalmente viene en formato .tar.gz
3. Descomprimir el programa en un directorio con los suficientes permisos para
realizar la configuracin.
4. Ingresar y configurar el programa con .config o ./configure
5. Compilar el programa con el comando make
6. Instalar el programa con make install

81
www.sugeek.co

ADMINISTRACIN DE USUARIOS
En GNU/Linux los usuarios poseen identificadores nicos (UID), los cuales segn su
funcin se les da dicho identificador, el usuario root siempre tendr como identificador el
0, en cambio los procesos del sistema estn dentro del rango 1-99, y servicios de red se
podrn encontrar en un rango de 100-999 (En CentOS van de 100-499), los usuarios
creados se crean con identificadores mayores a 1000 as como los respectivos grupos
(GID).
Los nombres de los usuarios o login pueden tener de 1 a 32 caracteres.
Los archivos responsables de administrar los usuarios de GNU/Linux son:

/etc/passwd
/etc/group
/etc/shadow

Adems de estos archivos tambin posee los respectivos comandos para crear
(useradd, adduser, groupadd, addgroup ), eliminar (userdel, deluser, groupdel,
delgroup ) y modificar (usermod, groupmod ).

Usuario root
El usuario root es el principal usuario dentro de cualquier sistema GNU/Linux, es usuario
que todo lo puede y al mismo tiempo el mas peligroso, por ende debemos de evitar usar
dicho usuario si no poseemos suficientes conocimientos sobre lo que estamos haciendo o
vamos a hacer.
Algunos de los comandos que estn prohibidos ejecutar con este usuario son:

rm -rf / o rm -rf /* o rm -r / Este comando dejara intil el sistema


mv /home/user/* /dev/null Mover todos los archivos de dicho home y los
eliminara si posibilidades de recuperar
: ( ) { : | : & } ; : Es una bomba fork o forkbomb la cual genera procesos de
forma infinita hasta bloquear el sistema.

Directorio /home/
En este directorio se creara el path de cada usuario nuevo de forma predeterminada, en
esta nueva carpeta /home/usuariocreado se copiaran los archivos predeterminados
que se encuentran en /etc/skel.

Directorio /etc/skel/
En este directorio se guardaran los archivos/carpetas predeterminados que se le copiaran
en el home de cada usuario nuevo. Normalmente los archivos predeterminados que se
82
www.sugeek.co

encuentran dentro de esta carpta y que es copiado a cada usuario nuevo son:

.bash_logout
.bashrc
.profile

Archivo /etc/passwd
En este archivo encontramos informacin de las cuentas de usuario del sistema. Una
linea del contenido de dicho archivo seria:
root:x:0:0:root:/root:/bin/bash

Dicha linea corresponde a 7 columnas, cada una separada con dos puntos (:), y la
informacin que muestra cada columna se interpreta de la siguiente manera.
1. Nombre de la cuenta
2. Password Encriptado. La x indica que la contrasea esta en / etc/shadow , si es un
signo de admiracin (!) indica que el usuario esta deshabilitado y si tiene dos
signos (!!) indica que la cuenta no tiene contrasea.
3. User ID
4. Group ID
5. Comentarios o nombre completo del usuario
6. Path del Home
7. Shell que se usa (Para no permitir el uso de una shell se usa /bin/false )
Normalmente existen mas cuentas de usuario aparte de la de root y la del usuario
personal, las dems cuentas son predeterminadas del sistema o de algunos servicios.

Archivo /etc/group
Este archivo contiene la informacin de los distintos grupos de nuestro sistema y los
usuarios pertenecientes a este.
sudo:x:27:sugeek, user

Esta linea solo se divide en 4 columnas, las cuales se separan unas de otras con dos
puntos (:).
1.
2.
3.
4.

Nombre del Grupo


Campo Especial
GID o ID del grupo
Usuarios pertenecientes a este grupo separados por coma

Para mayor informacin con respecto a este archivo consultar el manual. man group

83
www.sugeek.co

Archivo /etc/shadow
En este archivo se guardan las contraseas cifradas de los usuarios y informacin de
caducidad de las mismas.
Los valores actuales para el cifrado de contraseas (Son los primeros caracteres iniciado
por $ y terminado por $).

$1$ MD5
$2a$ Blowfish
$5$ SHA-256
$6$ SHA-512

sugeek:$6$ODV71rF1$B4soSzgSJycaC7wi7LK:15764:0:99999:7:::

Como vemos la estructura es similar a los archivos passwd y group , cada campo
separado por dos puntos ( : ).
1.
2.
3.
4.
5.
6.

Nombre del Usuario


Contrasea cifrada.
Das desde el 1ro de Enero de 1970 cuando se cambio o creo la contrasea.
Das que quedan para que el contrasea pueda ser cambiada.
Das despus de los cuales la contrasea debe de ser cambiada.
Das por los cuales se le da aviso al usuario para que cambie la contrasea antes
que este expire.
7. Das despus de 1 Enero de 1970, en los cuales la cuenta ser deshabilitada luego
de que la contrasea expire.
8. Espacio Reservado.
Para mayor informacin con respecto a este archivo consultar el manual. man shadow

Archivo /etc/default/useradd
En este archivo se encuentra la configuracin de la creacin de un usuario, al escribir el
comando useradd -D tambin observaremos la configuracin predeterminada al crear
los usuarios.

Archivo .bashrc
En este archivo se establecen por default la configuracin de las shells genricas
(Variables, Alias, etc) y la shell de cada usuario, en cada home existe un .bashrc.

Comandos useradd, adduser, passwd, chage ,userdel, y deluser


El comando useradd es mas complejo que adduser , ya que el primero se indican
opciones del usuario a crear, en cambio adduser solicita informacin de forma guiada,
como direccin, telfonos, etc. Y creara la carpeta del usuario dentro de /home/. La
84
www.sugeek.co

estructura de ambos comando son: comando usuarioacrear

adduser
root@sugeek:~# adduser sugeek
Adding user `sugeek
Adding new group `sugeek (1003)
Adding new user `sugeek (1002) with group `sugeek
Creating home directory `/home/sugeek
Copying files from `/etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for sugeek
Enter the new value, or press ENTER for the default
Full Name []: Sugeek
Room Number []: 1
Work Phone []: 2
Home Phone []: 3
Other []: 4
Is the information correct? [Y/n] y

useradd
useradd sugeek -g group -G Administrativos,Tecnicos -d /home/sugeek -m -s /bin/bash
-c cuenta de sugeek

Como hemos visto el comando adduser se podra decir que es mas amigable ya que
crea todo de una sola vez, directorios, comentarios, y contrasea cosa que con useradd
no sucede y por ende toca indicarle las diferentes opciones.

g Identifica el ID del grupo o nombre


d Identifica el path por defecto de dicho usuario
m Indica la creacin del Home
s Indica la shell que utilizara ese usuario
p Contrasea del usuario, No se recomienda su uso, mejor usar despus el
comando passwd
G Otros Grupos del usuario
u Indica el UID que se desee
c Comentario sobre la cuenta del usuario
k Ruta del directorio skel si se desea usar otro al predeterminado el cual es
/etc/skel

La configuracin de este comando lo encontramos en /etc/default/useradd

passwd
Por si solo indicara que se cambie la contrasea del usuario actual, para cambiar la
contrasea de otro usuario se debe de indicar el usuario.
85
www.sugeek.co

Entre sus diferentes opciones encontramos:

l Lock, bloquea la cuenta indicada


u unlock, desbloquea la cuenta indicada
d Suprime el password de la cuenta (Solo root)
n Duracin de vida mnima de vida en das de la contrasea
x Duracin mxima de la contrasea
i Periodo de gracia antes de la desactivacin de la cuenta si ha vencido la
contrasea
w Numero de das antes del aviso de cambio de contrasea

passwd -n 5 -x 45 -w 7 sugeek

chage
Este comando es similar al adduser en cuento a su finalidad, dar una guia al usuario
sobre el cambio de su pasword y reglas.
root@sugeek:~# chage prueba
Cambiando la informacin de la edad para prueba
Introduzca el nuevo valor, o presione INTRO para el predeterminado
Duracin mnima de la contrasea [0]: 5
Duracin mxima de la contrasea [99999]: 45
ltimo cambio de contrasea (AAAA-MM-DD) [2013-11-02]:
Aviso de caducidad de la contrasea [7]: 7
Contrasea inactiva [-1]: -1
Fecha de caducidad de la cuenta (AAAA-MM-DD) [1969-12-31]
root@sugeek:~#

Para ver los detalles de la contrasea de la cuenta usamos chage -l cuenta o passwd
-S cuenta
IMPORTANTE!
Para elaborar contraseas seguras, se recomienda el uso del comando pwgen con las
opciones -S (Password Seguro dificil de recordar) -N (Numero de contraseas a generar)
-y (Incluir Smbolos) y el numero al final indica la longitud del password.
root@debian:~# pwgen -syN2 13
|]R@f>1R:X*@> =+nE,!rN}Mn1,

deluser y userdel
Son comandos similares en su estructura ( comando usuarioaborrar ) la diferencia principal es
que deluser muestra informacin a medida que se borrar el usuario, y userdel no. Para borrar
con userdel se recomiendo usarlo con la opcin -r lo cual es recursivo.

86
www.sugeek.co

Comandos groupadd, addgroup, delgroup, groupdel


groupadd y addgroup son comandos similares (comando nombredelgrupo ) aunque
groupadd permite crear mejor los grupos como su ID.
groupadd sugeek -g 1004
Con el comando anterior se le indica al sistema que se va a crear un grupo llamado sugeek con el
id 1004

groupdel no muestra nada en pantalla al borrar el grupo indicado, en cambio delgroup informa
en pantalla el proceso de la eliminacin del grupo.
root@sugeek:/# delgroup test6
Eliminando al grupo `test6' ...
Hecho.

Comando usermod y groupmod


Despus de haber creado algn usuario o grupo, en ocasiones se hace necesario
modificar dichos usuarios/grupos por ende estn estos comandos.

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.
root@sugeek:~# usermod sugeek -g 0 -c Usuario Root -d /root/sugeek/ -s /bin/sh

G Cambia los grupos del usuario


g El GID predeterminado del usuario
c Cambia el comentario del usuario
d Cambia el path del home del usuario
e Fecha cuando espirara la cuenta y quedara deshabilitada.
s La nueva shell del usuario

groupmod
Similar a usermod pero para grupos.
root@sugeek:~# groupmod sugeek -g 1104 -n prueba

groupdmod -g Cambia el GID del grupo seleccionado.


Groupmod -n Cambia el Nombre al grupo seleccionado.

87
www.sugeek.co

Comando chsh, chfn


Chsh
Con este comando, el usuario podr cambiar su consola predeterminada, por ejemplo
cambiarla de sh a bash.
Su sintaxis es sencilla, chsh -s /bin/newshell , El newshell hace referencias a las
shells listadas en /etc/shells

Chfn
Este comando me permite cambiar el comentario de la cuenta, as con este podemos definir el
nombre completo, direccin, 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 esta cuenta. Si se esta en el
usuario root y se desea cambiar hacia otro usuario, este nos solicitara contrasea, pero si
se esta en un usuario estndar y se desea cambiar hacia root u otro usuario este
solicitara la contrasea del usuario al cual se desea acceder.
Para volver al usuario anterior se usa el comando exit.
La estructura del comando es: su nombredeusuario adems posee sus propias
opciones.
Adems podemos ejecutar comandos con un determinado usuario sin necesidad de
acceder a este.

Comando gpasswd
Administra los archivos /etc/group y /etc/gshadow, adems permite dar permisos a
usuarios para administrar grupos.
La estructura del comando es: gpasswd opcin usuario grupo

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.
Se recomienda ver la pagina man del archivo con man 5 login.defs
Este archivo tpicamente trae entradas como las siguientes: (Existen mas opciones), lo
invito a observarlas.

CHFN_AUTH yes | no Si est puesto a yes, chfn y chsh solicitarn autenticacin


88
www.sugeek.co

del usuario
antes de ejecutar cualquier cambio, a menos que se ejecute como root.
CREATE_HOME yes | no Define si es que el programa useradd deber crear el
directorio hogar del usuario.
GID_MAX int / GID_MIN int. Rango de ID's para escoger para los grupos.
UID_MAX int / UID_MIN int. Rango de ID's para escoger para los usuarios.
UMASK int. La mscara de permisos. Si no se especifica, el permiso ser 077.
FAIL_DELAY int. El retardo en aparecer el prompt de login despus de algn
fallo.
FAILLOG_ENAB yes|no. Gernerar logs de fallas de acceso /var/log/faillog
LOCK_UNFAIL_ENAB yes|no. Permitir que se guarden en la bitcora los nombres
de usuarios no conocidos cuando se genere un fallo .
LASTLOG_ENAB yes|no. Permite que se guarde la hora de entrada al sistema en
los logs /var/log/lastlog

Archivo /etc/nsswitch
Este archivo nos permite buscar cierto tipo de informacin administrativa (hosts, passwd,
group, shadow, etc.), especificando que fuentes queremos comprobar (que Base de
Datos) y en que orden se harn estas comprobaciones.
Se recomienda ver la pagina manual del archivo, ya que para configuracin de servicios
de red, tener conocimientos bsicos de este archivo es esencial.

Man 5 nsswitch.con

Archivos /etc/issue /etc/issue.net /etc/motd


En estos archivos podemos configurar los mensajes que le aparecern a los usuarios
cuando ingresen al sistema. Se recomienda modificar el archivo /etc/motd ya que este
es el mensaje mostrado a cada momento cuando se ingresa al sistema, alli podemos
colocar trminos legales, etc.

89
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 tambin, pero estas caractersticas pueden ser cambiadas,
para visualizar los permisos de un archivo o carpeta basta con escribir el comando ls -l
nombrearchivo.
drwxr-xr-x

7 sugeek sugeek 12288

jul

4 09:29

Descargas

Teniendo en cuenta esta linea, nos enfocaremos en la columna 1, 3 y 4, las cuales


informan los permisos de la carpeta u archivo.

drwxr-xr-x Esta parte indica el tipo de archivo y los permisos de dicho archivo, una d
indica que es un directorio, un guin indica que es un archivo, una l indica que es un
link o acceso directo hacia otro archivo.
En cuanto a los permisos (rwxr-xr-x ) se divide en 3 partes en grupos de 3 quedando
rwx r-x r-x, el primer grupo indica los permisos del propietario, el segundo grupo indica
los permisos del grupo propietario, y el tercer grupo indica los permisos de los dems
usuarios.
Segn lo anterior podemos indicar lo siguiente.

r Indica Lectura.
x Indica ejecucin.
w Indica Escritura.
- Indica sin permiso.

Teniendo en cuenta lo anterior se podran dar permisos a un archivo/carpeta de forma


relativa o absoluta
IMPORTANTE!
Los permisos de una carpeta no son lo mismo que los permisos de un archivo.
Permisos Archivos
r

Se puede leer el contenido del archivo, cargarlo en memoria, listarlo y copiarlo

Se puede modificar el contenido del archivo, se puede escribir mas no significa que
se pueda eliminar, este permiso lo da el archivo directorio que lo contiene.

Se puede ejecutar el archivo desde la linea de comandos si se trata de un


programa.

Permisos Carpeta
r

Se puede listar el contenido del directorio. Sin este permiso ls y dems comandos
de acceso a directorio no tienen efecto, pero se puede acceder al archivo con su
90
www.sugeek.co

Permisos Archivos
ruta absoluta.
w

Se pueden modificar los elementos del directorio, y es posible crear, renombrar y


eliminar archivos en este directorio. Este es el permiso que controla los permisos
de eliminacion.

Se puede acceder al directorio con cd y se puede listar, sin este permiso es


imposible acceder al directorio y actuar en su contenido.

Permisos Absolutos
Es mas rpido asignar permisos de forma absoluta.

--- Sin permisos y su valor octal es 0


--x Ejecucin y su valor octal es 1
-w- Escritura y su valor octal es 2
-wx Escritura y Ejecucin, su valor octal es 3
r-- Lectura y su valor octal es 4
r-x Lectura y Ejecucin, Su valor octal es 5

rw- Lectura y Escritura, Su valor octal es 6


rwx Todos los permisos su valor octal es 7

Teniendo en cuenta lo anterior, y siguiendo con los permisos que tiene nuestro archivo,
ya podramos identificar los valores de cada columna ( rwx r-x r-x). La primera columna
(rwx) la cual son los permisos del propietario tendr un valor octal de 7, la segunda
columna (Permisos del Grupo Propietario) tiene un valor de 5 y lo mismo para la tercera
columna (Permisos para los dems usuarios) tiene un valor de 5, resumiendo el valor
octal de dichos permisos es 755.

Permisos Relativos:
Esta forma es la menos usada por la mayora de administradores, pero no significa que
no sea igual de eficiente, esta a diferencia de colocar valores numricos, usa valores
alfanumricos, pero la ejecucin del comando es mas demorada.

u
g
a
o

Indica el usuario
Indica el Grupo
Indica a todos
Indica otros usuarios

Seguido de esto se indica si se van a quitar o a agregar permisos con un mas (+) o
menos (-), y luego que permisos se darn.

-/+rxw Quita/Agrega todos los permisos


-/+r Quita/Agrega permisos de lectura
-/+x Quita/Agrega permisos de Ejecucin
91
www.sugeek.co

-/+w Quita/Agrega permisos de escritura


-/+rx Quita/Agrega permisos de lectura y ejecucin
-/+rw Quita/Agrega permisos de Lectura y Escritura
-/+xw Quita/Agrega permisos de ejecucin y escritura

Volviendo al archivo que tenamos el cual posea los permisos rwx r-x r-x, usando
permisos relativos seria de la siguiente manera.
u=+rwx,g=+rx,o=+rx
Como vemos el comando se alarga, lo cual es mas fcil escribir 755 (Permisos absolutos).
Ademas los permisos relativos permite mayor cantidad de opciones, cosa que los
permisos absolutos no permite.
u=+r-wx,g=-rw+x,o=-rxw
Como vemos en el anterior, estamos dando permisos de lectura (r) al usuario propietario
y quitando los de escritura (w) y ejecucin (x) , al grupo propietario le quita los permisos
de lectura y escritura (rw) pero permite la ejecucin (x), y a los dems les quita todos los
permisos. Pero si usamos permisos absolutos seria lo mismo que escribir 410.

Comando chown
Este comando cambia el usuario y grupo propietario de un archivo/carpeta. Su estructura
es:

chown opciones usuario:grupo archivo chown usuario archivo


Algunas de las opciones que permite este comando son:

-R De forma recursiva, cambia el propietario de los ficheros y subdirectorios de


una carpeta.
-c Muestra los archivos que fueron afectados

Comando chgrp
A diferencia de chown , este solo cambia el grupo propietario. Su estructura es: chgrp
opciones grupo archivo

Comando umask
Este comando nos mostrara los permisos predeterminados con los que se crea un
archivo/directorio, si se escribe solo mostrara los permisos de forma octal invertida, y si
se agrega la opcin -S mostrara los permisos predeterminados de forma relativa.
Por ejemplo, de forma predeterminada en sistemas Debian, al escribir umask tendremos
como resultado el valor 0022, para saber exactamente que permisos tendrn nuestros
92
www.sugeek.co

directorios creados, tomamos los valores 777 de permisos absolutos y le restamos el


valor de umask (Restando Permisos mas no valores), dando como resultado 755, ese
seria los permisos por defecto al crear un directorio (Para archivos se toma el valor de
666).
Para cambiar los permisos predeterminados solo escribimos umask nuevovalor, este
nuevo valor debe de ser invertido, por ejemplo si solo deseemos que los creadores de los
archivos tengan permisos, se establecera el valor del umask 077 teniendo como
resultado unos permisos 700 para carpetas y 600 para archivos. Este cambio es
temporal, si se desea de forma permanente para todos los usuarios se edita el archivo
/etc/profile pero si es solo para el usuario actual, se edita el archivo ~/.bashrc.

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.
Para asignar permisos a un archivo, debemos de tener en cuenta la siguiente estructura
del comando:

chmod permisosrelativos/absolutos archivo/directorioafectado


Segn lo anterior podemos decir que:
chmod 731 /home/sugeek/file

Lo anterior es igual que:


chmod u=+rwx g=wx o=x /home/sugeek/file

Como vemos usamos tanto permisos absolutos como relativos para asignrselos a un
archivo.

Permisos Avanzados
Sticky bit
Solo los propietarios pueden borrar el archivo. Para saber si un archivo/carpeta tiene
dicha opcin, en la columna de permisos del archivo, al final de los permisos de otros
usuarios encontramos una t esta indica que esta marcado como sticky bit, y la forma de
agregar un sticky bit a un archivo es: chmod +t archivo.
drwxr-xr-t 2 sugeek sugeek

4096 jul 23 13:57 frank

Como observamos, en la columna de permisos, al final indica una t, esto indica el sticky
bit
93
www.sugeek.co

set gid y set uid


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.
El UID es para que herede el usuario propietario.
Con chmod u+s comando permite que un archivo se ejecute con los permisos del
propietario mas no del usuario que lo esta ejecutando. La forma de identificar si un
archivo tiene ese permiso, es verificar los permisos del archivo ya que despus de los
permisos del propietario se agrega una s. rwxs r-x r-x Como vemos despus de los
permisos del propietario se encuentra la s indicando que se puede ejecutar como
propietario sin importar el usuario.

94
www.sugeek.co

GESTIN DE PROCESOS Y SERVICIOS


Los procesos son ejecutados ya sea, por un software, un script, o demonios y estos
procesos tienen relacin unos con otros para el funcionamiento adecuado de dicho
software.
Con anterioridad vimos los comandos top y ps los cuales muestran informacin sobre los
procesos que se ejecutan en la actual sesin, o todas las sesiones.
Normalmente los procesos tienen una terminologa para poder comprenderlos:

PPID Parent Process ID, o identificador del proceso padre, de este proceso se
desprenden los dems procesos que se requieran para ejecutar adecuadamente
dicho software/servicio. El proceso padre por default es el proceso init.
PID Process ID o Identificador del proceso, es un ID unico y el sistema es el
encargado de asignarle su PID, con el PID podemos matar, finalizar un proceso.
Init Es el principal proceso, ya que init es el primero que inicia con el kernel y
podra decirse que es el padre de todos los procesos.
Daemon Proceso demonio, es un proceso especial, asociado a un servicio en el
servidor como apache (httpd) samba (smbd) etc. La mayora de demonios se
identifican con una d al final del nombre.
Zombie Es un proceso que consume memoria pero no puede ser matado, pero
no significa que no se pueda terminar.
Variable $$ Muestra el PID del proceso que estoy ejecutando.
Variable $PPID Muestra el PPID del proceso que estoy ejecutando
fork Es la duplicacin del proceso padre para generar el proceso hijo.

Algunos de los comandos para matar un proceso son:

Kill Mata un proceso usando su PID. kill NumeroPID


kill -l Muestra las seales que se le pueden enviar a un proceso
kill -1 El proceso se reinicia.
Kill -15 Mata a un proceso, es lo mismo que solo
kill -9 Se usa en procesos zombies
pkill Mata un proceso usando el nombre del proceso y los relacionados a este.
pkill nombreproceso
pgrep Busca el PID de un proceso, indicando el nombre de este.
exec Ejecuta un proceso sin que se ejecute la funcin de fork, que es
bsicamente la duplicacin del proceso original convirtiendo a este ultimo en un
proceso hijo.

Para matar varios procesos Zombies al tiempo escribimos:


root@sugeek:~# kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print
$2}' `
95
www.sugeek.co

Procesos en Background
Los procesos son ejecutados en la terminal, 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 asi seguir trabajando sobre la shell, sin necesidad de
abrir otra, el comando se sigue ejecutando en un segundo plano.
Para pasar un proceso a Background basta con terminar el comando con & o oprimir
[Ctrl ] + [Z ] y para pasar un proceso a foreground se usa el comando fg y el jobsID.
Para saber desde el terminal que procesos se corren en background, se escribe en la
consola jobs.
El primer campo indica el jobsID seguido del estado del comando y el comando
ejecutado.
root@sugeek:~# jobs
[1]+ Ejecutando
root@sugeek:~#

sleep 20000 &

Procesos en Foreground
Los procesos son ejecutados en la shell directamente hasta que finalicen. El shell no
devuelve el control al usuario hasta no terminar el proceso actual.
Para pasar un comando a background solo es terminar con &. Para llamar un proceso en
background a foreground escribimos fg y el Jobs id.

Prioridad de los procesos


Para dar prioridades a los procesos existen 2 comandos especiales como lo son nice y
renice.

Comando nice:
Este le brinda prioridad a un proceso antes de ser ejecutado.
Los rangos de prioridades van desde -20 hasta 19 en formato entero, todo proceso nuevo
se ejecuta con un valor nice de 0, asi que menor sea el valor mayor la prioridad, adems
solo el usuario root puede establecer valores menores a cero.
Para ejecutar un proceso con un valor al por defecto (cero) se debe de escribir nice -n
+numeroentero programa

Comando renice
Este cambia la prioridad de un proceso que se encuentre en ejecucin, se utilizan los
mismos valores de nomenclatura de nice. Para cambiar la prioridad de un proceso
escribimos renice -n -1 -p PID
96
www.sugeek.co

Comando nohup
Como es bien sabido, sido cerramos la terminal o se cierra de forma accidental, el
comando se deja de ejecutar, y si estbamos 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 . La sitasix del
comando es:

nohup comando/script a ejecutar.

Comando update-rc.d
Este comando permite aadir, suprimir activar o desactiva los scripts, por nivel de
ejecucin. Para que un servicio o script inicie por default solo se indica update-rc.d
servicio defaults
Este comando dejara el servicio que inicie en los runlevels 2 a 5 y pararse para los
runlevels 0 1 y 6.
Pero tambin podemos indicarle en que runlevels estar, como por ejemplo, le
indicaremos que al iniciar estar en el campo 10 y se ejecutara en los niveles 3 4 y 5. En
parada estar en la posicin 5 y en los niveles 0 1 y 6.

uptate-rc.d servicio start 10 3 4 5 . stop 05 0 1 6 .


Para poder eliminar un servicio se procede a indicar con el comando update-rc.d -f
servicio remove.

Servicios
Para administrar servicios o demonios, como iniciarlo, pararlo, o recargarlo podemos
utilizar la estructura:

service nombredelservicio restart | stop | start | reload


Siendo restart y dems posibles estados que se le pueden aplicar al servicio, si no se
reconoce dicho servicio, toca indicar la ruta completa del demonio, los cuales
normalmente estn en:

/etc/init.d/nombredeldemonio
Y luego indicando la actividad a realizar restart | stop | sart | reload.

97
www.sugeek.co

REDIRECCIONES, TUBERAS Y FILTROS


Las redirecciones son herramientas que me permiten modificar los canales estndar
(stdin, stdout y stderr) ya que como sabemos el stdin por default es el teclado, podemos
cambiar esta entrada por un archivo, o el resultado de un comando etc, lo mismo con el
stdout y stderr. A lo anterior se le denomina canales, los cuales van desde 0 a 9, siendo
los 0 al 2 los canales por defecto (stdout, stdin, stdout). El resto de canales (3 al 9) lo
podemos usar a nuestro gusto, para crear el 3er canal usamos exec 3>dump.log a lo
cual le estoy indicando que cuando realice direcciones hacia el canal 3, en realidad
escribe sobre el archivo indicado. Para usar dicho canal basta con escribir >&3 despus
de la accin a redirigir. Para eliminar el canal creado escribimos exec 3>&-

Redireccin de salida con > y >>


Enviar la informacin que despliega al ejecutar un comando en pantalla en ocasiones es
molesto, por ende esta salida se enva a un archivo para su posterior revisin. Un
ejemplo:
apt-get update > Informe_de_Actualizacin

Como observamos hemos ejecutado el comando apt-get update


seguido de la
redireccin de salida > y el nombre del archivo, de forma predeterminada este archivo
quedara guardado en el path donde nos encontremos en ese momento, si el archivo no
existe se crea.
Si volvemos a ejecutar otro comando redirigiendo la salida al mismo archivo, y este
archivo contiene informacin, esta informacin sera borrada, para ello usamos el
redireccionador >> el cual escribir el resultado despus de la ultima linea del archivo.
Pero si deseo que la redireccin no me sobre escriba ni borre el contenido del archivo,
debemos de activar una opcin en el shell que se llama noclobber el cual evitara
cualquier sobre escritura del archivo. Para activar dicha opcin solo escribimos en la
consola set -o noclobber y si deseamos desactivarlo escribimos set +o noclobber .

Redireccin de errores con 2>


As como direccionamos la salida estndar (stdout) y la salida de errores (stderr) con >,
tambin podemos direccionar solamente los errores y que el resto se muestre en
pantalla, esto es ideal cuando necesitamos ver que errores se presentaron al ejecutarse
un comando.
apt-get update 2> Errores_de_Actualizacin

Existe otra opcin de direccionar el stdout y stderr, ya que podra presentarse que el
stderr lo envi a /dev/null, por ende en ocasiones se usa el 2>&1 el cual indicara que se
direccionara tanto el stdout como el stderr al destino indicado.
98
www.sugeek.co

apt-get update > stdoutstderr_de_actualizacin 2>&1

Con el comando anterior estamos redirigiendo todas las salidas a un archivo. Lo anterior
seria similar a:
apt-get update > Informe_de_actualizacin 2>

Error_de_Actualizacin

Redireccin de entrada con <


Sabemos que la entrada estndar de la shell es el teclado, pero eso lo podemos cambiar si ya
tenemos los comandos en archivos.

Redireccin con here-documment <<


<< Indica la palabra la cual sera escrita para terminar de ingresar informacin al archivo.
root@sugeek:~# cat << Final > prueba
- esto es una prueba
- Final
root@sugeek:~# cat prueba
esto es una prueba

Tuberas y Filtros
Las tuberas es una herramienta para la ejecucin de un comando con el resultado del
comando anterior. Normalmente este se utiliza para filtrar el contenido de una salida de
comandos y ubicar con exactitud un argumento descrito.
La tubera se identifica con el carcter ( | ) el cual indicara que la salida del comando
anterior sera la entrada del siguiente comando.

Comando basename y dirname


El comando basename me permite obtener el nombre de un archivo de una ruta
especificada, en cambio el comando dirname permite obtener la informacin sobre el
directorio donde se encuentra un archivo.

Comando tee
Este permite copiar la salida de un comando a un archivo y la salida estndar se puede
usar con una tubera.
root@sugeek.co:~#

ls -la | tee file | grep apache

El anterior comando me lista el contenido de un directorio ( ls -la ) al tiempo que dicha


salida es direccionada al comando tee el cual crea un archivo al tiempo que muestra el
contenido de la salida de ls -la pero esta salida es direccionada al comando grep para
que me muestre solo la linea que contenga apache.
99
www.sugeek.co

Comando grep
Este busca una palabra o frase indicada dentro de un archivo para mostrarla en pantalla
lo encontrado, normalmente se usa con una tubera pero se puede usar por si solo.
root@sugeek.co:~#

ls -la |

grep apache

En el anterior comando estamos buscando dentro de la salida del comando ls la palabra


apache.
root@sugeek.co:~#

grep -ri

servidor apache /home/sugeek/*

El anterior comando estamos usando el comando grep solo, indicando que haga una
bsqueda recursiva ( r ) en todos los directorios y en el contenido de todos los archivos,
adems que no haga distincin entre maysculas y minsculas ( i ).

-v Muestra el resultado de forma inversa


-c Solo devuelve el numero de lineas encontradas, sin mostrarlas, til para saber
cuantas coincidencias tiene el termino de bsqueda.
-i No diferencia las maysculas de las minsculas
-n Indica el numero de la linea donde se encuentra ubicado el termino buscado
dentro de un archivo.
-l Si son varios archivos en donde se busca, con esta opcin indica en que
archivo se encontraron los trminos.

root@sugeek.co:~#

grep -i

^f sugeek

El anterior comando buscara las lineas que inicien con una f si no se define ^ buscara
las lineas que dentro de su frase tenga la letra f.

Comando egrep
Es similar a utilizar grep -E, para realizar bsquedas o filtros mas avanzados.
root@sugeek.co:~# egrep "^[bB]uenas(tardes|noches)$" file
El anterior comando buscara las lineas que inicien con b o B, continu con uenas y
termine con tardes o noches en el archivo file. Ahi no queda todo se pueden usar
muchas mas opciones.
Conjunto
|

Funcin
Lgico, la expresin colocada antes o despus debe de desaparecer

(...)

Agrupacin de Caracteres

[...]

Un carcter tiene esta posicin entre los indicados

Punto, cualquier carcter

Repeticin, el carcter colocado antes debe de aparecer al menos una vez


100
www.sugeek.co

Conjunto

Funcin

Repeticin, el carcter colocado antes debe de aparecer de 0 a n veces.

El carcter colocado antes debe de aparecer una sola vez como mximo

{n}

El carcter colocado antes debe de aparecer exactamente n veces

{n,}

Aparece n veces o mas

{n,n}

Aparece entre n y m veces

Inicio de la Cadena

Final de la cadena

root@sugeek:~# ifconfig wlan0 | egrep '([0-9]{1,3}\.){3}[0-9]{1,3}'


Direc. inet:192.168.2.111 Difus.:192.168.2.255 Msc:255.255.255.0

El anterior comando se descompone:

ifconfig wlan0 Interfaz de red que voy a obtener el direccionamiento


| El resultado de esto se lo enva al comando egrep
'([0-9]{1,3}\.){3}[0-9]{1,3}' Obtiene las direcciones
[0-9] Indica que es un carcter de 0 a 9
{1,3} Indica que se repite de 1 a 3 veces x o xx o xxx
\. Seguido de un punto
{3} En un conjuto de 3 veces xxx.xxx.xxx
[0-9] Indica un carcter de 0 a 9
{1,3} Repetido entre 1 y 3 veces

Comando cut
Este comando me permitir delimitar el contenido de la salida de un comando, o de un
archivo para mostrar el contenido de ciertos espacios, muy utilizado en archivos de bases
de datos, o que tienen como contenido una base de datos.
root@sugeek.co:~#

cut -d ; -f 1 archivobd

El anterior comando mostrara el contenido del archivobd y suponemos que el


delimitador de dicha db entre los campos es un ( ; ) por ende lo usamos con la opcin -d.
con la opcin -f indicamos que solo nos muestre el contenido de la 1ra columna, si
deseamos mostrar mas columnas o columnas distintas separamos dichas columnas con
una coma (-f 1,4,6 ).

Comando column
El comando column , no se diferencia mucho del comando cut , column me muestra en
pantalla el contenido de una tabla con su respectivo separador.
root@sugeek:~#culumn -s: -t /etc/passwd

101
www.sugeek.co

La opcin -s indica el delimitador, y la -t indica las columnas que se vern.

Comando tr
tr es un filtro que nos permite cambiar una determinada informacin de un archivo por
otra.
Cambia cada uno de los caracteres especificados en el conjunto inicial por los caracteres
especificados en el conjunto final.
El fichero de origen o fichero destino lo especificamos con los caracteres de redireccin:
< >.
root@sugeek:~# tr ':' ' ;' < /etc/passwd > usuarios
El comando anterior me esta indicando que estamos buscando el carcter ( : ) y lo vamos
a remplazar con ( ; ), dentro del archivo /etc/passwd y lo redirija hacia un archivo llamado
usuarios.
Algunos ejemplos:

cat miarchivo | tr a-z A-Z Remplazar minsculas por maysculas


echo "This
is
for
testing" | tr -s [:space:] Quitar los caracteres
repetidos simultneos (espacios) con la opcin -s
echo "the geek stuff" | tr -d 't' Eliminar un carcter con la opcin -t
echo "my username is 432234" | tr -cd [:digit:] Borrar el todo el
contenido (-d ) manteniendo la opcin indicada ( -c ), la opcin indicada son los
nmeros
tr -s '\n' ' ' < file.txt Unir todas las lineas de un archivo, en una sola linea

Comando sort
Ordena de alfabticamente o numricamente el contenido de un archivo o la salida de un
comando.
root@sugeek.co:~# sort /etc/passwd >> usuarios

El anterior comando me listara alfabticamente el contenido del archivo /etc/passwd y la


salida la redirigir sin sobrescribir el contenido de usuarios. Si lo deseo organizar de
forma inversa dicho contenido solo ingresamos la opcin -r.
-f Este parmetro nos sirve para indicar que las maysculas y las minsculas se
van a tratar de forma diferente y que por tanto se va a seguir un ordenamiento
alfabtico.
-n Este parmetro nos sirve para ordenar los campos numricos por su valor
numrico.
-r Nos permite realizar una ordenacin inversa, es decir, de mayor a menor.

102
www.sugeek.co

-k numero De este modo especificaremos por qu columna o campo vamos a


realizar la ordenacin en las versiones ms recientes de Linux.
-t Indica el delimitador
-u Nos permite suprimir todas las lneas repetidas despus de realizar la
ordenacin.
-o Indica el archivo de salida del comando
root@sugeek.co:~# sort -t: -k4 /etc/passwd >> usuarios

El Anterior comando me organiza el contenido del archivo /etc/passwd por la 3ra columna
(-k4 ) usando el delimitador : ( -t: ) y a su ves redirija la salida a archivo usuarios si borrar
su contenido.

Comando uniq
Este comando permite remover o mostrar las lineas repetidas que se encuentran dentro
de un archivo o salida de un comando.
Es estrictamente recomendable usar uniq a la salida del comando sort.
root@sugeek.co:~# sort file | uniq > file2

Comando paste
El comando paste agrupa n archivos en uno. Para ello, concatena las lineas de cada uno
de los archivos en una sola linea, linea1 del file1 con la linea 1 del file2.
root@sugeek~# paste -d: file1 file2

Comando diff
Indica las modificaciones que hay existen entre 2 archivos, para que su contenido sea
idntico
diff -b file1 file
Este comando devuelve 3 tipos de resultados:

APPDEND: 5a6,8 Lo anterior indica que la linea 5 del file1 hay que insertar las
lineas 6 a la 8 de file para que sean idnticos.
DELETE: 7,9d6 Indica que se debe de suprimir las lineas 7 a la 9 del file1 para
que sea idendico a file
CHANGE: 8,12c9,13 Indica que se deben de intercambiar las lineas de 8 a la 12
del file1 contra las lineas 9 a la 13 de file para que estos sean idnticos.

Adems la salida del comando devuelve un < y otro >, el < indica el contenido de file1 ,
y > indica el contenido de file, normalmente este comando se utiliza para corroborar los
103
www.sugeek.co

datos de un archivo (file1 ) contra el Original (file ).

Comando sed
Sera bueno poder automatizar el proceso de editar archivos, de forma que podamos
"procesar por lotes" la edicin de archivos, e incluso crear macros con la habilidad de
realizar cambios sofisticados a archivos existentes. Afortunadamente para nosotros y
para este tipo de situaciones, hay un mtodo mucho mejor -- y este mtodo se denomina
sed.
sed es un ligero editor de flujo que est incluido en casi todos los sabores UNIX, Linux
incluido. sed tiene muchas buenas caractersticas. Dado que sed es un editor de flujo,
puede editar los datos que recibe de stdin, como aquellos redireccionados. 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 fcil usar sed como parte de un largo y complejo
redireccionamiento en un archivo por lotes de nuestro intrprete de comandos.
Intentemos hacerlo con nuestro editor favorito.
Sed, escribe sus resultados en la salida estndar (stdout); por lo que no modifica ninguno
de los archivos de entrada.
Podemos usar expresiones regulares para expresar patrones que podemos encontrar en
el texto. Si hemos usado alguna vez el carcter '*' en un comando del intrprete de
comandos, hemos usado algo muy similar, aunque no idntico, a las expresiones
regulares. Aqu tenemos los caracteres especiales que pueden usarse en las expresiones
regulares:

^ Apunta al comienzo de la lnea


$ Apunta al final de la lnea
. Apunta a un nico carcter
* Apunta a cero o ms ocurrencias del carcter previo
[ ] Apunta a todos los caracteres entre los corchetes

Veamos algunos ejemplos con expresiones regulares para facilitar las cosas. Todos estos
ejemplos sern aceptados por sed como direcciones vlidas que pueden aparecer a la
izquierda de cualquier comando:

/./ Apuntar a cualquier lnea que contenga al menos un carcter


/../ Apuntar a cualquier lnea que contenga al menos dos caracteres
/^#/ Apuntar a cualquier lnea que comience con un '#'
/^$/ Apuntar a cualquier lnea en blanco
/}$/ Apuntar a toda lnea que termine con un '}' (sin espacios)
/} *$/ Apuntar a toda lnea que termine con un '}' con cero o ms espacios
/[abc]/ Apuntar a toda lnea que contenga una 'a', 'b', o 'c' minscula
/^[abc]/ Apuntar a cualquier lnea que empiece con 'a', 'b', o 'c'

104
www.sugeek.co

Coincidencia con ms caracteres


La sintaxis de expresiones regulares '[ ]' tiene ms opciones adicionales. Para especificar
un rango de caracteres se puede usar '-', siempre y cuando no est ni en la primera ni en
la ltima posicin, como se muestra a continuacin:

'[a-x]*'
Apuntar a cero o ms caracteres, siempre que cada uno de ellos sea una 'a',
'b','c'...'v','w','x'. Adems, la clase de caracteres '[:space:]' est disponible para coincidir
con espacios en blanco. He aqu una lista bastante completa de clases de caracteres:

[:alnum:] Alfanumrico [a-z A-Z 0-9]


[:alpha:] Alfabtico [a-z A-Z]
[:blank:] Espacios o tabuladores
[:cntrl:] Cualquier carcter de control
[:digit:] Dgitos numricos [0-9]
[:graph:] Cualquier carcter visible (no espacios en blanco)
[:lower:] Minsculas [a-z]
[:print:] Caracteres que no sean de control
[:punct:] Caracteres de puntuacin
[:space:] Espacio en blanco
[:upper:] Maysculas [A-Z]
[:xdigit:] Dgitos hexadecimales [0-9 a-f A-F]

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, etc).

Ejemplos

Insertar texto en la ultima linea


sed -i '$a Aqui el texto que ira en la ultima linea' archivo

Insertar texto en una linea especifica (5ta Linea)


sed -i '5i Aqui texto que ira en la 5ta linea' archivo

Borrar Lineas vacas de un archivo.


root@sugeek.co:~# sed '/^$/d' fichero

Cambiar una cadena de texto por otra en la linea 1 a la 10.


root@sugeek.co:~# sed '1,10s/cadena1/cadena2/g' fichero

Mostrar solo las lineas que coincidan con la expresin indicada


root@sugeek.co:~# sed -n -e '/root/p' /etc/passwd | less

105
www.sugeek.co

Si nicamente se quiere imprimir la funcin main() en un archivo de cdigo fuente


en C, se podra teclear:
root@sugeek.co:~# sed -n -e '/main[[:space:]]*(/,/^}/p' sourcefile.c | more

Este comando tiene dos expresiones regulares, '/main[[:space:]]*(/' y '/^}/', y un


comando,
p. La primera expresin regular apuntar a la cadena "main" seguida de
cualquier nmero de espacios o tabuladores, seguida adems por un parntesis abierto.
Lo cual debera
coincidir con el comienzo de nuestra declaracin main() en ANSI C.
En este caso de expresin regular, encontramos la clase de caracteres '[[:space:]]'. La
cual es nicamente una palabra clave especial para sed que le indica a sed que apunte
a
cualquier espacio o TAB. De haberlo querido, en lugar de teclear '[[:space:]]',
podramos haber tecleado '[', despus un espacio literalmente, a continuacin
Control-V, despus un
TAB literal y un ']' -- Control-V indica a bash que queremos
introducir un TAB "real" en lugar
de una expansin del comando. Es mucho ms
claro, especialmente en archivos de comandos usar la clase de comandos '[[:space:]]'.
Bien, ahora la segunda expreg. '/^}/' apuntar a algn carcter '}' que aparezca al
comienzo de una nueva lnea. Si nuestro cdigo se ha formateado correctamente,
toparemos con ello con el final de nuestra funcin main(). Si no lo est, no lo har
cuestin de trabajar con la coincidencia de patrones.
El comando p hace lo mismo que siempre, le dice a sed que imprima explcitamente la
lnea, dado que estamos en el modo silencioso '-n'. Si se intenta ejecutar el comando en
una lnea de cdigo fuente en C, tratar de mostrar el bloque completo main() { },
incluyendo el "main ()" inicial y el '}' final.
Hasta ahora, nicamente hemos realizado una simple sustitucin de cadenas. Aunque
esto puede ser muy til, podemos tambin buscar expresiones regulares. Por ejemplo, el
siguiente comando sed encontrar una frase que comience con '<' y termine con '>', y
que contenga cualquier nmero de caracteres entremedias. Esta frase se borrar (ser
reemplazada por una cadena sin contenido):
root@sugeek.co:~# sed -e 's/<[^>]*>//g' miarchivo.html

En el ejemplo anterior, el '[^>]' especifica un "carcter que no sea '>'" y el '*' despus
del mismo completa la expresin para significar "cero o ms caracteres que no sean '>'".
Recomiendo probar este comando con algunos archivos HTML de ejemplo, encauzarlos
con more y comprobar los resultados.

Podemos referirnos a partes o a cadenas enteras con las que coincida la expresin
regular y usar estas partes para construir la cadena de reemplazo. Como ejemplo,
digamos que estamos respondiendo a un mensaje. El siguiente ejemplo pondr el
prefijo "Rafa dijo: " a cada frase:
root@sugeek.co:~# sed -e 's/.*/Rafa dijo: &/' msjorig.txt

106
www.sugeek.co

En este ejemplo, usamos el carcter '&' en la cadena de reemplazo, que le indica a


sed que inserte la expresin regular completa con la que coincida. Por lo que todo
lo que coincidi con '.*' (el mayor grupo de cero o ms caracteres en la lnea, o la
lnea completa) puede ser introducido en la cadena de reemplazo, incluso en
mltiples ocasiones. Esto est muy bien, pero sed es mucho ms poderoso an.

107
www.sugeek.co

LA SHELL EN GNU/LINUX
Como mencionamos a un principio, GNU/Linux cuenta con muchas CLI por las cuales se
puede administrar nuestro sistema.
El shell bash es uno de los numerosos shells disponibles para Linux. Tambin recibe el
nombre de Bourne-again shell, en honor a Stephen Bourne, creador del shell inicial
(/bin/sh). Bash es bsicamente compatible con sh pero adems proporciona varias
mejoras tanto en las capacidades de funciones como en las de programacin. Bash
incorpora caractersticas del shell Korn (ksh) y del shell C (csh) y est diseado en
conformidad con el estndar POSIX.
Antes de ahondar en bash, recuerde que un shell es un programa que acepta y ejecuta
comandos. Tambin soporta construcciones de programacin que permiten la elaboracin
de comandos complejos a partir de partes ms pequeas. Estos comandos complejos, o
scripts, pueden guardarse como archivos para convertirse en comandos en s mismos. De
hecho, muchos de los comandos dentro de un tpico sistema Linux son scripts.

Regionalizacin e Internacionalizacin
A diferencia de otros sistemas, las distribuciones GNU/Linux vienen adaptadas para
funcionar con mltiples idiomas as como su respectivo software, as que para cumplir un
estndar los desarrolladores, si desean que su software este disponible no solo en el
idioma natal si no en un idioma global (Ingles) se recomienda utilizar la
internacionalizacin y regionalizacin del software.

Regionalizacin(l10n)
Consiste en facilitar una traduccin de un producto que corresponde a la cultura local
(Idioma, Moneda, representacin simblica, etc.)

Internacionalizacin (i18n)
Un solo programa requiere funciones de una API de internacionalizacin. Una funcin
encargada de recuperar una cadena de texto en cualquier idioma, dentro de una base
verificara que idioma se utiliza y sacara la cadena correspondiente a dicha palabra.
En Debian y derivados se utiliza la herramienta dpkg-reconfigure locales para
configurar el idioma de la distribucin.
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 Espaol - Colombia, la variable LANG
tendra como valor es_CO.UTF-8.
Con el comando locale -a permite recuperar la informacin sobre los elementos de
108
www.sugeek.co

regionalizacin soportados por el sistema el cual obtiene


/usr/share/locale, al escribirlo obtendremos la siguiente salida:

la

informacin

de

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=

Veamos el significado de las variables LC:

LANG Variable LANG


LANGUAGE Idioma Predeterminado
LC_CTYPE Clase de caracteres y conversin
LC_NUMERIC Formato numrico por defecto (No se incluye la moneda)
LC_TIME Formato por defecto de la fecha y hora
LC_COLLATE Reglas de comparacin y de ordenacin (Caracteres Acentuados)
LC_MONETARY Formato monetario
LC_MESSAGES Formato de los mensajes informticos
LC_PAPER Formato por defecto del papel para impresin o visualizacin
LC_NAME Formato del nombre de una persona
LC_ADDRESS Formato de Direccin
LC_TELEPHONE Formato de Telfono
LC_MEASUREMENT Formato de Medidas
LC_IDENTIFICATION Formato de identificacion
LC_ALL= Reglas para todas las otras variables de LC

Usos Horarios
GNU/Linux gestiona los husos horarios, por defecto sin configuracin de huso, se elige la
hora universal UTC (Universal Time Coordinate) invariable en el mundo.
En Debian se define el uso horario en /etc/timezone y se recomienda modificarlo con el
comando tzselect.

109
www.sugeek.co

Codificacin de Caracteres
Cuando se habla de codificacin hace referencia al idioma en el cual esta escrito el
archivo origina, puede ser diferente al de nosotros (o al de nuestra regin), se puede
hablar el mismo idioma pero los caracteres no son los mismo, por ejemplo se tendra que
descodificar el es_ES si nuestro idioma es es_CO ya que en Espaa se maneja el Euro y
en Colombia el Peso, seria aun mas engorroso cuando el idioma de origen es un idioma
simblico como es el Mandarn.
Estas variaciones de idioma estn reguladas por las normas ISO, siguiendo el ejemplo de
Espaa la norma ISO es la 8859-1 la cual corresponde a los caracteres de Europa del
Oeste, y la ISO 8859-15 es el utilizado despus del paso al Euro.
GNU/Linux al basarse en los estndares internacionales ayuda a otros sistemas a resolver
problemas de codificacin, como es el caso de Windows, el cual no usa dicho estndar si
no que crea sus propias tablas. Para remediar este problema se utiliza el estndar
unicode el cual es compatible con el estndar ISO 10646.
GNU/Linux por defecto (Como la gran mayora de herramientas basadas en estndares)
utilizan el formato UTF-8.
Con el comando iconv es posible convertir una tabla de x tipo de codificacin a y tipo de
codificacin, ideal cuando estamos tratando con archivos o bases de datos que no estn
codificadas en nuestro formato o regin. Con la opcin -l se muestran todas las tablas
soportadas.
Para convertir un archivo, se utiliza la siguiente sintaxis:
inconv -f FormatoOrigen -t FormatoDestino Archivo

Operadores de Control Shell


Los operadores son encargados establecer los parmetros durante la ejecucin de un
comando, por si uno se ejecuta, se ejecutara otro comando, o dos comandos al tiempo
etc.

Operador &&
Es el operador si y solo si el cual permitir la ejecucin de un comando siempre y
cuando el primero se cumpla.
root@sugeek.co:~# apt-get update && apt-get upgrade && apt-get install samba

Operador ||
Dicho operador significa or, es valido siempre y cuando el comando anterior no se
ejecuta.

110
www.sugeek.co

root@sugeek.co:~#

more /var/log/apt/history.log ||

less /var/log/apt/history.log

Operador &
Permite enviar un proceso o ejecucin a background para poder seguir trabajando sobre
la shell, para llamar nuevamente dicho proceso al foreground se usa el comando fg si
solo tenemos ese comando en background o verificando el ID del Job con jobs y
colocando dicho ID despus de fg.

Operador ;
Este indica que un comando se ejecutara cuando el comando anterior termine sin
importar si se ejecuto bien o no.

Operador \
Si se coloca al final de la linea de un comando, estamos indicando que el comando o linea
de comandos que estamos escribiendo continuara en la siguiente linea.
root@sugeek.co:~# more /var/log/apt/history.log ||
/var/log/apt/history.log \
> echo Aca continuamos con el comando

less

Adems de indicar el final de una linea, tambin indica la inclusin de un carcter


especial, como una nueva linea, un tabulador, etc.

\a Alerta
\b backspace
\n Nueva Linea
\r Retorno de Carro
\t Tabulador Horizontal
\v Tabulador Vertical
\\ BackSlash
\' Comilla Simple
\" Comilla Doble
\ Espacio

Operador #
Este indica un comentario al final de una linea de comandos.
root@sugeek.co:~# more /var/log/apt/history.log ||
#Esto es un Coment.

less /var/log/apt/history.log

Agrupacin de Comandos
Se pueden agrupar comandos para luego hacer una sola redireccin o una sola accin
con ellos.
111
www.sugeek.co

root@sugeek:~# (uname -a ; pwd ; ls -l) > resultado

Lo anterior es igual a
root@sugeek:~# uname -a > resultado ; pwd >> resultado ; ls -l >> resultado

Argumentos del Shell


Los argumentos sirven para simplificar, y dar funcionalidades espciales a ciertos scripts, o
lineas de comandos.

$# Nmero de argumentos
$* Todos los argumentos del shell
$- Opciones suministradas al shell
$? Valor de retorno del ltimo comando ejecutado
$$ Identificacin del PID (nmero de proceso)
$0 Nombre del script
$1 Primer argumento
$n Argumento "n"

Comando echo
El comando echo Imprime en pantalla los argumentos o frases escritos despus de este.
root@sugeek.co:~#
Hola

echo Hola

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.
root@sugeek.co:~# echo Voy a imprimir mi shell: $SHELL
Voy a imprimir mi shell: /bin/bash

Comillas Simples ' '


A diferencia de las comillas dobles, esta toma el valor ingresado dentro de estas tal cual
sin modificaciones.
root@sugeek.co:~# echo 'Voy a imprimir mi shell: $SHELL'
Voy a imprimir mi shell: $SHELL

Comillas invertidas ` `
Estas comillas se utilizan en especial cuando se asocia un comando a una variable para
que este pueda ser interpretado en un fututo.
root@sugeek.co:~# myvar=`echo Hola Mundo`
root@sugeek.co:~# echo $myvar
Hola Mundo

112
www.sugeek.co

Variables Shell
Las variables en la shell de GNU/Linux van precedidas de un $. Recordemos que la
variable es un valor que que se le asigna a un nombre simblico para despus ser
llamada durante un proceso de ejecucin de determinado programa o script, este valor
puede o no puede cambiar.

Declaracin de Variables
Para declarar una variable en la shell es muy sencillo, solo se estable el nombre de la
variable, y luego su valor.
root@sugeek.co:~# MyVar=Esta es Mi Variable
root@sugeek.co:~# echo $MyVar
Esta es Mi Variable

Viendo lo anterior ya podemos declarar variables temporales en nuestra shell, pero de


forma predeterminada tenemos unas variables ya predefinidas en nuestra consola
(Variables de Entorno) como lo son:

$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/sbin:/usr/bin:/sbin:/
bin
$PWD=/home/sugeek
$SHELL=/bin/bash
$UID=1000
$USER=sugeek

Para suprimir una variable es suficiente indicando con el comando unset y el nombre de
la variable. Si se desea es proteger una variable contra la supresin u modificacin se
define con el comando readonly , la nica manera de quitar esa variable de solo lectura
113
www.sugeek.co

es saliendo de la shell. Cabe recordar que las variables del sistema son en maysculas.

Variables Tipadas
Las variables pueden ser de tipo numrico, entero (integer), con el comando typeset -i .
La ventaja es que permite efectuar clculos y comparaciones sin pasar por expr . el
comando let permite clculos sobre variables
Operador

Funcin

+-*/

Operaciones Sencillas

Modulo

< > <= >=

Comparaciones, 1 si es verdadero o 0 si es falso

!= ==

Diferente o Igual

&& ||

Comparaciones Relacionadas con un operador lgico

&|^

Lgico binario AND OR XOR

root@sugeek:~# typeset -i operacion


root@sugeek:~# operacion=5*5
root@sugeek:~# echo $operacion
25
root@sugeek:~# operacion="Prueba de Texto"
-bash: Prueba de Texto: error sintctico en la expresin (el elemento de error es
"de Texto")
root@sugeek:~# operacion=operacion*2
root@sugeek:~# echo $operacion
50
root@sugeek:~# typeset -i operacion2
root@sugeek:~# operacion2=2
root@sugeek:~# let operacion=operacion2+8 operacion=operacion*operacion2
root@sugeek:~# echo $operacion
20

Programacin en Shell
Ya hemos visto algunas de las variables, comandos y opciones que hacen parte de la
shell de GNU/Linux, pero es hora de aprender como agrupamos dichas ordenes en un
archivo para hacer las cosas mas fciles.
En GNU/Linux podemos programar scripts simples o complejos segn sea nuestra
necesidad, utilizando en especial la shell bash.
Nota: Un script puede ser escrito el cualquier shell, pero tambin utilizando programas
como python.
Un shell script es bsicamente un programa que llama a otros programas, con la
posibilidad de hacer algn tipo de procesamiento propio (como control de flujo,
operaciones matemticas simples, etc).
114
www.sugeek.co

Para crear un script podemos usar el editor de texto preferido, por ejemplo vi, nano,
emacs o los GUI como gedit, scratch, etc.
Todo script debe de iniciar con la linea #!/bin/bash o el shell por preferencia pudiendo ser
sh, ksh, csh, etc. Esto con el fin de indicarle a la consola que shell va a ser utilizado en la
ejecucin del script, ya que no todas las shells tiene las mismas funciones y variables.

Nuestro primer script


No estaramos programando si nuestro primer script no fuera Hola Mundo as que ac
tenemos el contenido de este primer script.
Recordemos utilizar nuestro editor de texto preferido.
#!/bin/bash
echo Hola Mundo # Escribe en el stdout la palabra Hola Mundo

Despus que ya tenemos el contenido de nuestro primer script, lo siguiente es darle los
permisos de ejecucin.
root@sugeek:~# chmod u+x miscript.sh

Nota: No necesariamente el script tiene que terminar con .sh , puede terminar sin
extensin.
Al ejecutarlo tenemos, notemos ./ el cual da la instruccin de ejecutar el script.
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, segn las condiciones de las variables a interpretar.

Control If:
El "if" es un proposicin de control que verifica si es verdadera o falsa una condicin.
Sintaxis:

if comando-condicin
then
Comandos si la condicin es verdadera
else
Comandos si la condicin es falsa
fi

115
www.sugeek.co

Es importante que la ubicacin de las lineas se mantenga, ya que las proposiciones


if/then/else/fi se controlan lnea por lnea. La parte else es opcional. En caso de querer
hacer todo el control en una sola lnea, las proposiciones debern estar separadas por un
punto y coma (;).
Los comandos que estn debajo del then se ejecutarn si la condicin dio verdadera.
Esto quiere decir que el valor de retorno de la condicin fue 0 (cero). En caso contrario se
ejecutarn los comandos que le siguen al else, si es que se utiliz esta proposicin.
En la condicin se puede poner un comando, donde la ejecucin del mismo (su valor de
retorno) definir qu comandos (de qu proposicin) se ejecutarn.
Si se verifica una condicin, se debern utilizar los corchetes para mayor comprensin.
#!/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"
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 testear mas de una condicin, para esto, podemos
utilizar la siguiente estructura:

if condicin1
then
Comando1
Comando2
elif condicin2
then
Comando1
Comando2
else
Comando-por-defecto #Ninguna de las condiciones anteriores es verdadera
fi
Esta es una manera de abreviar varias estructuras if - then - else - if en una sola,
pudiendo utilizarse ms de dos condiciones.

116
www.sugeek.co

La estructura de control if, es muy utilizada con test, que no es ms que una operacin
de comparacin, en las condiciones que se requieran.

Control case:
El "case" es una proposicin que puede analizar y validar varios casos (opciones) del
valor de una variable.
Sintaxis

case variable in
patrn | patrn)
Comando;
Comando;
Comando;;
patrn | patrn)
Comando;
Comando;
Comando;;
*)
Comandos si ningn otro valor fue igualado;;
esac
El case es raramente usado, pero es muy eficiente en algunos casos.
#!/bin/bash
case $mes in
ene*|Ene*)
echo "Mes de Enero";;
feb*|Feb*)
echo "Mes de Febrero";;
mar*|Mar*)
echo "Mes de Marzo";;
*)
echo "Algn otro mes!";;
esac

Ciclos:
Los ciclos contienen secciones del programa que se repetirn una determinada cantidad
de veces o hasta que alguna condicin cambie.

Ciclo for
El for debe ser el ciclo ms utilizado, es muy prctico cuando se trabaja con shell scripts.
A diferencia de los lenguajes de programacin ms comunes, un ciclo for dentro de un
shell script realiza una accin dada sobre cada uno de los elementos de una lista, y no
117
www.sugeek.co

sobre una variable que se va incrementando en cada ciclo.


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:

for i in lista de palabras


do
cuerpo del ciclo, $i tiene el valor de elementos sucesivos de la lista
done
#!/bin/bash
for i in `ls -1 /tmp`
do
echo $i
rm -i $i
done

En este ciclo, el comando ls -1 /tmp , generar una lista de todos los archivos que
existen en el directorio /tmp . Dentro del cuerpo del ciclo imprimimos el contenido de la
variable y luego preguntamos si se desea borrar ese archivo (opcin -i del comando rm).

Ciclo while
Este ciclo utiliza la condicin de terminacin de un comando (valor de retorno) para
controlar la ejecucin de los comando dentro del ciclo. Termina la ejecucin del ciclo,
cuando el comando devuelve falso (algo diferente a 0).
Sintaxis:

while comando
do
cuerpo del ciclo ejecutado a condicin de
que el comando devuelva verdadero
done
#!/bin/bash
while sleep 60s
do
who | grep daniel
done

En este ejemplo, cada 60 segundos (definidos por el comando sleep 60s, puede ser 60m
para minutos, 60h para 60 horas o 60d para 60 dias), verificar si el usuario daniel ha
ingresado al equipo. En caso de que lo haya hecho, el listado del who saldr por pantalla
(cada 60 segundos).

118
www.sugeek.co

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).
Sintaxis:

until comando
do
cuerpo del ciclo ejecutado a condicin
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 logueado en el equipo (si el usuario esta logueado, el ciclo termina).

Funciones
Las funciones son un recurso esencial para la buena programacin, permiten escribir una
sola vez un pedazo de cdigo que se repita varias veces en el script, y as, minimizar el
margen de error y tambin la cantidad de lneas en el programa.
Para utilizarlas simplemente se hace un llamado a la funcin. Las funciones pueden estar
dentro del mismo shell script, o en un archivo aparte. Cuando se escriben las funciones
en un archivo aparte, es muy importante utilizar el comando "." (punto) para cargarlas en
memoria. Si no se cargan en memoria de esta manera, las funciones no estarn
disponibles.
#!/bin/bash
. /home/funciones.sh #Se cargan las funciones de un archivo externo

La sintaxis para utilizar funciones es muy sencilla y no agrega mayor dificultad. El modo
de uso se remite a definir la funcin especificando el nombre y parntesis que abren y
cierran. Todos los comandos que involucran la funcin se encierran con llaves.
Un ejemplo de la funcin mas desastrosa en GNU/Linux, es la famosa bomba fork :()
{:|:&};:
Expliquemos dicha linea.

119
www.sugeek.co

: Nombre de la Funcin.
{ Abre el contenedor y tareas de la funcin.
:|: Se llama a si misma y el resultado se lo enva as misma.
& Se enva as misma a un proceso de segundo plano.
} Cierra las actividades de la funcin.
; Termina la Funcin.
: Se llama nuevamente
Como se puede observar es un ciclo repetitivo el cual, si no se cancela colapsa la
memoria del sistema si estamos con root.

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 funcin.
Desafortunadamente no es posible asignar el valor retornado en una sola lnea, 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: ($?)"

Variables locales a la funcin


Existe la posibilidad de utilizar variables locales a la funcin, esto significa que la variable
solamente va a existir durante la ejecucin de la funcin.
Para crear una variable
<nombre_de_variable>".

local

la

funcin

Ejemplo:

#!/bin/sh
func () {
local x
x=$1
echo "Dentro de la funcin \$x vale ($x)"
}
echo "Antes de ejecutar la funcin \$x vale ($x)"
120
www.sugeek.co

se

utilizar

el

operador

"local

func HOLA!!
echo "Despus de ejecutar la funcin \$x vale ($x)"

Operaciones Aritmticas
Existen varias formas de calcular valores dentro de un shell script. Tradicionalmente,
estos clculos se hicieron con programas externos, esto generaba un retardo inmenso en
la ejecucin del shell script.
Hoy los nuevos intrpretes traen la posibilidad de hacer clculos internamente. Para esto
se utiliza una sintaxis especial, y es muy importante que los valores de las variables que
utilicen para hacer estos clculos sean nmeros nicamente.
La sintaxis para hacer operaciones aritmticas es la siguiente:
$[<expresin>]
Las operaciones que se pueden realizar son:
suma $((1+1))
resta $((2-1))
multiplicacin $((2*2))
divisin $((2/2])
otras como suma de bits, sacar el mdulo, evaluacin de igualdad, etc.

Ejemplo:

#!/bin/sh
x=2
tot=$[$x+1]
echo "tot: ($tot)"

Operaciones lgicas y de comparacin:


Para usar if podemos usar un nuevo elemento, los corchetes que evalan las condiciones,
esto esta basado directamente en test. Y ste nos sirve para comparar variables.

-lt Menor que


-eq Igual que
-gt Mayor que
-le Menor o igual que
-ge Mayor o igual que
-ne No coinciden
-a Operador lgico and
-o Operador lgico or
!= Distinto

Con lo anterior podemos comparar 2 valores o variables con el comando test.


root@sugeek:~# test 1 -eq 1 ; echo $?

121
www.sugeek.co

En el anterior ejemplo estamos probando ( test ) que 1 es igual a 1 ( 1 -eq 1 ) y si es


verdadero da como resultado 0 (echo $? ). Con esto estamos comparando 2 valores, lo
cual lo podemos hacer dentro de un script usando if .
El siguiente script hace la comprobacin si un archivo es ejecutable, lo cual si no es
ejecutable lo convierte a ejecutable, si es ejecutable arroja un mensaje.
#!/bin/bash
if [ ! -x $FILE ]
then
chmod +x $FILE
else
echo "$FILE es ejecutable"
fi

Interacciones con el Usuario:


En ocasiones es necesario que el usuario interactu con la CLI, ya sea para que indique el
directorio de instalacin del programa o script, o solo para pedir confirmacin, para ello
usamos read o dialog.

Comando read:
El comando read es muy sencillo. Le indicamos que pida el valor de una variable al
usuario, el usuario escribe una lnea de texto (es decir, cualquier cosa hasta que presione
enter), y la variable toma el valor que el usuario ingres.
#!/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

Del script anterior tenemos como resultado:


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.
Puede producir preguntas si/no, men, lista, calendario, barra de progreso, dilogo de
contrasea, cuadro de texto, cuadro de mensaje, etc. Se recomienda ver su pagina
122
www.sugeek.co

manual man dialog.

123
www.sugeek.co

ADMINISTRACIN 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 caractersticas especiales como velocidades de escritura/lectura, recordando que
los discos de estado solido o SSD son de mejor rendimiento que los mecnicos o discos
duros convencionales. En cuanto a los discos duros mecnicos esta compuestos por
platos, cabezales, pistas, sectores, etc. Asi como lo podremos encontrar tanto para
computadoras de escritorio, servidores, porttiles, etc.
Dentro de estos discos, encontramos tanto particiones primarias, lgicas, se pueden
formar Logical Volumen Manager, RAID's, etc. A continuacin vamos a entender el
funcionamiento dentro del sistema de archivo de GNU/Linux y a configurar algunas de
estas tecnologas.
Nota: En este apartado no vamos a profundizar ni en conectividad, tipos de discos, ni
nada lo que respecta al hardware como tal.
IMPORTANTE!
Los discos duros estn divididos por bloques, y un archivo SIEMPRE ocupa un bloque
completo sin importar su tamao, por ende si un archivo pesa solo 1byte y el bloque por
defecto es de 4096bytes significa que se estn perdiendo 4095bytes, a lo cual lleva como
resultado una ocupacin rpida del espacio en disco, 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 informacin respecto al sistema de archivos como:

Tipo
Tamao
Estado
Otros Superbloques
Tabla de Inodos

GNU/Linux intenta primero leer el superbloque del primer disco. Puede ocurrir que este
ltimo est corrompido despus de malas operaciones o una avera. En este caso, ya no
se puede acceder a los datos del disco ya que no es posible saber que tipo de sistema de
archivos es, la cantidad de inodos, etc. GNU/Linux posee una copia de estos superbloques
repartidos por todo el sistema de archivos, as que si se corrompe es posible que con el
comando fsck se reconstruya la estructura del filesytem.
124
www.sugeek.co

MBR
El MBR o Master Boot Record se encuentra en el sector 0 de un dispositivo de
almacenamiento, normalmente en este se guarda informacin del arranque del SO,
tablas de particiones, identificador del disco. El MBR es de 512 Bytes.
En GNU/Linux, podemos realizar un backup del MBR
root@sugeek:~# dd if=/dev/xxx of=mbr.backup bs=512 count=1

Si deseamos restaurar el MBR escribimos

root@sugeek:~# dd if=mbr.backup of=/dev/xxx bs=512 count=1

Esto se hace con el fin por si se llega a daar dicho sector de arranque, que en ocasiones
es un problema comn.

Particiones soportadas GNU/Linux


GNU/Linux soporta una gran cantidad de tipos de particiones, que se listan a
continuacin.

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:
<dispositivo> <punto_de_montaje> <sistema_de_archivos> <opciones> <dump-freq>
<pass-num>

Dispositivo Es el directorio lgico que hace referencia a una particin o recurso


125
www.sugeek.co

Punto de Montaje Indica donde se va a montar dicho recurso


Sistema de Archivos Esto va asociado segn sea el dispositivo montado.
Ntfs Cuando es Windows XP o mayores
fat Si la particin es de tipo FAT32
vfat Cuando la particin es de tipo FAT16
iso9660 Para DVD's, CD's y discos pticos.
Sw Para la particin tipo swap
ext# Sistema por default de Linux ext2 ext3 o ext4
auto Cuando no se esta seguro que tipo de sistema de archivos es.
Opciones Se estipulan los parmetros del comando mount, estas opciones deben
de estar separadas por comas ( , ).
auto Con esta opcin hacemos que el dispositivo que la contenga sea iniciado
siempre que se inicie el sistema, es decir, cada vez que este sea encendido.
no auto Esta es la opcin contraria a auto, con ella hacemos que el
dispositivo no sea montado al iniciarse el sistema, y tan solo sera montado en
el momento en el que queramos usarlo; esta opcin suele ser utilizada con
dispositivos como las disqueteras, cd-roms, dvd, pendrives-usb, etc.
async Con esto hacemos que las operaciones que realicemos no se hagan en
el mismo momento en que las realizamos/pedimos, si no que pueden ser
realizada mas adelante.
Sync Es la opcin contraria a async. Aadiendo la opcin sync fijaramos que
los datos sean transferidos, guardados o borrados, en el momento en que
pedimos que se hagan. Esta opcin puede servir de mucho, y sobre todo
ahorrarnos tiempo en la manera en la que se transfieren datos a dispositivos
como los pen-drives y aquellos que se utilizan mediante conexin usb en los
cuales necesitamos acceso/transferencia rpido/a.
Exec Esta opcin hace que puedas ejecutar programas, ficheros script
(guiones), o cualquier otra cosa cuyos permisos indiquen que es ejecutable, de
ese sistema de ficheros.
Noexec Impide la ejecucin de cualquier archivo en el dispositivo en el que
esta opcin sea activada, esta opcin suele ser muy til cuando en una misma
maquina diversos usuarios tienen acceso a un mismo dispositivo y no queremos
que estos puedan ejecutar archivos en los dispositivos, con esto ganamos en
seguridad, ya que impedimos que los otros usuarios puedan ejecutar cualquier
tipo de archivo maligno a travs del cual lo que realmente quieren conseguir
es escalar privilegios en el sistema.
gid=Valor Con esta opcin indicamos que tan solo el grupo que posee el Valor
especificado tenga el control sobre los archivos del dispositivo. Puede tratarse
de un valor numrico gid=1000 o del nombre del grupo de usuarios
(gid=users,gid=usuarioslectordvd).
uid=Valor Con esta opcin indicamos que tan solo el usuario que posee el
Valor especificado tenga el control sobre los archivos del dispositivo.
Owner indica que el propietario del sistema de ficheros (el 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
126
www.sugeek.co

para montarse automticamente durante el arranque.


Ro read-only. Con esta opcin hacemos que no se pueda escribir en el
dispositivo, que tan solo se pueda leer.
Rw read-write. Con esto montamos la particin para que sea posible tanto
leer como escribir en el dispositivo fsico, esta opcin es muy usada con
dispositivos que permiten la escritura como por ejemplo los pendrive o los
disquets, ya que sin esta opcin, no podramos guardar datos en dichos
dispositivos.
User Permite a cualquier usuario del sistema montar o desmontar un
dispositivo fsico sin necesidad de ser root, esta opcin es muy til para
dispositivos de uso frecuente, como cd-roms o disquetes. Pero tambin 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 tambin,
puede desmontar el dispositivo.
Nouser Debes ser el usuario root para montar el sistema de ficheros, nadie
ms 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 aplicacin fsck revisar la particin en busca
de errores durante el inicio, si es cero el dispositivo no se revisa.

Nota: Se recomienda indicar el UUID del dispositivo, ya que de este modo evitaremos
fallas al arranque del sistema. Ver el Comando blkid

Comando lsscsi
Este comando me identifica los discos que tenemos instalado en nuestro sistema,
normalmente no viene instalado en Debian, pero se puede instalar con aptitude install
lsscsi.
La salida del comando es la siguiente:
root@sugeek:~# lsscsi
[1:0:0:0]
cd/dvd VBOX
[2:0:0:0]
disk
ATA

CD-ROM
VBOX HARDDISK

1.0
1.0

/dev/sr0
/dev/sda

Comando hdparm
Deforma predeterminada con la opcin -I muestra informacin del disco seleccionado
usando la informacin del sistema, si se usa la opcin -i muestra es informacin obtenida
por el kernel. Dicho comando en ocasiones no se instala de forma predeterminada.
root@sugeek:~# hdparm -I /dev/sda
/dev/sda:
ATA device, with non-removable media
Model Number:
VBOX HARDDISK
127
www.sugeek.co

Serial Number:
VB66e02ab6-0256918b
Firmware Revision: 1.0
Standards:
Used: ATA/ATAPI-6 published, ANSI INCITS 361-2002
Supported: 6 5 4
Configuration:
Logical
max
current
cylinders
16383 16383
heads
16
16
sectors/track
63
63
-CHS current addressable sectors:
16514064
LBA
user addressable sectors:
41943040
LBA48 user addressable sectors:
41943040
Logical/Physical Sector size:
512 bytes
device size with M = 1024*1024:
20480 MBytes
device size with M = 1000*1000:
21474 MBytes (21 GB)
cache/buffer size = 256 KBytes (type=DualPortCache)
Capabilities:
LBA, IORDY(cannot be disabled)
Queue depth: 32
Standby timer values: spec'd by Vendor, no device specific minimum
R/W multiple sector transfer: Max = 128 Current = 128
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled
Supported:
* Power Management feature set
* Write cache
* Look-ahead
* 48-bit Address feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* Gen2 signaling speed (3.0Gb/s)
* Native Command Queueing (NCQ)
Checksum: correct

Pero hdparm no solo sirve para obtener informacin del disco, este tambin me permite
realizar modificacin al disco, como ancho de banda del bus de datos, etc.
Este comando es muy delicado, es recomendable conocer con exactitud el disco, y que
tecnologas soporta.
Para mas informacin, se recomienda utilizar la pagina manual del comando, adems con
el comando dumpe2fs tambin se puede obtener suficiente informacin sobre un
dispositivo.

128
www.sugeek.co

Montar y desmontar una unidad de almacenamiento


Con el comando mount y umount podremos montar y desmontar unidades como USB,
Discos Duros Externos, DVD's, Discos Duros Internos y un largo etc. Recordemos que
estas unidades las encontramos en el directorio /dev demarcados como sda1 o hda0 etc.

Comando mount
Este comando sirve para montar las unidades que deseemos indicando unas opciones o
sin estas. La estructura de este comando es:
mount -t tipodesistema -o opciones /dev/dispositivo /carpetadestino
Los sistema de archivos soportados por mount son:

auto (intenta descubrir automticamente el sistema de archivos).


iso9660 (sistema de archivos de los CD y DVD).
ext2 (sistema de archivos muy extendido en maquinas Linux).
ext3 (igual que ext2 pero adems aade journaling).
ext4 (introdujo significativas mejoras respecto a ext3)
reiserfs (otro sistema muy utilizado en maquinas Linux).
msdos (para dispositivos que usen FAT12 o FAT16).
vfat (para dispositivos que usen FAT32).
ntfs (sistema de archivos NTFS de Windows NT, XP, etc.).
smbfs (sistema de archivos de Samba).
nfs (sistema de archivos de red NFS).
hfs y hfsplus (acceden a sistemas de archivos de Apple Macintosh).

Adems 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.
Se recomienda en un sistema de archivos de almacenamiento montar los discos con el
UUID (Universal Uniq Identifier) ya que es probable que las letras de los discos
cambien, pero el UUID es nico y no cambia.
Para saber el UUID de un disco se usa el comando blkid.
root@sugeek:~# blkid /dev/sdd1
/dev/sdd1: UUID="fb2f1f0f-9fbc-4f9d-820a-27ea6ad707d8" TYPE="ext4"

Despus de tener el UUID del disco se procede a montarlo.


root@sugeek:~# mount -t ext4 -U fb2f1f0f-9fbc-4f9d-820a-27ea6ad707d8 /home/datos

Adems de permitir sistemas de archivos como unidades de almacenamiento, tambin


permite montar imgenes de DVD o CD.

129
www.sugeek.co

root@sugeek/:# mount -t iso9660 -o loop dvd.iso /mnt/iso

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 me permite verificar que archivos estn usando el dispositivo (sin opciones
me 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
soporte@sugeek:~$ lsof /dev/sdb1
COMMAND
PID USER
FD
TYPE DEVICE SIZE/OFF NODE NAME
pantheon- 25828 soporte 29r
REG 8,17
18356
104 /media/SUGEEK/img.jpg

Se podr terminar el proceso usando su PID, pero tambin podemos terminar todos los
procesos asociados a dicho dispositivo con fuser -km /media/SUGEEK

Particionar Unidades
Si queremos ver especficamente que particiones tiene nuestro sistema solo basta con
verificar el archivo /proc/partitions.
root@sugeek:~# cat /proc/partitions
major minor #blocks name
8
8
8
8
11
254
254

0
1
2
5
0
0
1

20971520
194560
1
20773888
1048575
1949696
9764864

sda
sda1
sda2
sda5
sr0
dm-0
dm-1

Con el comando fdisk (El comando cfdisk es mas grfico) podemos crear diferentes
particiones sobre una unidad de disco, ya hemos visto un poco de las caractersticas de
fdisk con la opcin -l.

Comando fdisk
!IMPORTANTE
Con este comando solo podremos crear particiones de mximo 2TB, lo cual se supondra
que seria mas que suficiente si vamos a crear RAID+LVM, y aun son pocos los discos que
130
www.sugeek.co

superen esta capacidad, para particiones con mayor capacidad se recomienda usar
gparted.
Como se menciono en el enunciado anterior, fdisk es un comando completo para la
administracin de particiones. Para obtener mas informacin escribir man fdisk. La
estructura del comando es:
fdisk /dev/dispositivo

Al ingresar all nos indicara que deseamos hacer, para tener mas claro las diferentes
opciones solo oprimimos la tecla m para obtener las distintas opciones de fdisk.
(Eliminar, listar, crear, etc)
root@sugeek:~# fdisk /dev/sda
El dispositivo presenta un tamao de sector lgico que es menor
que el tamao de sector fsico. Alinear a un lmite de tamao de sector
fsico (o E/S ptima) es recomendable o se resentir el rendimiento.
Orden (m para obtener ayuda): m
Orden Accin
a
Conmuta el indicador de iniciable
b
Modifica la etiqueta de disco bsd
c
Conmuta el indicador de compatibilidad con DOS
d
Suprime una particin
l
Lista los tipos de particiones conocidos
m
Imprime este men
n
Aade una nueva particin
o
Crea una nueva tabla de particiones DOS vaca
p
Imprime la tabla de particiones
q
Sale sin guardar los cambios
s
Crea una nueva etiqueta de disco Sun
t
Cambia el identificador de sistema de una particin
u
Cambia las unidades de visualizacin/entrada
v
Verifica la tabla de particiones
w
Escribe la tabla en el disco y sale
x
Funciones adicionales (slo para usuarios avanzados)

Como podemos observar las diferentes opciones de dicho comando me permitir


preparar un disco para diferentes ambientes de produccin como lo son RAIDS, LVM, etc.
Vamos a crear una particin sobre el disco /dev/sdb, se recomienda hacer esto en discos
desmontados y no activos, ya que puede llevar a perdida de datos.
root@sugeek:~# fdisk -l | grep sd
El disco /dev/sdb no contiene una tabla de particiones vlida
El disco /dev/sdc no contiene una tabla de particiones vlida
Disco /dev/sda: 8589 MB, 8589934592 bytes
/dev/sda1
*
2048
487423
242688
83 Linux
/dev/sda2
487424
16775167
8143872
83 Linux

131
www.sugeek.co

Disco /dev/sdb: 8589 MB, 8589934592 bytes


Disco /dev/sdc: 8589 MB, 8589934592 bytes

Vemos que el disco es un disco de 8GB, procedemos a seleccionarlo:


root@sugeek:~# fdisk /dev/sdb
El dispositivo no contiene una tabla de particiones DOS vlida ni una etiqueta de
disco Sun o SGI o OSF
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.
Atencin: el indicador 0x0000 invlido de la tabla de particiones 4 se corregir
m9.2. Procedimientos. ediante w(rite)

Luego de haber seleccionado el disco a particionar procedemos a crear las particiones


que necesitemos, con la opcin l podemos observar los tipos de sistemas de archivos
soportados.
Despus de conocer los tipos de sistemas de archivos soportados, procederemos a crear
la particin tipo Linux.
Con indicando la opcin n crearemos una nueva particin, solicitara que tipo de particin
deseamos crear si primaria o lgica, oprimimos p para primaria (Recordemos que en un
disco solo se pueden crear 4 particiones primarias y lgicas las que queramos). Despus
de ello me solicitara el numero de la particin, indicamos que 1 y por ultimo el tamao
que le deseo dar, puede ser tipo sectores o tamao directo indicando si va a ser en
Kylobytes (K), MegaBytes (M) o Gigabytes (G), pero lo dejaremos tal cual para usar todo
el disco.
Orden (m para obtener ayuda): n
Partition type:
p
primary (0 primary, 0 extended, 4 free)
e
extended
Select (default p): p
Nmero de particin (1-4, valor predeterminado 1): 1
Primer sector (2048-16777215, valor predeterminado 2048):
Se est utilizando el valor predeterminado 2048
Last sector, +sectores or +size{K,M,G} (2048-16777215, valor predeterminado
16777215):
Se est utilizando el valor predeterminado 16777215

Ya tenemos creada nuestra particin, ahora falta indicar el tipo de archivo que soportara,
para ello damos la opcin t para indicarle el tipo de sistema de archivos que le
configuraremos (De forma predeterminada las particiones se crean soportando el sistema
de archivos ext.) selecionamos la particin que se va a cambiar el tipo de sistema de
archivos y luego con L vemos los distintos sistemas de archivos soportados, validamos el
que queremos, en este momento nos interesa el tipo Linux asi que escribimos 83. Con la
132
www.sugeek.co

opcin p imprimiremos las particiones que hemos creado en memoria pero que aun no
se han escrito en el disco.
Orden (m para obtener ayuda): t
Se ha seleccionado la particin 1
Cdigo hexadecimal (escriba L para ver los cdigos): 83
Orden (m para obtener ayuda): p
Disco /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, 16777216 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x254b8c68
Disposit. Inicio
/dev/sdb1

Comienzo
Fin
2048
16777215

Bloques
8387584

Id
83

Sistema
Linux

Como vemos ya el disco sdb tiene una particin creada en memoria mas no en disco
(/dev/sdb1), ahora falta escribir dichos cambios en el disco para que tomen efecto, para
que estos cambios se escriban damos la opcin w la cual indica Write sobre el disco.
Orden (m para obtener ayuda): w
Se ha modificado la tabla de particiones!
Llamando a ioctl() para volver a leer la tabla de particiones.

Se estn sincronizando los discos.


Despus de haber particionado nuestro disco lo podemos observar con el comando fdisk
-l | grep sdb el cual me mostrara la informacin de dicho disco y sus particiones.
root@sugeek:~# fdisk
El disco /dev/sdc no
Disco /dev/sdb: 8589
/dev/sdb1

-l | grep sdb
contiene una tabla de particiones vlida
MB, 8589934592 bytes
2048
16777215
8387584
83 Linux

Ya tenemos nuestro disco preparado para ser formateado, y montado sobre un directorio.
Ya para eliminar una particin seleccionamos el disco, y luego indicamos la opcin d
seleccionamos la particin a borrar y por ultimo escribimos los cambios con la opcin w .
Recordemos que el dispositivo debe de estar desmontado para poder eliminar las
particiones.
Si sobre el disco que estamos trabajando ya cuenta con particiones, y no es posible
desmontarlo, pero aun asi TIENE bloques disponibles para crear una nueva particin, y
dicha particin despus 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 que se sincronice
nuevamente las tablas de particiones del sistema.

133
www.sugeek.co

Formatear Unidades
Despus 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.
En esta ocasin vamos a utilizar el ultimo sistema de archivos Linux que esta disponible,
el ext4.
La estructura del comando mkfs es:
mkfs -t ext4 -b 1024 -c -i 163384 -m 0 -L Datos /dev/dispositivo

Algunas opciones que tiene el comando mkfs es:

-b Tamao de los bloques, en mltiplo de 512, se recomienda dejar los bloques


de 1024.
-c Comprobar el disco por sectores defectuosos
-i Indica el tamao del inodo segn el disco (un inodo es de 128 bytes), el cual
puede limitar la cantidad de archivos que se pueden crear, pero permite ganar mas
espacio. -i 4096: un inodo por cada 4KB.
-m Porcentaje reservado para root, normalmente el 5% del espacio en disco.
Ponerlo a 0 permite ganar espacio en disco en cuanto al trabajo.
-L Etiqueta del Disco

Con el comando e2label me permite cambiar el Label al disco.


Aunque tenemos el comando mkfs.ext# el cual es un poco mas completo y el mas
usado, asi que procederemos a darle un sistema de archivos a nuestra particion.
root@sugeek:~# mkfs.ext4 /dev/sdb1
mke2fs 1.42.5 (29-Jul-2012)
Etiqueta del sistema de ficheros=
OS type: Linux
Tamao del bloque=4096 (bitcora=2)
Tamao del fragmento=4096 (bitcora=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2096896 blocks
104844 blocks (5.00%) reserved for the super user
Primer bloque de datos=0
Nmero mximo de bloques del sistema de ficheros=2147483648
64 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: hecho
Escribiendo las tablas de nodos-i: hecho
Creating journal (32768 blocks): hecho
134
www.sugeek.co

Escribiendo superbloques y la informacin contable del sistema de ficheros: hecho

Con el comando mkfs.ext4 podremos indicar el tamao del bloque, el tamao del inodo
y muchas mas caractersticas, para ello dirjase a la pagina manual del comando.

Unidad SWAP o memoria de Intercambio


La particin SWAP es la particin que hace sus labores ocasionalmente como si fuese una
memoria ram, cuando es requerida por el sistema, esta memoria RAM se encuentra en
una particin especial dentro de nuestro disco duro.
Esta se puede crear durante la instalacin del sistema o luego en un pendrive, archivo,
etc. Para tener la particin SWAT se recomienda lo siguiente.

Colocarla despus de la particin boot.


Si el equipo tiene menos de 1GB de Ram fisica se recomienda la particion SWAP
debe de duplicar la cantidad real de memoria ram, asi que si tenemos 768MB de
memoria fisica, la SWAP debe de ser 1536MB, en cambio si supera el 1GB de
memoria fisica, la SWAP es igual a esta mas 2GB, por ejemplo tenemos 3GB de
memoria fsica, la swap se recomienda de 5GB.

La Swap tiene como desventaja que al estar en el disco duro, hace que sea demasiado
lento las consultas de este, por ende 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 estn Estticos o los que demoren mas tiempo en
memoria, los procesos temporales si siguen en la memoria ram.
En algunos ambientes es importante tener una memoria SWAP asignada, como:

Servidores o estaciones donde ya no se pueda aumentar la memoria fsica.


Estaciones de Diseo Grfico o similares, ya que en ocasiones estas estaciones
aunque tengan buena memoria ram, no le es suficiente.
Servidores de Produccin intensa espordica.

Asi que, como vimos durante la instalacin, nosotros no configuramos una SWAP, pero la
desventaja de tener la swap directamente sobre una particin en el disco es
contraproducente, ya que la swap estar limitada al tamao del la particin y no podr
aumentarse o disminuirse sin llegar a afectar el sistema de algn modo, por ende en
servidores de produccin se recomienda tener un disco aparte para la swap o en el
comn de los casos tenerla en un archivo para poderla manipular a nuestro gusto cuando
el sistema asi lo requiera (Aumentarle o disminuirle el tamao).
Verificamos que no tenemos swap en nuestro sistema.
root@sugeek:~# free -m
total
Mem:
502
-/+ buffers/cache:
Swap:
0

used
496
27
0

free
6
475
0

shared
0

135
www.sugeek.co

buffers
2

cached
466

Procederemos a crear el archivo que realizara la labor de swap, recordemos que podemos
crearlo en una USB 3.0.
root@sugeek:~# dd if=/dev/zero of=/swap bs=1024 count=1048576
1048576+0 registros ledos
1048576+0 registros escritos
1073741824 bytes (1,1 GB) copiados, 4,72171 s, 227 MB/s

Desglosemos el anterior comando:

dd Sirve para crear y convertir ficheros


if Indicamos la entrada estndar la cual va a ser puros ceros (/dev/zero)
of Indicamos la salida, si el archivo no existe se creacin
bs Indicamos el tamao del bloque de 1024 bytes
count Marca hasta donde se deben de crear bloques, es el valor del bs
multiplicado por la cantidad de MB que le vamos a asociar a la SWAP, en esta
ocasin le asociamos 1GB a la SWAP.

Ahora vamos a crear la SWAP.


root@sugeek:~# mkswap /swap
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=387c7671-ada8-428d-8112-98aff59c8ba6

Activamos la swap

root@sugeek:~# swapon /swap


root@sugeek:~# free -m
total
used
Mem:
502
496
-/+ buffers/cache:
27
Swap:
1023
0

free
5
475
1023

shared
0

buffers
2

cached
466

Como observamos ya tenemos una swap asociada al sistema, pero esta desaparecer
cada vez que reiniciemos el servidor, por tal motivo debemos de dejarla permanente,
esto lo hacemos en el archivo fstab.
Echo /swap swap swap defaults 0 0 >> /etc/fstab

Ya de ese modo la swap estara montada en nuestro sistema y dispuesta a ser usada,
pero el sistema la usa demasiado, asi que vamos a disminuir el uso de esta y solo en
casos que en realidad se requiera, aumentando asi el rendimiento del sistema.
Para ello escribimos:
echo 10 > /proc/sys/vm/swappiness
echo vm.swappiness = 10 >> /etc/sysctl.conf

Ya con lo anterior tenemos optimizado el uso de nuestra swap.

136
www.sugeek.co

Verificar el estado del disco con fsck


El comando fsck permite comprobar y arreglar un sistema de archivos.
Antes de verificar un sistema de archivos, el dispositivo no debera de estar montado, o
como mucho, montado en modo solo lectura.
Similar que mkfs, fsck invoca un comando teniendo en cuenta el sistema de archivos
para comprobar, como fsck.ext2 fsck.ext3 fsck.ext4, etc.
Cuando un sistema de archivos se encuentra defectuoso este corregir los sectores que
pueda y preguntara al usuario que hacer (aunque se puede omitir con la opcin -y para
aceptar a todo de forma automtica), y aquellos que no los pasara a la carpeta
lost+founds de dicho sistema de archivos u dispositivo.
El siguiente comando indica las opciones -v (verbose) y -f (force) para corroborar el
estado del dispositivo.
root@sugeek:~# fsck -fV /dev/sdb1
fsck de util-linux 2.20.1
[/sbin/fsck.ext4 (1) -- /dev/sdb1] fsck.ext4 -f /dev/sdb1
e2fsck 1.42 (29-Nov-2011)
Paso 1: Verificando nodos-i, bloques y tamaos
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de informacin de grupos
/dev/sdb1: 11/991616 files (0.0% non-contiguous), 104694/3965948 blocks

Las Cuotas de Disco


Las cuotas permiten poner limites al uso del espacio en los sistemas de archivos, estos
limites pueden ser de 2 tipos:

inodos: Limita el numero mximo de archivos


bloques: Limita el numero de bloques

Se Implementan las cuotas por sistemas de archivos individual (por dispositivo), y no


para un conjunto de sistema de archivos. Se puede gestionar cada usuario o grupo de
manera completamente independiente.
En las cuotas, se puede fijar unos limites, estos limites son:

Limite Duro: Es la cantidad mxima de inodos o bloques utilizados que el usuario


o grupo no podr superar en ningn caso.
Limite Suave: Cantidad mxima de inodos o bloques utilizados que el usuario o
grupo pueden superar de manera temporal. En este caso, el usuario o grupo podr
superar el limite establecido hasta cierto punto determinado por el periodo de
137
www.sugeek.co

gracia.
Limite de Gracia: Durante un cierto perido se le permite al usuario trabajar por
encima de su cuota, un tiempo prudente para que este borre o mueva informacin
que no utilice.

Las cuotas se establecen a nivel de nucleo y de sistemas de archivos. Para poder


utilizarlas, se deben instalar las respectivas herramientas.

aptitude install quota quota tool

Habilitar las Cuotas


Antes que nada, para poder usar las quotas debemos de alistar el dispositivo que va a
tener estas caractersticas, para ello ingresamos al archivo /etc/fstab y modificamos las
opciones del dispositivo.
/dev/sdb2 /Compartida ext3 defaults,usrquota,grpquota 0 2

Como observa se agregaron las opciones userquota (Usuarios) y grpguota (Grupos).


Despus de modificar el dispositivo y si no lo tenemos ocupados procederemos a
remontar el dispositivo con mount -o remount /Compartida.
Luego de haber establecido las caractersticas del dispositivo se procede a crear los
archivos de configuracin en la raiz del dispositivo que se le habilito las cuotas.
root@sugeek:/# quotacheck -acug /home/Compartida

La opcin -a significa que todos los sistemas de archivos no NFS montados en /etc/mtab
son chequeados para ver si las cuotas estn activadas. La opcin -c especifica que los
archivos de cuota deberan ser creados para cada sistema de archivos con cuotas
activadas, la opcin -u especifica que se debe verificar por cuotas de usuario, y la opcin
-g indica verificar por cuotas de grupo.
Si no se especifican ninguna de las opciones -u ni -g, slo se crear el archivo de cuota de
usuario. Si nicamente se especifica la opcin -g, slo se crear el archivo de cuota de
grupo.
Luego que se crean los archivos se procede a generar la tabla de uso
root@sugeek:/# quotacheck -avug && quotaon /Compartida

Con el comando quotacheck -avug es muy probable que la primera vez genere
advertencias de archivos que se escribirn, ignoramos dicha advertencia, adems si se
presentan problemas con la cuotas se ejecuta dicho comando.
La opcin -a Verifica todos los sistemas de archivos montados localmente con cuotas
activadas, -v Muestra detalles informativos a medida que la verificacin de cuotas se
138
www.sugeek.co

ejecuta (verbose), -u verifica la informacin de cuota de disco y -g verifica la informacin


de cuota de disco del grupo.
El comando quotaon me activa las cuotas en el disco. El quotaoff me desactiva la
cuota

Habilitar las Cuotas a Usuarios


Para habilitar a un usuario a usar las cuotas en un disco solo basta con indicar el
comando edquota usuario .

Nota: Abre con el editor de texto predeterminado y los bloques de las cuotas son de 1KB
Nota 2: Los valores de Blocks e inodes no se deben modificar, ya que es un valor
dinmico.
Disk quotas for user sugeek (uid 502):
Filesystem
blocks
soft
/dev/sbd2
440436
0

hard
0

inodes
37418

soft
0

hard
0

Si se desea es que un usuario tenga las misma cuota que otro se ejecuta edquota -p
sugeek user
La primera columna es el nombre del sistema de archivos que tiene una cuota activada.
La segunda columna muestra cuntos bloques est usando el usuario actualmente. Las
prximas dos columnas son usadas para colocar lmites de bloques duros y suaves para
el usuario del sistema de archivos. La columna inodes muestra cuntos inodes est
usando el usuario actualmente. Las ltimas dos columnas son usadas para colocar los
lmites duros y suaves para los inodes del usuario en el sistema de archivos.
Si cualquiera de los valores est especificado a 0, ese lmite no est configurado.
Para verificar que una cuota ha sido aplicada se usa el comando quota usuario

Habilitar las Cuotas a Grupos


Lo mismo que en usuarios pero indicando la opcin -g al comando edquota
root@sugeek:/# edquota -g tecnicos

Lo anterior me mostrara en el editor de texto la cuota para dicho grupo.


Disk quotas for group tecnicos (gid 502):
Filesystem
blocks
soft
hard
/dev/sdb2
440400
0
0

inodes
37418

soft
0

hard
0

Para verificar que dicha cuota si se aplico al grupo se ejecuta el comando quota -g
tecnicos
139
www.sugeek.co

Las cuotas pueden ser verificadas y generar un informe con repquota y el comando
warnquota permite se programado en cron para alertar a los usuarios que estn a punto
de superar o llegar al limite de su cuota.
El comando edquota -t permite asignar cuotas a los usuarios o grupos basndose en los
sistema de archivos.

Unidades RAID (Arreglo de Discos)


Antes de iniciar con el tema de las unidades RAID debemos de conocer como funciona,
por ende se recomienda ver la Wikipedia (http://es.wikipedia.org/wiki/RAID).

Nota: Utilizar esta herramienta si y solo si nuestro servidor no tiene controladora RAID y
no se puede crear RAID por Hardware.
El RAID en GNU por Sistema Operativo es tambin conocido como RAID por Software, y
solo se puede crear RAID en unidades donde NO este la particin /boot o que contenga
los archivos de arranque.

Preparar los Discos Duros


Para poder trabajar con RAID por Software, es necesario alistar nuestros discos duros con
el comando fdisk y cambiar el tipo de particin a fd (Linux Raid Auto)

Creando RAID con mdadm


Antes de iniciar con el RAID por Software, debemos de tener en cuenta las variables
sobre el uso del servidor, asi que no es lo mismo tener un servidor de custodia de
informacin, como un servidor vivo de carpetas compartidas o base de datos. En esta
ocasin vamos a preparar un RAID para base de datos, as que nuestra configuracin va a
ser un RAID 1+0 o RAID10 (Mnimo 4 Discos del mismo tamao, preferiblemente de la
misma marca, firmware y versin)
Con el comando mdadm (Se instala con aptitude install mdadm ) el cual es una
herramienta del kernel de Linux me permitir crear el RAID por software.
MDADM permite tambin configurar los siguientes arreglos No-RAID:

LINEAR: Concatena unidades de almacenamiento en un slo dispositivo md.


MULTIPATH : permite mltiples rutas con falla en un slo dispositivo.
FAULTY: Un dispositivo que emula varios escenarios de falla de disco. Slo 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
140
www.sugeek.co

root@sugeek:/# mdadm --create /dev/md126 --level=10 --raid-devices=4 /dev/sdb1


/dev/sdc1 /dev/sdd1 /dev/sde1

Como podemos observar tenemos algunas de las opciones bsicas para creacin de
RAID.

--create Indicamos que vamos a crear el RAID md0 (Puede suceder que cambie a
md126)
--level Indicamos el nivel de RAID que vamos a crear,
--raid-devices Cantidad de discos que harn parte del arreglo

Mientras el arreglo se realiza, se puede verificar su estado con el comando mdadm


--detail /dev/md126 o directamente verificando el archivo con cat /proc/mdstat.
Mientras se va construyendo el arreglo, observe que el valor de State es active,
resyncing . El valor de Resync Status informar respecto del porcentaje de progreso de
la operacin. El proceso puede demorar desde unos pocos minutos hasta varias horas
dependiendo el tamao de las unidades de almacenamiento utilizadas.
root@sugeek:/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 : 4
Persistence : Superblock is persistent
Update Time
State
Active Devices
Working Devices
Failed Devices
Spare Devices

:
:
:
:
:
:

Mon Jun 30 17:14:28 2014


active, resyncing
4
4
0
0

Layout : near=2
Chunk Size : 512K
Resync Status : 31% complete
Name : debian:126 (local to host debian)
UUID : 23af9bba:c16e16ed:f7dc9809:a36f4c13
Events : 6
Number
0
1

Major
8
8

Minor
17
33

RaidDevice State
0
active sync
1
active sync
141
www.sugeek.co

/dev/sdb1
/dev/sdc1

2
3

8
8

65
49

2
3

active sync
active sync

/dev/sde1
/dev/sdd1

root@sugeek:/home/soporte# cat /proc/mdstat


Personalities : [raid10]
md126 : active raid10 sdd1[3] sde1[2] sdc1[1] sdb1[0]
16765952 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[=================>...] resync = 87.0% (14595584/16765952) finish=0.1min
speed=199853K/sec
unused devices: <none>

Agregar un dispositivo al RAID:


mdadm --add /dev/md126 /dev/sdf1

Quitar un dispositivo del arreglo:


mdadm /dev/md126 --remove /dev/sdf1

Simular falla del RAID


mdadm /dev/md127 -f /dev/sdb1

Activar un RAID despus de haberlo detenido con stop


mdadm -AsR /dev/md127

Lo ideal seria tener otro disco para funcionar como hotspare o disco de Backup por si
uno de los del arreglo falla.
Para ello seria ejecutar el comando que mencionamos anteriormente de agregar un disco
nuevo al arreglo y al ejecutar el mdadm detail /dev/md126 observaremos que al
final tenemos la linea
4
8
81
spare /dev/sdf1
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
Update Time
State
Active Devices
Working Devices
Failed Devices

:
:
:
:
:

Mon Jun 30 17:32:37 2014


clean
4
5
0
142
www.sugeek.co

Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Name : debian:126 (local to host debian)
UUID : 23af9bba:c16e16ed:f7dc9809:a36f4c13
Events : 20
Number
0
1
2
3

Major
8
8
8
8

Minor
17
33
65
49

RaidDevice
0
1
2
3

State
active
active
active
active

81

spare

sync
sync
sync
sync

/dev/sdb1
/dev/sdc1
/dev/sde1
/dev/sdd1

/dev/sdf1

Ya solo queda guardar la configuracin con:


root@sugeek:/# mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Nuestro RAID queda listo para crear la particin con fdisk , luego formato con mkfs.ext4
y montarlo en el /etc/fstab.

Eliminar un RAID del sistema

Desmontamos la unidad RAID de nuestro sistema umount /dev/md126p1


recordemos que dicho dispositivo no debe de estar siendo utilizado, en caso
contrario usamos lsof para ubicar los archivos abiertos.
Eliminamos la linea que hace referencia al RAID en el /etc/fstab
Paramos el RAID con mdadm -stop /dev/md126
Editamos el archivo /etc/mdadm/mdadm.conf y eliminamos la linea que haga
referencia al RAID.
Escaneamos el RAID para validar que se borro adecuadamente con mdadm
--detail --scan
Escribimos el/los disco(s) para poderlo(s) utilizar nuevamente mdadm --misc
--zero-superblock /dev/sda

Unidades LVM (Logical Volume Manager)


LVM es un sistema de gestin de volmenes lgicos, el cual como funcin principal es
poder aumentar o disminuir la capacidad de una unidad lgica y as poder dar espacios
fijos a ciertos grupos, usuarios, o carpetas.
Se recomienda que LVM cuente con un sistema RAID10 para funcionar con un alto
desempeo y con sistema de cuotas para una correcta administracin y gestin del
sistema de archivos.

143
www.sugeek.co

Antes de iniciar con la creacin y administracin de Volmenes lgicos se recomienda


visitar: http://es.wikipedia.org/wiki/Logical_Volume_Manager de esta manera entender a
mas profundidad su funcionamiento y sus posibles usos.

Volmenes Fsicos (Physical Volumen)


Puede ser un disco duro completo, una particin normal, o en su defecto una unidad
RAID. Son la base del LVM.
Para poder preparar un dispositivo y soportar LVM, debemos de seleccionar el tipo de
particin Linux LVM (8e) con el comando fdisk. Luego que se tengan los dispositivos
listos para ser usados con LVM (Mnimo 2), se proceder a crear el Phisical Volumen.
root@sugeek:/home/soporte# pvcreate /dev/md126p1 /dev/sdg1
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

Como se puede observar utilizamos un dispositivo RAID (/dev/md126) y un dispositivo


normal (/dev/sdg). Para poder observar los volmenes fsicos utilizamos el comando
pvdisplay -v
root@sugeek:/home/soporte# pvdisplay -v
"/dev/md126p1" is a new physical volume of "15,99 GiB"
--- NEW Physical volume --PV Name
/dev/md126p1
VG Name
PV Size
15,99 GiB
Allocatable
NO
PE Size
0
Total PE
0
Free PE
0
Allocated PE
0
PV UUID
wTxgJN-nU5h-vmoP-Kjig-GMDi-Ay1g-wAdx2i
"/dev/sdg1" is a new physical volume of "8,00 GiB"
--- NEW Physical volume --PV Name
/dev/sdg1
VG Name
PV Size
8,00 GiB
Allocatable
NO
PE Size
0
Total PE
0
Free PE
0
Allocated PE
0
PV UUID
6W8t6v-Lbmx-SlBk-KkX7-6bU1-N27A-yPaLrE

Si deseamos quitar un dispositivo como dispositivo LVM solo utilizamos el comando


144
www.sugeek.co

pvremove /dev/dispositivo.
root@sugeek:/home/soporte# pvremove /dev/sdg1
Labels on physical volume "/dev/sdg1" successfully wiped

Grupo Volmenes (Volumen Group)


Es la parte superior de la LVM. Es la "caja" en la que tenemos nuestros volmenes lgicos
(LV) y nuestros volmenes fsicos (PV). Se puede ver como una unidad administrativa en
la que se engloban nuestros recursos. Hay que hacer notar que mientras un PV no se
aada al VG, no podemos comenzar a usarlo.
Para crear un grupo de volmenes, debe de disponer de al menos un volumen fsico.
Puede crear un grupo de volmenes con el comando vgcreate. Un grupo de volmenes
llevara el nombre que se desee.
root@sugeek:/home/soporte# vgcreate vg01 /dev/sdg1
Volume group "vg01" successfully created

El ejemplo anterior le estamos dando como nombre al grupo de vg01 y asociando el pv


que ya habamos creado.
Para visualizar las propiedades de un vg lo realizamos con el comando vgdisplay,
podemos usar la opcin v para que nos de informacin mas detallada.
root@sugeek:/home/soporte# vgdisplay -v vg01
Using volume group(s) on command line
Finding volume group "vg01"
--- Volume group --VG Name
vg01
System ID
Format
lvm2
Metadata Areas
1
Metadata Sequence No 1
VG Access
read/write
VG Status
resizable
MAX LV
0
Cur LV
0
Open LV
0
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
0 / 0
Free PE / Size
2047 / 8,00 GiB
VG UUID
K79hjk-dmOc-DvVF-ounS-XbAx-7jv0-e3OrAA
--- Physical volumes ---

145
www.sugeek.co

PV Name
PV UUID
PV Status
Total PE / Free PE

/dev/sdg1
HdJgWX-K1ZY-Ec30-OTLB-aNkz-YEhy-ARhFey
allocatable
2047 / 2047

En la lineas MAX LV, y MAX PV , las cuales indican el numero mximo de volmenes
lgicos que podemos crear en este grupo de volmenes, siendo 0 el valor que indica
infinito y el numero mximo de pv que puede ser asociados a dicho vg respectivamente.
La linea de PE Size, Total PE y Free PE indican el tamao de las extensiones fsicas, de
un total de 2047 extensiones fsicas de las cuales se tienen libre 2047 extensiones fsicas
respectivamente.
Adems de dicha informacin, me muestra los pv que se encuentran asociados a dicho
vg.
Observe con el comando pvdisplay /dev/sdg1 y notara que muestra informacin con
respecto al vg que hace parte. swr183
Para quitar un vg de nuestro sistema solo basta con ejecutar el comando vgremove
dispositivo

Volmenes Lgicos (Logical Volumen)


Despus de tener los dispositivos fsicos listos dentro de un VG, es hora de crear el
dispositivo lgico para poder darle formato y montarlo como cualquier dispositivo tipo
Bloques. El LV se podr crear dependiendo de la cantidad de PE libres que tenga el VG.
Se crea un LV con el comando lvcreate. Un LV lleva un nombre, dispone de un tamao
expresado en extensiones lgicas (LE) que corresponden en realidad a los PE dentro del
LV.
root@sugeek:/home/soporte# lvcreate -n Datos1 -L 8g vg01
Logical volume Datos1 created

El anterior comando me crea un LV usando como nombre con la opcin n Datos1, y con el
tamao opcin L de 8 Gigabytes (Podemos definir megabytes con m, terabytes con t,
petabytes con p o exabytes con e) y va a pertenecer al Volumen Group vg01.
El sistema creara el dispositivo dentro de /dev/vg01/Datos1, a lo cual, como podemos
observar el dispositivo se crea dentro de una carpeta que contiene el nombre del VG.
Este a su ves es un enlace simblico apuntando a /dev/mapper/vg01-Datos1.
Para ver las caractersticas de nuestro LV lo realizamos con el comando lvdisplay
podemos usar las opciones -v (verbose) y -m (maps) para obtener informacin mas
detallada sobre los bloques de PE y LE utilizados por el LV.
root@sugeek:~# lvdisplay -vm /dev/vg01/Datos1
146
www.sugeek.co

Using logical volume(s) on command line


--- Logical volume --LV Path
/dev/vg01/Datos1
LV Name
Datos1
VG Name
vg01
LV UUID
EuDz0x-N41X-jCWz-sWA0-DarY-85Xw-UUu2Dm
LV Write Access
read/write
LV Creation host, time debian, 2014-07-14 22:27:57 -0500
LV Status
available
# open
0
LV Size
8,00 GiB
Current LE
2047
Segments
1
Allocation
inherit
Read ahead sectors
auto
- currently set to
256
Block device
254:3
--- Segments --Logical extent 0 to 2046:
Type
linear
Physical volume
/dev/sdg1
Physical extents
0 to 2046

Luego para poder utilizar este LV, solo nos queda darle el formato adecuado para poderlo
montar y darle el uso que deseemos o por el cual fue creado.
root@sugeek:/home# mkfs.ext4 /dev/vg01/Datos1 ; mount /dev/vg01/Datos1 /home/LVM/

Observemos que ya tenemos listo nuestro Disco Duro, si lo queremos permanente


recordemos usar su UUID y colocarlo en el archivo fstab.
root@sugeek:/home# df -h
S.ficheros
Tamao Usados
rootfs
5,0G
1,9G
udev
10M
0
tmpfs
101M
332K
/dev/mapper/System-etc
5,0G
1,9G
tmpfs
5,0M
0
tmpfs
201M
0
/dev/sda1
184M
23M
/dev/mapper/System-home
5,0G
139M
/dev/mapper/System-var
9,2G
343M
/dev/mapper/vg01-Datos1
7,9G
146M

Disp Uso% Montado en


2,9G 40% /
10M
0% /dev
100M
1% /run
2,9G 40% /
5,0M
0% /run/lock
201M
0% /run/shm
152M 14% /boot
4,6G
3% /home
8,4G
4% /var
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.
Como vimos con el comando vgdisplay -v vg01 Solo tenemos asociado 1 dispositivo a
147
www.sugeek.co

el VG vg01, y con el comando pvdisplay observamos que tenemos agregado el


dispositivo RAID /dev/md126p1 para ser usado en cualquier VG.
Para ampliar un VG, utilizamos el comando vgextend que funciona de la misma manera
que vgcreate, indicando el VG al cual se le desea aadir el PV. Como se podr observar
el VG Size paso de 8GB a 23,98GB y adems los valores del PE tambin aumentaron, el
nico que se mantiene el Alloc PE el cual posee el tamao del actual LV llamado Datos1, y
si vemos los PV asociados al VG, entroncamos el PV /dev/md126p1.
root@sugeek:/home/soporte# vgextend vg01 /dev/md126p1
Volume group "vg01" successfully extended
root@sugeek:/home/soporte# vgdisplay -v vg01
Using volume group(s) on command line
Finding volume group "vg01"
--- Volume group --VG Name
vg01
System ID
Format
lvm2
Metadata Areas
2
Metadata Sequence No 3
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
2047 / 8,00 GiB
Free PE / Size
4092 / 15,98 GiB
VG UUID
K79hjk-dmOc-DvVF-ounS-XbAx-7jv0-e3OrAA
--- Logical volume --LV Path
LV Name
VG Name
LV UUID
LV Write Access
LV Creation host, time
LV Status
# open
LV Size
Current LE
Segments
Allocation
Read ahead sectors
- currently set to
Block device

/dev/vg01/Datos1
Datos1
vg01
EuDz0x-N41X-jCWz-sWA0-DarY-85Xw-UUu2Dm
read/write
debian, 2014-07-14 22:27:57 -0500
available
1
8,00 GiB
2047
1
inherit
auto
256
254:1

148
www.sugeek.co

--- Physical volumes --PV Name


/dev/sdg1
PV UUID
HdJgWX-K1ZY-Ec30-OTLB-aNkz-YEhy-ARhFey
PV Status
allocatable
Total PE / Free PE
2047 / 0
PV Name
PV UUID
PV Status
Total PE / Free PE

/dev/md126p1
QHZC0o-VUuC-jlwG-QOUl-Wb6B-VC7t-HXc3TL
allocatable
4092 / 4092

Para reducir un VG utilizamos el comando vgreduce, el cual se le indica el PV que se


desea retirar, pero antes de ello, el PV debe de estar libre, no debe estar montado o
siendo utilizado por algn LV y observaremos como los valores del PE dentro del VG
cambian y sus PV asociados.
root@sugeek:/home/soporte# vgreduce vg01 /dev/md126p1 && vgdisplay -v vg01
Removed "/dev/md126p1" from volume group "vg01"
Using volume group(s) on command line
Finding volume group "vg01"
--- Volume group --VG Name
vg01
System ID
Format
lvm2
Metadata Areas
1
Metadata Sequence No 4
VG Access
read/write
VG Status
resizable
MAX LV
0
Cur LV
1
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
--- Logical volume --LV Path
LV Name
VG Name
LV UUID
LV Write Access
LV Creation host, time
LV Status
# open
LV Size
Current LE

/dev/vg01/Datos1
Datos1
vg01
EuDz0x-N41X-jCWz-sWA0-DarY-85Xw-UUu2Dm
read/write
debian, 2014-07-14 22:27:57 -0500
available
1
8,00 GiB
2047
149
www.sugeek.co

Segments
Allocation
Read ahead sectors
- currently set to
Block device

1
inherit
auto
256
254:1

--- Physical volumes --PV Name


/dev/sdg1
PV UUID
HdJgWX-K1ZY-Ec30-OTLB-aNkz-YEhy-ARhFey
PV Status
allocatable
Total PE / Free PE
2047 / 0

Ampliar y Reducir un LV
Como ya tenemos un nuevo PV dentro del VG al cual hace parte el LV, solo queda
asociarle el PV nuevo al LV, para ello utilizamos el comando lvextend el cual permite los
parmetros -l (Numero de extensiones lgicas LE) o -L como para lvcreate . Luego
precisamos el nuevo tamao del LV o , si aadimos el prefijo +, el tamao adicional que
deseamos. Tambin se puede precisar, como ultimo argumento, el nombre del PV el cual
forzar la extensin del LV, esto ultimo solo sera posible si el PV tiene suficiente PE
disponibles.
A continuacin vamos a agregar 12GB al LV Datos1.
root@sugeek:/home/soporte# lvextend -L +12g /dev/vg01/Datos1
Extending logical volume Datos1 to 20,00 GiB
Logical volume Datos1 successfully resized

Ahora observamos como estn distribuidos los PE dentro del LV.


root@sugeek:/home/soporte# lvdisplay -vm /dev/vg01/Datos1
Using logical volume(s) on command line
--- Logical volume --LV Path
/dev/vg01/Datos1
LV Name
Datos1
VG Name
vg01
LV UUID
EuDz0x-N41X-jCWz-sWA0-DarY-85Xw-UUu2Dm
LV Write Access
read/write
LV Creation host, time debian, 2014-07-14 22:27:57 -0500
LV Status
available
# open
1
LV Size
20,00 GiB
Current LE
5119
Segments
2
Allocation
inherit
Read ahead sectors
auto
- currently set to
256
Block device
254:1
--- Segments --Logical extent 0 to 2046:
150
www.sugeek.co

Type
linear
Physical volume
/dev/sdg1
Physical extents
0 to 2046
Logical extent 2047 to 5118:
Type
linear
Physical volume
/dev/md126p1
Physical extents
0 to 3071

Con el comando vgdisplay notaremos como el Free PE se ha reducido y el AllocPE a


aumentado.
root@sugeek:/home/soporte# vgdisplay vg01
--- Volume group --VG Name
vg01
System ID
Format
lvm2
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

Ahora lo que queda es asociar dicho incremento a nuestra Particin ya que aun no se a
agregado dicho aumento.
root@sugeek:/home/soporte# df -h /home/LVM
S.ficheros
Tamao Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1
7,9G
146M 7,4G
2% /home/LVM

Para ello utilizamos el comando resize2fs el cual permite reducir y aumentar un sistema
de archivos. El primer argumento es el sistema de archivos, el segundo se indica el
tamao con un sufijo como lo podra ser K (KB), M (MB), G (GB). Si el sufijo, se indica el
nmero de bloques del sistema de archivos. Si no se define un tamao, este de forma
automtica tomara el tamao total que este asociado al LV.
Se debe de tener en cuenta que para ampliar un LV se podr realizar en caliente, lo que
quiere decir que no necesitamos desmontar el LV, en cambio cuando se requiere reducir
el LV es necesario desmontarlo.
151
www.sugeek.co

root@sugeek:/home/soporte# df -h /home/LVM && df -h /home/LVM


S.ficheros
Tamao Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1
7,9G
146M 7,4G
2% /home/LVM
root@debian:/home/soporte# resize2fs /dev/vg01/Datos1
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/vg01/Datos1 is mounted on /home/LVM; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg01/Datos1 to 5241856 (4k) blocks.
The filesystem on /dev/vg01/Datos1 is now 5241856 blocks long.
S.ficheros
Tamao Usados
/dev/mapper/vg01-Datos1
20G
150M

Disp Uso% Montado en


19G
1% /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 8GB, para ello se recomienda seguir
los siguientes pasos.

Desmontar el sistema de Archivos a reducir


Comprobar el sistemas de archivos del LV que vamos a reducir con fsck
Reducir del LV lgico con resize2fs
Reducir el LV con el comando lvreduce

root@sugeek:/home/soporte# umount /home/LVM/ && fsck -f /dev/vg01/Datos1


fsck de util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
Paso 1: Verificando nodos-i, bloques y tamaos
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de informacin de grupos
/dev/mapper/vg01-Datos1: 11/1310720 files (0.0% non-contiguous), 120657/5241856
blocks

Ya lo hemos desmontado y comprobado, ahora sigue el turno de resize2fs.


root@sugeek:/home/soporte# resize2fs /dev/vg01/Datos1 10G
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/vg01/Datos1 to 2621440 (4k) blocks.
The filesystem on /dev/vg01/Datos1 is now 2621440 blocks long.

Y ahora a reducir el LV con lvreduce , debemos de tener cuidado, si colocamos un valor


diferente al cual va a quedar el LV puede destruir los datos, en este no se puede definir el
PV como con lvextend. A la pregunta que arroja le respondemos que si (y), por ultimo
montamos nuevamente el sistema de archivo y verificamos si efectivamente quedo en
10GB.

152
www.sugeek.co

root@sugeek:/# lvreduce -L 8G /dev/vg01/Datos1


WARNING: Reducing active logical volume to 8,00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce Datos1? [y/n]: y
Reducing logical volume Datos1 to 8,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
Tamao Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1
8G
146M 7,8G
2% /home/LVM

Mover el contenido de un PV a otro PV


En entornos empresariales (Cuando no se tiene una infraestructura de almacenamiento y
crecimiento bien planteada) es comn ver como se hace necesario cambiar un disco duro
por otro cumpliendo la necesidad de aumentar su tamao. En estos casos se puede
mover el contenido de un PV a otro, incluso varios PE de un LV a otro PV, o tambin
determinados PE especficos. Sin precisar nada como destino, el LVM va a mover todos
los PE del PV (Lo mas comn), 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.
El comando pvmove permite mover los PE de un PV hacia otro. Se trata, de desplazar el
contenido del PV /dev/sdg1 hacia /dev/md126p1.
Nota: Para simular un contenido de 7GB dentro del LV hemos usado el comando dd
if=/dev/zero of=/home/LVM bs=1024 count=7000000
A continuacin verificamos cuanto espacio libre tiene el PV /dev/md126p1 (Free PE) y
cuanto espacio ocupado tiene el PV /dev/sdg1 (Allocated PE), veremos que el PV
/dev/sdg1 tiene todos llenos.
root@sugeek:/home/soporte# pvdisplay -m /dev/md126p1
--- Physical volume --PV Name
/dev/md126p1
VG Name
vg01
PV Size
15,99 GiB / not usable 4,00 MiB
Allocatable
yes
PE Size
4,00 MiB
Total PE
4092
Free PE
4091
Allocated PE
1
PV UUID
QHZC0o-VUuC-jlwG-QOUl-Wb6B-VC7t-HXc3TL
--- Physical Segments --Physical extent 0 to 0:
Logical volume
/dev/vg01/Datos1
Logical extents
2047 to 2047
Physical extent 1 to 4091:
FREE
153
www.sugeek.co

root@sugeek:/home/soporte# pvdisplay -m /dev/sdg1


--- Physical volume --PV Name
/dev/sdg1
VG Name
vg01
PV Size
8,00 GiB / not usable 3,00 MiB
Allocatable
yes (but full)
PE Size
4,00 MiB
Total PE
2047
Free PE
0
Allocated PE
2047
PV UUID
HdJgWX-K1ZY-Ec30-OTLB-aNkz-YEhy-ARhFey
--- Physical Segments --Physical extent 0 to 2046:
Logical volume
/dev/vg01/Datos1
Logical extents
0 to 2046

Vemos que el PV /dev/md126p1 tiene suficiente espacio para soportar el contenido del PV
/dev/sdg1, procederemos a mover su contenido.
root@sugeek:/home/soporte# pvmove -v /dev/sdg1 /dev/md126p1
Executing: /sbin/modprobe dm-mirror
Finding volume group "vg01"
Archiving volume group "vg01" metadata (seqno 8).
Creating logical volume pvmove0
Moving 2047 extents of logical volume vg01/Datos1
Found volume group "vg01"
activation/volume_list configuration setting not defined: Checking only host
tags for vg01/Datos1
Updating volume group metadata
Found volume group "vg01"
Found volume group "vg01"
Creating vg01-pvmove0
Loading vg01-pvmove0 table (254:4)
Loading vg01-Datos1 table (254:1)
Suspending vg01-Datos1 (254:1) with device flush
Suspending vg01-pvmove0 (254:4) with device flush
Found volume group "vg01"
activation/volume_list configuration setting not defined: Checking only host
tags for vg01/pvmove0
Resuming vg01-pvmove0 (254:4)
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)
154
www.sugeek.co

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).

Ahora comprobamos el VG y verificamos que el PV /dev/sdg1 ya tiene todos sus PE


Libres, en cambio el PV /dev/md126p1 se ha ocupado (Allocated PE).
root@sugeek:/home/soporte# pvdisplay -m /dev/m126p1 && pvdisplay -m /dev/sdg1
--- Physical volume --PV Name
/dev/sdg1
VG Name
vg01
PV Size
8,00 GiB / not usable 3,00 MiB
Allocatable
yes
PE Size
4,00 MiB
Total PE
2047
Free PE
2047
Allocated PE
0
PV UUID
HdJgWX-K1ZY-Ec30-OTLB-aNkz-YEhy-ARhFey
--- Physical volume --PV Name
/dev/md126p1
VG Name
vg01
PV Size
15,99 GiB / not usable 4,00 MiB
Allocatable
yes
PE Size
4,00 MiB
Total PE
4092
Free PE
2044
Allocated PE
2048
PV UUID
QHZC0o-VuuC-jlwG-QOUl-Wb6B-VC7t-HXc3TL

Ya el PV sdg1 podemos quitarlo del VG. Con la opcin -a quitaremos los PV que no estn
siendo usados.
root@sugeek:/home/soporte# vgreduce -a vg01
Removed "/dev/sdg1" from volume group "vg01"
Physical volume "/dev/md126p1" still in use

Ahora nos queda indicarle al LV nuevo tamao del PV, asignrselo (Indicando el total de
PE Libres que son 2044) y comprobar que efectivamente se aplico con df.
root@sugeek:/home/soporte# lvextend -r -l +2044 /dev/vg01/Datos1 && df -h /home/LVM
155
www.sugeek.co

Extending logical volume Datos1 to 15,98 GiB


Logical volume Datos1 successfully resized
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/mapper/vg01-Datos1 is mounted on /home/LVM; on-line resizing
required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg01-Datos1 to 4190208 (4k) blocks.
The filesystem on /dev/mapper/vg01-Datos1 is now 4190208 blocks long.
S.ficheros
Tamao Usados Disp Uso% Montado en
/dev/mapper/vg01-Datos1
16G
6,9G 8,2G 46% /home/LVM

Como vemos el tamao del LV es el tamao de mi PV, adems utiliza el mismo tamao
que usaba el antiguo de 6,9G y sus correspondientes archivos.

Suprimir un VG
Para poder suprimir de forma adecuada un LVM de nuestro sistema es necesario seguir la
siguiente estructura.

Desmontar por completo los LV que tengamos


Suprimir todos los LV con lvremove
Retirar todos los los PV de los VG con lvreduce
Destruir el VG con vgremove
Suprimir el PV con pvremove

Siguiendo las instrucciones anteriores:


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

El siguiente comando quitara todos los PV posibles, recordemos que LVM siempre deja un
PV asociado a un VG. Por ende aparecer un error de que no se puede quitar 1 PV del VG,
no nos preocupemos, esto es normal.
root@sugeek:/home# vgreduce -a vg01
Can't remove final physical volume "/dev/md126p1" from volume group "vg01"

Procederemos a quitar el VG y luego eliminaremos el PV.


root@sugeek:/home# vgremove vg01 && vgdisplay -v vg01
Volume group "vg01" successfully removed
Volume group "vg01" not found
root@sugeek:/home# pvremove /dev/md126p1 /dev/sdg1
Labels on physical volume "/dev/md126p1" successfully wiped
Labels on physical volume "/dev/sdg1" successfully wiped

Existen otros comandos que no vimos, dichos comandos son:

156
www.sugeek.co

pvchange: Modifica el estado de un PV, por ejemplo para prohibir la asignacin


de extensiones fsicas en este volumen.
Pvresize: Vuelve a dimensionar un PV si su particin o disco de origen ha sido
ampliado o reducido, comn con los RAID por software.
Pvscan: Busca todos los volmenes presentes en todos los soportes de
almacenamiento del sistema.
Vgchange: Modifica los atributos de un VG, para activarlo o desactivarlo por
ejemplo, pero tambin para modificar sus valores mximos del PV y de PE, o para
prohibir su ampliacin o reduccin.
Vgscan: Busca todos los grupos de volmenes en todos los soportes.
Vgrename: Renombra un VG
vgmerge: Ensambla 2 VG en uno solo
lvresize: Vuelve a dimensionar un LV, es equivalente a lvextend y lvreduce
lvchange: Modifica los atributos del LV
lvrename: Renombra un LV

157
www.sugeek.co

ADMINISTRACIN DE RED
Al principio vimos algunos comandos para el diagnostico de la red, como netstat, as
que en esta ocasin vamos a profundizar un poco mas sobre estos.

Nota: No se configurara ninguna interfaz wifi


Los archivos que afectan la red son:

Archivo /etc/network/interfaces
Aca encontramos la configuracin de las interfaces de red de nuestro sistema. Dicho
archivo debe de contener las interfaces de red del sistema (Este archivo no afecta si
estamos usando GUI) de la siguiente manera:
auto lo
iface lo inet loopback
#Direccionamiento Estatico
auto eth0
iface eth0 inet static
address DireccionIP
network DirecciondeRed
gateway Ipdelrouter
netmask mascaradered
broadcast direcciondebroadcast
#Direccionamiento Dinamico
auto eth1
iface eth1 inet dhcp

Adems de lo anterior el archivo puede contener informacin como los servidores DNS
aunque se recomienda configurarlos en resolv.conf

Archivo /etc/protocols
El archivo contiene la lista de los protocolos conocidos por Linux

Archivo /etc/resolv.conf
Encontramos los servidores DNS
#DNS de OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

158
www.sugeek.co

Archivo /etc/hosts
Archivo encargado de asociar IP con nombres de dominio, primero consulta este archivo y
luego el archivo resolv.conf
127.0.0.1
127.0.1.1

localhost
sugeek

En el archivo /etc/hostname podemos configurar el nombre de nuestro sistema.

Comando ifconfig
Por si solo muestra informacin de las interfaces activas del sistema
-a Con la opcin a mostrara todas las interfaces sin importar si estan o no
activas
up Activa una interfaz de red
ifconfig eth0 up

down Desactiva una interfaz de red


ifconfig eth0 down

Establecer una direccin IP


ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255

Establecer interfaz virtual


ifconfig eth0:1 192.168.1.2/24

Comando ip
addr Muestra la informacin de las interfaces
root@sugeek:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: 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
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state DORMANT qlen 1000
159
www.sugeek.co

link/ether 00:25:56:3d:ef:d6 brd ff:ff:ff:ff:ff:ff


inet6 fe80::225:56ff:fe3d:efd6/64 scope link
valid_lft forever preferred_lft forever

link Muestra la informacin sobre el estado del enlace


root@sugeek:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: 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
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state DORMANT mode DORMANT qlen 1000
link/ether 00:25:56:3d:ef:d6 brd ff:ff:ff:ff:ff:ff

Habilitar una interfaz de red


ip link set eth0 up

Deshabilitar una interfaz de red


ip link set eth0 up

Establecer una direccin ip


ip addr add 192.168.0.2/24 broadcast 192.168.0.255 dev eth0

Eliminar una direccin IP


ip addr del 192.168.0.77/24 dev eth0

Establecer una interfaz virtual


ip addr add 192.168.1.2/24 dev eth0 label eth0:1

route Muestra la tabla de las rutas creadas en el sistema, adems permite crear
nuevas rutas estticas.
ip route add 192.168.3.0/24 dev eth0

Tambin permite establecer la ruta predeterminada o gateway


ip route add default via 192.168.1.254

Comando route
Por si solo visualiza las rutas que tiene creadas el sistema

160
www.sugeek.co

Tabla de rutas IP del ncleo


Destino
Pasarela
Genmask
Indic Mtric Ref
default
192.168.2.1
0.0.0.0
UG
0
0
link-local
*
255.255.0.0
U
1000
0
192.168.2.0
*
255.255.255.0
U
2
0

Uso Interfaz
0 wlan0
0 wlan0
0 wlan0

Ruta hacia una IP por la interfaz de red eth1


route add 192.168.252.3.4 eth1

Ruta hacia una red por el dispositivo eth1


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
route add default gw 192.168.2.1

Comando whois
Este comando permite obtener informacin sobre un dominio especificado, as podremos
saber quien fuel el que lo registro, cuanto tiempo ha estado registrado, cuando fue la
ultima renovacin, cuando se vence, y un largo etc. A continuacin un ejemplo con el
dominio de kernel.org, el resultado esta truncado ya que es extensa la salida.
root@sugeek:~# whois kernel.org
Domain Name:KERNEL.ORG
Domain ID: D169413-LROR
Creation Date: 1997-03-07T05:00:00Z
Updated Date: 2014-01-10T15:48:30Z
Registry Expiry Date: 2017-03-08T05:00:00Z
Sponsoring Registrar:Gandi SAS (R42-LROR)
Sponsoring Registrar IANA ID: 81
...

Comando mtr
Permite ver en tiempo real los paquetes enviados de un host origen a un host de destino,
permitiendo ver en que sitios se presentan perdidas de paquetes.

161
www.sugeek.co

En el ejemplo anterior vemos que presentamos perdidas en las IP's 172.17.0.85, ya con
esta informacin podremos informar a nuestro ISP de posibles fallas.

Comando arp
Verifica el estado de las tablas arp de mi 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.

Comando ping
Permite corroborar si un host es alcanzable
root@sugeek:~# ping sugeek.co
PING sugeek.co (184.107.53.15) 56(84) bytes of data.
64 bytes from 184.107.53.15: icmp_req=1 ttl=51 time=110 ms
64 bytes from 184.107.53.15: icmp_req=2 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=3 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=4 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=5 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=6 ttl=51 time=111 ms
64 bytes from 184.107.53.15: icmp_req=7 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=8 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=9 ttl=51 time=107 ms
64 bytes from 184.107.53.15: icmp_req=10 ttl=51 time=121 ms
162
www.sugeek.co

64 bytes from 184.107.53.15: icmp_req=11 ttl=51 time=110 ms

Si tenemos varias interfaces, con la opcin -I me permite identificar la interfaz de red.

Comando traceroute
A diferencia de mtr solo enva un paquete, de resto hace exactamente lo mismo que mtr,
enviar un paquete para verificar los saltos desde un host origen a un host destino.
root@sugeek:~# traceroute -n sugeek.co
traceroute to sugeek.co (184.107.53.15), 30 hops max, 60 byte packets
1 192.168.252.1 3.628 ms 3.615 ms 3.597 ms
2 192.168.252.2 2.796 ms 2.802 ms 2.794 ms
3 200.25.225.17 7.471 ms 7.481 ms 7.467 ms
4 172.16.1.33 7.702 ms 8.041 ms 8.008 ms
5 190.60.196.169 8.726 ms 8.696 ms 8.656 ms
6 * * *
7 63.218.113.93 44.370 ms 43.962 ms 43.953 ms
8 63.218.22.142 74.414 ms 71.095 ms 71.469 ms
9 154.54.12.121 88.984 ms 88.523 ms 88.903 ms
10 154.54.6.53 88.866 ms 154.54.7.45 88.664 ms 88.655 ms
11 154.54.2.113 100 ms 154.54.5.217 97.773 ms 154.54.46.217 97.485 ms
12 154.54.6.118 103.825 ms 154.54.6.86 105.326 ms 104.441 ms
13 154.54.42.6 104 ms 154.54.42.10 108.886 ms 154.54.27.182 108.888 ms
14 154.54.40.178 235.205 ms 235.231 ms 235.189 ms
15 154.54.45.114 288.758 ms 276.981 ms 241.295 ms
16 38.122.70.186 108 ms 38.122.70.182 106.771 ms 38.122.70.186 107 ms
17 67.205.127.121 107.546 ms 106.888 ms 108.981 ms
18 * * *
19 184.107.1.30 109.538 ms 109.199 ms 109.125 ms
20 184.107.53.15 109.273 ms 113.977 ms 113.972 ms

Comando nslookup
Obtiene la direccin ip de un dominio especificado
root@sugeek:~# nslookup sugeek.co
Server:
127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name:
sugeek.co
Address: 184.107.53.15

Comando dig
Similar a nslookup, pero a diferencia de este puedo cambiar el servidor dns, dig
@serverdns dominioaconsultar
root@sugeek:~# dig @8.8.8.8 sugeek.co
163
www.sugeek.co

; <<>> DiG 9.8.1-P1 <<>> @8.8.8.8 sugeek.co


; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5026
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;sugeek.co.
;; ANSWER SECTION:
sugeek.co.
;;
;;
;;
;;

IN

21182 IN

184.107.53.15

Query time: 94 msec


SERVER: 8.8.8.8#53(8.8.8.8)
WHEN: Mon Feb 24 22:24:42 2014
MSG SIZE rcvd: 43

Comando IPTraf
Este comando (Es posible instalarlo) nos permite visualizar en tiempo real la actividad de
la red mediante una herramienta de texto, opcionalmente interactiva. Las opciones mas
usadas son:

iptraf Ejecuta el programa grfico


-i Indica cual es la interfaz que va a ser monitorizada
-g Muestra estadsticas de forma generales
-d Muestra estadsticas detalladas de la interfaz seleccionada
-s Comiensa el monitor de trafico TCP y UDP
-L Especifica el archivo donde se guardara el log.

IPTraf Es un comando ideal para el anlisis de red de un servidor, as sabremos si se esta


comportando como debera de comportarse.

Archivo /etc/networks
En este archivo encontramos las redes que estn directamente conectadas a nuestro
sistema o asociadas a este.

164
www.sugeek.co

LOGS DEL SISTEMA


Ya habamos mencionado sobre el comando dmesg (Consulta el archivo
/var/log/dmesg ), last y lastb, pero no son los nicos que nos da informacin del
sistema acciones sobre este. Normalmente en GNU/Linux todos los servicios guardan
informacin del estado de su funcionamiento. Todos los logs del sistema y servicios se
guardan y deben de guardar (Por estndar) en /var/log . Los servicios encargados de
manejar los logs son rsyslog y logrotate.

Servicio rsyslog
Rsyslog es un servicio muy completo y complejo, pero a la ves interesante, podemos
encontrar mas informacin sobre este en http://www.rsyslog.com/, ya que en este
apartado se tocaran temas muy superficiales.
Rsyslog esta en la capacidad de manejar mas de un milln de mensajes por segundo en
un sistema local, de mltiples servicios o de reglas creadas por el usuario
Si viene de syslogd (Versiones antes de Debian 7) notara que este servicio ya no esta, y
rsyslog lo ha remplazado, su configuracin lo podemos encontrar en /etc/rsyslog.conf
y el directorio de archivos por servicio lo encontramos en /etc/rsyslog.d/ .
Rsyslog es compatible con diferentes tipos de configuracin y adems de ello se entiende
por comentario las lineas que comiencen con numeral # o estn dentro de /* */

sysklogd Este es el tipo mas sencillo, muy til para casos de uso sencillos.
RainerScript Esta es la mejor opcin para implementar ya que soporta las
caractersticas avanzadas de crear reglas mediante estructuras complejas

sysklogd
Proveniente de syslogd es lo mas simple de utilizar para nuestros servicios, un ejemplo
simple es:
mail.info /var/log/mail.log
mail.err @server.example.net
Lo anterior indica que el servicio de mail, cuando genere cualquier informacin lo envi
a /var/log/mail.log pero si se presenta un error lo envi al servidor indicado. Podramos
crear nuestros propios logs utilizando los recursos de usuario, los cuales van desde
local0 hasta el local7.
local1.err /var/log/mylog
Los distintos recursos son:

165
www.sugeek.co

0 (Kernel kern) Mensajes del kernel


1 (Usuario user) Mensajes del nivel de usuario
2 (Mail mail) Sistema de correo
3 (Demonio daemon) Demonios de sistema
4 (Autenticacion auth) Seguridad/Autorizacin
5 (Syslog syslog) Mensajes generados internamente por syslogd
6 (Impresion lpr) Subsistema de impresin
7 (Noticias news) Subsistema de noticias sobre la red
8 (uucp) Subsistema UUCP
9 Demonio de reloj
10 (Autorizacion authpriv) Seguridad/Autorizacin
11 (FTP - ftp) Demonio de FTP
12 Subsistema de NTP
13 Inspeccin del registro
14 Alerta sobre el registro
15 (clock) Demonio de reloj
16 (local0) Uso local 0
17 (local1) Uso local 1
18 (local2) Uso local 2
19 (local3) Uso local 3
20 (local4) Uso local 4
21 (local5) Uso local 5
22 (local6) Uso local 6
23 (local7) Uso local 7

Los distintos niveles de severidad son:

0
1
2
3
4
5
6
7

(Emergencia - panic) El sistema est inutilizable


(Alerta - alert) Se debe actuar inmediatamente
(Crtico - crit) Condiciones crticas
(Error - err) Condiciones de error
(Peligro - warn) Condiciones de peligro
(Aviso - notice) Pero condiciones notables
(Informacin - info) Mensajes informativos
(Depuracin - debug) Mensajes de bajo nivel

Para poder calcular la prioridad de un servicio se toma la siguiente formula:


Prioridad=Recurso*8+Severidad
Segn lo anterior podramos tomar como ejemplo el kernel, el cual tiene un recurso de 0
y de una severidad de 0, tendramos como resultado 0*8+0=0, y nos lleva a la conclusin
de que a menor valor mayor prioridad.

166
www.sugeek.co

RainerScript
Es el lenguaje por defecto de rsyslog y el recomendado a utilizar cuando poseemos
mayores conocimientos sobre este, este lenguaje se asemeja al lenguaje utilizado en la
creacin de script de Bash.
El lenguaje soporta expresiones complejas arbitrarias. Todos los operadores habituales
son compatibles. La precedencia de las operaciones es el siguiente:

Expresiones entre parntesis


Not
*, /,% (Mdulo, como en C)
+, -, & (concatenacin de cadenas)
==,! =, <>, <,>, <=,> =, Contiene (cadenas!)
and
or

El siguiente ejemplo fusiona las funciones de rsyslog para obtener informacin sobre
cierto programa que en esta ocasin sera el NetworkManager.
If ($programname == 'NetworkManager') or ($programname startWith 'nm-')
then -/var/log/NetworkManager & ~

Servicio logrotate
La funcin de logrotate es evitar que los archivos de logs superen cierto tamao y se
vuelvan inmanejables, realizando actividades como compresin de logs, rotacin de logs
(Permitir solo hasta cierto tamao, cuando se supera el tamao crea un archivo de forma
automtica), eliminacin y envo de logs a mails.
Se podra planificar la rotacin de los logs de forma diaria, semanal, mensual, o cuando
llegue a cierto tamao.
Normalmente logrotate corre diariamente con un trabajo de crontab.
Para poder ejecutar logrotate sin necesidad de esperar se ejecuta el comando logrotate
-f (para forzar la ejecucin ya que si se ejecuta solo el comando, este validara si ya se
ejecuto y si fue as no realiza ninguna accin).
El archivo de configuracin se podr encontrar en /etc/logrotate.conf y
/etc/logrotate.d/ all se encuentra la configuracin para cada uno de los logs que se
encuentran dentro de /var/log normalmente los nuevos servicios escriben all sus lineas
para su rotacin de logs.
compress
/var/log/messages {
167
www.sugeek.co

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`
endscript
nocompress
}

Las primeras lineas sin Encapsular (Dentro de ningn corchete o llaves) son las
opciones globales, despus van las reglas hacia cada uno de los archivos, carpetas (se
podr notar en la carpeta /var/log/news como se usa un comodn para hacer nfasis en
todos los archivos contenidos en esta.)
Tomando como ejemplo el /var/log/messages en donde indica que va a rotar los logs
durante 5 semanas, pero antes se comprimir (en gzip) el antiguo log (opcin global
compress ) y se ejecutara el comando indicado luego de hacer la rotacin, en el ejemplo
de httpd rota 5 veces cuando llegue a los 100k de tamao y sera enviado al mail
www@my.org. En el ultimo ejemplo adems de hacer 2 rotaciones mensuales se crea un
olddir o directorio donde se guardaran los antiguos logs comprimidos. (No es posible
crear un archivo log en una carpeta que no exista, logrotate no esta en la capacidad de
crear carpetas)
Algunas de las opciones que se podrn incluir en este archivo son:

compress Antiguas versiones de los logs son comprimidas


copy Crea una copia del log generado, ideal para realizar backups de los logs o
cuando estos son consultados por otras aplicaciones, y se quiere evitar al mximo
la interaccin con el log original.
Monthly Se guarda el log cada mes
weekly Se guarda el log cada semana
168
www.sugeek.co

postrotate/endscript Las lineas dentro de postrotate y endscript, ejecutan un


comando indicado despus que se hace la rotacin de logs, no siempre es
necesario ejecutar un comando.
rotate Cantidad de antiguas versiones que se mantienen antes de ser
eliminadas.
Size Tamao del archivo que se tiene en cuenta para poder realizar la rotacin
del log, podramos definir tamaos con M y k. (10M para 10 Megabytes o 10k para
10 Kilobytes)
Create Crea el nuevo archivo log para que el sistema siga escribiendo.

Probando los logs locales


Para probar nuestro sistema de forma local, vamos a simular un error en una aplicacin
de correo. Los logs no se escriben a mano sino a travs de la orden logger. La sintaxis
la puedes consultar con:
root@sugeek:~# logger -p mail.err "Esto es una prueba"

La opcin -p (prioridad) imprime el mensaje Esto es una prueba en el log llamado


mail.err
Si verificamos el log de los errores de mail notaremos listo log registrado.
root@sugeek:~# cat /var/log/mail.err
May 13 21:47:55 debian root: Esto es una Prueba

El Debian y root son la maquina que genero el log, y root el usuario.

Archivo /var/log/messages
En este archivo se guardan la mayora de mensajes que arrojan los servicios del sistema
(se puede cambiar el archivo log segn la configuracin de cada servicio).

169
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, adems de la herramienta
anacron la cual no veremos en esta ocasin ya que esta herramienta se enfoca para
computadores de escritorio.
Nota: Se requiere conocimientos bsicos en BASH
planificadas

para poder realizar tareas

Archivo /etc/crontab
En este archivo se encuentra la configuracin 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 h dom mon dow user
17 * * * * root cd / &&
25 6 * * * root test -x
/etc/cron.daily )
47 6 * * 7 root test -x
/etc/cron.weekly )
52 6 1 * * root test -x
/etc/cron.monthly )
#

command
run-parts --report /etc/cron.hourly
/usr/sbin/anacron || ( cd / && run-parts --report
/usr/sbin/anacron || ( cd / && run-parts --report
/usr/sbin/anacron || ( cd / && run-parts --report

Como ven, el archivo ya viene con unas reglas apuntando a los directorios
/etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly
y /etc/cron.monthly. Los
cuales contienen los scripts que se deseen ejecutar cada cierto tiempo.
El archivo de configuracin de crond posee 7 columnas separadas por espacios,

m Minutos
h Horas
dom Dia del Mes (Day of Month)
mon Mes (Month)
dow Dia de la Semana (Day of Week) 0-6 (0 Es domingo y 6 es el Sbado)
user Usuario que ejecuta el comando
command Comando a ejecutar o script

Tomando como
interpretarlo:

ejemplo

la primera

linea de

nuestro archivo,

17 * * * * root cd / && run-parts --report /etc/cron.hourly

170
www.sugeek.co

procederemos a

La anterior linea indica

17 Cada hora a los 17 Mins


* Todas las Horas
* Todos los Dias
* Todos los meses
* Todos los dias de la Semana
root Con el Usuario Root
cd / && run-parts --report /etc/cron.hourly Ejecutar este comando

Si deseamos que se ejecute cada ciertos meses, en el apartado del mes, definimos el
numero del mes separados por comas. 1,2,5,7,10 Para Enero Febrero Mayo Julio y
Octubre.
Como se puede observar, existen ciertos operadores.

El asterisco (*) Este operador abarca a todos los valores posibles en un


campo. Por ejemplo, un asterisco en el campo de hora, ser equivalente a cada
hora; o, un asterisco en el campo mes ser equivalente a cada uno de los meses.

La coma (,) Este operador especifica una lista de valores, por ejemplo:
"1,5,10,15,20, 25".

El guin (-) Este operador especifica una serie de valores, por ejemplo: ""5-15"
das, lo que equivale a escribir "5,6,7,8,9, ... ,13,14,15" usando el operador coma.

Pero aparte de usar operadores tambin podemos utilizar abreviaciones:

@reboot Ejecutar una vez, en el inicio.


@yearly Ejecutar una vez al ao, es igual que indicar "0 0 1 1 *".
@annually (igual que @yearly)
@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 da, 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 ultimo se
guardan las tareas planificadas del usuario). Algunas opciones este comando son:

u Indica el usuario
l Lista la tareas del usuario indicado
171
www.sugeek.co

e Edita las tareas planificadas del usuario


r Elimina los crontabs del usuario indicado

Comando at
Este comando a diferencia del crontab (Tambin posee at.allow y at.deny dentro de etc)
solo me permite ejecutar una vez 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

Como se podr observar hemos definido que at ejecute a la 19:58 y luego me solicita el
comando a ejecutar, despus de escribir el comando terminamos la tarea con [Ctrl] +
[D].
Cada tarea planificada se guardara en /var/spool/atjobs
Para indicar un script solo basta con la opcin -f y la ruta del script.
root@sugeek:/etc# at -f /home/ruta/del/script 20:00

Adems de ello podemos indicar que se ejecuten en n dias a x hora.


root@sugeek:/etc# at -f /home/ruta/del/script 20:00 + 2 days

Lo anterior es una buena idea si tenemos que hacer algo y no nos encontramos en sitio,
as que lo planificamos una sola vez.
Para saber que tareas tenemos planificadas con at procedemos a usar el comando atq y
para borrar una tarea planificada usamos atrm n (n indica el numero de la tarea).

172
www.sugeek.co

SEGURIDAD EN GNU/LINUX
Aunque los sistemas GNU/Linux es uno de los mas robustos en cuanto a seguridad se
refiere, una mala configuracin o administracin podra afectar notablemente la
integridad de la informacin 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 conexin local, solo basta con
eliminar o comentar las TTY que no deseemos conexin, se recomienda dejar 3 por lo
mnimo.

Rootkits
Un RootKit como se podra deducir de su nombre, permite suplantar cierto comando para
poder obtener credenciales de root y as darle permisos al atacante de cometer sus
fechoras.
Un ejemplo de rootkit es el siguiente:
soporte@debian:~$ pwd
/home/soporte
soporte@debian:~$ cat su
#!/bin/bash
echo -e "Contrasea: \c"
read -s password
echo "$@ $password" > /tmp/fic
echo
echo "su: Fallo de Autenticacin"
/bin/su $@
soporte@debian:~$ chmod +x su
soporte@debian:~$ export PATH=$HOME:$PATH
soporte@debian:~$ su root
Contrasea: #Falso Su
su: Fallo de Autenticacin #Falso su
Contrasea: #Verdadero SU
root@debian:/home/soporte# cat /tmp/fic
root D3B14N

Como se puede observar se ha suplantado el comando su el cual es importante en el


sistema.
Existe la herramienta chkrootkit, la cual permite escanear y detectar los rootkits mas
conocidos. El uso es muy sencillo, el comando seguido de las opciones (opcionales). Se
instala con apt-get install chkrootkit.

173
www.sugeek.co

Virus
Se tiene que desmitificar el frase de que En GNU/Linux No existen virus, ya que 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, al cual accede con
el permiso del usuario (El usuario instala software sin saber que es), Pero aun as es difcil
que dicho virus afecte notablemente el sistema por el FSH (Sistema de Archivos).
Para mayor informacin sobre que es un virus no dude en visitar Wikipedia.
Pero si nuestro equipo o servidor, se conecta de forma constante a equipos de otras
plataformas como Windows, se recomienda tener instalado un antivirus, el motor de
antivirus para GNU/Linux se llama ClamAV, el cual se instala de la siguiente manera:

apt-get install clamav clamav-daemon


Clamav es el antivirus en si, el cual se debe de ejecutar en funcin de la necesidad, y el
clamav-daemon es el demonio que se mantiene ejecutando y verificar en Caliente los
archivos copiados.
La herramienta freshclam se encarga de actualizar la base de datos de clamav, se
puede actualizar de forma manual ejecutndolo, o de forma peridica configurando el
archivo /etc/clamav/fresclam.
Para la ejecucin manual del antivirus procederemos a realizar el siguiente comando:
root@suge3k:~#clamscan -r -v remove=yes /home/* --log=/var/log/logvirus

Entendamos el comando anterior, la opcin -r indica recursivo, la -v es verbose (Para


obtener mas informacin), la opcin remove=yes como indica elimina los archivos
infectados, luego la carpeta que se realiza el escaneo, y por ultimo el resultado de dicho
escaneo se guarda en el archivo indicado con log=/var/log/ogvirus
No esta de mas mencionar el uso del manual del comando con man clamscan.

Bloquear USB
En ocasiones es necesario bloquear ciertos dispositivos usb para evitar el robo de
informacin, o posibles infecciones.
Nota: 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 2 ultimas desarrolladas por Intel. Si se tiene xhci
en nuestro sistema las anteriores no son necesarias, ya que xhci soporta las antiguas
versiones de USB.
Para bloquear los puertos usb pero para dispositivos especficos debemos de conocer
174
www.sugeek.co

algunos mdulos integrados al usbcore , entre los cuales destacamos:

ohci_hcd Soporte a USB 1.0


uhci_hcd Soporte a USB 1.1
ehci_hcd Soporte a USB 2.0
usb_storage Soporte a dispositivos de almacenamiento
usbhid Soporte a dispositivos de interfaz humana (Teclados, Mouse, Gamepad,
etc)
snd-usb-audio Soporte para dispositivos de audio
usbvideo Soporte para dispositivos de vdeos
irda-usb Soporte para Infrarrojos USB
usbnet Soporte para tarjetas de red alambicas o inalmbricas

Suponiendo que deseamos bloquear los dispositivos de almacenamiento para que no


puedan extraer informacin de nuestros sistemas procedemos a bloquear el
usb_storage. Para ello solo escribimos lo siguiente:
root@sugeek:/#echo blacklist usb_storage > /etc/modprobe.d/usb_storage.conf &&
depmod -ae && update-initramfs -u

Ya con lo anterior hemos bloqueado el modulo usb_storage para evitar la fuga de


informacin.

Herramienta SUDO
El comando de sustitucin de usuario (substitute user do), o SUDO me permite ejecutar
ciertos comandos de y usuario con x usuario, Debian por defecto no viene instalado, lo
podemos instalar con el comando apt-get install sudo . No confundir con el comando
su.
El archivo de configuracin lo encontramos en /etc/sudoers , en distribuciones como
Ubuntu y derivadas de esta se recomienda deshabilitarlo ya que posee muchos permisos.
Los permisos de SUDO pueden ser por usuarios, grupos, y comandos.
El comando sudo al ejecutarse y al ser satisfactoria la conexin, de forma
predeterminada se genera una sesin abierta por 15 min. Las diferentes opciones que se
le pueden enviar a sudo son:

u Indica el usuario con el cual se va a ejecutar cierto comando, si no se


especifica de forma predeterminada, sudo toma como usuario al usuario root.
g Lo mismo que lo de los usuarios pero enfocado a un grupo.
k Invalida la sesin de sudo, esto quiere decir que los 15 min se cancelara y se
cerrara la sesin.
l Indica los permisos que tiene el usuario actual con sudo, se puede ayudar de -u
para especificar el usuario.
175
www.sugeek.co

Archivo /etc/sudoers
En este archivo se definen las reglas por defecto del comando sudo.
root@sugeek:~# cat /etc/sudoers
Defaults
env_reset
Defaults
mail_badpass
Defaults
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/b
in"
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL

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 define los permisos por
usuarios o por grupos.

user machine = (user2) comando

user El usuario o alias al cual se aplica la regla.


Los usuarios pueden ser:
Nombre de Usuario
#uid
%group
+netgroup
User_Alias
machine La maquina o alias en la cual se aplica la regla.
user2 La cuenta con la cual el usuario ejecutara el comando
comando Comando a ejecutar.

Un ejemplo seria:

user ALL = /sbin/fsck


Lo anterior indica que el usuario user desde cualquier maquina va a ejecutar el comando
fsck . Asi que para que el usuario user pueda ejecutar el comando fsck (Comando que
solo ejecuta root) debe de ejecutar sudo fsck.
Lo dems que podemos hacer es (A los grupos se le definen como alias):

Crear grupos de usuarios


Crear grupos de maquinas
Crear grupos de comandos
Forzar el uso o no de una contrasea
Forzar la ejecucin de un comando bajo un usuario distinto a root.

A continuacin veremos un archivo /etc/sudoers Modificado a medida (Se recomienda


176
www.sugeek.co

ver el manual de sudoers con man sudoers ya que contiene informacin muy especifica
y muy bien explicada).
#OPCIONES Se puede ver todas en SUDOERS OPTIONS utilizando el manualmente
Defaults
env_reset,timestamp_timeout=5,passwd_timeout=1, passwd_tries=1,insults
#ALIAS (Grupo de Usuarios)
User_Alias ADMINS
= admin1,admin2
User_Alias TECNICOS
= tecnico1,tecnico2
#ALIAS (Comandos)
Cmnd_Alias ADMIN
Cmnd_Alias TECNI

=/sbin/,/usr/sbin/,/usr/local/sbin/
=/sbin/ifconfig,/sbin/fsck

#REGLAS (ACL)
#Usuario root y grupo sudo continan con sus reglas
root ALL=(ALL) ALL
#A los administradores no se les solicita password prohibiendo el apagado
ADMINS
ALL = NOPASSWD: ADMIN,!/sbin/shutdown
TECNICOS
ALL = TECNI

Autenticacin PAM
PAM (Pluggable Authentication Modules) es un mecanismo flexible para la autenticacin
de usuarios centralizado. Permite modelar polticas de seguridad personalizada
dependiendo el servicio para distintos usuarios. Asi que con este mecanismo GNU/Linux
se puede autenticar un usuario utilizando una cuenta de sistema, en un LDAP, en un
Active Directory, con una llave USB, Biomtrico, y con horarios preestablecidos.
Para entender un poco mas de este mecanismo se recomienda tener esta lectura: Usando
PAM (Ingles)

Limites del Usuario


El comando ulimit permite actuar en el entorno del shell y de los procesos que controla,
con la opcin -a muestra las opciones controladas por este.
root@debian:/var/Kernel# ulimit -a
core file size
(blocks, -c)
data seg size
(kbytes, -d)
scheduling priority
(-e)
file size
(blocks, -f)
pending signals
(-i)
max locked memory
(kbytes, -l)
max memory size
(kbytes, -m)
open files
(-n)
pipe size
(512 bytes, -p)
POSIX message queues
(bytes, -q)
real-time priority
(-r)

0
unlimited
0
unlimited
7534
64
unlimited
1024
8
819200
0
177
www.sugeek.co

stack size
cpu time
max user processes
virtual memory
file locks

(kbytes, -s) 8192


(seconds, -t) unlimited
(-u) 7534
(kbytes, -v) unlimited
(-x) unlimited

Los valores que nos interesa en este momento son:

max memory size El tamao mximo de RAM que puede usar un usuario
open files El numero mximo de archivos que se puede abrir por usuario.
max users processes Numero mximo de procesos que puede iniciar un
usuario.

Estos valores pueden ser cambiados editando el archivo /etc/security/limits.conf con


el usuario root. Al abrir el archivo notaremos una gua muy fcil para editar los limites
tanto suaves (soft) y duros (hard), y veremos que podemos colocar dichos limites tanto
por usuario como por grupos.

Proteger el GRUB2 con contraseas


Es poco probable que nuestro sistema caiga en manos de una persona que sepa realizar
la actividad que vimos al inicio del libro, la cual consista en recuperar el password de
root y tenga acceso al servidor, por ello tambin se recomienda asegurar nuestro GRUB2
con password (Aunque GRUB2 me permite crear usuarios y grupos con roles distintos no
los configuraremos, solo veremos la contrasea).
Para establecer password de GRUB2 se utiliza la herramienta grub-mkpasswd-pbkdf2
root@sugeek:/# grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
Your PBKDF2 is
grub.pbkdf2.sha512.10000.D29EE80C313168F16E637F3D5B579AA5F08C40B594971B01D9E8B8DE39
CB78F664CB8ABE5605B00878E34ECCD326FA848CD201ACDD24EBC4E25F0259C1D63D2E.F840FED5C672
E80C5F50BA46289AB5C45B9B444B34B0A33D3

Dicho password generado se copiara en el archivo /etc/grub.d/40_custom quedando


dicho archivo de la siguiente manera
#!/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.D29EE80C313168F16E637F3D5B579AA5F08C40B594971B01D9E8B8DE39
CB78F664CB8ABE5605B00878E34ECCD326FA848CD201ACDD24EBC4E25F0259C1D63D2E.F840FED5C672

178
www.sugeek.co

E80C5F50BA46289AB5C45B9B444B34B0A33D3

Ya con lo anterior solo se requiere recargar el grub con update-grub y la prxima vez
que inicie el sistema y queramos modificar el grub nos solicitara el password que
establecimos.

179
www.sugeek.co

BIBLIOGRAFA
Parte del contenido de esta obra se sustrajo de:

Wikipedia (https://www.wikipedia.org)
Documentacin de Debian (https://www.debian.org/doc/)
Debian-Administration (https://www.debian-administration.org/)
Debian Handbook (http://debian-handbook.info/)

180
www.sugeek.co

S-ar putea să vă placă și