Contenido
Gua de Estudio..................................................................................................................................1
Captulo 1. Prlogo...........................................................................................................................23
1.1 Introduccin...........................................................................................................................24
1.2 Relacion con LFS101x2...........................................................................................................24
1.3
La Documentacin............................................................................................................27
1.6
Plataforma de trabajo.......................................................................................................28
1.7
1.10
1.13
Cer/.caciones..................................................................................................................34
Laboratorio 1.1.............................................................................................................................35
Captulo 2. Inicio y Apagado del Sistema..........................................................................................37
Obje/vos de aprendizaje..............................................................................................................37
2.1 Comprendiendo la secuencia de inicio...................................................................................38
2.2 Bios.........................................................................................................................................39
2.3 Gestores de arranque.............................................................................................................39
2.4 Archivos de Con.guracion en /etc..........................................................................................40
2.5 /etc/syscon.g.........................................................................................................................40
2.6 /etc/default............................................................................................................................41
2.7 Apagado y Reinicio.................................................................................................................42
Comprobacin de conocimientos 2.1...........................................................................................43
2.8 Laboratorio 2.1.......................................................................................................................44
Obje/vos de aprendizaje (revisin)..............................................................................................44
Captulo 3. GRUB..............................................................................................................................45
LFS201: Fundamentos de Administracin de Sistemas Linux
Obje/vos de aprendizaje..............................................................................................................45
3.1 Que es GRUB?........................................................................................................................46
3.2 Selecciones Interac/vas con GRUB en el arranque.................................................................47
3.3 Instalacin de GRUB...............................................................................................................48
3.4 Nomenclatura de disposi/vos de GRUB.................................................................................49
3.5 Personalizando el archivo de con.guracin GRUB.................................................................50
Comprobacin de conocimientos 3.1...........................................................................................52
3.6 Laboratorio 3.1.......................................................................................................................53
Obje/vos de aprendizaje (revision)..............................................................................................54
Captulo 4. init: SystemV, Upstart, Systemd......................................................................................55
Obje/vos de Aprendizaje.............................................................................................................55
4.1 Proceso init.............................................................................................................................56
4.2 Alterna/vas de arranque........................................................................................................57
4.3 Niveles de ejecucin de SysVinit.............................................................................................57
4.4 SysVinit y /etc/ini@ab.............................................................................................................59
4.5 Scripts de inicio de SysVinit....................................................................................................59
4.6 chkcon.g................................................................................................................................61
4.7 .a. service...............................................................................................................................62
4.7 .b. service...............................................................................................................................63
4.8 chkcon.g service en sistemas basados en debian..................................................................63
4.9 Upstart...................................................................................................................................64
4.10 U/lidades de Upstart............................................................................................................65
4.11 systemd................................................................................................................................65
4.12 Archivos de con.guracin de systemd..................................................................................66
4.13 systemctl..............................................................................................................................66
Comprobacion de Conocimientos 4.1..........................................................................................69
4.14 Laboratorio 4.1.....................................................................................................................70
4.14 Laboratorio 4.2.....................................................................................................................72
Obje/vos de aprendizaje (Revision).............................................................................................73
Captulo 5. Diseo del rbol del Sistema de Archivos de Linux........................................................74
Obje/vos de aprendizaje..............................................................................................................74
5.1 Un sistema de archivos grande...............................................................................................75
5.2 Diferencia de los datos...........................................................................................................75
LFS201: Fundamentos de Administracin de Sistemas Linux
9.3 Par/cionamiento..................................................................................................................120
9.4 Por qu par/cionar?.............................................................................................................121
9.5 Tabla de par/ciones..............................................................................................................122
9.6 Nombres de disposi/vos de disco y nodos...........................................................................123
9.7 Ms cerca de nombres de disposi/vos SCSI.........................................................................123
9.8 blkid y lsblk...........................................................................................................................124
9.9 Dimensionando par/ciones..................................................................................................125
9.10 Respaldar y restaurar tablas de par/ciones........................................................................126
9.11 Editores de la tabla de par/ciones.....................................................................................127
9.12 Uso de fdisk........................................................................................................................127
Comprobacion de conocimientos 9.1.........................................................................................128
Comprobacion de conocimientos 9.2.........................................................................................129
9.13 Lab 9.1................................................................................................................................129
9.13 Lab 9.2................................................................................................................................131
9.13 Lab 9.3................................................................................................................................134
9.13 Lab 9.4................................................................................................................................137
Obje/vos de aprendizaje (Revision)...........................................................................................137
Captulo 10. Cifrado de Discos........................................................................................................138
Obje/vos de aprendizaje............................................................................................................138
10.1 Por qu u/lizar cifrado?......................................................................................................139
10.2 Luks....................................................................................................................................139
10.3 crypsetup............................................................................................................................139
10.4 uso de una par/cin cifrada...............................................................................................140
10.5 Montado en el arranque.....................................................................................................141
Comprobacion de conocimientos 10.1.......................................................................................141
10.6 Laboratorio 6.1...................................................................................................................142
10.6 Laboratorio 6.1...................................................................................................................144
Obje/vos de aprendizaje (Revision)...........................................................................................145
Captulo 11. Sistemas de archivos Linux y el VFS............................................................................146
Obje/vos de aprendizaje............................................................................................................146
11.1 Conceptos bsicos de un sistema de archivos....................................................................147
11.2 Con.guracion del rbol del sistema de archivos.................................................................147
11.3 Virtual File System (VFS).....................................................................................................147
LFS201: Fundamentos de Administracin de Sistemas Linux
10
11
12
13
26.4 vmstat.................................................................................................................................331
26.5 /proc/meminfo...................................................................................................................335
26.6 OOM Killer..........................................................................................................................337
Comprobacion de conocimientos 26.1.......................................................................................339
Comprobacion de conocimientos 26.2.......................................................................................339
Comprobacion de conocimientos 26.3.......................................................................................339
Comprobacion de conocimientos 26.4.......................................................................................339
26.7 Laboratorio 26.1.................................................................................................................340
Obje/vos de aprendizaje (revision)............................................................................................340
Captulo 27. Sistemas de ges/n de paquetes...............................................................................341
Obje/vos de aprendizaje............................................................................................................341
27.1 Conceptos de empaquetamiento de soNware...................................................................342
27.2 Razones por las cuales usar paquetes................................................................................342
27.3 Tipos de paquetes..............................................................................................................343
27.4 Sistemas disponibles para ges/n de paquetes.................................................................343
27.5 Niveles de empaquetamiento y variedad de herramientas................................................344
27.6 Fuentes de paquetes..........................................................................................................344
27.7 Creacion de paquetes de soNware.....................................................................................345
Comprobacion de conocimientos 27.1.......................................................................................345
Obje/vos de aprendizaje (revision)............................................................................................345
Captulo 28. RPM............................................................................................................................346
Obje/vos de aprendizaje............................................................................................................346
28.1 RPM....................................................................................................................................347
28.2 Ventajas en el uso de RPM.................................................................................................347
28.3 Nombres de archivos de paquetes.....................................................................................348
28.4 Directorio de la base de datos............................................................................................348
28.5 Programas auxiliares y ajustes modi.cables.......................................................................349
28.6 Consultas............................................................................................................................349
28.7 Veri.cacion de paquetes....................................................................................................350
28.8 Instalacion de paquetes......................................................................................................352
28.10 Actualizacion de paquetes................................................................................................353
28.11 Refrescar paquetes...........................................................................................................353
28.12 Actualizacion de kernel.....................................................................................................354
LFS201: Fundamentos de Administracin de Sistemas Linux
14
15
16
17
35.7 umask.................................................................................................................................419
35.8 ACLs de sistema de archivos...............................................................................................420
35.9 Listado y con.guracin de ACLs..........................................................................................420
Comprobacion de conocimientos 35.1.......................................................................................421
Comprobacion de conocimientos 35.1.......................................................................................421
35.10 Laboratorio 35.1...............................................................................................................421
35.10 Laboratorio 35.2...............................................................................................................422
Obje/vos de aprendizaje (revision)............................................................................................423
Captulo 36. Pluggable Authen/ca/on Modules (PAM)..................................................................424
Obje/vos de aprendizaje............................................................................................................424
36.1 PAM: Una aproximacin uni.cada para la auten/cacin....................................................425
36.2 Proceso de auten/cacin...................................................................................................425
36.3 Archivos de con.guracin de PAM.....................................................................................426
36.4 Reglas de PAM....................................................................................................................426
36.5 Auten/cacion LDAP............................................................................................................427
Comprobacion de conocimientos 36.1.......................................................................................428
Comprobacion de conocimientos 36.2.......................................................................................428
36.6 Laboratorio 36.1.................................................................................................................428
Obje/vos de aprendizaje (revision)............................................................................................430
Captulo 37. Mtodos de respaldos y recuperacin de la informacin...........................................431
Obje/vos de aprendizaje............................................................................................................431
37.1 Por que realizar respaldos?................................................................................................432
37.2 Que necesita tener un respaldo?........................................................................................433
37.3 Unidades de cinta...............................................................................................................433
37.4 Mtodos de respaldo.........................................................................................................434
37.5 Estrategias de respaldo.......................................................................................................434
37.6 Herramientas de respaldo..................................................................................................435
37.7 cpio.....................................................................................................................................436
37.8 Uso de tar para respaldos...................................................................................................437
37.9 Uso de tar para restaurar archivos......................................................................................438
37.10 Respaldos incrementales con tar......................................................................................438
37.11 Compresin: gzip, bzip2, xz y respaldos...........................................................................439
37.12 dd.....................................................................................................................................440
LFS201: Fundamentos de Administracin de Sistemas Linux
18
19
20
21
22
Captulo 1. Prlogo
Este curso cubre administracin de sistemas Linux modernos. Trata todas las tareas ms
importantes, incluyendo: controlar la inicializacin del servicio y sistemas; manejar
particiones de disco y sistemas de archivos; establecer una buena seguridad y prcticas
de respaldo; monitoreo, solucin de problemas y rescate del sistema ante una falla;
instalacin de software y actualizaciones. Las lecciones aprendidas son aplicadas a cada
una de las tres familias de distribuciones de Linux (Red Hat, SUSE y Debian) con un
foco principal en instalaciones Empresariales.
La meta es proveer a los administradores de sistemas de todas las herramientas y
conceptos necesarios para instalar y manejar de forma eficiente una infraestructura de
produccin Linux. Los laboratorios prcticos de ejercicios presentarn una gran
oportunidad para probar y aplicar esas lecciones.
23
1.1 Introduccin
Este curso est diseado principalmente para administradores de sistema.
Estamos asumiendo que la mayora de ustedes tienen tareas de configurar, ejecutar y
resolver problemas en mltiples mquinas en lo que es llamado un
ambiente Empresarial. Si bien es cierto que probablemente tenga experiencia significante
con otros sistemas operativos, deseamos que usted aprenda cmo hacer las cosas de
forma correcta y nativa en Linux, mientras que se basa en el conocimiento previo que
posee.
Tambin es probable que ya est utilizando Linux, pero que an no haya estudiado de
forma seria tpicos ms complejos que mantener su sistema personal funcionando
apropiadamente y de forma segura.
Este curso no est diseado principalmente para:
Usuarios nuevos sin mucha experiencia previa con cualquier sistema operativo.
A los usuarios de Linux relativamente nuevos se les recomienda tomar este
curso solamente despus de haber tomado un curso introductorio como
el LFS101x.2 de Linux Foundation.
Desarrolladores (a nivel del kernel o de aplicaciones).
La mayora de los desarrolladores encontrarn interesante este material y entre
ms sepa alguien de teora de sistemas operativos, funcionamiento interno del
kernel, aplicaciones, etc., ms tambin querr salirse de este curso. Tambin hay
muchos usuarios avanzados quienes realizan ambas cosas, administracin de
sistemas y desarrollo.
24
LFS101x.2 es gratuito e incluso si usted siente que no tiene que tomar ese curso,
recomendamos que se inscriba en l; al menos puede echar un vistazo rpido del
material. Algunos de los temas contenidos en LFS101x.2 estn cubiertos en este curso,
generalmente en un nivel ms detallado acorde con nuestra audiencia. El tema de gestin
de paquetes es un ejemplo claro de ello.
En lugar de repetirnos, instamos a que usted se refiera el curso introductorio para temas
bsicos no cubiertos aqu.
Existen otros temas que los administradores de sistemas deben saber, que no cubriremos
en este curso. En particular:
Antes de tomar este curso, le recomendamos que por lo menos eche un vistazo
a LFS101x.2. Si no se siente cmodo o totalmente familiar con algunas herramientas
bsicas y los procedimientos que usaremos en este curso, usted probablemente los
encontrar ah, ya que este curso pretende tenerlo como complemento.
25
26
Para ver los grficos incluidos en este curso en un formato ms grande, simplemente
haga clic en el grfico y automticamente se mostrar en una ventana emergente.
1.5 La Documentacin
De vez en cuando, vamos a discutir cmo elaborar un comando utilizando un programa de
utilidad de Linux, pero slo mostraremos uno o unos pocos ejemplos de seleccin de
opciones, argumentos, etc. Adems no consideraremos a los modos menos comunes de
uso; muchos programas son increblemente verstiles y tienen muchas caractersticas
raramente utilizadas.
Mientras que a menudo le diremos explcitamente lea la pgina Man para obtener ms
detalles, usted debe asumir que lo estamos diciendo implcitamente todo el tiempo.
Usted debe desarrollar el hbito de la lectura de la documentacin de fcil acceso en su
distribucin de Linux sin preguntar, para la mayora de las utilidades.
Adems de las pginas man, la mayora de los programas tienen dentro de s una ayuda
como tambin informacin acerca de su uso. Generalmente esto se accede mediante el
uso de la opcinhelp, como en dfhelp.
Si tratamos de incluir toda esa informacin en el material del curso, sera una duplicacin
intil y de hecho el contenido se diluira de una mala manera.
27
28
Las excepciones surgirn slo cuando se necesita acceso fsico a la mquina, tales como
cuando se intenta iniciar en un entorno de rescate.
29
empresariales.
En
su
mayor
parte
cuando
hablamos
de
sistemas Debian o Ubuntu, vamos a utilizar la versin de Ubuntu LTS 14.04.
Otras distribuciones derivadas de Debian como Linux Mint no sern muy
diferentes.
Todo en este curso se trabajar en las tres principales familias de distribucin
mencionadas anteriormente, y cuando sea necesario explicaremos las diferencias que
surjan; estas a menudo surgen slo en cmo se empaqueta el software y no en la forma
en que se utiliza.
En ningn caso criticamos a alguien que utilice distribuciones menos difundidas aunque
tambin ampliamente respetadas, como Arch Linux y Gentoo, las cuales se usan en
implementaciones Empresariales. Debido a que ambas son distribuciones de
liberacin continua de software (no tienen versiones especficas de lanzamiento, sino
30
31
32
33
Las cosas cambian en Linux. No importa lo duro que hemos trabajado para estar al
da, Linux est en constante evolucin, tanto a nivel tcnico (incluyendo
caractersticas del kernel) y al nivel de distribucin y la interfaz. Por favor, tenga en
mente que hemos tratado de estar lo ms actualizados posible al momento en que
este curso fue publicado, pero habr cambios y novedades que no hemos discutido,
es inevitable.
Hemos repetido unas pocas cosas en el material del curso. Es casi imposible en un
curso de esta amplitud no revisar temas que han sido cubiertos previamente. Los
comentarios cortos son tiles, as que no tendr que ir recorriendo a travs de las
secciones anteriores para refrescar su memoria. Sabemos que hemos hecho esto, y
por lo menos en la mayora de los casos es por diseo, no por accidente.
Hemos intentado evitar guerras santas. Hay muchas reas donde hay fuertes
desacuerdos de preferencias en la comunidad Linux (y de forma ms amplia en el
cdigo abierto). Los ejemplos incluyen el mejor editor: emacs vs vi; el mejor escritorio
grfico: GNOME vs KDE, etc. Generalmente hemos elegido (cuando sea necesario)
una alternativa particular tan slo para mantener las cosas claras; por ejemplo
podemos hablar ms acerca de GNOME que KDE simplemente porque tiene una
base de usuarios ms grande, no porque estamos tomando una posicin en cuanto a
que es superior.
34
para
desarrolladores
de
35
1.15 Certificaciones
La Linux Foundation ofrece varios de tipos de capacitacin:
Sala de clases
En lnea
En su sitio de trabajo
En eventos
Vea los siguientes enlaces para obtener ms informacin sobre cursos especficos
ofrecidos por la Linux Foundation:
Entrenamiento en Programacin y Desarrollo en
Linux: http://training.linuxfoundation.org/linux-courses/development-training
Cursos de IT Empresarial y Administracin de Sistemas
Linux: http://training.linuxfoundation.org/linux-courses/system-administrationtraining
Cursos de Cumplimiento de Normas de Cdigo
Abierto: http://training.linuxfoundation.org/linux-courses/open-source-compliancecourses
36
Laboratorio 1.1
Congurar el sistema con sudo
Es muy peligroso ejecutar una terminal de root a menos de que sea absolutamente necesario: un
solo error de /peo o de otro /po puede causar daos graves (incluso no recuperables).
Por lo tanto, el procedimiento recomendado es con.gurar el sistema de tal forma que comandos
nicos puedan ser ejecutados con privilegios de superusuario, a travs del mecanismo de sudo.
Con sudo el usuario necesita conocer su propia clave solamente y nunca la del usuario root.
Si usted est usando una distribucin como Ubuntu, es posible que no necesite realizar este
laboratorio para tener sudo con.gurado de forma apropiada para el curso. Sin embargo, todava
necesita asegurarse de comprender el procedimiento.
Para comprobar si su sistema ya est con.gurado para permi/r que la cuenta de usuario que est
usando ejecute sudo, ejecute un comando simple como el siguiente:
$ sudo ls
Si el usuario es estudiante.
Una prc/ca an/gua (la que an funciona) es agregar la lnea al .nal del archivo /etc/sudoers. Lo
ms recomendable es hacerlo con el programa visudo, ya que se ocupa de que usted est usando
la sintaxis adecuada mientras edita.
Es posible que necesite con.gurar los permisos adecuados en el archivo, de la siguiente forma:
$ chmod 440 /etc/sudoers.d/estudiante
Tenga en cuenta que algunas distribuciones Linux pueden requerir permisos 400 en vez de 440.
Luego de haber realizado esos pasos, salga de la consola root con exit e intente de nuevo sudo ls.
37
Hay muchas otras cosas que un administrador puede con.gurar en sudo, incluyendo permisos para
usuarios espec.cos, limitar las bsquedas a ciertos directorios, etc. El archivo /etc/sudoers est
muy bien autodocumentado.
Sin embargo, hay un ajuste adicional que recomendamos altamente que realice, an si su sistema
ya /ene con.gurado sudo. La mayora de las distribuciones establecen directorios diferentes para
los directorios en donde se encuentran los ejecutables de los usuarios normales y los de root.
En par/cular los directorios /sbin y /usr/sbin no son encontrados en las bsquedas, ya que sudo
hereda el PATH del usuario, no del superusuario. Por lo tanto, en este curso estaremos
constantemente recordndole la ruta completa de varias herramientas de administracin;
cualquier otra mejora en cuanto a la seguridad de esta implementacin probablemente no valdra
la pena (como intentar esconder los binarios del superusuario, por ejemplo).
En consecuencia, sugerimos agregar la siguiente lnea al archivo .bashrc en su directorio de
usuario:
PATH=$PATH:/usr/sbin:/sbin
No es necesario que reinicie, en vez de eso, puede salir de la sesin y entrar nuevamente, lo cual
sera completamente efec/vo.
38
Objetivos de aprendizaje
Al final de este captulo, usted debera ser capaz de:
39
3
4
Los equipos ms nuevos estn cambiando a UEFI, un reemplazo para la BIOS, que
realiza muchas de las mismas funciones.
40
2.2 Bios
En la arquitectura x86, la BIOS contiene todo el cdigo requerido para obtener acceso
inicial al teclado, pantalla, unidades de disco, de comunicaciones en serie y un nmero de
funciones variadas. Una vez que el sistema completo est en marcha, la mayora de estos
dispositivos habrn mejorado sus capacidades cuando los controladores de dispositivos
especializados y completos se cargan y asumen el control.
La BIOS se coloca tpicamente en un chip ROM que viene con el equipo (el que a
menudo se llama BIOS ROM). Esto asegura que la BIOS estar siempre disponible y no
ser daada por fallas en el disco. Esto tambin hace que sea posible que un equipo
arranque.
Durante el proceso de arranque, la BIOS carga el gestor de arranque desde el MBR.
GRUB
LILO
efilinux
Das U-Boot
41
2.5 /etc/sysconfig
En un sistema RHEL 6:
$ ls -F /etc/sysconfig
atd
grub
auditd
htcacheclean
authconfig
httpd
autofs
i18n
cbq
init
cgconfig
ip6tables-config
cgred.conf
ip6tables-config.rpmnew
clock
iptables-config
collectl
iptables-config.rpmnew
console
irqbalance
cpuspeed
kdump
crond
kernel
firewall
dhcpd
keyboard
users
dhcpd6
ksm
dhcrelay
libvirtd
dhcrelay6
libvirt-guests
ebtables-config lm_sensors
firstboot
mcelogd
modules
netconsole
network
networking
network-scripts
nfs
ntpd
ntpdate
pluto
prelink
quota_nld
radvd
samba
sandbox
saslauthd
selinux
sendmail
smartmontools
snmpd
snmptrapd
sshd
sysstat
sysstat.ioconf
system-config-
raid-check
system-config-
readahead
readonly-root
rhn
rngd
rsyslog
udev
vncservers
wpa_supplicant
xinetd
42
43
lo cual configura algunas variables ambientales usadas por varios scripts de inicio.
Los archivos en este directorio son usados a menudo por el script que controla el servicio
asociado en /etc/init.d; por ejemplo, el script /etc/init.d/network incluye la lnea
con el siguiente archivo:
. /etc/sysconfig/network
2.6 /etc/default
En un sistema Ubuntu 14.04:
$ ls -F /etc/default
acpid
console-setup
acpi-support crda
alsa
cron
anacron
cups
apport
dbus
avahi-daemon devpts
bridge-utils grub
brltty
grub~
bsdmainutils grub.d/
grub.ucf-dist
halt
im-config
irqbalance
kdump-tools
kerneloops
kexec
keyboard
libvirt-bin
locale
nfs-common
nss
ntfs-3g
ntpdate
pulseaudio
qemu-kvm
rcS
rsync
rsyslog
saned
speech-dispatcher
sysstat
ufw
useradd
whoopsie
Los archivos son utilizados para proveer opciones adicionales al iniciar un servicio.
44
sudo
sudo
sudo
sudo
shutdown
shutdown
shutdown
shutdown
Sin opciones (por ejemplo, shutdown now) el comportamiento por defecto es apagar por
completo el sistema. Algunas distribuciones, como Ubuntu, violan esto y van a modo
monosuario en vez de apagarse.
Un error comn es no especificar un argumento de tiempo (tal como now o algn tiempo
real). Esto es requerido.
Tambin existen los comandos heredados reboot, halt y poweroff, los que muchos
usuarios veteranos utilizan con frecuencia.
45
46
Solucin
1. $ sudo shutdown now
2. $ sudo shutdown -r now
3. $ sudo shutdown -h now
4. Presione el botn de apagado o reinicie su mquina virtual.
47
Captulo 3. GRUB
Un sistema que no puede iniciar es bastante intil. Los sistemas Linux tienen mucha
flexibilidad en la forma de arrancar. Es posible elegir versiones diferentes del kernel u
opciones, o incluso diferentes sistemas operativos en escenarios de inicio mltiple. La
mayora de los sistemas no embebidos utiliza el Grand Unified Boot Loader para realizar
los primeros pasos de una inicializacin exitosa del sistema. GRUB tambin tiene
capacidades interactivas, as como una utilidad de contraseas seguras.
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
48
Los kernels alternativos o ramdisk inicial pueden ser elegidos durante el arranque
para un determinado sistema operativo.
Las distribuciones de Linux ms antiguas (por ejemplo, RHEL 6) usan versiones antiguas
de GRUB, 1.0 o menor, mientras que las ms recientes se basan en GRUB 2. Mientras
que los detalles son diferentes entre las versiones, la filosofa bsica es la misma.
49
50
2. Instalar los archivos que GRUB necesita para operar en el momento de arranque,
ya sea en /boot/grub o/boot/grub2. Esto es independiente de los archivos que
el kernel Linux necesita (vmlinuz-*, initramfs-*), los cuales debern estar en
el directorio /boot tambin.
3. Instalar GRUB como el gestor de arranque en el sistema; generalmente esto se
hace en el comienzo de todo el disco duro, pero tambin puede ser realizado en
una particin y acceder a l travs de chainloading, es decir de un GRUB a otro.
Si no instala GRUB durante la instalacin o si necesita volver a instalarlo en algn
momento ms adelante, el procedimiento exacto para hacerlo depende de la versin
de GRUB.
Procedimiento de instalacin de GRUB 2.
Para la Versin 2, el procedimiento de instalacin es tan simple como:
$ sudo grub2-install /dev/sda
Por favor lea la pgina del manual con cuidado antes de ejecutar un comando como ese;
hay muchas opciones y hacer algo mal en GRUB puede hacer que el sistema no
arranque. En particular tendr que indicarle al sistema donde encontrar el
directorio /boot y en qu particin reside.
Procedimiento de instalacin para GRUB 1.
sudo grub
root (hd0,0)
setup (hd0)
exit
lo cual debera instalar grub en el primer disco y los archivos de arranque en la primera
particin.
51
No hay necesidad de enfatizar que confundirse acerca de esto puede ser muy destructivo.
Ambas versiones de GRUB a veces usan la notacin de sda# y a veces usan (hd0,#), as
que puede ser an ms confuso.
Dentro del archivo de configuracin, cada seccin tiene que especificar cul es la
particin raz; esto no es lo mismo que lo que queremos decir cuando hablamos del
directorio raz del sistema. En este contexto significa la particin que contiene el kernel
(en el directorio /boot). Por ejemplo, es muy comn tener /boot en su particin propia,
digamos/dev/sda1. Luego, en GRUB 1 podr encontrar una seccin simple como la
siguiente:
title 3.17.3
root (hd0,0)
kernel vmlinuz-3.17.3 ro root=/dev/sda2 quiet
initrd initramfs-3.17.3.img
pero
obvia;
una
mirada
rpida
52
Red Hat ha abreviado bastante este archivo en comparacin con otras distribuciones. Por
ejemplo, en un sistema Ubuntu 14.4 se ve de la siguiente forma:
$ cat /etc/default/grub
# If you change this file, run update-grub afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n Simple configuration
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT=quiet
GRUB_CMDLINE_LINUX=find_preseed=/preseed.cfg
auto
noprompt
priority=critical locale=en_US
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel
that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD
...)
#GRUB_BADRAM=0x01234567,0xfefefefe,0x89abcdef,0xefefefef
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports
via VBE
# you can see them in real GRUB with the command vbeinfo
#GRUB_GFXMODE=640x480
53
9424 Sep
6058 Sep
11608 Sep
10412 Sep
1992 Sep
11692 Sep
1416 Sep
214 Sep
216 Sep
483 Sep
8
8
8
8
8
8
8
8
8
17:35 00_header
17:35 05_debian_theme
17:35 10_linux
17:35 20_linux_xen
17:35 20_linux_xen
17:35 30_os-prober
17:35 30_uefi-firmware
17:35 40_custom
17:35 41_custom
8 17:35 README
donde una vez ms estamos mostrando Ubuntu 14.04. Cada uno de estos archivos se
ejecutan en orden ascendente cuando se actualiza el archivo de configuracin. No los
discutiremos aqu debido a que estn bien autodocumentados y recomendamos que les
eche un vistazo.
Para GRUB 1 cada distribucin puede tener algunas peculiaridades, pero bsicamente se
edita grub.conf directamente o a travs de un script como grubby.
54
Falso
Verdadero
Falso
Verdadero
55
Falso
Falso
56
57
Objetivos de Aprendizaje
Al final de este captulo usted debera estar capacitado para:
58
El inicio fue visto como un proceso serial, dividido en una serie de etapas secuenciales.
Cada etapa requera ser finalizada antes de que la prxima pudiera iniciar. Por lo tanto, el
arranque no aprovech el procesamiento en paralelo que podra hacerse en mltiples
procesadores.
En segundo lugar, el apagado/reinicio fue visto como un acontecimiento relativamente
raro y exactamente cunto demoraban no era considerado importante.
59
en adoptarlo en el 2011.
RHEL 7 se basa en systemd y cada distribucin principal de Linux lo ha adoptado y
usado por defecto, o ha anunciado planes para hacerlo. Los desarrolladores principales
de systemd estn estrechamente vinculados a la comunidad del kernel de Linux.
Incluso Ubuntu ha programado el retiro de Upstart en su favor.
La migracin a los nuevos esquemas puede ser complicada debido a que los errores de
software y funciones faltantes pueden ser muy incapacitantes, de hecho han habido capas
que requieren compatibilidad esencial.
Por lo tanto, los mtodos y
utilidades SysVinit persistirn por mucho tiempo aunque bajo el cap, las cosas son muy
diferentes.
La historia de las controversias y todo esto es muy complicado, y personalidades
interesantes han asegurado no que toda la discusin es de carcter tcnico. En nuestro
contexto no veremos a travs de esta lente.
En adelante vamos a concentrarnos en SysVinit y systemd con una breve seccin
sobre Upstart (aunque RHEL 6 y
algunas
otras
distribuciones
han
estado
usando Upstart, ste ha sido completamente oculto detrs de una capa de compatibilidad
usando las utilidades SysVinit normales).
60
El runlevel actual pueden ser desplegado simplemente con el comando runlevel, como se
muestra aqu:
$runlevel
N 5
61
Sin embargo, en sistemas ms recientes como RHEL 6 que enmascaran upstart detrs
de una capa de compatibilidad, la nica lnea descomentada y lo nico que se encuentra
en este archivo es el runlevel predeterminado con la lnea:
id:5:initdefault
Este es el runlevel al cual llegar el sistema una vez que haya terminado de iniciar. Sin
embargo, si se especifica otro valor en la lnea de comandos del ncleo, init ignora el
valor por defecto (esto se hace aadiendo el dgito entero a la lnea de comandos del
ncleo). El runlevel por defecto es generalmente 5 para un sistema completo, lo cual
considera soporte multiusuario, sistema grfico en red o 3 para un servidor sin una
interfaz grfica.
62
$ ls -lF /etc/rc.d/rc5.d
total 0
lrwxrwxrwx. 1 root root 14 Sep 3 10:05
lrwxrwxrwx. 1 root root 14 Sep 3 10:05
lrwxrwxrwx. 1 root root 18 Sep 3 10:05
lrwxrwxrwx. 1 root root 15 Sep 3 10:05
lrwxrwxrwx. 1 root root 17 Sep 3 10:05
lrwxrwxrwx. 1 root root 16 Sep 3 10:05
lrwxrwxrwx 1 root root 37 Sep 6 08:50
/etc/rc.d/init.d/vmware-USBArbitrator*
lrwxrwxrwx. 1 root root
../init.d/netconsole*
lrwxrwxrwx. 1 root root
lrwxrwxrwx 1 root root
lrwxrwxrwx. 1 root root
lrwxrwxrwx. 1 root root
../init.d/iprupdate*
lrwxrwxrwx. 1 root root
Sep
Sep
Sep
Sep
3
6
3
3
09:39
08:50
04:04
04:04
El script rc.local puede ser usado para iniciar aplicaciones especficas del sistema.
Note lo siguiente:
Todos los scripts reales estn en /etc/init.d: cada directorio de nivel de ejecucin
solo enlaza a ellos.
Los nombres de los scripts de inicio comienzan con s.
Los nombres de los scripts de detencin comienzan con k.
63
4.6 chkconfig
chkconfig se utiliza para consultar y configurar en qu runlevels van a correr los
diferentes servicios del sistema.
Ejemplos de chkconfig
Verifica un servicio en particular para comprobar si est configurado para correr en el
runlevel actual:
$ chkconfig some_service
Ver qu servicios estn configurados para correr en cada uno de los runlevels:
$ chkconfiglist [service names]
No es difcil aadir sus propios servicios y escribir scripts de inicio. Solamente hay que
poner el script en /etc/init.d, el cual debe tener ciertas caractersticas (slo algunas
lneas en el comienzo del archivo!) y luego usar chkconfig add para habilitarlo
o chkconfigdel para desactivar el uso de las instrucciones on y off.
Cmo lo hace chkconfig para determinar qu nmero debera aparecer luego de
la S o K en un enlace simblico? Cmo sabe qu runlevels configurar en on u off y qu
estado configurar en los enlaces simblicos? La informacin est en los propios scripts,
los cuales contienen una lnea en la parte de arriba, como la siguiente:
# chkconfig: 2345 10 90
El primer argumento luego de chkconfig: aqu se definen los runlevels en los cuales el
servicio va a ejecutarse por defecto. En el ejemplo de arriba con los runlevels 2, 3, 4 y 5.
El segundo y tercer nmero son los prefijos numricos en los scripts de inicio y detencin;
en el caso de arriba inician con S10 y K90.
LFS201: Fundamentos de Administracin de Sistemas Linux
64
service tiene diversas opciones, las que varan segn el servicio en particular; por
ejemplo:
$ sudo service network
Usage: /etc/init.d/network {start|stop|restart|reload|status}
$ sudo service iptables
Usage: /etc/init.d/iptables {start|stop|restart|condrestart|status|
panic|save}
65
El iniciar y detener servicios con service es efectivo slo durante la operacin actual del
sistema; todos los cambios se pierden al reiniciar. Para configurar que un servicio en
particular se active o no durante la inicializacin del sistema - en sistemas basados
en Red Hat - se utiliza chkconfig como se describi anteriormente.
Usted deber consultar las pginas man para acceder a la documentacin completa.
66
4.9 Upstart
Upstart es manejado por eventos, en lugar de ser un conjunto de procedimientos en
forma serial. Las notificaciones de eventos son enviadas al proceso init para ejecutar
ciertos comandos en el momento justo despus de que han cumplido los requisitos
previos. Debido a que Upstart est siendo reemplazado por systemd, no invertiremos
mucho tiempo en l ni hacemos ejercicios al respecto.
Los archivos de configuracin de upstart son:
/etc/init/rcS.conf
/etc/rc-sysinit.conf
/etc/inittab
/etc/init/rc.conf
/etc/rc[0-6].d
Cuando el kernel inicia el proceso init, ste ejecuta el script rcS.conf. Esto a su vez,
hace que rc-sysinit.conf se ejecute.
rc-sysinit.conf realizar una serie de tareas, incluyendo iniciar LVM, montar sistemas
de archivos y luego ejecuta todos los scripts para el runlevel por defecto especificado
en /etc/inittab.
Esto se logra mediante la ejecucin de rc.conf y pasando al runlevel. Los scripts del
runlevel levantan los servicios en el sistema.
Finalmente, scripts adicionales como prefdm.conf son ejecutados (para el runlevel 5
solamente).
Como se mencion anteriormente, /etc/inittab est obsoleto y ahora slo se utiliza
para configurar el runlevel predeterminado mediante la lnea initdefault. Otra
configuracin
se
realiza
mediante Upstart en
el
directorio/etc/init.
En
general, Upstart se encontrar en el directorio /etc/event.d.
Por ejemplo, el nmero de consolas tty activas ahora se establece mediante la
variable ACTIVE_CONSOLES en/etc/sysconfig/init, la que es leda por
/etc/init/start-ttys.conf. El valor predeterminado es ACTIVE_CONSOLES=/dev/tty
[1-6], el cual inicia un proceso getty desde tty1 hasta tty6.
67
4.11 systemd
El sistema de administracin central systemd y manejador de sesin para Linux est
tomando lugar rpidamente en todas las distribuciones importantes.
systemd es compatible con SysVinit y el concepto de runlevels est soportado a travs
de targets de nivel de ejecucin. El programa telinit es emulado para trabajar con
runlevels.
Las caracters/cas de systemd y del gestor de sesin incluyen lo siguiente:
68
los
demonios
en
su
4.13 systemctl
systemctl es la utilidad principal para manejar servicios. La sintaxis bsica es la
siguiente:
$ systemctl [options] command [name]
69
70
71
Respuesta Correcta: SysVinit fue diseado para mainframes, los que tienen
requerimientos diferentes a computadores de escritorio, sistemas embebidos y
plataformas para dispositivos mviles.
Respuesta Correcta:
0
6
1
3
5
72
# chkcon.g: 35 69 31
# descrip/on: This service doesnt do anything.
# Source func/on library
. /etc/syscon.g/fake_service
case $1 in
start) echo Running fake_service in start mode...
touch /var/lock/subsys/fake_service
echo $0 start at $(date) >> /var/log/fake_service.log
if [ ${VAR1} = true ]
then
echo VAR1 set to true >> /var/log/fake_service.log
.
echo
;;
stop)
echo Running the fake_service script in stop mode...
echo $0 stop at $(date) >> /var/log/fake_service.log
if [ ${VAR2} = true ]
then
echo VAR2 = true >> /var/log/fake_service.log
.
rm -f /var/lock/subsys/fake_service
echo
LFS201: Fundamentos de Administracin de Sistemas Linux
73
;;
*)
Si est tomando la versin autodidacta en lnea del curso, el script est disponible para descargarlo
desde la pantalla Lab.
Asgnele permisos de ejecucin (y todos los otros permisos necesarios) al archivo anterior:
$ sudo chmod 755 /etc/init.d/fake_service
Se dara cuenta que el script incluye el archivo /etc/syscong/fake service. En sistemas diferentes
a RHEL debera cambiar esto a /etc/default/fake_service. Crelo e inserte el siguiente contenido:
VAR1=true
VAR2=true
Compruebe si el script funciona correctamente a travs de los siguientes comandos:
$ sudo service fake_service
$ sudo service fake_service start
$ sudo service fake_service stop
Revise el archivo /var/log/fake service.log. Qu con/ene?
Por diversin podra agregar modos adicionales al archivo de script como restart ;
eche un vistazo a otros scripts en el directorio para obtener ejemplos de lo que puede hacer.
Lo siguiente que necesitamos es que el servicio fake service se inicie cada vez que el sistema
arranque y se detenga cuando el sistema se apaga. Si usted hace:
$ sudo chkcon.glist fake_service
obtendra un error debido a que an el servicio no se ha con.gurado. Puede hacerlo de forma fcil
como sigue:
$ sudo chkcon.gadd fake_service
ahora puede habilitarlo y deshabilitarlo en el arranque (respec/vamente) de la siguiente forma:
$ sudo chkcon.g fake_service on
$ sudo chkcon.g fake_service od
Para probarlo completamente tendra que reiniciar el sistema con el .n de con.rmar si el servicio
inicia autom/camente. Tambin puede modi.car los runlevels en los cuales el servicio debera
ejecutarse.
LFS201: Fundamentos de Administracin de Sistemas Linux
74
75
Para habilitar/deshabilitar que el servicio inicie durante el arranque, puede usar los siguientes
comandos:
$ sudo systemctl enable fake2.service
$ sudo systemctl disable fake2.service
Una vez ms, es necesario reiniciar el sistema para asegurarse que los cambios realizados estn
siendo efec/vos.
76
Objetivos de aprendizaje
Al final de este captulo usted debera estar capacitado para:
77
78
79
Iniciar el sistema.
Restaurar el sistema desde copias de seguridad de medios externos, tales como
cintas y otros medios extrables, o NAS, etc.
Recuperar y/o reparar el sistema; un administrador experimentado debe tener las
herramientas para diagnosticar y reconstruir un sistema daado.
5.6 /bin
El directorio /bin es muy importante y ste:
80
5.7 /boot
Los archivos esenciales para iniciar el sistema deben estar en el directorio /boot y sus
subdirectorios. Los dos archivos absolutamente esenciales son:
Estos archivos tienen nombres largos que dependen de la versin del ncleo, en donde el
nombre exacto est en funcin de la distribucin de Linux. Adems, en lugar
de initramfs, el archivo puede ser llamado initrd, siglas de disco RAM inicial, el cual si
bien es cierto corresponde al mtodo antiguo, el nombre se usa en algunas distribuciones
todava.
El contenido exacto de /boot variar segn la distribucin y el tiempo; en un
sistema RHEL 7 tenemos:
$ ls -lF /boot
total 135336
-rw-rr-- 1 root root
122094 Nov 4 09:20 config-3.10.0123.13.1.el7.x86_64
-rw-rr-- 1 root root
81386 Dec 7 12:03 config-3.17.5
-rw-rr-- 1 root root
81896 Dec 15 07:28 config-3.18.0
-rw-rr-- 1 root root
81896 Dec 16 15:56 config-3.18.1
drwxr-xr-x. 6 root root
4096 Dec 16 15:57 grub2
-rw-rr--. 1 root root 40732911 Sep 3 04:07 initramfs-0-rescue30cc7a6d7bb4525815f4d2b4298e611.img
-rw-rr-- 1 root root 16406996 Dec 10 07:25 initramfs-3.10.0123.13.1.el7.x86_64.img
-rw-rr-- 1 root root 13967066 Dec 7 12:03 initramfs-3.17.5.img
LFS201: Fundamentos de Administracin de Sistemas Linux
81
Hace mucho tiempo estos archivos esenciales se solan poner directamente en /, en vez
de usar un directorio /boot por separado, siguiendo las prcticas tradicionales de UNIX.
Hoy en da esto se considera obsoleto.
82
5.9 /dev
Este directorio contiene archivos de dispositivos especiales (tambin conocidos
como nodos de dispositivo) los cuales representan los dispositivos incorporados o
conectados al sistema. Estos archivos especiales son esenciales para que el sistema
funcione correctamente.
Dichos archivos de dispositivo representan caracteres (una trama de bytes)
y dispositivos de bloque E/S. Los dispositivos de red no tienen nodos de dispositivo
en Linux y en cambio son referenciados por su nombre, como eth1 owlan0.
Listado de /dev
$ cd /dev ;
lrwxrwxrwx
....
lrwxrwxrwx
....
crw-rw---crw-rw---....
brw-rw---brw-rw---brw-rw---....
brw-rw----+
ls -lF
1 root root
1 root root
1 root lp
1 root lp
1 root disk
1 root disk
1 root disk
1 root cdrom
Note que los dispositivos de carcter comienzan con una c, los bloques con una b y los
enlaces simblicos con una l (L minscula).
Todas las distribuciones modernas de Linux (no embebidas) utilizan el sistema udev, el
cual crea nodos en /dev slo a medida en que se necesita, lo que sucede cuando se
encuentran dispositivos, ya sea al inicio o al conectarlos al sistema (discutiremos udev en
una seccin posterior).
Si usted fuera a echar un vistazo en el directorio /dev en un sistema de archivos sin
montar, lo encontrara vaco; en el inicio se crea y monta un sistema de archivos virtual
en /dev, el que luego es populado con nodos de dispositivos, como lo requiere udev. Los
sistemas Linux embebidos pueden fijar los nodos de dispositivos y no utilizar udev o
alguna alternativa como mdev.
83
5.10 /etc
Este directorio contiene los archivos de configuracin de la mquina local y algunos
scripts de inicio; aqu no debera haber ningn programa ejecutable binario.
Los archivos y directorios que pueden encontrarse aqu incluyen:
csh.login, exports, fstab, ftpusers, gateways, gettydefs, group, host.conf,
hosts.allow, hosts.deny, hosts,equiv, hosts.lpd, inetd.conf, inittab, issue,
ld.so.conf, motd, mtab, mtools.conf, networks, passwd, printcap, profile,
protocols, resolv.conf, rpc, securetty, services, shells, syslog.conf.
Las distribuciones a menudo agregan archivos de configuracin y directorios a /etc. Por
ejemplo, Red Hat aade un nmero directorios adicionales incluyendo /etc/sysconfig,
donde se alojan archivos y directorios de configuracin del sistema.
Otros subdirectorios importantes incluyen /etc/skel, que contiene archivos de plantilla
usados para popular directorios de usuario recin creados. Tambin /etc/init.d, que
contiene scripts de inicio y detencin cuando se utiliza la inicializacin de System V.
5.11 /home
En
los
sistemas Linux los
directorios
de
usuarios
estn
en /home,
como /home/coop, /home/alumno, etc. Toda la configuracin personal, datos y programas
ejecutables se ponen en esta jerarqua de directorios. /home tambin puede contener
subdirectorios
para
varios
grupos
o
asociaciones
de
usuarios,
como /home/estudiantes, /home/staff,/home/aliens, etc.
En otros sistemas operativos tipo UNIX, existe el concepto del rbol de directorios /home,
pero puede ser sutilmente diferente. Por ejemplo, en Solaris los directorios de usuarios se
crean en /export/home y luego la utilidad automount los montar en /home. Esto se
debe a la situacin habitual en que el directorio de los usuarios puede estar en cualquier
lugar en una red corporativa, probablemente en un servidor NFS, en donde el directorio
de cada usuario se montar automticamente cuando est en uso.
Linux tambin tiene la utilidad automount, pero muchos usuarios no estn conscientes
de ellos, y en sistemas personales probablemente el concepto de puntos de
montaje NFS no aplicar.
Un usuario siempre puede sustituir la variable de ambiente $HOME para su directorio raz, o
la abreviacin ~; es decir, los siguientes usos son equivalentes:
$ ls -l $HOME/public_html
$ ls -l ~/public_html
Hay una excepcin: el directorio home del usuario root en los sistemas Linux siempre se
encuentra en /root. Algunos sistemas UNIX antiguos pueden usar / en cambio, lo que
puede causar algn desorden.
84
5.12 /lib
Este directorio debe contener slo las bibliotecas necesarias para ejecutar los binarios
en /bin y /sbin. Estas bibliotecas son particularmente importantes para iniciar el sistema
y ejecutar comandos en el sistema de archivos raz.
Los mdulos del kernel (a menudo controladores de dispositivo o sistemas de archivos) se
encuentran bajo/lib/modules/<kernel-versin-nmero>.
Los archivos de PAM (Pluggable Authentication Modules) se almacenan en el
directorio /lib/security.
Los sistemas que soportan tanto binarios de 32 bits y 64 bits deben mantener ambos tipos
de bibliotecas en el sistema. En los sistemas basados en Red Hat hay directorios
separados para las bibliotecas de 32 bits (/lib) y 64 bits (/lib64).
5.13 /media
Este directorio se usa normalmente para montar sistemas de archivos en medios
extrables. Estos incluyen CDs, DVDs, unidades USB y disquetes del paleoltico.
Los sistemas Linux modernos montan estos medios de forma dinmica durante la
insercin, momento en el cual udev crea directorios bajo /media y luego monta los
sistemas de archivos extrables all, con los nombres que se establecen a travs de las
reglas de udev especificadas en los archivos de configuracin. Al desmontar y extraer los
medios, los directorios que fueron usados como puntos de montaje
en /media desaparecern.
Si el medio extrable tiene ms de una particin y sistema de archivos, aparecer ms de
una entrada en /media. En muchas distribuciones de Linux el administrador de archivos
(como Nautilus) se abrir cuando el medio es montado.
Nota: En algunas distribuciones ms recientes (incluyendo SUSE y RHEL 7) los medios
extrables se montarn en/run/media/[nombre de usuario]/... Vamos a tratar /run al
final de este captulo.
85
5.14 /mnt
Se dispone de este directorio para que el administrador del sistema pueda montar
temporalmente un sistema de archivos en caso de necesitarlo. Se usa comnmente para
sistemas de archivos en red, incluyendo:
NFS
Samba
CIFS
AFS
Histricamente, /mnt tambin fue usado para los tipos de archivos que se montan
actualmente en /media (o/run/media) en los sistemas modernos.
En trminos generales, este directorio no debe ser utilizado por programas de instalacin.
Una mejor alternativa es otro directorio temporal que no est siendo usado.
5.15 /opt
Este directorio est diseado para paquetes de software que desean mantener la totalidad
o gran parte de sus archivos en un lugar aislado en vez de dispersarse por todo el sistema
en los directorios compartidos con otros programas.
Por ejemplo, si dolphy_app fuera el nombre de un paquete en /opt, todos sus archivos
deben
residir
en
directorios
bajo
/opt/dolphy_app,
incluyendo
/opt/dolphy_app/bin para binarios y /opt/dolphy_app /man para las pginas man.
Esto puede hacer que tanto la instalacin y desinstalacin de software sean relativamente
fcil, ya que todo est aislado de forma conveniente en una ubicacin predecible y
estructurada. Tambin hace que sea ms fcil para los administradores de sistemas el
determinar la naturaleza de cada archivo asociado a un paquete.
Note, sin embargo, que si uno utiliza sistemas de empaquetamiento como RPM y APT,
como veremos ms adelante, tambin es fcil de instalar y desinstalar conservando un
claro sentido de las ubicaciones de archivos, sin exhibir tal conducta antisocial con la
distribucin.
En Linux, el directorio /opt es utilizado a menudo por proveedores de aplicaciones, ya
sea con software propietario o aquellos que desean evitar las complicaciones asociadas a
los cambios entre distribuciones. Por ejemplo, en RHEL 7 los nicos paquetes se
encuentran en esta categora estn en /opt/skype y /opt/google, en donde este ltimo
tiene subdirectorios para chrome, earth y talkplugin.
Los
directorios
/opt/bin, /opt/doc,
/opt/include, /opt/info,/opt/lib
y /opt/man estn reservados para uso del administrador del sistema local. Los paquetes
pueden proporcionar archivos que estn vinculados o copiados en estos directorios
reservados, pero tambin deben ser capaces de funcionar sin los programas que estn en
estos directorios especiales.
86
5.16 /proc
Este directorio es el punto de montaje para un seudosistema de archivos, donde toda la
informacin reside slo en memoria, no en disco. Tal como /dev, el directorio /proc est
vaco en un sistema que no est corriendo.
El kernel muestra algunas estructuras de datos importantes a travs de las entradas
disponibles en /proc. Adems, cada proceso activo en el sistema tiene su propio
subdirectorio, el que ofrece informacin detallada sobre el estado del proceso, los
recursos que est utilizando y su historia.
Las entradas en /proc a menudo se denominan archivos virtuales y tienen cualidades
interesantes. Mientras que la mayora tienen cero bytes de tamao, cuando se visualiza
su contenido es posible comprobar que pueden tener una gran cantidad de informacin.
Adicionalmente, la mayora de los ajustes de hora y fecha en los archivos reflejan la hora
y fecha actuales, indicativo del hecho de que estn en constante cambio. De hecho, la
informacin de estos archivos se obtiene slo cuando son visualuzados, no se estn
actualizando constantemente o peridicamente.
Importantes pseudoarchivos, incluyendo
/proc/interrupts, /proc/meminfo, /proc/mounts y /proc/partitions, proporcionan
un vistazo del estado actual del hardware del sistema.
Otros archivos como /proc/filesystems y el directorio /proc/sys/,
informacin de configuracin del sistema y de las interfaces.
proveen
Para propsitos de organizacin, los archivos que contienen informacin sobre un tema
similar
se
agrupan
en
directorios
virtuales
y
subdirectorios.
Por
ejemplo, /proc/scsi/ contiene informacin de todos los dispositivos SCSI fsicos. De la
misma forma, los directorios de procesos contienen informacin acerca de
cada proceso corriendo en el sistema.
A lo largo de este curso examinaremos ampliamente las entradas en /proc, y echaremos
un vistazo ms detallado en los captulos siguientes acerca de la configuracin del kernel
y monitoreo del sistema.
87
5.17 /root
Este directorio (pronunciado slash-root) es el directorio de inicio para el usuario root.
La cuenta de root que es duea de este directorio se debe utilizar solamente para las
acciones que requieren privilegios de superusuario. Para aquellas acciones que pueden
realizarse como un usuario sin privilegios, utilice otra cuenta.
5.18 /sys
Este directorio es el punto de montaje para el seudosistema de archivos sysfs, donde
toda la informacin reside slo en memoria, no en disco. Al igual que /dev y /proc, el
directorio /sys est vaco en un sistema detenido.
sysfs se utiliza tanto para recopilar informacin sobre el sistema, como tambin modificar
su comportamiento mientras se ejecuta. En ese sentido se parece a /proc, pero es ms
nuevo y se ha adherido a normas estrictas acerca de qu tipo de entradas que puede
contener. Por ejemplo, casi todos los seudoarchivos en /sys contienen slo una lnea o
valor; no existe ninguna de las entradas largas que se pueden encontrar en /proc.
Al igual que con /proc, examinaremos entradas en /sys a lo largo de este curso, lo que
ser relevante en los prximos captulos acerca de la configuracin del kernel y monitoreo
del sistema.
5.19 /sbin
Este directorio contiene los archivos binarios esenciales para arrancar, restaurar,
recuperar y/o reparar los binarios en el directorio /bin. Tambin debe tener lo necesario
para montar otros sistemas de archivos en /usr, /home y otros lugares de ser necesario,
una vez que el sistema de archivos raz est en buenas condiciones en el arranque.
Los siguientes programas deberan estar incluidos en este directorio (siempre y cuando
sus subsistemas estn instalados):
fdisk, fsck, getty, halt, ifconfig, init, mkfs, mkswap, reboot, route, swapon, swapoff,
update.
Nota: como se mencion anteriormente, algunas distribuciones nuevas estn
abandonando
la
estrategia
de
separar/sbin y /usr/sbin (como
tambin /bin y /usr/bin), y slo tienen un directorio con enlaces simblicos,
preservando una vista de dos directorios.
88
5.20 /tmp
Este directorio se utiliza para almacenar archivos temporales, y puede ser accedido por
cualquier usuario o aplicacin. Sin embargo, no se puede esperar que los archivos
en /tmp estn ah por largo tiempo:
En este ltimo caso, hay que evitar la creacin de archivos de gran tamao en /tmp,
debido a que en realidad va a ocupar espacio en memoria en vez de disco, y es fcil
daar o bloquear el sistema a travs del agotamiento de la memoria. Si bien es cierto que
la gua para las aplicaciones es evitar poner archivos de gran tamao en /tmp, hay un
gran nmero de aplicaciones que violan esta poltica. Incluso si fuera posible ponerlos en
otro lugar (tal vez mediante la especificacin de una variable de entorno), muchos
usuarios no saben cmo configurarlo, y por otro lado, todos los usuarios tienen acceso
a /tmp.
Esta poltica puede ser cancelada en los sistemas utilizando systemd, como en Fedora, a
travs del siguiente comando:
$ systemctl mask tmp.mount
Luego de lo cual es necesario reiniciar el sistema.
5.21 /usr
El directorio /usr puede ser visto como una jerarqua secundaria. Se utiliza para los
archivos que no son necesarios para el inicio del sistema. De hecho, /usr no necesita
estar localizado en la misma particin que el directorio raz y se puede compartir entre los
hosts que utilizan la misma arquitectura de sistema a travs de la red.
Los paquetes de software no deberan crear subdirectorios directamente bajo /usr.
Podran existir algunos enlaces simblicos a otros lugares por razones de compatibilidad.
Este directorio tiene usualmente datos de slo lectura. Contiene binarios que no son
necesarios en modo monousuario. Contiene el directorio /usr/local, donde es posible
almacenar binarios locales. Las pginas man se encuentran en/usr/share/man.
89
5.22 /var
Este directorio contiene archivos de datos variables (o voltiles)
frecuentemente durante el funcionamiento del sistema. Estos incluyen:
que
cambian
Archivos de registro.
Directorios y archivos de spool para imprimir, colas de correo, etc.
Archivos de datos administrativos.
Archivos transitorios y temporales, como contenido del cach.
Obviamente, /var no puede ser montado como un sistema de archivos de slo lectura.
Por razones de seguridad, a menudo se considera una buena idea montar /var como un
sistema de archivos por separado. Adems, si el directorio se llena, no debera producir
un bloqueo del sistema.
/var/log es donde se encuentran la mayora de los archivos del registro del sistema. El
directorio /var/spool es donde se almacenan los archivos locales para procesos como
correo, impresin y trabajos de cron a la espera de ser liberados de la cola.
90
5.23 /run
Un nuevo rbol de directorio montado en /run ha estado en uso desde hace varios aos
por las principales distribuciones de Linux, y pese a que ha sido propuesto para el FHS,
no ha sido aceptado formalmente. Sin embargo es bueno saber acerca de su existencia,
ya que muy probablemente se encontrar con l.
El propsito de /run es almacenar archivos transitorios: aquellos que contienen
informacin del tiempo de ejecucin (runtime), los cuales probablemente sean escritos
tempranamente en el inicio del sistema, y que no requieren ser preservados al reiniciar.
Generalmente /run se implementa como un punto de montaje vaco, con un disco
ram tmpfs (tal como /dev/shm) montado en tiempo de ejecucin. Por lo tanto, este es un
seudosistema de archivos existente slo en memoria.
Algunos directorios existentes, tal como /var/run y /var/lock, sern enlaces simblicos
a los directorios bajo /run. Otros, dependiendo de cada distribucin, pueden apuntar a
directorios bajo /run.
91
92
93
Tenga en cuenta que muchos de los nombres de los directorios son nmeros; cada uno
corresponde a un proceso en ejecucin y sus nombres son el process ID. Un subdirectorio
importante que veremos ms adelante es /proc/sys, bajo el cual es posible ver o modi.car muchos
parmetros del sistema.
94
/proc/cpuinfo:
/proc/meminfo:
/proc/mounts:
/proc/swaps:
/proc/version:
/proc/par//ons:
/proc/interrupts:
Los nombres de cada uno dan una buena idea acerca de la informacin que con/enen.
Tenga en cuenta que esta informacin no se actualiza de forma constante, sino que es obtenida
slo cuando uno quiere visualizarla.
3. Eche un vistazo a cualquier directorio de proceso. Si no es un proceso del cual usted es dueo, el
acceso a la informacin podra ser limitada, a menos que use sudo):
$ ls -F 5564
Eche un vistazo a algunos de los campos aqu, tales como cmdline, cwd, environ, mem, y status
95
96
Objetivos de Aprendizaje
Al final de este captulo usted debera ser capaz de:
97
98
Para la versin GRUB 1 (la antigua), una lnea de comandos del kernel podra verse as:
kernel /boot/vmlinuz-3.19.1 ro root=LABEL=RHEL6-64 quiet crashkernel=auto
SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us
o
kernel /vmlinuz-2.6.32-279.14.1.el6.x86_64 ro
root=UUID=178d0092-4154-4688-af24-cda272265e08
rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD
SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc
KEYTABLE=us rd_NO_DM rhgb quiet
y se encontrara en /boot/grub2/grub.cfg.
En la versin 2 no se debe editar este archivo directamente, sino que modificar los
archivos relevantes bajo /etc.
En los ejemplos anteriores las filas largas fueron divididas para su visualizacin, pero
cada una de ellas corresponden a una lnea larga. Recuerde que discutimos cmo
configurar las dos versiones de GRUB, y que la versin 2 no debe editarse directamente,
sino modificar los archivos correspondientes en /etc.
Basta hacer lo siguiente para ver con qu lnea de comandos inici un sistema:
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.18.1 root=UUID=9d6b5801-9c7e-4c17-906849923952338e ro rhgb quiet loop.max_loop=256 LANG=en_US.UTF-8
99
En lnea, en http://kernel.org/doc/Documentation/kernel-parameters.txt.
Los parmetros pueden ser especificados simplemente como un valor dado como
argumento, o de la forma param=valor, donde el valor dado puede ser un string, entero,
arreglo de enteros, etc, tal como se explica en el archivo de documentacin.
Por convencin, no debera haber parmetros intencionalmente escondidos o secretos,
todos ellos deberan estar explicados en la documentacin. Los parches a las fuentes del
kernel con parmetros nuevos deben incluir modificaciones en el archivo de
documentacin.
Aqu puede ver el significado de alguno de los parmetros de arranque mencionados:
Tenga en cuenta que los parmetros que comienzan con rd se usan solamente en los
sistemas basados en Red Hat. Alguna documentacin al respecto puede encontrarse
en https://fedoraproject.org/wiki/Dracut/Options.
100
6.5 sysctl
La interfaz sysctl puede ser utilizada para leer y ajustar los parmetros del kernel en
tiempo de ejecucin. Los valores actuales se pueden visualizar con el siguiente comando:
$ sysctl -a
....
kernel.pid_max = 32768
...
kernel.threads-max = 63707
....
net.ipv4.ip_default_ttl = 64
....
net.ipv4.ip_forward = 0
....
vm.nr_hugepages = 16
vm.swappiness = 10
....
donde la segunda forma se usa para establecer un valor con la interfaz de lnea de
comando sysctl. No se puede dejar espacios alrededor del signo = en este comando.
Note que en la primera forma, no es posible utilizar sudo con echo; el comando debe
hacerse en la forma en que se muestra, o ejecutndolo como root.
Si va a travs de los seudoarchivos en /proc/sys va a obtener la misma informacin que
provee sysctl -a. Puede obtener todos los detalles sobre cmo utilizar sysctl con man 8
sysctl. Para obtener informacin acerca de cmo se usa la funcin sysctl() desde un
programa para realizar las mismas operaciones, ejecute man 2 sysctl.
Si la configuracin est en /etc/sysctl.conf (ver man sysctl.conf para ms detalles),
es posible realizar ajustes en el inicio del sistema.
Note que el comando:
$ sudo sysctl -p
101
102
Solucin 6.1
Usted puede usar ya sea localhost o 127.0.0.1 (loopback) o la direccin IP actual del sistema como
objeto de prueba para el ping de a con/nuacin.
1. $ ping localhost
2. $ sysctl net.ipv4.icmp_echo_ignore_all
3. $ sudo sysctl net.ipv4.icmp_echo_ignore_all=1
$ ping localhost
4. $ sudo sysctl net.ipv4.icmp_echo_ignore_all=0
$ ping localhost
5. Agregue la lnea siguiente a /etc/sysctl.conf:
net.ipv4.icmp_echo_ignore_all=1
y luego haga:
$ sysctl -p
6. $ sysctl net.ipv4.icmp_echo_ignore_all
$ ping localhost
Ya que los cambios en el archivo /etc/sysctl.conf son persistentes, sera buena idea restaurar los
valores originales.
103
Solucin 6.2
A con/nuacin vamos a usar dos mtodos; uno usando sysctl, el otro escribiendo valores
directamente con echo a /proc/sys/kernel/pid_max. Note que el mtodo echo require ser root,
sudo no funcionar. Dejaremos que usted descubra porqu, en caso que no lo sepa todava.
1. $ sysctl kernel.pid_max
$ cat /proc/sys/kernel/pid_max
2. Escriba:
$ cat &
[1] 29222
$ kill -9 29222
3. $ sudo sysctl kernel.pid_max=24000
$ echo 24000 > /proc/sys/kernel/pid_max # Esto debe ser realizado como root
$ cat /proc/sys/kernel/pid_max
4. $ cat &
[2] 311
$ kill -9 311
Tenga en cuenta que cuando se comienza de nuevo, el kernel comienza en PID=300, no en un
nmero menor. Es posible que se de cuenta que asignar PIDs a los procesos nuevos no es algo
trivial; debido a que el sistema puede haber comenzado de nuevo a asignar los nmeros
correspondientes, el kernel siempre /ene que veri.car que al crear esos nuevos PIDs no estn en
uso. . El kernel Linux /ene una manera muy e.ciente de hacer esto, la cual no depende del nmero
de procesos corriendo en el sistema.
104
Objetivos de Aprendizaje
Al final de este captulo usted debera ser capaz de:
105
106
Size
50309
38408
74097
Used by
0
13
5
9813
47551
19279
140055
1
1 snd_hda_codec_analog
4
3
5891
911957
23547
21534
29924
2 snd,snd_hda_codec
4
8
1 ahci
0
Note que al remover un mdulo no es necesario proveer ya sea la ruta completa del
archivo o la extensin .ko.
107
7.4 modprobe
En la mayora de los casos los mdulos no son cargados ni descargados
con insmod y rmmod. En vez de eso, se usa modprobe, de la forma que se muestra en
continuacin:
$ sudo /sbin/modprobe module_name
$ sudo /sbin/modprobe -r module_name
No es posible descargar un mdulo que est siendo usado por uno u otros
mdulos, lo cual se puede determinar a partir de la lista que provee lsmod.
108
7.6 modinfo
modinfo puede ser usado para encontrar informacin acerca de los mdulos del kernel
(tanto si estn actualmente cargados o no), como se muestra a continuacin:
$ /sbin/modinfo my_module
$ /sbin/modinfo <pathto>/my_module.ko
Por ejemplo:
$ modinfo e1000
filename: /lib/modules/3.1.0/kernel/drivers/net/e1000/e1000.ko
version: 7.3.21-k8-NAPI
license: GPL
description: Intel PRO/1000 Network Driver
author: Intel Corporation, <linux.nics@intel.com>
srcversion: E005D763BC7910379BDD09A
alias: pci:v00008086d00002E6Esv*sd*bc*sc*i*
alias: pci:v00008086d000010B5sv*sd*bc*sc*i*
alias: pci:v00008086d00001099sv*sd*bc*sc*i*
....
alias: pci:v00008086d00001000sv*sd*bc*sc*i*
depends: vermagic: 3.1.0 SMP preempt mod_unload
parm: TxDescriptors:Number of transmit descriptors (array of int)
parm: RxDescriptors:Number of receive descriptors (array of int)
parm: Speed:Speed setting (array of int)
parm: Duplex:Duplex setting (array of int)
parm: AutoNeg:Advertised auto-negotiation setting (array of int)
parm: FlowControl:Flow Control setting (array of int)
parm: XsumRX:Disable or enable Receive Checksum offload (array of
int)
parm: TxIntDelay:Transmit Interrupt Delay (array of int)
parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of
int)
parm: RxIntDelay:Receive Interrupt Delay (array of int)
parm: RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm: InterruptThrottleRate:Interrupt Throttling Rate (array of
int)
parm: SmartPowerDownEnable:Enable PHY smart power down (array of
int)
parm: copybreak:Maximum size of packet that is copied to a new
buffer on receive (uint)
parm: debug:Debug level (0=none,...,16=all) (int)
109
o de forma ms fcil para un mdulo que est presente en la ubicacin adecuada del
sistema:
$ sudo /sbin/modprobe e1000e debug=2 copybreak=256
110
Solucin 7.1
1. $ lsmod
En la seccin que viene a con/nuacin, subs/tuya cualquier nombre de mdulo que us
en vez de 3c59x. Cualquiera de estos dos mtodos va a funcionar, pero el segundo es ms
fcil.
2. $ sudo insmod /lib/modules/$(uname -r)/kernel/drivers/net/3c59.x
$ sudo /sbin/modprobe 3c59x
3. $ lsmod | grep 3c59x
4. De nuevo, cualquiera de los siguientes mtodos va a funcionar.
$ sudo rmmod 3c59x
$ sudo modprobe -r 3c59x
5. $ lsmod | grep 3c59x
111
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
112
113
Los nmeros mayor y menor se muestran en el mismo lugar que el tamao de archivo al
visualizar archivos normales; en el ejemplo de arriba sera 8, 0, etc. Mientras que los
usuarios finales probablemente no necesitarn referirse explcitamente a los nmeros
mayor y menor (ya que lo harn por nombre), los administradores de sistema podran
requerir hacerlo de vez e cuando, en caso que el sistema se confunda acerca de los
dispositivos, o si se ha agregado hardware en tiempo de ejecucin.
114
El nmero menor es usado slo por el controlador de dispositivo para diferenciar entre los
diferentes dispositivos que este puede controlar, o cmo son usados. Estos pueden
corresponder a instancias diferentes de un mismo tipo de dispositivo (como la primera y
segunda tarjeta de sonido o particin de disco duro), o diferentes modos de operacin de
un determinado dispositivo (como diferentes densidades en una unidad de disquete).
Los nmeros de dispositivo tienen sentido en el espacio de usuario tambin. Las llamadas
al
sistema mknod() y
stat() entregan
informacin
acerca
de
los
nmeros mayor y menor.
8.3 udev
Los mtodos de gestin de nodos de dispositivo se tornaron torpes y difciles a medida en
que Linux evolucion. El nmero de nodos de dispositivo en /dev y sus subdirectorios
alcanz una cantidad entre 15.000 a 20.000 en la mayora de las instalaciones durante la
serie del kernel 2.4. Nodos para todo tipo de dispositivos - los que nunca van a ser
utilizados en la mayora de las instalaciones - todava son creados de forma
predeterminada, ya que los distribuidores no tienen la certeza de qu hardware estar
presente en un sistema.
Por supuesto, muchos desarrolladores y administradores de sistema recortaron la lista a
lo que realmente se necesita, lo cual es especialmente til en sistemas embebidos, pero
esto correspondi a una tarea esencialmente manual y propensa a generar errores.
Note que mientras los nodos de dispositivo no son archivos normales y no ocupan mucho
espacio en el sistema de archivos, el tener directorios muy grandes disminuye la
velocidad de acceso a los nodos de dispositivo, especialmente en el primer uso. Por otro
lado, el agotamiento de los nmeros mayor y menor disponibles requiere un enfoque ms
moderno y dinmico en cuanto a la creacin y el mantenimiento de los nodos de
dispositivo.
Lo ideal sera registrar dispositivos por nombre. Sin embargo, no es posible librarse de los
nmeros mayor y menor del todo, debido a que el estndar POSIX los exige (POSIX es
un acrnimo de Interfaz de sistema operativo portable, una familia de estndares
diseados para asegurar la compatibilidad entre diferentes sistemas operativos).
El mtodo udev crea nodos de dispositivo al vuelo, a medida en que son requeridos. No
hay necesidad de mantener un gran cantidad de nodos de dispositivo que no van a ser
usados nunca. La u en udev viene de usuario e indica que la mayora del trabajo de
creacin, eliminacin y modificacin de nodos de dispositivo se realiza en el espacio de
usuario.
udev maneja la generacin dinmica de nodos de dispositivo y evolucion de tal forma
que reemplaz mecanismos como devfs y hotplug. Una caracterstica interesante es el
soporte de nombres persistentes para los dispositivos; los nombres no necesitan
depender del orden en el cual los dispositivos son conectados. Tal comportamiento es
controlado en las especificaciones de las reglas de udev.
115
116
de las
reglas
de udev estn
/etc/udev/rules.d/<rulename>.rules,
con nombres como los siguientes:
30-usb.rules
90-mycustom.rules
117
118
119
Objetivos de aprendizaje
Al final del captulo usted debera ser capaz de:
120
IDE y EIDE
(Entorno
de
desarrollo
integrado
e IDE mejorado)
Estos fueron el estndar en notebooks y PCs de escritorio por aos. Sin embargo,
son pequeos y lentos en comparacin a hardware ms moderno, por lo cual
actualmente estn obsoletos; de hecho, los controladores no estn disponibles en
mquinas actualizadas.
121
SAS
El Serial Attached SCSI es un protocolo serial punto a punto nuevo, que viene a
reemplazar a la interfaz SCSI. Las tasas de transferencia son similar a SATA, pero
el rendimiento general es mejor.
USB
Los dispositivos de Bus Universal en Serie incluyen memorias y discos duros
externos USB. El sistema operativo los ve como dispositivos SCSI.
En la misma categora estn las unidades SSD modernas (dispositivos de estado slido),
las cuales han bajado de precio, no tienen partes movibles, usan menos energa que las
unidades de disco giratorio y tienen velocidades de transferencia ms rpidas.
Los SSD internos son instalados de forma similar y en los mismos encapsulados que los
discos convencionales.
System
Linux
Linux
Tenga en cuenta que el uso de la opcin -l slo lista la tabla de particiones sin entrar en
modo interactivo.
Los discos giratorios se componen de uno o ms platos, cada uno de los cuales es ledo
por uno o ms cabezales. Los cabezales leen una pista del plato a medida en que el
disco gira.
Estas pistas circulares estn divididas en bloques de datos llamados sectores,
generalmente de 512 bytes de tamao. Un cilindro es un grupo que est formado por una
misma pista en todos los platos.
122
A medida en que el tiempo pasa la figura de la estructura fsica ha sido cada vez menos
relevante, debido a que se conoce poco de la electrnica interna de la unidad. Adems,
los SSD no tienen partes mviles ni ninguna de las partes descritas anteriormente.
Actualmente los discos estn siendo fabricados con sectores ms grandes que 512 bytes;
estn disponibles en 4 KB. Mientras que sectores de tamao ms grandes pueden
conducir a velocidades de transferencia mayores, el soporte del sistema operativo no est
listo todava para lidiar con tamaos grandes.
9.3 Particionamiento
Los discos se dividen en particiones. En trminos geomtricos, estos consisten en
grupos fsicamente contiguos de sectores o cilindros.
Una de las particiones primarias puede ser designada como una particin extendida, la
cual puede ser subdividida en particiones lgicas.
SCSI y estndares relacionados como SATA, suportan hasta 15 particiones en el disco.
Las particiones 1-4 son primarias o extendidas; las particiones 5-15 son lgicas. Slo
puede haber una particin extendida, pero esta puede ser dividida en cuntas particiones
lgicas se necesiten, hasta que se alcance el nmero mximo de particiones permitidas.
Por ejemplo, la primera unidad SCSI o SATA se denomina sda, la segunda sdb y as
sucesivamente. En la primera unidad, /dev/sda1 es la primera particin
primaria, /dev/sda2 es la segunda, etc.
Si creamos una particin extendida como /dev/sda3, esta podra ser dividida en
particiones lgicas, con designaciones numricas como /dev/sda5, /dev/sda6, etc.
Nota: Linux no requiere que las particiones comiencen o terminen en los lmites de los
cilindros, pero otros sistemas operativos podran presentar problemas ante la misma
situacin. Por esta razn, las herramientas de particionamiento deLinux tratan de
terminar en los lmites, con el fin de integrarse bien con otros sistemas. Obviamente, las
particiones tampoco deberan traslaparse.
123
Separacin
Es deseable aislar los datos de usuario y aplicaciones de los archivos del sistema
operativo, la mayora de los cuales son de lectura solamente, excepto durante la
instalacin y actualizaciones del sistema. Por ejemplo,/home, que contiene
archivos especficos de los usuarios se suele poner en una particin por separado.
Datos compartidos
Mltiples sistemas operativos o mquinas pueden usar los mismos sistemas de
archivos. Por ejemplo, /home podra estar montado como un directorio compartido
en una red, a travs de NFS. O alguien podra tener un sistema de inicio mltiple,
incluso varias versiones de Linux, entre las cuales usted podra desear
compartir/usr/local o /home, por dar un par de ejemplos.
Seguridad
Puede ser deseable imponer diferentes cuotas (espacio en disco), permisos y
ajustes para diferentes partes del sistema.
Tamao
Algunos datos son ms bien constantes y otros variables o voltiles, y a menudo
pueden incrementar su tamao un poco. Por ejemplo, tales datos variables son
almacenados generalmente en una particin montada en /var. Si la particin se
queda sin espacio disponible, en el caso de estar en una particin por separado
de /, ser menos probable que el sistema se bloquee.
Rendimiento
Los datos que tienen que ser ledos con mayor frecuencia, en grandes trozos de
informacin, sern accedidos ms rpidamente si estn en un disco rpido (como
los SSD), o en trminos anticuados, cercanos al centro del disco, en donde los
tiempos de bsqueda son ms cortos.
Intercambio (swap)
124
Cada entrada en la tabla de particin tiene 16 bytes de largo y describe una de las cuatro
posibles particiones primarias. La informacin que tiene cada una es la siguiente:
Bit activo
Direccin de inicio en formato cilindro/cabezal/sectores (CHS), lo cual es ignorado
por Linux de todas formas
Cdigo del tipo de particin, indicando: xfs, LVM, ntfs, ext4, swap, etc
Direccin final en CHS (tambin ignorado por Linux)
Sector de inicio, contando linealmente desde 0
Nmero de sectores en la particin
Linux usa slo los ltimos dos campos para direccionamiento, utilizando el mtodo de
direccionamiento de bloque lgico (LBA).
125
Los nodos de dispositivo para discos SCSI y SATA siguen una convencin de nombres
simple:
El primer disco duro es /dev/sda.
El segundo disco duro es /dev/sdb.
etc.
Las particiones son enumeradas como sigue:
ID 1 sera /dev/sda
ID 3 sera /dev/sdb
ID 2 (en la controladora 1) sera /dev/sdc
ID 5 sera /dev/sdd
126
blkid funcionar solamente en dispositivos que contienen datos, es decir, una particin
vaca no generar un identificador de bloque UUID. blkid tiene dos formas principales de
operacin: ya sea buscando un dispositivo con un par especfico NOMBRE=valor, o
desplegando pares de NOMBRE=valor para uno o ms dispositivos.
Si no se especifican argumentos, se listarn todos los dispositivos. Existe un buen nmero
de opciones que indican cmo especificar qu atributos se desean listar.
Una herramienta relacionada es lsblk, la cual presenta los resultados en un formato de
rbol, como se muestra abajo:
127
$ lsblk -i
NAME
sda
|-sda1
|-sda3
|-sda5
|-sda6
| -VG-dead
|-sda7
|-sda8
| |-VG-tmp
| |-VG-local
| |-VG-src
| |-VG-virtual
| |-VG-iso_images
| |-VG-dead
| |-VG-audio
| -VG-pictures
|-sda9
| |-VG-virtual
| -VG-dead
MAJ:MIN RM
SIZE RO
8:0
0 465.8G 0
8:1
0
100M 0
8:3
0
1K 0
8:5
0 11.7G 0
8:6
0 36.2G 0
254:5
0
60G 0
8:7
0
12G 0
8:8
0 353.2G 0
254:0
0
2G 0
254:1
0
24G 0
254:2
0
16G 0
254:3
0
225G 0
254:4
0
60G 0
254:5
0
60G 0
254:6
0
12G 0
254:7
0
12G 0
8:9
0 23.2G 0
254:3
0
225G 0
254:5
0
60G 0
TYPE
disk
part
part
part
part
lvm
part
part
lvm
lvm
lvm
lvm
lvm
lvm
lvm
lvm
part
lvm
lvm
MOUNTPOINT
/boot_master
/RHEL6-64
/DEAD
/usr/local
/usr/src
/VIRTUAL
/ISO_IMAGES
/DEAD
/PICTURES
/VIRTUAL
/DEAD
128
El rea de intercambio es usado como memoria virtual; cuando las pginas de procesos
son movidas fuera de la memoria fsica, generalmente son almacenadas en el rea de
intercambio.
Note que los comandos mencionados copiarn solamente la tabla de particin primaria;
no se harn cargo de cualquier tabla de particin que est almacenada en otras
partitiones (como particiones extendidas, por ejemplo).
Nota: usted debera asumir que modificar la tabla de particin del disco podra eliminar
toda la informacin de todos los sistemas de archivos en el disco (no debera, pero es
mejor ser precavido). Por lo tanto, siempre es prudente realizar una copia de seguridad de
toda la informacin antes de realizar cualquier trabajo de este tipo.
En particular, es necesario ser cuidadoso al usar dd: un error simple de tipeo o una opcin
usada errneamente podra destruir la informacin completa del disco, en cualquier caso
lo mejor es hacer respaldos!
129
Muchas distribuciones Linux tienen una versin Live CD que se puede ejecutar ya sea
desde un CDROM o un dispositivo USB. Esos medios suelen incluir una copia de gparted,
por lo cual puede ser usado fcilmente como una herramienta grfica de particionamiento
en discos que no estn siendo utilizados.
Note que gparted puede realizar muchas operaciones ms que slo agregar y eliminar
particiones (y las dems operaciones que realiza fdisk), como asignar el tipo de particin.
Es posible mover, redimensionar y formatear particiones, lo cual implica entender los
detalles de diversos tipos de sistemas de archivos. Lo anterior va mucho ms lejos de las
funciones esenciales de un editor de particiones.
Si bien es cierto que esto es muy til, es difcil hacerlo bien y los errores pueden tener
consecuencias serias. Por lo anterior, se recomienda ir a la lnea de comandos y realizar
cada una de estas operaciones por separado, con herramientas de bajo nivel (como
fdisk). De hecho Red Hat Enterprise Linux ya no soporta gparted.
130
m: Despliega el men.
p: Lista la tabla de particiones.
n: Crea una particin nueva.
d: Elimina una particin.
t: Cambia el tipo de particin.
w: Escribe la informacin nueva de la tabla de particiones y sale.
q: Sale sin realizar cambios.
131
132
Obviamente puede darle formato con un sistema de archivos diferente, haciendo mkfs.ext3,
mkfs.vfat, mkfs.xfs, etc.
3. Mntela en algn lugar:
$ mkdir mntpoint
$ sudo mount -o loop image.le mntpoint
133
134
3. The -C 130 which sets the number of phony cylinders in the drive is only necessary in old
versions of fdisk, which unfortunately you will .nd on RHEL 6. However, it will do no harm on
other distribu/ons.
Create a new primary par//on and make it 256 MB (or whatever size you would like:
Command (m for help): n
Par//on type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Par//on number (1-4, default 1): 1 First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +256M
Par//on 1 of type Linux and of size 256 MiB is set
4. Add a second primary par//on also of 256 MB in size:
Command (m for help): n
Par//on type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Par//on number (2-4, default 2): 2
First sector (526336-2097151, default 526336):
Using default value 526336
Last sector, +sectors or +size{K,M,G} (526336-2097151, default 2097151): +256M
Par//on 2 of type Linux and of size 256 MiB is set
Command (m for help): p
Disk image.le: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/op/mal): 512 bytes / 512 bytes
Disk label type: dos
Disk iden/.er: 0x6280ced3
Device Boot
Start
image.le1 2048
image.le2 526336
End
526335 2
1050623
Blocks
62144
262144
83
83
Id
Linux
Linux
System
135
136
Es de nuestro inters que usted lea las pginas man de losetup y parted antes de realizar los
procedimientos que vienen a con/nuacin.
Una vez ms, usted puede reu/lizar el archivo de imagen, o mejor aun, recrearlo para comenzar
con un archivo nuevo.
1. Asocie el archivo de imagen con un disposi/vo loop:
$ losetup -f
/dev/loop1
$ sudo losetup /dev/loop1 image.le
Donde el primer comando encuentra el primer disposi/vo loop libre. La razn para hacer esto es
que su sistema podra estar usando uno o ms disposi/vos loop. Lo siguiente es ejecutado como
ejemplo en un sistema de pruebas, antes de crear el disposi/vo loop:
$ losetup -a
/dev/loop0: []: (/usr/src/KERNELS.sqfs)
un sistema de archivos comprimido de slo lectura squashfs est montado y usando
/dev/loop0.
Nota: la salida del comando anterior puede variar en funcin de la distribucin. Si ignorramos lo
anterior y ejecutamos losetup en /dev/loop0 probablemente corromperiaamos el archivo.
2. Crear una e/queta de par/cin de disco en el disposi/vo loop (archivo de imagen):
$ sudo parted -s /dev/loop1 mklabel msdos
3. Crear tres par/ciones primarias en el disposi/vo loop:
$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 0 256
$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 256 512
$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 512 1024
137
Start
1
500001
1000001
End
500000
1000000
2000000
Blocks
250000
250000
500000
Id
83
83
83
System
Linux
Linux
Linux
138
Size
29G
Used
8.5G
Avail
19G
ext3
ext4
vfat
233M 2.1M
233M 2.1M
489M 0
Use% Mounted on
32% /
219M 1%
215M 1%
489M 0%
mnt1
mnt2
mnt3
8. Una vez que ha terminado de u/lizar los sistemas de archivos puede deshacer lo realizado con:
139
140
Objetivos de aprendizaje
Al final del captulo usted debera ser capaz de:
141
10.2 Luks
Las distribuciones de Linux modernas proveen un cifrado a nivel de dispositivo de bloque
principalmente a travs de LUKS (Linux Unified Key Setup). Usar este tipo de cifrado es
altamente recomendable para sistemas porttiles como laptops, tabletas y telfonos
inteligentes.
LUKS est basado en cryptsetup, una herramienta potente que tambin puede usar
otros mtodos como volmenes dm-crypt (planos), loop-AES y formato compatible
con TrueCrypt. No vamos a discutir esas alternativas, ya que LUKS es el mtodo
estndar y usado ms a menudo en Linux (fue diseado originalmente para Linux, pero
tambin ha sido exportado a otros sistemas operativos).
El mdulo del kernel dm-crypt usa la infraestructura de device mapper del kernel, la cual
es usada tambin de forma importante en LVM, lo cual veremos ms adelante.
Debido a que LUKS almacena toda la informacin necesaria en la cabecera de la
particin, es simple migrar particiones a otros discos o sistemas.
LUKS tambin puede ser usado para cifrar particiones de intercambio de forma
transparente.
10.3 crypsetup
Bsicamente, todo se realiza con el programa cryptsetup. Una vez que los volmenes han
sido cifrados, pueden ser montados y desmontados con las utilidades normales.
La sintaxis comn de un comando es la siguiente:
cryptsetup [OPTION...] <action> <action-specific>
y una lista con todas las opciones puede ser generada con:
$ cryptsetup help
142
Se le pedir ingresar una contrasea, la cual tendr que usar para abrir el volumen cifrado
ms tarde. Note que tendr que hacer esto una vez solamente, durante la configuracin
del cifrado.
Usted podra enfrentar ciertas dificultades si el kernel del sistema no soporta el mtodo de
cifrado que usa cryptsetup por defecto. En ese caso usted puede
examinar /proc/crypto para ver los mtodos que soporta el sistema, y luego especificar
uno, como se muestra a continuacin:
$ sudo cryptsetup luksFormatcipher aes /dev/VG/MYSECRET
/dev/mapper/SECRET
Y montarlo:
$ sudo mount /dev/mapper/SECRET /mnt
A partir de este momento usted dispone de una particin sin cifrar montada en /mnt, con
la cual puede trabajar a su gusto. Cuando haya terminado de realizar las tareas en
cuestin, la puede desmontar de la siguiente forma:
$ sudo umount /mnt
luego remueva la asociacin mapper por el momento (siempre podr usar la particin
nuevamente):
$ sudo cryptsetupverbose luksClose SECRET
143
Usted puede hacer otras cosas en este archivo, como especificar la contrasea si no
desea ingresarla en el arranque (lo cual sera contraproducente para la seguridad del
sistema). Haga man crypttab para ver todo lo que puede hacer con este archivo.
144
2.
3.
4.
5.
6.
7.
8.
9.
kernel est al tanto de la nueva tabla de par/cin. Un reinicio lo lograr, pero hay otros
mtodos tambin.
Formatee la par/cin con cryptsetup usando LUKS para la capa de cifrado.
Cree la clave para abrir el disposi/vo de bloque cifrado.
Agregue una entrada a /etc/cryp@ab para que el sistema pregunte la clave en el reinicio.
Formatee el sistema de archivos con ext4.
Cree un punto de montaje para el sistema de archivos nuevo, por ejemplo /secret.
Agregue una entrada a /etc/fstab para que el sistema sea montado en el arranque.
Intente montar el sistema cifrado.
Reinicie y valide la con.guracin completa.
145
Solucin 10.1
1. $ sudo fdisk /dev/sda
Cree una par/cin nueva (en el ejemplo trabajaremos con /dev/sda4) y luego ejecute:
$ sudo partprobe -s
para que el sistema relea la tabla de par/cin modi.cada, o reinicie (lo cual es lejos lo ms
seguro).
Nota: Si no puede usar una par/cin real, use el mtodo descrito en el captulo anterior
para trabajar con un disposi/vo loop o un archivo de imagen.
2. $ sudo cryptsetup luksFormat /dev/sda4
3. $ sudo cryptsetup luksOpen /dev/sda4 secret-disk
4. Agregue lo siguiente a /etc/cryp@ab:
secret-disk /dev/sda4
5. $ sudo mkfs -t ext4 /dev/mapper/secret-disk
6. $ sudo mkdir -p /secret
7. Agregue lo siguiente a /etc/fstab:
/dev/mapper/secret-disk
/secret ext4
defaults
146
Used
4193776
Priority
0
-1
2. Realice los mismos pasos del ejercicio anterior para con.gurar el cifrado:
$ sudo cryptsetup luksFormat /dev/sda11 # may useciper aes op/on
$ sudo cryptsetup luksOpen /dev/sda11 swapcrypt
3. Formatee el disposi/vo cifrado para usarlo como rea de intercambio:
$ sudo mkswap /dev/mapper/swapcrypt
4. Ahora ac/ve la par/cin y veri.que si est funcionando:
$ sudo swapon /dev/mapper/swapcrypt
$ cat /proc/swaps
147
148
Objetivos de aprendizaje
Al final del captulo usted debera ser capaz de:
149
150
151
152
ext3 fue una extensin del sistema de archivos anterior ext2, el cual no tena
journaling.
153
nodev
nodev
sysfs
rootfs
ramfs
bdev
proc
cgroup
cpuset
tmpfs
devtmpfs
binfmt_misc
debugfs
sockfs
pipefs
devpts
squashfs
hugetlbfs
iso9660
mqueue
ext3
ext2
ext4
fuseblk
fuse
fusectl
nodev autofs
nodev rpc_pipefs
nodev nfsd
Note que para algunos tipos de sistemas de archivos adicionales, el cdigo de soporte
puede ser cargado slo cuando el sistema trata de acceder la particin que los contiene.
154
Note que algunos de esos sistemas de archivos especiales no tienen punto de montaje;
esto significa que las aplicaciones de usuario no interactan con ellos, pero el kernel lo
hace, tomando ventaja de las capas y el cdigo del VFS.
155
156
157
Podra intentar llenarlo hasta que se alcance la capacidad mxima y luego vea qu sucede. No
olvide desmontarlo una vez que haya terminado las pruebas, con el comando:
$ sudo umount /mnt/tmpfs
Prc/camente todas las distribuciones modernas de Linux montan una instancia de tmpfs en
/dev/shm:
$ df -h /dev/shm
Filesystem
Tmpfs
Type Size
tmpfs 3.9G
Used
24M
Avail
3.9G
Use% Mounted on
1%
/dev/shm
Muchas aplicaciones hacen esto en casos como cuando se usa memoria compar/da POSIX como
un mecanismo de comunicacin interprocesos. Cualquier usuario puede crear, leer y escribir
archivos en /dev/shm, por lo que es un buen lugar para crear archivos temporales en memoria.
Cree algunos archivos en /dev/shm y observe con df cmo el sistema de archivos se va llenando.
Adicionalmente, muchas distribuciones montan instancias ml/ples de tmpfs; por ejemplo, se
observa lo siguiente en un sistema RHEL 7:
$ df -h | grep tmpfs
devtmpfs
devtmpfs
3.9G 0
3.9G 0%
/dev
tmpfs
tmpfs
3.9G 24M 3.9G 1%
/dev/shm
tmpfs
tmpfs
3.9G 9.2M 3.9G 1%
/run
tmpfs
tmpfs
3.9G 0
3.9G
0%
/sys/fs/cgroup
/tmp/vmware-coop/564d9ea7-8e8e-29c0-2682-e5d3de3a51d8 tmpfs 3.3G 0 3.3G 0%
/tmp/vmware-coop/564d9ea7-8e8e-29c0-2682-e5d3de3a51d8 /tmp/vmwarecoop/564d7668-ec55-ee45-f33e-c8e97e956190 tmpfs 2.3G 2.0G 256M 89%
/tmp/vmware-coop/ 564d7668-ec55-ee45-f33e-c8e97e956190
none
tmpfs
1.0G
1.0G
100% /tmp/ohno
Note que el comando anterior fue ejecutado en un sistema con 8GB de RAM, por lo cual usted
probablemente no tendr todos esos sistemas de archivos tmpfs usando los 4 GB con los cuales
han sido asignados.
Algunas distribuciones como Fedora podran montar por defecto /tmp como un sistema tmpfs; en
estos casos uno podra evitar poner archivos grandes en /tmp para que el sistema no se quede sin
memoria. Otra posibilidad es deshabilitar ese comportamiento, como se mencion anteriormente
al describir /tmp.
158
159
Objetivos de aprendizaje
Al final del captulo usted debera ser capaz de:
160
12.1 Inodos
Permisos
Usuario y grupo propietario
Tamao
Registros de tiempo (al nanosegundo)
Momento en el cual se realiz el ltimo acceso
Momento en el cual se realiz la ltima modificacin del contenido
Momento en el cual se realiz la ltima modificacin del inodo
Nota: los nombres de los archivos no se almacenan en el inodo asociado al archivo, sino
que lo hacen en el archivo de directorio.
Toda la actividad E/S concerniente a un archivo usualmente involucra el inodo del archivo
como informacin que debe ser actualizada.
161
Un archivo con el atributo de inmutabilidad (i) no puede ser modificado (ni siquiera
por root). No puede ser borrado o renombrado. No se puede crear un link duro a l
y no es posible escribir datos al archivo. Slo el superusuario puede configurar o
eliminar este atributo.
a: agregar solamente
Un archivo con el atributo de agregar solamente (a) puede ser abierto en modo
agregar para escritura solamente. Slo el superusuario puede configurar o eliminar
este atributo.
d: no respaldar
162
163
164
Cada tipo de sistema de archivos tiene sus propias opciones que pueden ser configuradas
en el proceso de formateo. Por ejemplo, cuando se crea un sistema de archivos ext4, un
asunto para considerar es la configuracin del journaling. Estos incluyen el tamao de
archivo del journal y si se utilizar o no un archivo de journal externo.
Es necesario revisar la pgina man de cada uno de los programas mkfs.* para ver los
detalles.
$ ls -l /sbin/fsck*
-rwxr-xr-x 1 root root 34680 Apr 10 03:50 /sbin/fsck
-rwxr-xr-x 1 root root 15976 Apr 10 03:50 /sbin/fsck.cramfs
rwxr-xr-x 5 root root 197352 Jul 16 15:31 /sbin/fsck.ext2
-rwxr-xr-x 5 root root 197352 Jul 16 15:31 /sbin/fsck.ext3
-rwxr-xr-x 5 root root 197352 Jul 16 15:31 /sbin/fsck.ext4
-rwxr-xr-x 5 root root 197352 Jul 16 15:31 /sbin/fsck.ext4dev
lrwxrwxrwx 1 root root
7 Dec 6 2011 /sbin/fsck.msdos -> dosfsck
lrwxrwxrwx 1 root root
13 Sep 28 2011 /sbin/fsck.ntfs ->
../bin/ntfsck
lrwxrwxrwx 1 root root
7 Dec 6 2011 /sbin/fsck.vfat -> dosfsck
El archivo /forcefsck desaparecer luego de que la verificacin sea exitosa. Esta forma
de verificacin es muy til, ya que permite ejecutar fsck en el sistema de archivos root, lo
cual es muy difcil de realizar en un sistema que est corriendo.
El formato general de fsck es el siguiente:
LFS201: Fundamentos de Administracin de Sistemas Linux
165
donde [device-file] es
generalmente un
nombre
de
dispositivo
como /dev/sda3 o /dev/vg/lvm1. Usualmente no es necesario especificar el tipo de
sistema de archivo, ya que fsck puede detectarlo a travs de examinar los superbloques
al comienzo de la particin.
Es posible controlar si los errores encontrados deben repararse uno a uno manualmente
con la opcin -r, o automticamente de la mejor forma posible usando la opcin -a.
Adicionalmente, cada tipo de sistema de archivo puede tener sus propias opciones
particulares que pueden ser configuradas al momento de la verificacin.
Note que los sistemas de archivos con journaling son mucho ms rpidos para verificar
que los sistemas de archivos de generaciones anteriores por dos razones:
Raramente es necesario escanear la particin completa para buscar errores, ya
archivos nuevos han sido diseados con fsck rpido; de hecho los sistemas de
archivos antiguos no consideraron este tema cuando fueron diseados, debido a
que los tamaos eran mucho ms pequeos.
Para ver los detalles de los programas fsck.* vea la pgina man de cada uno.
166
12.7 mount
Cada sistema de archivos es montado bajo un directorio especfico, como en el caso que
se muestra a continuacin:
$ sudo mount -t ext4 /dev/sdb4 /home
Monta un sistema de archivos ext4.
El sistema de archivos est localizado en una particin especfica del disco duro
(/dev/sdb4).
El sistema de archivos est montado en la posicin /home en el rbol de
directorios actual.
Cualquier archivo que est en el directorio original /home estar oculto hasta que
la particin se desmonte.
Note que en este ejemplo el sistema de archivos es montado utilizando el nodo de
dispositivo sobre el que reside. Sin embargo, tambin es posible montarlo usando
una etiqueta o un UUID. Por lo tanto, los siguientes comandos son todos equivalentes:
$
$
$
$
$
sudo
sudo
sudo
sudo
sudo
mount /dev/sda2
/home
mount LABEL=home
/home
mount
-L home
/home
mount UUID=26d58ee2-9d20-4dc7-b6ab-aa87c3cfb69a /home
mount
-U 26d58ee2-9d20-4dc7-b6ab-aa87c3cfb69a /home
Las etiquetas son asignadas por utilidades especficas de cada tipo de sistema de
archivos, tal como e2label. Los UUIDs se asignan cuando las particiones son creadas
como contenedores para el sistema de archivos.
Mientras cualquiera de estos tres mtodos para especificar el dispositivo puede ser
usado, los sistemas modernos desestiman el uso del nodo de dispositivo debido a que los
nombres pueden cambiar de acuerdo a cmo el sistema arranca, qu discos duros son
encontrados primero, etc. Las etiquetas son una mejora, pero en raras ocasiones se
podra tener dos particiones que se muestran con la misma etiqueta. Los UUIDs, sin
embargo, siempre deberan ser nicos y son creados cuando las particiones se crean.
167
168
12.9 umount
Los sistemas de archivos pueden ser desmontados de la siguiente forma:
$ umount [device-file | mount-point]
169
/
/RHEL6-32
/boot
ext4
ext4
ext3
defaults
defaults
defaults
/usr/local ext4
defaults
/tmp
ext4
defaults
/usr/src
ext4
defaults
/VIRTUAL
ext4
defaults
/BEAGLE
ext4
defaults
/c
ntfs-3g uid=500,gid=500
/var/ftp/pub2
none bind
/share
nfs
defaults
swap
swap
defaults
/dev/shm
tmpfs
defaults
/dev/pts
devpts
gid=5,mode=6200
/sys
sysfs
defaults
/proc
proc
defaults
/sys/kernel/debug debugfs
defaults
1 1
1 2
1 2
1
1
1
1
1
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
170
en vez de
$ sudo mount LABEL=src /usr/src
171
172
Solucin 12.1
1. $ cd /tmp
$ touch appendit
$ ls -l appendit
173
$ cat appendit
9. $ sudo cha@r +i appendit
$ lsa@r appendit
----ia-------e- appendit
10. $ echo hello >> appendit
174
175
Solucin 12.2
Solucin con una par/cin Usica
1. No mostraremos los pasos detalles de fdisk, ya que lo hemos visto anteriormente. Para efectos
del ejercicio asumiremos que la par/cin creada es /dev/sda11.
$ sudo fdisk /dev/sda
.....
w
$ partprobe s
A veces partprobe no funciona y para asegurarse de que el sistema est al tanto de la par/cin
nueva es necesario reiniciar.
2. $ sudo mkfs -t ext4 -v /dev/sda11
$ sudo mkfs -t ext4 -b 2048 -v /dev/sda11
$ sudo mkfs -t ext4 -b 4096 -v /dev/sda11
Note que el parmetro -v (reporte detallado) le proveer la informacin requerida; ver que
para una par/cin pequea como est el valor por defecto es de 1024 bloques de byte.
3. $ sudo mkdir /mnt/tempdir
$ sudo mount /dev/sda11 /mnt/tempdir
$ mount | grep tempdir
4. $ sudo umount /mnt/tempdir
$ sudo mount -o ro /dev/sda11 /mnt/tempdir
Si ob/ene un error mientras desmonta el disposi/vo, asegrese que no est actualmente en
ese directorio.
5. $ sudo touch /mnt/tempdir/a.le
6. $ sudo umount /mnt/tempdir
7.
176
177
atributos extendidos.
Crear y formatear sistemas de archivos.
Verificar y reparar errores en sistemas de archivos.
Montar y desmontar sistemas de archivos.
178
sistema
de
Objetivo de aprendizaje
Al final de este captulo usted debera ser capaz de:
Explicar los conceptos de rea de intercambio y cuotas.
Usar las herramientas que ayudan a administrar las cuotas: quotacheck,
179
esto se debe a que los procesos hijos heredan una copia de las regiones de
memoria de los padres, que utilizan la tcnica COW (Copy On Write), en la cual el
hijo obtiene solamente una copia nica (de a una pgina) cuando hay un cambio.
Cuando la presin de memoria se vuelve importante, regiones de memoria menos
activa pueden ser escritas al rea de intercambio, para ser llamadas slo cuando
se requieren nuevamente.
Tal movimiento en el rea de intercambio sea realiza usualmente a una o ms particiones
o archivos; Linux permite mltiples reas de intercambio, por lo cual las necesidades
pueden ser ajustadas dinmicamente. Cada rea tiene una prioridad asociada; las de
prioridad baja no son utilizadas hasta que otras de prioridad mayor estn llenas.
En la mayora de los casos el tamao recomendado de intercambio es el total de RAM en
el sistema. Es posible ver lo que el sistema est usando actualmente en las reas de
intercambio de la siguiente forma:
$ cat /proc/swaps
Filename
Priority
/dev/sda9
-1
/dev/sdb6
-2
Type
Size
Used
partition
4193776
partition
4642052
total
4047236
8835828
used
3195080
0
free
852156
8835828
shared
0
buffers
818480
cached
1430940
Los nicos comandos que implican el rea de intercambio son los siguientes:
mkswap: formatea una particin o archivo de intercambio
swapon: activa una particin o archivo de intercambio
swapoff: desactiva una particin o archivo de intercambio
180
13.2 Cuotas
Linux puede usar y aplicar cuotas en sistemas de archivos. Las cuotas de disco
permite a los administradores controlar el espacio mximo que usuarios o grupos
particular tienen habilitados para su uso. Se permite una flexibilidad considerable y
cuotas pueden ser asignadas en base a cada sistema de archivos. Se provee
proteccin para que los usuarios no agoten los recursos colectivos.
les
en
las
de
quotacheck: genera y actualiza los archivos que llevan la cuenta de las cuotas
181
Montar el sistema de archivos con las opciones de cuota de usuario y/o grupo:
- Agregar las opciones usrquota y/o grpquota a la entrada del sistema de
archivos en /etc/fstab
Por lo tanto, para crear una cuota de sistema de archivos primero hay que asegurarse de
haber montado el sistema de archivos con las opciones de cuota para usuarios y/o
grupos. Recuerde que sin ellos no va a funcionar.
Primero es necesario agregar las opciones correctas en el archivo /etc/fstab, como se
muestra a continuacin:
/dev/sda5 /home ext4 defaults,usrquota 1 1
donde hemos asumido que /home est en una particin dedicada.
Luego realice un test con los siguientes comandos:
$
$
$
$
sudo
sudo
sudo
sudo
Usted tambin podra querer configurar perodos de gracia con edquota. Las opciones
de montaje que deberan ser usadas en el archivo /etc/fstab son usrquota para cuotas
de usuario y grpquota para cuotas de grupo.
182
13.4 quotacheck
La herramienta quotacheck crea y actualiza los archivos que llevan la cuenta de las
cuotas (aquota.user y aquota.group) en el sistema de archivos.
Para actualizar los archivos de usuarios para todos los sistemas de archivos
en /etc/fstab con opciones de cuota de usuario, haga lo siguiente:
$ sudo quotacheck ua
Para actualizar los archivos de grupo para todos los sistemas de archivos
en /etc/fstab con opciones de cuota de grupo, haga lo siguiente:
$ sudo quotacheck -ga
183
Note que estos dos programas son realmente uno y funcionan de acuerdo al nombre con
el cual son invocados.
Por ejemplo:
$ sudo quotaon -av
/dev/sda6 [/]: group quotas turned on
/dev/sda5 [/home]: user quotas turned on
$ sudo quotaoff -av
/dev/sda6 [/]: group quotas turned off
/dev/sda5 [/home]: user quotas turned off
$ sudo quotaon -avu
/dev/sda5 [/home]: user quotas turned on
$ sudo quotaoff -avu
/dev/sda5 [/home]: user quotas turned off
$ sudo quotaon -avg
/dev/sda6 [/]: group quotas turned on
$ sudo quotaoff -avg
/dev/sda6 [/]: group quotas turned off
de
cuota
fallarn
si
los
archivos
184
Por ejemplo:
$ sudo quota
Disk quotas for user user1 (uid 500):
Filesystem
blocks quota limit grace files quota limit grace
/dev/sda5 837572
500 1000
5804
0
0
$ sudo quota bob
Disk quotas for user bob (uid 500):
Filesystem
blocks quota limit grace files quota limit grace
/dev/sda5
83757 5000 10000
5804
0
0
El tercer y cuarto comandos son tiles para ser incluidos en scripts, con el fin de crear
cuentas nuevas y configurar cuotas para ellas.
185
Las cuotas para usuarios y grupos pueden estar configuradas para bloques de discos y/o
inodos. Adicionalmente, los lmites soft y hard pueden ser configurados como perodos
de gracia: el lmite soft puede ser excedido por un perodo de gracia, sin embargo, el
lmite hard no puede ser excedido en ningn caso.
El perodo de gracia se configura en funcin de cada sistema de archivos.
$ sudo edquota bob
$ sudo edquota t
Size
9.8G
3.9G
9.8G
380M
24G
16G
12G
59G
8.9G
35G
2.3G
22G
80% /PICTURES
62% /DEAD
222G
162G
49G
77% /VIRTUAL
59G
35G
21G
63% /ISO_IMAGES
3.8G
3.8G
0 100% /usr/src/KERNELS
186
/teaching/CRASH/crash-7.0.3/memory_driver
/teaching/CRASH/crash-7.0.3/extensions
/teaching/CRASH/crash-7.0.3
/teaching/CRASH
total
187
188
Fjese en el campo Priority; las par/ciones o archivos de intercambio de menor prioridad no sern
u/lizadas hasta que las de mayor prioridad estn llenas. Desac/ve el archivo de rea de
intercambio y brrelo para ahorrar ese espacio:
$ sudo swapod swp.le
$ sudo rm swp.le
Solucin 13.2
LFS201: Fundamentos de Administracin de Sistemas Linux
189
1. Modi.que /etc/fstab para tener una de las dos lneas que se muestran, de acuerdo a si /ene
una par/cin real o un archivo loopback:
/dev/sda11 /mnt/tempdir ext4 usrquota 1 3
/tmp/image.le /mnt/tempdir ext4 loop,usrquota 1 3
Luego mntelo nuevamente:
$ sudo mount -o remount /mnt/tempdir
2. $ sudo quotacheck -u /mnt/tempdir
$ sudo quotaon -u /mnt/tempdir
$ sudo chown student.student /mnt/tmpdir
Usualmente no es necesario realizar lo que se muestra en la lnea, pero lo estamos haciendo
para que la prxima parte sea ms fcil.
3. Reemplace la cuenta student por su nombre de usuario.
4. $ sudo edquota -u student
5. $ cd /mnt/tempdir
$ dd if=/dev/zero of=big.le1 bs=1024 count=200
200+0 records in
200+0 records out
204800 bytes (205 kB) copied, 0.000349604 s, 586 MB/s
$ quota
Disk quotas for user student (uid 500):
Filesystem blocks quota lim grace .les qu lim gr
/dev/sda11 200 500 1000 1 0 0
$ dd if=/dev/zero of=big.le2 bs=1024 count=400
sda11: warning, user block quota exceeded.
400+0 records in
400+0 records out
4096600 bytes (410 kB) copied, 0.000654847 s, 625 MB/s Create big.le3 (600 blocks).
190
6. $ quota
Disk quotas for user student (uid 500):
Filesystem blocks quota limit grace .les qu lim gr
/dev/sda11 600* 500 1000 6days 2 0 0
$ dd if=/dev/zero of=big.le3 bs=1024 count=600
sda11: write failed, user block limit reached.
dd: wri/ng big.le3: Disk quota exceeded
401+0 records in
400+0 records out
409600 bytes (410 kB) copied, 0.00177744 s, 230 MB/s
$ quota
Disk quotas for user student (uid 500):
Filesystem blocks quota limit grace .les quota limit grace
/dev/sda11 1000* 500 1000 6days 3 0 0
$ ls l
total 1068 -rw------- 1 root root 7168 Dec 10 18:56 aquota.user
rw-rw-r-- 1 student student 204800 Dec 10 18:58 big.le1
rw-rw-r-- 1 student student 409600 Dec 10 18:58 big.le2
rw-rw-r-- 1 student student 409600 Dec 10 19:01 big.le3
drwx------ 2 root root 16384 Dec 10 18:47 lost+found
rwxr-xr-x 1 root root 41216 Dec 10 18:52 more
Examine de cerca los tamaos de los archivos.
7. Restablezca /etc/fstab a su contenido original.
las
cuotas:
191
Captulo
14.
Ext2/Ext3/Ext4
Los
sistemas
de
archivos
La familia de sistemas de archivos ext han sido nativos de Linux desde sus primeros
das, y los ms ampliamente usados de todas las alternativas disponibles. Hasta muy
recientemente, ext4 ha sido la alternativa por defecto ms frecuente de
distribuciones Linux, debido a su excelente combinacin de rendimiento, integridad y
estabilidad.
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
192
193
unknown: no se desmont de forma limpia, como cuando hay un bloqueo o cada del
sistema
En los ltimos dos casos fsck ser ejecutado para verificar el sistema de archivos y
resolver cualquier problema antes de que sea montado.
Otros campos en el superbloque contienen informacin acerca de la ltima verificacin del
sistema de archivos, tanto la fecha como el nmero de montajes. Una verificacin
automtica es lanzada cuando los lmites ajustables exceden esos valores.
El primer bloque en el sistema de archivos es llamado bloque de arranque y est
reservado para el sector de arranque de la particin.
194
Superbloque
Descriptores
de Grupo
Mapa
de
Mapa de Tabla
de
Bits
de
Bits
de Inodos
Bloques de
Inodos
(n bloques)
Datos
Data
Bloques de
Datos
(n bloques)
El primer y segundo bloque son los mismos para cada grupo de bloques y comprenden
el Superbloque y los Descriptores de Grupo. Bajo circunstancias normales, slo los
bloques que estn en el primer grupo son utilizados por el kernel; las copias duplicadas
son referenciadas solamente cuando el sistema de archivo est siendo verificado. Si todo
est bien, el kernel los copia desde el primer grupo de bloques. Si hay algn problema
con las copias maestras, va al siguiente y as sucesivamente hasta que se encuentra uno
en buen estado y la estructura del sistema de archivos se reconstruye. Esta redundancia
hace que sea muy difcil que un sistema de archivos ext2/3/4 se estropee, siempre y
cuando las verificaciones del sistema de archivos se ejecuten de forma peridica.
En las versiones tempranas de la familia ext, cada grupo de bloques contena los
descriptores de grupos de cada uno de ellos, como tambin una copia del superbloque.
Debido a las optimizaciones actuales, no todos los grupos de bloques tienen una copia del
superbloque y de los descriptores de grupos. Para ver la situacin en el sistema usted
podra hacer lo siguiente:
$ sudo dumpe2fs /dev/sda1 | grep superblock
dumpe2fs 1.42.9 (28-Dec-2013)
Primary superblock at 0, Group descriptors at 1-4
Backup superblock at 32768, Group descriptors at 32769-32772
Backup superblock at 98304, Group descriptors at 98305-98308
Backup superblock at 163840, Group descriptors at 163841-163844
Backup superblock at 229376, Group descriptors at 229377-229380
Backup superblock at 294912, Group descriptors at 294913-294916
Backup superblock at 819200, Group descriptors at 819201-819204
Backup superblock at 884736, Group descriptors at 884737-884740
Backup superblock at 1605632, Group descriptors at 1605633-1605636
Backup superblock at 2654208, Group descriptors at 2654209-2654212
Backup superblock at 4096000, Group descriptors at 4096001-4096004
195
provea un nodo de dispositivo apropiado para que pueda ver las ubicaciones precisas.
Esto sucede cuando el sistema de archivos se crea con la opcin sparse_super, que es
el valor por defecto.
El nmero de grupos de bloques est limitado debido al hecho que el mapa de bits de
bloque - el cual identifica bloques usados y disponibles en el grupo - tiene que caber en
un bloque nico. Por lo tanto, si un bloque tiene un tamao de 4096 bytes, un grupo de
bloques no puede contener ms de 32 K bloques, o 128 MB. Si tomamos el mayor
tamao posible de un grupo de bloques, una particin de 10 GB tendra que tener al
menos 80 grupos de bloques.
El asignador de bloques trata de mantener los bloques de cada archivo en el mismo grupo
de bloques para disminuir los tiempos de bsqueda.
14.5 dumpe2fs
Como se ha demostrado, es posible usar la herramienta dumpe2fs para obtener
informacin del sistema de archivos; poniendo esto en prctica sobre una particin
obtenemos lo siguiente:
$ sudo dumpe2fs /dev/sda1
Filesystem volume name: RHEL7
Last mounted on:
/
Filesystem UUID:
9d6b5801-9c7e-4c17-9068-49923952338e
Filesystem magic number: 0xEF53
Filesystem revision #:
1 (dynamic)
Filesystem features:
has_journal ext_attr resize_inode dir_index
filetype needs_recovery extent 64bit flex_bg sparse_super
Filesystem flags:
signed_directory_hash
Default mount options:
user_xattr acl
Filesystem state:
clean
Errors behavior:
Continue
Filesystem OS type:
Linux
Inode count:
1908736
Block count:
7630592
Reserved block count:
381529
Free blocks:
5353383
Free inodes:
1682479
First block:
0
Block size:
4096
Fragment size:
4096
Group descriptor size:
64
Reserved GDT blocks:
1024
Blocks per group:
32768
Fragments per group:
32768
Inodes per group:
8192
Inode blocks per group: 512
Flex block group size:
16
Filesystem created:
Wed Sep 3 03:52:55 2014
Last mount time:
Fri Oct 24 09:18:58 2014
Last write time:
Fri Oct 24 09:18:58 2014
Mount count:
89
LFS201: Fundamentos de Administracin de Sistemas Linux
196
-1
Wed Sep 3 03:52:55 2014
0 (<none>)
103 GB
0 (user root)
0 (group root)
11
256
28
28
8
396118
half_md4
e488c43e-241c-4014-91d8-69d3d6c7784
inode blocks
journal_incompat_revoke journal_64bit
128M
32768
0x00023592
16394
197
#224 + 24)
Inode table at 7344160-7344671 (bg #224 + 4128)
28416 free blocks, 8192 free inodes, 0 directories, 8192 unused
inodes
Free blocks: 7602176-7630591
Free inodes: 1900545-1908736
14.6 tune2fs
tune2fs puede ser usado para cambiar parmetros del sistema de archivos.
Para cambiar el nmero mximo de montajes entre verificaciones del sistema de archivos
(max-mount-count):
$ sudo tune2fs -c 25 /dev/sda1
Para listar el contenido del superbloque incluyendo los valores actuales de los parmetros
que pueden ser modificados:
$ sudo tune2fs -l /dev/sda1
198
Este algoritmo hace que el abordar archivos pequeos sea ms rpido, como es de
esperar. Por ejemplo, con un tamao de bloque de 4 KB, un archivo de 48 KB puede ser
abordado directamente. Un archivo de 2 MB requiere un proceso de segundo orden, uno
de 1 GB uno de tercer orden, uno de 4 GB uno de cuarto orden.
199
200
Un archivo
Un directorio
Un disposi/vo completo
Ejemplos:
LFS201: Fundamentos de Administracin de Sistemas Linux
201
now/best
5/1
3/1
2/1
2/1
1/1
size/ext
9 KB
80 KB
142 KB
4590 KB
36 KB
Total/best extents
120/112
Average size per extent 220 KB
Fragmenta/on score 1 [0-30 no problem: 31-55 a li@le bit fragmented: 56- needs defrag]
This directory (/var/log) does not need defragmenta/on.
Done.
$ sudo e4defrag /var/log
ext4 defragmenta/on for directory(/var/log)
[2/152]/var/log/Xorg.2.log: 100% [ OK ]
[3/152]/var/log/Xorg.0.log.old: 100% [ OK ]
[4/152]/var/log/messages-20141019.gz: 100% [ OK ]
[5/152]/var/log/boot.log: 100% [ OK ]
[7/152]/var/log/cups/page_log-20140924.gz: 100% [ OK ]
[8/152]/var/log/cups/access_log-20141019.gz: 100% [ OK ]
[9/152]/var/log/cups/access_log: 100% [ OK ]
[10/152]/var/log/cups/error_log-20141018.gz: 100% [ OK ]
[11/152]/var/log/cups/error_log-20141019.gz: 100% [ OK ]
[12/152]/var/log/cups/access_log-20141018.gz: 100% [ OK ]
[14/152]/var/log/cups/page_log-20141018.gz: 100% [ OK ]
...
[152/152]/var/log/Xorg.1.log.old: 100% [ OK ]
Success:
Failure:
[ 112/152 ]
[ 40/152 ]
Ejecute e4defrag en varios archivos, directorios y disposi/vos completos, siempre intentando con
-c primero.
Encontrar que generalmente los sistemas de archivos Linux /enden a necesitar defragmentacin
cuando estn cercanos a llenarse, sobre el 90 por ciento, o cuando son pequeos y /enen archivos
rela/vamente grandes, como sucede con las par/ciones usadas para boot.
202
Vamos a modi.car algunas propiedades de un sistema de archivos formateado con ext4. Esto no
requiere desmontar el sistema de archivos.
En el ejercicio de a con/nuacin puede trabajar con un archivo de imagen que puede crear de la
siguiente forma:
$ dd if=/dev/zero of=image.le bs=1M count=1024
o puede reemplazar image.le por /dev/sdaX , usando cualquier par/cin que contenga el sistema
de archivos que desea modi.car.
1. Usando dumpe2fs obtenga informacin acerca del sistema de archivos del cual desea ajustar
las propiedades.
2. Determinar la con.guracin para el conteo mximo de montaje luego del cual el sistema de
archivos ser forzado a veri.cacin y modiOquelo a 30.
3. Con.gure el parmetro Check interval a tres semanas (la can/dad de /empo luego del cual un
sistema de archivos es forzado a una veri.cacin).
4. Calcule el porcentaje de bloques reservados y luego recon.grelo a 10%.
203
Solucin 14.2
1. $ dumpe2fs image.le > dump_results
2. $ grep -i Mount count dump_results
Mount count:
0
Maximum mount count:
-1
$ sudo tune2fs -c 30 image.le
$ grep -i Mount count dump_results
Mount count:
Maximum mount count:
0
30 3.
204
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
205
El alto rendimiento es uno de los elementos clave del diseo de XFS, el cual implementa
mtodos para:
Defragmentar
Ampliar
Realizar respaldo/Restaurar
Para crear respaldos y restaurar se usan las siguientes herramientas nativas de XFS:
xfsdump
xfsrestore
los cuales pueden ser pausados de forma conveniente y retomados luego. Debido a que
estos programas son multihebra, los respaldos y restauraciones de XFS pueden ser
llevadas a cabo muy rpidamente.
206
207
208
xfs_quota (8)
xfs_repair (8)
xfs_rtcp (8)
xfsdump (8)
xfsinvu/l (8)
xfsrestore (8)
xqmstats (8)
Lea acerca de estos programas y vea si puede realizar algunas operaciones con el sistema de
archivos que cre.
209
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
210
16.1 LVM
LVM (Logical Volume Manager) separa una particin virtual en varias partes, cada de una
de las cuales puede estar en distintas particiones y/o discos.
Hay muchas ventajas al usar LVM; en particular, se torna bastante fcil el modificar el
tamao de las particiones lgicas y sistemas de archivos, agregar ms espacio de
almacenamiento y reorganizarlo.
Uno o ms volmenes fsicos (particiones de disco) estn agrupadas en un grupo de
volmenes. Luego el grupo de volumen es subdividido en volmenes lgicos, lo cual
imita particiones de disco fsicas y pueden ser formateadas para contener sistemas de
archivos.
Hay una variedad de herramientas de lnea de comandos para crear, eliminar,
redimensionar, etc., volmenes fsicos y lgicos. La herramienta grfica system-configlvm se usa en la mayora de distribuciones de Linux. Sin embargo, en RHEL 7 ya no est
soportada y no hay ninguna herramienta grfica que sea confiable con los cambios ms
recientes de los sistemas de archivos. Afortunadamente, las herramientas de la lnea de
comandos no son difciles de usar y son ms flexibles.
LVM tiene un impacto en el rendimiento. Hay un costo adicional definido que proviene de
la sobrecarga de la capa de LVM. Sin embargo, an en sistemas sin RAID, si se
usa striping (dividir los datos en ms de un disco) es posible lograr algunas mejoras de
paralelizacin.
211
Para obtener una lista completa de las herramientas LVM ejecute man lvm.
212
1
1
1
1
1
root
root
root
root
root
root
root
root
root
root
3
3
3
3
1
1
1
1
root
root
root
root
1
1
1
1
1
1
1
1
1
1
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
7412
48728
3
3
3
3
3
3
3
3
Sep
Sep
Sep
Sep
3
3
3
3
3
Nota:
213
Por ejemplo, asumiendo que uno ya cre las particiones /dev/sdb1 y/dev/sdc1 , y que les
asign un tipo 8e:
$
$
$
$
$
$
$
$
214
215
sudo
sudo
sudo
sudo
umount /mylvm
lvextend -L +500M /dev/vg/mylvm
resize2fs /dev/vg/mylvm
mount /dev/vg/mylvm
sudo
sudo
sudo
sudo
sudo
umount /mylvm
fsck -f /dev/vg/mylvm
resize2fs /dev/vg/mylvm 200M
lvreduce -L 200M /dev/vg/mylvm
mount /dev/vg/mylvm
Si usted tiene una versin reciente de las herramientas lvm, puede realizar estas
operaciones en un paso en vez de dos, usando la opcin -r, como se muestra a
continuacin:
$ sudo
$ sudo lvextend -r -L +100M /dev/vg/mylvm
$ sudo lvreduce -r -L -100M /dev/vg/mylvm
en donde las cantidades usan el signo ms o menos para indicar el cambio requerido.
Esto usa la herramienta subyacente fsadm, la cual puede redimensionar cualquier tipo de
sistema de archivos para cual cual el sistema operativo tenga soporte. Le recomendamos
leer la pgina man de fsadm.
Es posible reducir un grupo de volmenes de la siguiente forma:
$ sudo pvmove /dev/sdc1
$ sudo vgreduce vg /dev/sdc1
Cuando el volumen lgico original cambia, los bloques de datos originales son
copiados a la snapshot.
Si la informacin se agrega directamente al snapshot, se almacena ah solamente.
LFS201: Fundamentos de Administracin de Sistemas Linux
216
217
218
Solucin 16.1
1. Ejecute:
$ sudo fdisk /dev/sda
use el disco duro que sea apropiado y cree las dos par/ciones. Estando en fdisk escriba t para
con.gurar el /po de par/cin a 8e. Si bien es cierto no es requerido de.nir el /po, es buena
idea hacerlo para evitar confusiones. Use w para reescribir la tabla de par/cin y salga. Luego
haga.
$ sudo partprobe -s
o reinicie para asegurarse que las par/ciones nuevas tomen efecto.
2. Asumiendo que las par/ciones nuevas son /dev/sdaX y /dev/sdaY:
$ sudo pvcreate /dev/sdaX
$ sudo pvcreate /dev/sdaY
$ sudo pvdisplay
3. $ sudo vgcreate myvg /dev/sdaX /dev/sdaY
$ sudo vgdisplay
4. $ sudo lvcreate -L 300M -n mylvm myvg
$ sudo lvdisplay
5. $ sudo mkfs.ext4 /dev/myvg/mylvm
$ mkdir /mylvm
$ sudo mount /dev/myvg/mylvm /mylvm
Si desea que el montaje sea persistente, edite /etc/fstab e incluya la lnea:
/dev/myvg/mylvm /mylvm ext4 defaults 0 0
6. $ sudo lvdisplay
7. $ df -h
$ sudo lvextend -L 350M /dev/myvg/mylvm
$ sudo resize2fs /dev/myvg/mylvm
$ df -h
or
$ sudo lvextend -r -L +50M /dev/myvg/mylvm
219
220
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
221
17.1 RAID
RAID (Redundant Array of Independent Disks) reparte la carga de E/S en mltiples
discos. Esto realmente puede incrementar el rendimiento en interfaces de controladoras
de disco modernas, tales como SCSI, las cuales pueden realizar el trabajo en paralelo, de
forma eficiente.
RAID puede ser implementado ya sea en software (es una parte madura del kernel Linux)
o en hardware. Si su hardware de RAID es conocido por tener una buena calidad, podra
ser ms eficiente que usar RAID de software. En una implementacin de hardware, el
sistema operativo no est consciente de que est usando RAID, esto es transparente. Por
ejemplo, tres discos duros de 512 GB (dos para datos, uno para paridad) configurados
con RAID-5, se vern como un disco nico de 1 TB.
Por otro lado, una desventaja de usar RAID de hardware es que si la controladora del
disco falla, debe ser reemplazado por una compatible, la cual puede no ser fcil de
obtener en todos los casos. Cuando se usa RAID de software, los mismos discos pueden
conectarse y funcionar con cualquiera controladora de disco. Tales consideraciones
pueden ser relevantes para hardware de gama media y baja.
Tres caractersticas esenciales de RAID son:
222
RAID 0 usa striping solamente. Los datos se reparten a travs de discos ltiples.
Sin embargo, a pesar del nombre, no hay redundancia y no hay estabilidad o
capacidades de recuperacin. De hecho, si cualquier disco falla la informacin se
perder. Pero el rendimiento puede ser mejorada significativamente debido a la
paralelizacin de tareas de E/S.
RAID 1 usa mirroring solamente; cada disco tiene un duplicado, lo cual es bueno
para la recuperacin de los datos. Se requieren al menos dos discos.
RAID 5 usa una banda de paridad de rotacin; si una unidad de disco falla, no se
producir una prdida de datos, solamente se reducir el rendimiento. Tienen que
haber al menos 3 discos.
RAID 6 tiene discos con stripping y paridad dual; puede soportar la prdida de dos
discos y requiere al menos 4. Debido a que RAID 5 puede imponer un estrs
significante sobre los discos, lo cual puede conducir a fallas durante el proceso de
recuperacin, RAID 6 se ha vuelto ms importante.
RAID 10 es un set de datos con mirroring y striping. Se necesitan al menos 4
discos.
El comando:
$ sudo mdadm -S
223
Por ejemplo:
Crear
primero
dos
particiones
de
tipo fd en
los
discos
(digamos /dev/sdbX y /dev/sdcX) usandofdisk en cada una de ellas:
/dev/sdbX
/myraid
ext4
defaults 0 0
Puede examinar /proc/mdstat para ver el estado del RAID, tal como se muestra aqu:
$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb8[1] sdc7[0]
---------- 521984 blocks [2/2]
unused devices: <none>
224
225
226
227
Solucin 17.1
1. Si usted est usando par/ciones en un disco real, haga lo siguiente:
$ sudo fdisk /dev/sda
y cree las par/ciones como lo hemos hecho anteriormente. Para propsitos del ejercicio los
llamaremos /dev/sdaX y /dev/sdaY. Necesitar correr partprobe, kpartx o reiniciar luego que
ha terminado para asegurarse de que el sistema reconozca las par/ciones nuevas.
Las par/ciones LVM estarn perfectamente bien para este ejercicio. Pueden crearse de la
siguiente forma:
$ sudo lvcreate -L 200M -n MD1 VG
$ sudo lvcreate -L 200M -n MD2 VG
donde hemos nombrado el grupo de volmenes como VG. No es necesario hacer nada ms
luego de la creacin de las par/ciones LVM nuevas para que el sistema est al tanto de ellas.
2. $ sudo mdadm -C /dev/md0 --level=1 --raid-disks=2 /dev/sdaX /dev/sdaY
o
$ sudo mdadm -C /dev/md0 --level=1 --raid-disks=2 /dev/VG/MD1 /dev/VG/MD2
3. $ sudo mkfs.ext4 /dev/md0
$ sudo mkdir /myraid
$ sudo mount /dev/md0 /myraid
y agregar a /etc/fstab
/dev/md0 /myraid ext4
defaults
228
229
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
230
Las polticas deben ser genricas y fciles de entender, ya que eso las hace ms fciles
de seguir. Deben salvaguardar la informacin que necesita ser protegida, denegar acceso
a los servicios asociados y proteger la privacidad de los usuarios.
Estas polticas deberan ser actualizadas regularmente; de hecho las polticas necesitan
cambiar en la medida en que los requerimientos lo hacen. Tener una poltica
desactualizada puede ser peor que no tener una.
231
Confidencialidad
Disponibilidad
Consistencia
Control
Auditora
Qu quiero proteger?
Contra quin lo estoy protegiendo?
Cunto tiempo, personal y dinero se necesita para brindar la proteccin
adecuada?
Este es el primer paso a tomar para construir una poltica de seguridad informtica. Es un
prerrequisito para planear y luego aplicar polticas y procedimientos para proteger sus
sistemas.
232
Si usted fuera al directorio que contiene ese archivo y ejecutara ls, borrara todo su
directorio de usuario.
LFS201: Fundamentos de Administracin de Sistemas Linux
233
234
Proteger los teclados en donde las contraseas son ingresadas para asegurar que
no puedan ser alterados.
Configurar una contrasea en la BIOS protege de que personas sin autorizacin cambien
las opciones de arranque para ganar acceso al sistema. Sin embargo, solo importa si
alguien puede conseguir acceso fsico a la mquina, ya que esto requiere de presencia
local.
Tambin se recomienda generalmente que la BIOS se mantenga al da con la ltima
versin del firmware. Sin embargo, la mayora de las actualizaciones de las BIOS no
tienen relacin con el tema de seguridad y los administradores de sistemas suelen instalar
esos parches con mucho cuidado, ya que una pieza de cdigo incompetente en
actualizaciones innecesarias podra inutilizar un sistema.
235
236
Esta
en donde debe ingresar la contrasea cifrada que despleg la salida de grubmd5-crypt. Note que es posible forzar el uso de la contrasea solamente para
algunas opciones de arranque, en vez de todas.
Para la versin 2 de GRUB (la actual) las cosas son ms complicadas. Sin
embargo, existe una mayor flexibilidad y es posible hacer cosas como configurar
contraseas individuales de usuario, las cuales incluso pueden ser las del inicio de
sesin.
237
nodev
No interprete caracteres o dispositivos especiales de bloque en el sistema de
archivos.
nosuid
Los bits set-user-identifier y set-group-identifier no tienen efecto. Vamos a
discutir en breve setuid y setgid.
noexec
Restringe la ejecucin directa de cualquier binario en el sistema de archivos
montado.
ro
Monta el sistema de archivos en modo de solo lectura, como se muestra a
continuacin:
$ mount -o ro,noexec,nodev /dev/sda2 /mymountpt
o en /etc/fstab:
/dev/sda2 /mymountpt
ext4 ro,noexec,nodev 0 0
238
Los archivos creados en este directorio pertenecen al grupo del dueo del directorio (y no
al grupo del usuario que lo crea).
Tenga en cuenta que efectivamente no puede cambiar el setuid de un script shell; de
hecho, no suceder nada a menos que usted cambie el bit setuid en la consola, lo cual
podra ser un tremendo agujero de seguridad. Solo se puede hacer en binarios
ejecutables.
239
240
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
int main(int argc, char *argv[])
{
Si est tomando la versin de autoaprendizaje de este curso, el cdigo fuente est disponible para
su descarga desde la pantalla Laboratorio.
Si el programa se llama writeit.c, puede ser compilado haciendo:
$ make writeit
o de forma equivalente:
$ gcc -o writeit writeit.c
241
Si intenta ejecutar este programa como un usuario normal sobre un archivo del cual root es el
dueo, obtendr lo siguiente:
$ sudo touch a.le
$ ./writeit
wrote -1 bytes
pero si lo ejecuta como root:
$ sudo ./writeit
wrote 15 bytes
Por lo tanto, el usuario root fue capaz de sobreescribir el archivo del cual es dueo, pero un
usuario normal no podra. Tenga en cuenta que no ayudar cambiar el dueo de writeit a root:
$ sudo chown root.root writeit
$ ./writeit
wrote -1 bytes
porque todava no le permi/r sobreescribir a.le. Al con.gurar el bit setuid usted puede habilitar a
cualquier usuario normal para que lo haga:
$ sudo chmod +s writeit
$ ./writeit
wrote 15 bytes
Usted se podra preguntar por qu simplemente no escribimos un script que realice la operacin,
en vez de escribir y compilar un programa ejecutable.
Bajo Linux, si se cambia el setuid en un script ejecutable, no har nada a menos que usted cambie
el bit setuid en la shell (tal como bash), lo cual sera un gran error; cualquier cosa que se corra
desde ah podra escalar privilegios.
242
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
243
SELinux: http://selinuxproject.org/page/Main_Page
AppArmor: http://apparmor.net
Smack: http://schaufler-ca.com
TOMOYO: http://tomoyo.sourceforge.jp
Solo un LSM puede ser usado a la vez, ya que potencialmente modifican las mismas
partes del kernel Linux.
Nos concentraremos principalmente en SELinux y de forma secundaria en AppArmor, en
orden de volumen de uso.
244
Estos
modos
se
seleccionan
(y
explican)
en
un
archivo
(generalmente/etc/selinux/config), cuya ubicacin vara segn la distribucin (a menudo
se encuentra en /etc/sysconfig/selinux o enlazado desde aqu). El archivo est bien
autodocumentado. La herramienta sestatus despliega el modo y poltica actual.
245
246
setenforce se usa para cambiar entre modo enforcing y permissive al vuelo, mientras el
sistema est en operacin. Sin embargo, no se puede habilitar o deshabilitar el modo
disabled de esta forma. Mientras que setenforce permite cambiar entre los
modos Permissive y Enforcing, no permite deshabilitar SELinux completamente. Hay al
menos dos formas diferentes de deshabilitar SELinux:
Archivo
de
configuracin:
edite
el
archivo
de
configuracin
(generalmente/etc/selinux/config) y configure SELINUX=disabled. Este es el
mtodo por defecto y debera usarse para deshabilitar SELINUX
permanentemente.
247
User (usuario)
Role (rol)
Type (tipo)
Level (nivel)
248
Otras
herramientas
que
soportar SELinux incluyen cp, mv y mkdir.
fueron
extendidas
para
249
250
19.9 restorecon
La herramienta restorecon restablece los contextos de un archivo, basado en la
configuracin del directorio padre. En el siguiente ejemplo, restorecon restablece la
etiqueta por defecto recursivamente para todos los archivos en el directorio home.
$ ls -Z
rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 homefile
rw-rw-r--. peter peter unconfined_u:object_r:user_tmp_t:s0 tmpfile
$ restorecon -Rv /home/peter
restorecon reset /home/peter/tmpfile context \
unconfined_u:object_r:user_tmp_t:s0->unconfined_u:object_r:user_home_t:s0
$ ls -Z
rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 homefile
rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 tmpfile
Note que el contexto de tmpfile fue reconfigurado al contexto por defecto para archivos
creados en el directorio home. El tipo fue cambiado desde user_tmp_t a user_home_t.
251
252
ssh_chroot_rw_homedirs --> on
$ sudo reboot
...
$ getsebool ssh_chroot_rw_homedirs
ssh_chroot_rw_homedirs --> on
253
http://localhost/rootfile
254
[root@rhel7 ~]#
sealert -l d51d34f9-91d5-4219-ad1e-5531e61a2dc3
255
audit2allow -M mypol
256
19.15 AppArmor
AppArmor es una alternativa LSM a SELinux. El soporte para sta fue incorporado en el
kernel Linux desde 2006. Ha sido usado por SUSE, Ubuntu y otras distribuciones.
AppArmor:
257
258
Solucin 19.1
1. $ sudo yum install vsNpd Np
2. $ sudo useradd user1
$ sudo passwd user1
Changing password for user user1.
New password: password
BAD PASSWORD: The password fails the dic/onary check - it is based on a dic/onary word
Retype new password: password
passwd: all authen/ca/on tokens updated successfully.
259
3. $ sudo su - user1
[user1@rhel7 ~]$ echo .le created at /home/user1 > user1.le
[user1@rhel7 ~]$ ls
user1.le
4. [user1@rhel7 ~]$ exit
$ sudo systemctl status vsftpd.service
vsftpd.service - Vsftpd ftp daemon Loaded:
loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
Active: active (running) since Fri 2014-11-21 14:08:14 CET; 32min ago
...
5. $ ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:peter): user1
331 Please specify the password.
Password: password
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get user1file
local: user1file remote: user1file
229 Entering Extended Passive Mode (|||35032|).
550 Failed to open file.
ftp> quit
221 Goodbye.
6. $ tail /var/log/messages
Nov 21 14:23:26 rhel7 setroubleshoot: SELinux is preventing /usr/sbin/vsftpd from read
access on the file .
For complete SELinux messages. run sealert -l 7f8e5e6f-bcee-4c59-9cd172b90fb1f462
***** Plugin catchall_boolean (47.5 confidence) suggests ***************
If you want to allow ftp to home dir
Then you must tell SELinux about this by enabling
the ftp_home_dir boolean.
Do
setsebool -P ftp_home_dir 1
Notice that the suggestion to fix the issue can be found at the log file, and it is not even
necessary to run sealert.
260
261
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
262
263
20.3 Procesos
Un proceso es una instancia de un programa en ejecucin. Puede estar en diversos
estados, tales como running (en ejecucin) o sleeping (durmiendo). Cada proceso tiene
un pid (Process ID), un ppid (Parent Process ID) y un pgid(Process Group ID).
Adicionalmente, cada proceso tiene un cdigo de programa, datos, variables, descriptores
de archivos y un ambiente.
init es generalmente el primer proceso de usuario que se ejecuta en el sistema, y por lo
tanto es el antecesor de todos los procesos subsecuentes, con la excepcin de aquellos
que han sido iniciados directamente por el kernel (los cuales se muestran con [] alrededor
del nombre en un listado de ps).
Si el proceso padre muere antes que el hijo, el ppid del hijo se configura en 1; es decir, el
proceso es adoptado por init. Nota: en sistemas Linux recientes que usan systemd,
el ppid ser configurado en 2, lo cual corresponde a una hebra interna del kernel
conocida como kthreadd, el que ha asumido de init el rol de adopcin de los hijos
hurfanos.
Un proceso hijo que termina su ejecucin (ya sea normal o anormalente) antes que su
padre, el cual no esper por este ni examin su cdigo de salida, se conoce como un
proceso zombie (o difunto). Los procesos zombies liberan prcticamente todos los
recursos y se mantienen en ese estado solo para transmitir su estado de salida. Una
funcin del proceso init consiste en verificar los hijos adoptivos y dejar que mueran de
forma adecuada aquellos que ya han terminado. Por lo anterior, a veces se le denomina
el asesino de zombies, o de forma ms sombra, el segador de nios.
Los procesos son controlados por la programacin de los mismos, lo cual es
completamente preferente. Solo el kernel tiene el derecho de preferencia sobre un
proceso, algo que el resto de los procesos no pueden hacerse entre ellos.
Por razones histricas, el PID ms grande ha sido limitado a un nmero de 16 bit, el cual
corresponde
a
32768.
Es
posible
modificar
este
valor
cambiando
/proc/sys/kernel/pid_max, ya que el valor por defecto puede ser inadecuado para
servidores ms grandes. A medida en la que los procesos son creados, eventualmente
alcanzarn elpid_max, punto en el cual comenzarn de nuevo en PID = 300.
264
Cada proceso ejecuta algn programa. En cualquier momento el proceso puede tomar
una snapshot de s mismo a travs de la captura del estado de los registros de la CPU,
dnde se est ejecutando, qu hay en la memoria del proceso y alguna otra informacin.
Esto es el contexto del proceso.
Ya que los procesos pueden ser agendados para entrar y salir del tiempo compartido de
CPU con otros (o a veces tienen que ser puestos a dormir mientras esperan que alguna
condicin se cumpla, tal como una peticin de usuario o datos que estn por llegar), es
posible almacenar el contexto completo cuando cambia la condicin del proceso y se
restablece su ejecucin. Lo anterior es crtico para que el kernel sea capaz de cambiar al
contexto que se requiera en un instante determinado.
(blocks, -c) 0
(kbytes, -d) unlimited
(-e) 0
(blocks, -f) unlimited
(-i) 31843
(kbytes, -l) 64
(kbytes, -m) unlimited
(-n) 1024
(512 bytes, -p) 8
(bytes, -q) 819200
(-r) 0
(kbytes, -s) 8192
(seconds, -t) unlimited
(-u) 4096
(kbytes, -v) unlimited
(-x) unlimited
265
Para restringir las capacidades de tal forma que un usuario y/o proceso no pueda
acaparar los recursos del sistema, tales como memoria, tiempo de cpu o el
nmero mximo de procesos en el sistema.
Para ampliar las capacidades de tal forma que un proceso no est limitado en sus
recursos; por ejemplo, para un servidor que maneja muchos clientes el valor por
defecto de 1024 archivos abiertos podra hacer que su trabajo sea imposible de
realizar.
Hard: El valor mximo, que solo el usuario root puede configurar, al que un usuario
puede elevar el lmite de recursos.
Soft: El valor del lmite actual, el cual un usuario puede modificar, pero que no
puede exceder el lmite hard.
como en
$ ulimit -n 1600
266
En ejecucin:
El proceso est siendo ejecutado actualmente ya sea en una CPU, o ncleo de
CPU o en la cola de ejecucin, esperando una nueva tajada de tiempo. Se
reanudar cuando el planificador decide que merece utilizar la CPU, o cuando otra
CPU queda libre y el planificador migra el proceso a esa CPU.
Detenido:
El proceso ha sido suspendido. Este estado se experimenta comnmente cuando
un programador quiere examinar la memoria del programa en ejecucin, los
registros de la CPU, banderas u otros atributos. Una vez que esto se ha realizado
el proceso podra ser reanudado. Esto generalmente se realiza cuando el proceso
est siendo ejecutado desde un depurador o el usuario teclea Ctrl-Z.
Zombie:
El proceso entra en este estado cuando termina su ejecucin y ningn otro
proceso (generalmente el padre) ha inquirido acerca de su estado de salida. Tales
procesos tambin se denominan difuntos. Un proceso zombie ha liberado todos
sus recursos con excepcin de su estado de salida y su entrada en la tabla de
procesos. Si el padre de cualquier proceso muere, el proceso
es adoptado por init (PID=1) o kthreadd (PID=2).
267
268
20.11 Demonios
Un demonio es un proceso que se ejecuta en segundo plano, cuyo nico propsito es
proveer algn servicio especfico a los usuarios del sistema. Los demonios:
Pueden ser muy eficientes debido a que funcionan solo cuando es necesario.
Muchos de ellos se inician en el arranque.
Sus nombres a menudo (aunque no en todos los casos) terminan con d.
Algunos ejemplos incluyen httpd y udevd.
Los demonios pueden responder a eventos externos (udevd) o a tiempo
transcurrido (crond).
Generalmente no tienen una terminal de control ni dispositivos estndar de
entrada/salida.
A veces proporcionan un mejor control de la seguridad.
Cuando se usa SysVinit, los scripts en el directorio /etc/init.d inician varios demonios del
sistema. Estos scripts invocan comandos como argumentos de una funcin de shell
llamada daemon, definida en el archivo/etc/init.d/functions.
Para ver un ejemplo de cmo se hace esto, mire el script del servicio httpd en el
directorio /etc/init.d.
Los sistemas que usan systemd utilizan mtodos similares para los demonios.
Es fcil ver los procesos de este tipo; cuando se ejecuta el siguiente comando
$ ps -elf
se listan todos los procesos en el sistema y se muestran los IDs de los procesos padres;
todos los que tienen PPID = 2se refieren a kthreadd, el hilo del kernel, cuyo trabajo es
crear tales procesos. Los nombres de estos procesos estarn encapsulados en parntesis
cuadrados, como [ksoftirqd/0], por ejemplo.
LFS201: Fundamentos de Administracin de Sistemas Linux
269
270
Un proceso nuevo se crea, como un fork desde la shell de inicio de sesin del
usuario.
La shell padre se despierta nuevamente por la muerte del proceso hijo y procede a
crear un nuevo intrprete de comandos. Entonces la shell padre espera por la
prxima solicitud de comando desde el usuario, momento en el cual el ciclo se
repetir.
lo
cual
aumentara
nice
en
5.
Esto
es
equivalente
hacer
lo
siguiente:
271
TIME
00:00:00
00:00:00
00:00:00
00:00:00
CMD
bash
bash
cat
ps
Tenga en cuenta que al aumentar el valor de nice de un proceso no significa que este no
se ejecutar; incluso podra obtener todo el tiempo de la CPU si no hay nada con lo cual
competir.
Si usted provee un gran incremento o decremento que sale del rango -20 a 19, el valor de
incremento ser truncado.
lo cual incrementar en valor de nice en 3, del proceso con pid = 13848. Puede hacerlo
con ms de un proceso a la vez y hay algunas otras opciones interesantes que puede ver
con man renice.
272
273
Solucin 20.1
1. $ bash
$ ulimit -n
1024
$ ulimit -S -n 1024
$ ulimit -H -n
4096
2. $ ulimit -n hard
$ ulimit -n
4096
3. $ ulimit -n 2048
$ ulimit -n
2048
$ ulimit -n 4096
bash: ulimit: open .les: cannot modify limit: Opera/on not permi@ed
$ ulimit -n
2048
No es posible hacerlo!
Tenga en cuenta que si hubiramos escogido un lmite diferente, como el tamao del stack (-s),
podramos aumentar el valor nuevamente debido a que el lmite hard es unlimited.
274
System V IPC es un mtodo bastante an/guo de Comunicacin Entre Procesos (IPC) que se
remonta a los primeros das de UNIX. Este involucra tres mecanismos:
Algunos programas modernos /enen a usar los mtodos de POSIX IPC para esos tres mecanismos,
pero todava se puede encontrar un montn de aplicaciones System V IPC.
Ejecute el siguiente comando para obtener un resumen general de la ac/vidad System V IPC en su
sistema:
$ ipcs
------ Message Queues -------key
msqid owner perms used-bytes
------ Shared Memory Segments -------key
0x01114703
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
shmid
0
98305
196610
23068675
23101444
23134213
24051718
23756807
24018952
23363593
1441811
owner
root
coop
coop
coop
coop
coop
coop
coop
coop
coop
coop
perms
600
600
600
700
600
600
600
600
600
700
600
messages
bytes
1000
4194304
4194304
1138176
393216
524288
393216
524288
67108864
95408
2097152
na@ch
6
2
2
2
2
2
2
2
2
2
2
status
dest
dest
dest
dest
dest
dest
dest
dest
dest
dest
semid
98304
131073
163842
196611
229380
owner
apache
apache
apache
apache
apache
perms
600
600
600
600
600
nsems
1
1
1
1
1
275
Tenga en cuenta que casi todos los segmentos de memoria compar/da actualmente en ejecucin
/enen 0 en el campo key (tambin conocido como IPC_PRIVATE), lo cual signi.ca que solo se
comparten entre procesos en una relacin padre/hijo. Adems, todos con la excepcin de uno,
estn marcados para destruccin, ya que no /enen procesos asociados.
Es posible obtener ms informacin acerca de los procesos que han creado los segmentos y que se
han asociado a ellos con:
$ ipcs p
------ Message Queues PIDs -------msqid
owner lspid lrpid
------ Shared Memory Creator/Last-op PIDs -------shmid
0
98305
196610
23068675
23101444
23134213
24051718
23756807
24018952
23363593
1441811
owner
root
coop
coop
coop
coop
coop
coop
coop
coop
coop
coop
cpid
1023
2265
2138
989
989
989
20573
10735
17875
989
2048
lpid
1023
18780
18775
1663
1663
1663
1663
1663
1663
1663
20573
276
vemos que thunderbird est usando un segmento de memoria compar/da creado por gnomeshell.
Realice estos pasos en su sistema e iden/.que los diversos recursos que estn siendo usados y por
quin. Hay alguna fuga potencial en el sistema (recursos compar/dos que no estn en uso por
ningn proceso)? Por ejemplo:
$ ipcs
....
------ Shared Memory Segments -------key
shmid
owner
perms bytes
na@ch status
....
0x00000000
0x0000001a
....
622601
13303818
coop
coop
600
666
2
0
2097152
8196
dest
muestra un segmento de memoria compar/da que no /ene procesos asociados y que no est
marcado para ser destruido. Por lo anterior, si el proceso con/na as para siempre y no se asocia a
ningn proceso, podra signi.car una fuga de memoria.
277
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
278
Por ejemplo, si un usuario decide terminar un programa en ejecucin, podra enviar una
seal al proceso a travs del kernel para interrumpir y finalizar el proceso.
Hay dos vas a travs de las cuales se envan seales a los procesos:
Las seales solamente pueden enviarse entre procesos de propiedad del mismo usuario,
o desde un proceso del superusuario a cualquier proceso.
Cuando un proceso recibe una seal, lo que har a continuacin depende de la forma en
la cual el programa est escrito. Puede tomar acciones especficas, codificadas en el
programa para manipular la seal, o solo responder de acuerdo a los valores por defecto
en el sistema. Dos seales (SIGKILL y SIGSTOP, que se mencionarn en seguida) no
pueden ser manipuladas y siempre finalizarn el programa.
memoria).
2. Excepciones generadas por el ambiente (tal como la finalizacin prematura de un
279
$ kill -l
1)
6)
11)
16)
21)
26)
31)
38)
43)
48)
53)
58)
63)
SIGHUP
SIGABRT
SIGSEGV
SIGSTKFLT
SIGTTIN
SIGVTALRM
SIGSYS
SIGRTMIN+4
SIGRTMIN+9
SIGRTMIN+14
SIGRTMAX-11
SIGRTMAX-6
SIGRTMAX-1
2)
7)
12)
17)
22)
27)
34)
39)
44)
49)
54)
59)
64)
SIGINT
SIGBUS
SIGUSR2
SIGCHLD
SIGTTOU
SIGPROF
SIGRTMIN
SIGRTMIN+5
SIGRTMIN+10
SIGRTMIN+15
SIGRTMAX-10
SIGRTMAX-5
SIGRTMAX
3)
8)
13)
18)
23)
28)
35)
40)
45)
50)
55)
60)
SIGQUIT
SIGFPE
SIGPIPE
SIGCONT
SIGURG
SIGWINCH
SIGRTMIN+1
SIGRTMIN+6
SIGRTMIN+11
SIGRTMAX-14
SIGRTMAX-9
SIGRTMAX-4
4)
9)
14)
19)
24)
29)
36)
41)
46)
51)
56)
61)
SIGILL
SIGKILL
SIGALRM
SIGSTOP
SIGXCPU
SIGIO
SIGRTMIN+2
SIGRTMIN+7
SIGRTMIN+12
SIGRTMAX-13
SIGRTMAX-8
SIGRTMAX-3
5)
10)
15)
20)
25)
30)
37)
42)
47)
52)
57)
62)
SIGTRAP
SIGUSR1
SIGTERM
SIGTSTP
SIGXFSZ
SIGPWR
SIGRTMIN+3
SIGRTMIN+8
SIGRTMIN+13
SIGRTMAX-12
SIGRTMAX-7
SIGRTMAX-2
Las seales de SIGRTMIN se denominan como de tiempo real y son una adicin
relativamente reciente. No tienen un propsito predefinido y difieren de forma importante
en algunos aspectos con relacin a las seales normales; pueden ser encoladas y son
manejadas en orden FIFO (First In First Out).
El significado implcito en el tipo de seal indica qu evento caus que fuera enviada.
Mientras los usuarios pueden explcitamente enviar cualquier tipo de seal a uno de sus
procesos, el significado implcito podra no estar relacionado al nmero o tipo de la seal,
y puede usarse en cualquier forma que el proceso desea.
man 7 signal le dar mayor informacin al respecto.
21.3 kill
Un proceso no puede enviar una seal directamente a otro proceso; este debe pedirle al
kernel que enve la seal mediante la ejecucin de una llamada al sistema. Los usuarios
(incluyendo el superusuario) pueden enviar seales a otros procesos desde la lnea de
comandos o scripts usando kill, tal como se muestra a continuacin:
$ kill 1991
$ kill -9 1991
$ kill -SIGKILL 1991
en el comando anterior enviamos una seal al proceso con PID = 1991. Si no se provee
un nmero de seal (como en el primer ejemplo), el valor por defecto a enviar es SIGTERM
(15), una seal de finalizacin que puede ser manipulada; el programa puede tomar una
accin evasiva o limpiarse a s mismo en vez de finalizar inmediatamente. Si esta seal es
ignorada, el usuario puede enviar una SIGKILL (9), la cual no puede ser ignorada.
El nombre kill es un nombre realmente malo, el cual sobrevive por razones histricas.
Aunque a menudo se utiliza para matar (terminar) procesos, la funcin real del comando
es enviar cualquier y todas las seales a los procesos, incluso a los que son benignos y
totalmente informativos.
280
281
Por ejemplo:
$ pkill -u libby foobar
282
283
284
285
prins("\n");
prins("\nHistory: Signal Number(Count Processed)\n");
prins("--------------------------------------------\n");
for (i = 0; i < line; i++) {
if (i % 8 == 0)
prins("\n");
prins("%4d(%1d)", signumbuf[i], sigcountbuf[i]);
}
prins("\n");
exit(EXIT_SUCCESS);
}
void sig_handler(int sig)
{
sig_count[sig]++;
signumbuf[line] = sig;
sigcountbuf[line] = sig_count[sig];
line++;
}
Si est tomando la versin autodidacta en lnea de este curso, encontrar el cdigo fuente
disponible para su descarga en la pantalla Lab. Necesitar compilarlo y ejecutarlo como se muestra
a con/nuacin:
$ gcc -o signals signals.c
$ ./signals
Al ser ejecutado, el programa realiza lo siguiente:
No enva las seales SIGKILL o SIGSTOP, las cuales no pueden ser manejadas y siempre
.nalizan un programa.
Almacena la secuencia de seales a medida en que llegan y actualiza un arreglo de contadores
para cada seal que indica cuntas veces la seal ha sido manejada.
Comienza por suspender el proceso de todas las seales y luego instala un conjunto nuevo de
manejadores de seal para todas ellas.
Enva cada seal posible ml/ples veces, luego desbloquea el manejo de seales e invoca a los
manipuladores de seales que estaban en espera.
Imprime las estads/cas, incluyendo:
o El nmero total de veces que cada seal fue recibida.
o El orden en el cual se recibieron las seales, sealando cada vez el nmero total de
veces que la seal se haa recibido hasta ese momento.
Tenga en cuenta lo siguiente:
286
Si una seal determinada se emite en varias oportunidades mientras el proceso las haba
bloqueado, el proceso las recibe ml/ples veces? El comportamiento de seales en /empo
real es diferente de las seales normales?
El proceso recibe todas las seales, o algunas de ellas son manejadas antes que lleguen a l?
En qu orden se reciben las seales?
La seal SIGCONT (18 en x86 puede que no logre llegar a des/no, se le ocurre por qu?
Nota:
En algunas distribuciones Linux las seales 32 y 33 no pueden ser bloqueadas y causarn que el
programa falle. A pesar de que los archivos de cabecera del sistema indican SIGRTMIN=32, el
comando kill -l indica SIGRTMIN=34. Tenga en cuenta que POSIX dice que se deberan usar
nombres en vez de nmeros, los cuales estn habilitados para ser completamente dependientes de
la implementacin. En general se debea evitar el envo de estas seales.
287
288
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
289
290
15887/ 19/
26/
3706/ 509/
15891/ 1929/
260/
3707/ 510/
619/ 741/
buddyinfo
15896/ 1934/
620/ 742/
bus/
15899/ 1959/
264/
3709/ 512/
622/ 743/
cgroups
3713/ 513/
623/ 744/
cmdline
15909/ 2/
267/
3714/ 514/
625/ 761/
config.gz
15912/ 2008/
268/
375/
515/
626/ 763/
consoles
15919/ 2079/
27/
396/
517/
15928/ 21/
28/
398/
519/
642/ 8/
crypto
291
scsi/
10671/ 1452/
self@
10802/ 1465/
slabinfo
10803/ 1484/
softirqs
10911/ 1490/
stat
11/
1503/
swaps
11087/ 15466/
sys/
11089/ 15471/
sysrq-trigger
11090/ 15616/
sysvipc/
11103/ 1563/
timer_list
11104/ 15632/
timer_stats
11105/ 15642/
tty/
11123/ 15650/
uptime
11124/ 15651/
version
11125/ 1570/
vmallocinfo
11126/ 1571/
vmnet/
11163/ 15719/
vmstat
11165/ 15723/
zoneinfo
11166/ 15791/
11187/ 1582/
11194/ 15837/
11196/ 15840/
11197/ 15844/
11199/ 15847/
11206/ 15871/
15938/ 22/
280/
414/
521/
15941/ 2298/
281/
42/
15944/ 23/
29/
43/
537/
15957/ 237/
3/
15963/ 238/
30/
460/
15966/ 239/
30170/ 480/
15982/ 24/
31/
481/
5506/ 66/
8444/ filesystems
16/
240/
32/
482/
5515/ 67/
845/
16016/ 241/
33/
484/
5516/ 68/
8479/ interrupts
16030/ 242/
34/
485/
16037/ 243/
35/
486/
16039/ 244/
3557/
489/
16065/ 245/
3558/
491/
16066/ 246/
3560/
494/
16071/ 247/
36/
496/
559/
7/
16073/ 248/
3687/
498/
560/
701/ 9/
5/
16112/
1621/
16477/
16515/
1654/
17/
18/
500/
501/
502/
503/
504/
505/
507/
5665/
5678/
583/
584/
599/
600/
613/
24822/
24823/
24879/
257/
258/
259/
2591/
3698/
3699/
37/
3702/
3703/
3704/
3705/
538/
648/ 824/
dma
712/
714/
715/
717/
718/
723/
727/
fs/
8903/ keys
9284/
9816/
9853/
9871/
988/
9885/
acpi/
key-users
kpagecount
kpageflags
latency_stats
loadavg
locks
meminfo
misc
Primero vemos que hay un subdirectorio por cada proceso en el sistema, ya sea si estn
durmiendo,
en
ejecucin
o
programados.
Revisando
uno
al
azar:
$ ls -lF /proc/16477
total 0
-r-------- 1 coop coop 0 Sep 10 18:11 auxv
-rrr-- 1 coop coop 0 Sep 10 12:28 cgroupw------- 1 coop coop 0 Sep 10
18:11 clear_refs
-rrr-- 1 coop coop 0 Sep 10 08:30 cmdline
-rw-rr-- 1 coop coop 0 Sep 10 12:28 comm
-rw-rr-- 1 coop coop 0 Sep 10 18:11 coredump_filter
-rrr-- 1 coop coop 0 Sep 10 18:11 cpuset
lrwxrwxrwx 1 coop coop 0 Sep 10 18:11 cwd -> /usr/local/coop7/
-r-------- 1 coop coop 0 Sep 10 18:11 environ
LFS201: Fundamentos de Administracin de Sistemas Linux
292
vemos que este corresponde al cliente de correo electrnico thunderbird. Este directorio
est lleno de informacin, tanto acerca del estado y de los recursos que el proceso est
usando. Por ejemplo:
$ cat /proc/16477/status
Name: thunderbird
State: S (sleeping)
Tgid: 16477
Ngid: 0
Pid: 16477
PPid: 15912
TracerPid: 0
Uid: 500 500 500 500
Gid: 500 500 500 500
FDSize: 256
Groups: 500
VmPeak: 1262996 kB
VmSize: 1139452 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 241644 kB
VmRSS: 201404 kB
LFS201: Fundamentos de Administracin de Sistemas Linux
293
VmData: 435360 kB
VmStk: 224 kB
VmExe: 88 kB
VmLib: 89756 kB
VmPTE: 1488 kB
VmSwap: 0 kB
Threads: 33
SigQ: 1/31853
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 0000000f800144ef
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000001fffffffff
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 590633
nonvoluntary_ctxt_switches: 5881
Otras entradas proveen informacin de todo el sistema. Por ejemplo, las estadsticas
de interrupciones se muestran aqu:
$ cat /proc/interrupts
CPU0
CPU1
CPU2
CPU3
0:
127
0
0
0 IO-APIC-edge
timer
1:
22610
26632
22019
24652 IO-APIC-edge
i8042
8:
0
0
1
0 IO-APIC-edge
rtc0
9:
0
0
0
0 IO-APIC-fasteoi acpi
16:
10
13
13
11 IO-APIC-fasteoi uhci_hcd:usb3
18:
81801
33810 269011
97396 IO-APIC-fasteoi ehci_hcd:usb1,
uhci_hcd:usb5, uhci_hcd:usb8,enp4s2
19:
0
0
0
0 IO-APIC-fasteoi uhci_hcd:usb7
21:
0
0
0
0 IO-APIC-fasteoi uhci_hcd:usb4
23: 459503 414973 2294258 1886762 IO-APIC-fasteoi ehci_hcd:usb2,
uhci_hcd:usb6
43: 7839477
12
17
14 PCI-MSI-edge
enp2s0
44:
90833
73862 431567 197408 PCI-MSI-edge
ahci
45: 2308942 2324143 2037740 2226651 PCI-MSI-edge
nouveau
46:
1706
1853
1806
1740 PCI-MSI-edge
snd_hda_intel
NMI:
4021
3150
3201
3076 Non-maskable interrupts
LOC: 8186969 8028365 8257507 7848638 Local timer interrupts
SPU:
0
0
0
0 Spurious interrupts
PMI:
4021
3150
3201
3076 Performance monitoring interrupts
IWI: 455847 423644 402570 390176 IRQ work interrupts
RTR:
0
0
0
0 APIC ICR read retries
RES: 6489645 6430364 6430834 6271845 Rescheduling interrupts
CAL: 4816017 4550737 4171364 4829737 Function call interrupts
TLB: 909001 1140883 879189 1152043 TLB shootdowns
TRM:
0
0
0
0 Thermal event interrupts
THR:
0
0
0
0 Threshold APIC interrupts
MCE:
0
0
0
0 Machine check exceptions
LFS201: Fundamentos de Administracin de Sistemas Linux
294
MCP:
ERR:
MIS:
133
0
0
133
133
Para cada interrupcin vemos su tipo, cuntas veces ha sido manipulada en cada CPU y
qu dispositivos estn registrados para responder a ella. Tambin obtenemos estadsticas
globales.
22.5 /proc/sys
La mayora de los parmetros ajustables del sistema pueden encontrarse en el rbol de
subdirectorios /proc/sys:
$ ls -F /proc/sys
total 0
dr-xr-xr-x 1 root
dr-xr-xr-x 1 root
dr-xr-xr-x 1 root
dr-xr-xr-x 1 root
dr-xr-xr-x 1 root
root
root
root
root
root
0
0
0
0
0
Sep
Sep
Sep
Sep
Sep
10
10
10
10
10
18:17
18:17
15:53
02:14
02:14
abi/
debug/
dev/
fs/
kernel/
Cada uno de estos subdirectorios contiene informacin como tambin controles que
pueden ser ajustados (con cuidado):
abi/
Contiene archivos con informacin binaria de aplicaciones; raramente se usa.
debug/
Parmetros de depuracin; por ahora solo un control de reportes de excepcin.
dev/
Parmetros
de
dispositivo
cdrom, scsi, raid y parport.
incluyendo
subdirectorios
para
fs/
Parmetros de sistemas de archivos, incluyendo cuota, identificadores de archivos
usados y mximos, informacin de inodos y directorios, etc
kernel/
Parmetros del kernel. Hay muchas entradas importantes aqu.
net/
Parmetros de red. Hay subdirectorios para ipv4, netfilter, etc.
vm/
Parmetros de memoria virtual. Hay muchas entradas importantes aqu.
LFS201: Fundamentos de Administracin de Sistemas Linux
295
Ver y cambiar los parmetros puede ser realizarse con comandos simples. Por ejemplo, el
nmero mximo de hilos permitidos en el sistema puede verse as:
$ ls -l /proc/sys/kernel/threads-max
$ cat /proc/sys/kernel/threads-max 129498
Los usuarios normales pueden visualizar los valores, sin embargo para modificarlos se
requiere de privilegios de superusuario.
296
297
La intencin de sysfs es tener un valor de texto por lnea, aunque no se espera que esto
se aplique rigurosamente.
El dispositivo y controlador subyacente para la primera interfaz de red pueden encontrarse
a travs de device y de los enlaces simblicos de driver (lo cual vamos a revisar
pronto). Si vemos el directorio correspondiente a la primera tarjeta Ethernet veremos lo
siguiente:
$ ls -l /sys/class/net/eth0/device/
total 0
-rw-rr-- 1 root root
4096 Apr 30 13:47 broken_parity_status
-rrr-- 1 root root
4096 Apr 30 06:38 class
-rw-rr-- 1 root root
4096 Apr 30 11:38 config
-rrr-- 1 root root
4096 Apr 30 13:47 consistent_dma_mask_bits
-rrr-- 1 root root
4096 Apr 30 11:38 device
-rrr-- 1 root root
4096 Apr 30 13:47 dma_mask_bits
lrwxrwxrwx 1 root root
0 Apr 30 11:38 driver ->
../../../../bus/pci/drivers/sky2/
-rw------- 1 root root
4096 Apr 30 13:47 enable
-rrr-- 1 root root
4096 Apr 30 11:38 irq
-rrr-- 1 root root
4096 Apr 30 13:47 local_cpulist
-rrr-- 1 root root
4096 Apr 30 11:38 local_cpus
-rrr-- 1 root root
4096 Apr 30 13:47 modalias
-rw-rr-- 1 root root
4096 Apr 30 13:47 msi_bus
drwxr-xr-x 3 root root
0 Apr 30 13:47 msi_irqs/
drwxr-xr-x 3 root root
0 Apr 30 11:38 net/
drwxr-xr-x 2 root root
0 Apr 30 13:47 power/
--ww---- 1 root root
4096 Apr 30 13:47 removeww---- 1 root root
4096 Apr 30 13:47 rescanw------- 1 root root
4096 Apr 30 13:47 reset
-rrr-- 1 root root
4096 Apr 30 13:45 resource
-rw------- 1 root root 16384 Apr 30 13:47 resource0
-rw------- 1 root root
256 Apr 30 13:47 resource2
-rw------- 1 root root 131072 Apr 30 13:47 rom
lrwxrwxrwx 1 root root
0 Apr 30 11:38 subsystem ->
../../../../bus/pci/
-rrr-- 1 root root
4096 Apr 30 11:38 subsystem_device
-rrr-- 1 root root
4096 Apr 30 11:38 subsystem_vendor
-rw-rr-- 1 root root
4096 Apr 30 06:38 uevent
-rrr-- 1 root root
4096 Apr 30 11:38 vendor
-rw------- 1 root root 32768 Apr 30 13:47 vpd
Para ver la gama completa de informacin que est disponible en sysfs tendr que
examinar el directorio.
LFS201: Fundamentos de Administracin de Sistemas Linux
298
22.8 sar
sar viene de Systems Activity Reporter (informador de actividad del sistema). Es una
herramienta multipropsito para obtener informacin acerca de la actividad y rendimiento
del sistema, como tambin para crear reportes de lectura fcil.
En los sistemas Linux el backend de sar es sadc (recopilador de informacin de actividad
del sistema), el cual acumula las estadsticas. Este almacena la informacin en el
directorio /var/log/sa, en una frecuencia diaria por defecto, la cual puede ser ajustada.
La recoleccin de informacin puede ser iniciada desde la lnea de comandos, y de forma
perodica se realiza desde una tarea de cron almacenada en /etc/cron.d/sysstat.
Entonces sar lee esa informacin (ya sea desde la ubicacin por defecto o usando el
archivo especificado con la opcin -f) y luego produce un reporte.
sar se ejecuta de la siguiente forma:
$ sar [ options ] [ interval ] [ count ]
%idle
97.66
89.60
88.23
91.85
Significado
-A
-b
-B
-x
-n
Estadsticas de red
-P
-q
299
-r
-R
Estadsticas de memoria
-u
-v
-w
-W
-f
-o
PM
PM
PM
PM
tps
rtps
wtps
bread/s
bwrtn/s
8.00
5.00
3.00
597.33
72.00
0.00
0.00
0.00
0.00
0.00
16.33
0.00 16.33
0.00
237.33
8.11
1.67
6.44
199.11
103.11
El programa ksar es una herramienta basada en java para generar grficos agradables a
partir de datos de sar. Puede descargarse desde http://sourceforge.net/projects/ksar .
300
301
302
Luego de haber instalado stress, usted puede iniciar el monitor de sistema gr.co, el cual
seguramente encontrar en el men de aplicaciones. Tambin lo puede ejecutar desde la lnea de
comandos, ya sea gnome-system-monitor o ksysguard.
Ahora comience a poner estrs en el sistema. Los nmeros exactos que usarn estarn en funcin
de los recursos de su sistema, tales como el nmero de CPU y el tamao de la RAM.
Por ejemplo, si hace
$ stress -m 4 -t 20s
estresa solamente la memoria del sistema. Juegue con las combinaciones de los parmetros y vea
el impacto que generan entre ellos. Probablemente se de cuenta que el programa stress es /l
para simular diversas condiciones de carga alta.
303
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
304
Herramienta
top
uptime
Propsito
Actualiza de forma dinmica la actividad de
los procesos
Por cunto tiempo ha estado corriendo el
sistema y la carga promedio
Paquete
procps
procps
ps
pstree
psmisc (o pstree)
mpstat
sysstat
iostat
sysstat
sar
numastat
strace
sysstat
numactl
strace
305
0:00
0:03
0:00
0:22
0:00
0:00
0:03
[kthreadd]
[ksoftirqd/0]
[kworker/0:0H]
[rcu_preempt]
[rcu_sched]
[rcu_bh]
[migration/0]
07:14
07:14
07:14
07:14
0:00
0:00
0:00
0:00
[scsi_eh_0]
[scsi_tmf_0]
[scsi_eh_1]
[scsi_tmf_1]
donde la opcin aux muestra todos los procesos. Los comandos que estn encerrados en
parntesis cuadrados (como [ksoftirqd/0]) son hilos que existen totalmente en el kernel;
si hay uno para cada CPU el comando es seguido por un nmero entero, especificando la
CPU en la cual est ejecutndose.
306
RSS tamao de la memoria residente; la memoria fsica que una tarea est
usando en KB
307
TIME
CMD
00:00:01
kthrea 07:14 ?
00:00:00
smpboo 07:14 ?
00:00:03
worker 07:14 ?
00:00:00
rcu_gp 07:14 ?
00:00:22
rcu_gp 07:14 ?
00:00:00
rcu_gp 07:14 ?
00:00:00
smpboo 07:14 ?
00:00:03
scsi_e 07:14 ?
00:00:00
rescue 07:14 ?
00:00:00
scsi_e 07:14 ?
00:00:00
rescue 07:14 ?
00:00:00
poll_s 07:15 ?
00:00:00
futex_ 20:19 ?
00:00:09
poll_s 09:01 ?
00:00:31
Tenga en cuenta que en este caso se muestra el PID del proceso padre (PPID) y el factor
de nice (NI). En este ejemplo (tomado en RHEL 7, usando systemd) es posible observar
que muchos procesos muestran PPID=2, el cual es un proceso interno del
kernel, kthreadd, el cual est diseado para adoptar hijos cuando el proceso padre
muere. En sistemas con versiones antiguas del kernel veramos PPID=1, haciendo
mencin a /sbin/init, pero bsicamente es la misma idea.
308
A continuacin un ejemplo:
$ ps -o pid,uid,command
PID UID COMMAND
7989 500 bash
8228 500 ps -o pid,uid,command
Usted puede consultar la pgina man de ps para obtener muchas otras opciones de
salida.
309
Consulte la pgina man de pstree para obtener una explicacin completa del resto de las
opciones; en el ejemplo de arriba solo quisimos mostrar informacin para el pid=2048.
Tenga en cuenta que uno de sus procesos hijos (evince con pid=18036) tiene tres hijos
propios. Otra forma de verlo es la siguiente:
$ ls -l /proc/18036/task
total 0
dr-xr-xr-x 5 coop coop 0
dr-xr-xr-x 5 coop coop 0
dr-xr-xr-x 5 coop coop 0
dr-xr-xr-x 5 coop coop 0
Sep
Sep
Sep
Sep
11
11
11
11
07:15
07:15
07:15
07:15
18036
18040
18046
18047
USER
root
coop
coop
root
coop
root
root
root
root
root
root
root
root
TIME+
8:59.68
0:00.14
0:16.45
0:00.04
0:00.01
0:00.01
0:01.78
0:00.00
0:00.06
0:00.02
0:00.00
0:00.15
0:00.04
COMMAND
Xorg
make
gnome-terminal
make
top
make
init
kthreadd
migration/0
ksoftirqd/0
watchdog/0
migration/1
ksoftirqd/1
310
PR NI
VIRT
RES
20 0 1876580 396628
SHR S
37704 S
20
20
20
0
0
0
21444 S
27208 S
18908 S
3.0
2.3
1.0
2.3
0.8
0.4
20
0 S
0.7
0.0
0:00.25
20
20
20
0.3
0.3
0.3
0.4
2.3
0.0
0:03.13 nautilus
0:10.88 chrome
0:00.04 top
547140 185968
254972 68920
642600 32156
0
%CPU %MEM
TIME+ COMMAND
8.0 4.9 113:14.62 gnome13:22.17 skype-bin
33:11.09 Xorg
1:16.76 gnome-
Se tiene mucho control sobre cmo se ordenan los procesos y qu campos se despliegan;
hay muchas otras opciones adems de las por defecto. Por ejemplo, si se
presiona h o ? se obtiene una lista breve de los comandos interactivos y q se usa para
salir.
Adems es posible terminar una tarea presionando k, o cambiar su prioridad (renice)
con r.
Si hace man top obtendr documentacin extensiva acerca de las opciones de
configuracin y posibilidades interactivas.
Tenga en cuenta que hay alternativas populares al comando estndar top, algunos de los
cuales proveen interfaces ms visuales o informacin adicional, tales
como htop, ntop y atop. La mayora de las distribuciones Linux tienen un monitor grfico
del sistema (como gnome-system-monitor o ksysguard), los cuales tienen una ventana
de despliegue similar a top.
311
312
Solucin 23.1
1. $ ps -ef
$ ps aux
2. $ ps -o pid,pri,ni,cmd
PID PRI NI CMD
2389 19 0 bash
22079 19 0 ps -o pid,pri,ni,cmd
(Nota: no debera haber espacios entre los parmetros.)
3. $ bash
$ nice -n 10 bash
$ ps -o pid,pri,ni,cmd
2389 19 0 bash
22115 19 0 bash
22171 9 10 bash
22227 9 10 ps -o pid,pri,ni,cmd
4. $ renice 15 -p 22227
$ ps -o pid,pri,ni,cmd
PID PRI NI CMD
2389 19 0 bash
22115 19 0 bash
22171 4 15 bash
22246 4 15 ps -o pid,pri,ni,cmd
5. $ top
313
Solucin 23.2
1. $ dd if=/dev/urandom of=/dev/null &
2. $ ps -C dd -o pid,cmd,stat
25899 dd if=/dev/urandom of=/dev/ R
Should be S or R.
3. $ fg
$ ^Z
$ ps -C dd -o pid,cmd,stat
PID
CMD
STAT
25899
dd if=/dev/urandom of=/dev/ T
El estado debera ser T.
4. ejecute el comando jobs. Qu informacin le entrega?
$ jobs
[1]+ Stopped dd if=/dev/urandom of=/dev/null
5. Lleve la tarea de vuelta al segundo plano, luego termnela usando el comando kill desde otra
ventana.
$ fg
$ kill 25899
314
315
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
316
24.2 iostat
iostat es el caballo de batalla bsico para monitoreo de actividad de E/S en el sistema.
Puede generar reportes con mucha informacin, en donde el contenido exacto se controla
a travs de opciones.
Si se ejecuta iostat sin argumentos obtenemos lo siguiente:
$ iostat
Linux 3.15.9 (q7)
(4 CPU)
avg-cpu:
0.00 94.92
Device:
kB_wrtn
sda
dm-0
dm-2
dm-3
dm-5
09/11/2014
_x86_64_
12.10
5.58
1.22
0.01
0.31
tps
kB_read/s
170.52
46.32
4.89
0.06
1.24
61.69
48.74
0.00
0.00
0.00
0.66
kB_wrtn/s
kB_read
2170494
589608
62208
728
15780
785198
620384
12
0
12
317
dm-6
dm-7
dm-8
dm-1
dm-4
dm-10
dm-11
dm-13
dm-14
dm-15
0.05
0.03
0.03
0.00
0.01
0.01
0.33
0.03
0.03
0.01
0.20
0.11
0.13
0.01
0.03
0.03
28.50
0.10
0.10
0.03
0.00
0.00
0.00
0.00
0.00
0.00
0.23
0.00
0.00
0.00
2568
1436
1636
152
364
364
362769
1268
1256
364
12
12
12
0
0
0
2964
12
12
0
09/11/2014
_x86_64_
%idle
94.93
Device:
sda
dm-0
dm-2
....
kB_read
2170494
589608
62208
tps
12.07
5.57
1.22
kB_read/s
170.00
46.18
4.87
kB_wrtn/s
61.53
48.61
0.00
(4
kB_wrtn
785574
620632
12
%user
4.13
12/12/2014
_x86_64_
(4 CPU)
%idle
86.57
kB_read
95397215
442484
3660
1692
91066729
kB_wrtn
13571286
1111280
32
12
11800544
318
VG-P
VG-pictures
VG-virtual2
VG-w7back
0.00
0.28
0.01
0.00
0.00
27.30
0.05
0.01
0.00
0.23
0.00
0.00
76
668476
1256
364
0
5700
12
0
(4 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await
w_await svctm %util
sda
1.04
2.61 7.68 4.33 169.34 61.23
38.39
0.16 12.96
10.53
17.27 1.86 2.24
dm-0
0.00
0.00 1.15 4.40 45.92 48.38
34.01
0.03 6.23
7.38
5.92 2.42 1.34
Campo
Significado
Device
rrqm/s
wrqm/s
r/s
w/s
rkB/s
wkB/s
avgrq-sz
avgqu-sz
await
svctm
%util
319
24.5 iotop
Otra herramienta muy til es iotop, la cual debe ser ejecutada como root. Esta despliega
una tabla del uso actual de E/S y se actualiza peridicamente, de la misma forma que lo
hace top. Si se ejecuta sin opciones muestra lo siguiente:
$ sudo iotop
Total DISK READ : 132.32 M/s | Total DISK WRITE : 132.79 M/s
Actual DISK READ: 132.32 M/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER
DISK READ
DISK WRITE
SWAPIN
IO> COMMAND
9791 be/4 root
132.32 M/s
132.79 M/s
0.00 % 72.48 % cp
/usr/s~.sqfs /tmp
1 be/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % systemd
-~rialize 22
2 be/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [kthreadd]
3 be/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [ksoftirqd/0]
5 be/0 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [kworker/0:0H]
2054 be/4 coop
0.00 B/s
0.00 B/s
0.00 %
0.00 % gsd-printer
7 be/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [rcu_preempt]
8 be/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [rcu_sched]
9 be/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [rcu_bh]
10 rt/4 root
0.00 B/s
0.00 B/s
0.00 %
0.00 % [migration/0]
.....
320
-b, --batch
-n NUM, --iter=NUM
-d SEC, --delay=SEC
-p PID, --pid=PID
-u USER, --user=USER
-P, --processes
-a, --accumulated
-k, --kilobytes
-t, --time
-q, --quiet
non-interactive mode
number of iterations before ending [infinite]
delay between iterations [1 second]
processes/threads to monitor [all]
users to monitor [all]
only show processes, not all threads
show accumulated I/O instead of bandwidth
use kilobytes instead of a human friendly unit
add a timestamp on each line (impliesbatch)
suppress some lines of header (impliesbatch)
Usar la opcin -o puede ser til para tener una salida ms limpia.
Si se pasa un pid a travs del argumento -p, el resultado aplica al proceso solicitado, de
lo contrario se aplicar al proceso iniciado por COMMAND con los argumentos
correspondientes. Si no se proveen argumentos, ionice provee la clase de planificacin y
prioridad del proceso de shell actual, como se muestra aqu:
$ ionice
idle: prio 7
El parmetro -c especifica la clase de planificacin de E/S, la cual puede tener los tres
valores que siguen:
Tabla 24.2: Clases de planificacin de E/S
Clase de
planificacin de
E/S
valor
de -c
Idle
Best effort
Real Time
Significado
No tiene acceso a E/S de disco a menos que ningn otro
programa lo haya solicitado por un perodo definido.
Todos los programas se atienden con el mtodo roundrobin, de acuerdo a los ajustes de prioridad. Esta es la
configuracin por defecto.
Obtiene acceso primero al disco, lo cual puede desplazar
a otros procesos. La prioridad define el tamao de la
tajada de tiempo que recibe cada proceso.
Las clases Best Effort y Real Time toman el argumento -n, el cual da la prioridad, la que
puede estar en un rango de 0 a 7, en donde 0 es la prioridad mayor. Un ejemplo:
$ ionice -c 2 -n 3 -p 30078
Nota: ionice funciona solo cuando se usa el planificador de E/S CFQ, el cual se
mencionar en el captulo siguiente.
LFS201: Fundamentos de Administracin de Sistemas Linux
321
322
Si no suministra una cifra para el tamao de memoria, el programa averiguar cunta memoria
/ene el sistema y crear un archivo de prueba de 2 a 3 veces ese tamao. No haremos eso aqu
debido a que tomara mucho /empo para probar el programa.
En un sistema RHEL 7:
$ /me sudo bonnie++ -n 0 -u 0 -r 100 -f -b -d /mnt
Using uid:0, gid:0.
Wri/ng intelligently...done
Rewri/ng...done
Reading intelligently...done start em...done...done...done...done...done...
Version 1.96
------Sequen/al Output-------Sequen/al Input--Random
Concurrency 1
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks
Machine
Size K/sec %CP K/sec %CP K/sec %CP
K/sec %CP K/sec %CP /sec %CP
q7
300M
99769 14
106000 12
+++++ +++ 257.3 1
Latency
226us
237us 418us 624ms
1.96,1.96,q7,1,1415992158,300M,,,,99769,14,106000,12,,,+++++,++
+,257.3,1,,,,,,,,,,,,,,,,,,,226us,237us,,418us,624ms,,,,,,
323
En un sistema Ubuntu 14.04, corriendo una mquina virtual bajo un hipervisor en la misma
mquina Osica:
$ /me sudo bonnie++ -n 0 -u 0 -r 100 -f -b -d /mnt
Using uid:0, gid:0.
Wri/ng intelligently...done
Rewri/ng...done
Reading intelligently...done
start em...done...done...done...done...done...
Version 1.97 ------Sequen/al Output-------Sequen/al Input- --Random
Concurrency 1
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks
Machine
Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec
%CP
ubuntu
300M
70000 61
43274 31
470061 96
2554 91
Latency
306ms 201ms 9276us 770ms
1.97,1.97,ubuntu,1,1415983257,300M,,,,70000,61,43274,31,,,470061,96,2554,91,,,,,,,,,,,,,,,,,,,306
ms,201ms,,9276us,770ms,,,,,,
Puede apreciar claramente la disminucin del rendimiento. Asumiendo que ha guardado las salidas
previas en un archivo llamado bonnie++.out, puede conver/r la salida a html de la siguiente forma:
$ bon_csv2html < bonnie++.out > bonnie++.html
o a texto plano con:
$ bon_csv2txt < bonnie++.out > bonnie++.txt
Luego de leer la documentacin, ejecute pruebas ms largas y ambiciosas. Intente alguna de las
pruebas que no realizamos. Si su sistema se comporta bien, guarde los resultados para realizar
comparaciones de benchmarking en el futuro, en caso de que su sistema mani.este algn
problema de rendimiento.
324
325
Las estads/cas en las que debera .jarse son los nmeros de archivos por segundo reportados por
fs_mark y el porcentaje de /empo de CPU u/lizado por iostat. Si este se aproxima a 100 por
ciento, el sistema de E/S est estresado.
Dependiendo del /po de sistema de archivos que est usando, podra mejorar los resultados
cambiando las opciones de mount. Por ejemplo, para ext3 o ext4 puede probar lo siguiente:
$ mount -o remount,barrier=1 /tmp
para ext4 puede intentar:
$ mount -o remount,journal_async_commit /tmp
Vea cmo cambian los resultados. Tenga en cuenta que estas opciones podran causar problemas si
usted /ene un corte de energa elctrica o cualquier otro apagado inesperado; es decir, es
probable que exista una relacin inversa entre estabilidad y velocidad. La documentacin acerca de
algunas opciones de mount se puede encontrar junto a las fuentes del kernel en
Documenta/on/.lesystems y en la pgina man de mount
326
327
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
328
329
330
1
1
1
1
1
1
1
1
1
1
1
1
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
Sep
Sep
Sep
Sep
Sep
Sep
Sep
Sep
Sep
Sep
Sep
Sep
11
11
11
11
11
11
11
11
11
11
11
11
11:15
11:15
11:15
11:15
11:15
11:15
11:15
11:15
11:15
11:15
11:15
11:15
back_seek_max
back_seek_penalty
fifo_expire_async
fifo_expire_sync
group_idle
low_latency
quantum
slice_async
slice_async_rq
slice_idle
slice_sync
target_latency
331
quantum
Longitud mxima de la cola en una ronda de servicio (valor por defecto = 4).
queued
Solicitud mnima de asignacin por cola (valor por defecto = 8).
fifo_expire_sync
timeout FIFO para solicitudes de sincronizacin (valor por defecto = HZ/2).
fifo_expire_async
timeout FIFO para solicitudes asincrnicas (valor por defecto = 5 * HZ).
fifo_batch_expire
Velocidad a la cual expira FIFO (valor por defecto = HZ/8).
back_seek_max
Bsqueda hacia atrs mxima, en KB (valor por defecto = 16K).
back_seek_penalty
Penalizacin por una bsqueda hacia atrs (valor por defecto = 2).
Se mantienen dos listas ordenadas; una para lectura y otra para escritura,
ordenadas por bloque de inicio.
Se mantienen dos listas FIFO, de nuevo, una para lectura y otra para escritura.
Estas listas se ordenan por tiempo de ingreso.
Una quinta cola contiene las solicitudes que van a ser enviadas al controlador de
dispositivo. Esta cola se conoce como la cola de envo.
Exactamente cmo las solicitudes son removidas de las primeras cuatro colas y puestas
en la quinta (cola de envo) es donde entra en juego el arte del algoritmo.
LFS201: Fundamentos de Administracin de Sistemas Linux
332
read_expire:
En cunto tiempo (en milisegundos) se garantiza que ocurra una solicitud de
lectura (por defecto = HZ/2 = 500 ).
write_expire:
En cunto tiempo (en milisegundos) se garantiza que ocurra una solicitud de
escritura (por defecto = 5 * HZ = 5000 ).
writes_starved:
A cuntas solicitudes de lectura se debera dar preferencia por sobre las de
escritura (por defecto = 2 ).
fifo_batch:
Cuntas solicitudes deberan moverse desde la lista ordenada del planificador a la
cola de envo, cuando los plazos han expirado (por defecto = 16).
front_merges:
Las uniones hacia atrs son ms comunes que las hacia adelante, ya que una
solicitud contigua generalmente contina en el bloque siguiente. Se este
parmetro se configura en 0, se deshabilita la unin hacia adelante, lo cual puede
dar un impulso si usted sabe que no va a ser necesario (por defecto = 1 ).
333
%U
%S
334
}
# create some files for reading, ok if they are the same
create_input_files(){
[[ -f file1 ]] || dd if=/dev/urandom of=file1 bs=1M count=$NMEGS
for n in $(seq 1 $NMAX) ; do
[[ -f file$n ]] || cp file1 file$n
done
}
echo -e \ncreating as needed random input files
create_input_files
# begin the actual work
# do parallel read test
echo -e \ndoing timings of parallel reads\n
echo -e REAL
USER
SYS\n
for iosched in noop deadline cfq ; do
echo testing IOSCHED = $iosched
echo $iosched > /sys/block/sda/queue/scheduler
cat /sys/block/sda/queue/scheduler
#
done
##############################################################
# do parallel write test
echo -e \ndoing timings of parallel writes\n
echo -e REAL
USER
SYS\n
for iosched in noop deadline cfq ; do
echo testing IOSCHED = $iosched
echo $iosched > /sys/block/sda/queue/scheduler
cat /sys/block/sda/queue/scheduler
time do_write_test
done
335
Si est tomando la versin autodidacta en lnea de este curso, encontrar el cdigo fuente
disponible para su descarga en la pantalla Lab.
Recuerde darle permisos de ejecucin con:
$ chmod +x ioscript.sh
Lo que viene a con/nuacin es una explicacin del funcionamiento del script y de cmo usarlo:
El script realiza lo siguiente:
Cambiar entre los plani.cadores de E/S disponibles en un disco duro, mientras se hace un
nmero con.gurable de lecturas y escrituras en paralelo de archivos de tamao ajustable.
Pruebas de lectura y escritura en pasos por separado.
Al llevar a cabo las pruebas de lectura, asegrese de que est leyendo desde el disco y no
desde las pginas en memoria cach. Puede forzar que el cach se escriba en disco
ejecutando el comando:
$ echo 3 > /proc/sys/vm/drop_caches
antes de realizar el test de lectura. Puede hacer cat a /dev/null para evitar escribir en el
disco.
Asegrese de que todas las lecturas estn completas antes de obtener informacin del
/empo tomado; esto puede llevarse a cabo ejecutando el comando wait en una shell.
Las pruebas de escritura se hacen simplemente copiando un archivo (el cual estar en el
cach luego de la primera lectura) ml/ples veces de forma simultnea. Para asegurarse
que todas las operaciones de escritura se han completado antes de obtener informacin
del /empo tomado, puede ejecutar el comando sync.
336
337
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
338
Propsito
Paquete
free
procps
vmstat
procps
pmap
procps
339
26.3 /proc/sys/vm
El directorio /proc/sys/vm contiene muchos ajustes para controlar el sistema
de Memoria Virtual. Lo que se encuentra exactamente en este directorio depende en
cierto modo de la versin del kernel. El usuario root puede escribir sobre casi todas las
entradas aqu.
Recuerde que estos valores pueden modificarse ya sea escribiendo directamente en la
entrada o usando la herramienta sysctl. Adems, si modifica /etc/sysctl.conf los valores
tendrn efecto en cada arranque.
Tabla 26.2: Entradas en /proc/sys/vm
Entrada
Propsito
admin_reserve_kbytes
block_dump
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugepages_treat_as_movable
hugetlb_shm_group
laptop_mode
legacy_va_layout
lowmen_reserve_ratio
340
max_map_count
min_free_kbytes
mmap_min_addr
nr_hugepages
nr_pdflush_hugepages
nr_pdflush_threads
oom_dump_tasks
oom_kill_allocating_task
overcommit_kbytes
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
scan_unevictable_pages
stat_interval
swappiness
user_reserve_kbytes
341
vfs_cache_pressure
Usted puede encontrar informacin completa del directorio /proc/sys/vm en las fuentes
del kernel bajo Documentation/sysctl/vm.txt (o en el paquete de documentacin del
kernel de su distribucin).
26.4 vmstat
vmstat es una herramienta multipropsito que despliega informacin acerca de la
memoria, paginacin, E/S, actividad del procesador y procesos. Tiene muchas opciones.
La forma general del comando es la siguiente:
$ vmstat [options] [delay] [count]
b
0
0
0
0
swpd
0
0
0
0
free
4521672
4521408
4521408
4521408
buff
375560
375560
375568
375576
cache
1792484
1792516
1792516
1792516
si
0
0
0
0
so
0
0
0
0
bi
49
0
0
0
bo
17
0
14
10
in
363
490
436
452
cs us sy id wa st
275 3 1 95 1 0
352 1 1 98 0 0
316 1 0 99 0 0
330 1 0 98 0
donde la primera lnea muestra los promedios desde el ltimo reinicio, mientras que las
lneas subsiguientes muestran la actividad durante el intervalo especificado.
Los campos que se muestran son:
342
Campo
Subcampo Significado
Processes
Processes
memory
swpd
memory
free
memory
buff
memory
cache
swap
si
swap
so
I/O
bi
I/O
bo
system
in
Interrupciones/segundos
system
cs
Cambios de contexto/segundo
CPU
us
CPU
sy
CPU
id
CPU
wa
CPU
st
343
donde las pginas de memoria activa son aquellas que han sido usadas recientemente;
pueden estar limpias (los contenidos en disco estn actualizados) o sucias (necesitan
ser actualizadas al disco). Por otro lado, las pginas de memoria inactiva no han sido
usadas recientemente, posiblemente estn limpias y se liberan antes bajo presin de
memoria.
La memoria se puede mover entre las listas de memoria activa e inactiva en tanto hay
cambios, o por otra parte, pueden permanecer en su lugar si se deja mucho tiempo entre
usos.
Para obtener una tabla de estadsticas de memoria y ciertos contadores de eventos use la
opcin -s:
$ vmstat -s
8170032 K total memory
3914056 K used memory
2159780 K active memory
1034664 K inactive memory
4255976 K free memory
375984 K buffer memory
1807796 K swap cache
4193776 K total swap
0 K used swap
4193776 K free swap
138381 non-nice user cpu ticks
2408 nice user cpu ticks
58336 system cpu ticks
4126831 idle cpu ticks
31180 IO-wait cpu ticks
0 IRQ cpu ticks
248 softirq cpu ticks
0 stolen cpu ticks
2120046 pages paged in
708910 pages paged out
0 pages swapped in
0 pages swapped out
16047974 interrupts
11926843 CPU context switches
1410434075 boot time
31537 forks
344
Subcampo Significado
reads
total
reads
merged
reads
ms
writes
total
writes
merged
writes
ms
I/O
cur
E/S en progreso
I/O
sec
345
Si solo desea obtener algunas estadsticas rpidas en una particin, use la opcin -p:
$ vmstat -p /dev/sda1 2 4
sda1 reads read sectors writes requested writes
23913
1969794
11412
291672
23913
1969794
11417
291712
23913
1969794
11417
291712
23913
1969794
11419
291736
26.5 /proc/meminfo
Como se mencion anteriormente, en /proc/meminfo se puede encontrar un resumen
relativamente largo de estadsticas de memoria:
$ cat /proc/meminfo
MemTotal:
8170032
MemFree:
4506996
MemAvailable:
6747268
Buffers:
376744
Cached:
1865956
SwapCached:
0
Active:
2155424
Inactive:
1036312
Active(anon):
951000
Inactive(anon):
49300
Active(file):
1204424
Inactive(file):
987012
Unevictable:
32
Mlocked:
32
SwapTotal:
4193776
SwapFree:
4193776
Dirty:
48
Writeback:
0
AnonPages:
949168
Mapped:
397340
Shmem:
51312
Slab:
336148
SReclaimable:
302240
SUnreclaim:
33908
KernelStack:
8352
PageTables:
29752
NFS_Unstable:
0
Bounce:
0
WritebackTmp:
0
CommitLimit:
8278792
Committed_AS:
3790248
VmallocTotal: 34359738367
VmallocUsed:
327116
VmallocChunk: 34359398732
AnonHugePages:
344064
HugePages_Total:
0
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
kB
346
HugePages_Free:
HugePages_Rsvd:
HugePages_Surp:
Hugepagesize:
DirectMap4k:
DirectMap2M:
0
0
0
2048 kB
1252800 kB
7135232 kB
Entrada
MemTotal
MemFree
Buffers
Cached
SwapCached
Memoria que fue sacada del rea de intercambio pero que todava
permanece en el archivo de intercambio
Active
Inactive
Active(anon)
Inactive(anon)
Active(file)
Inactive(file)
Unevictable
Mlocked
SwapTotal
SwapFree
Dirty
Writeback
AnonPages
Mapped
Shmem
Slab
SReclaimable
SUnreclaim
KernelStack
347
PageTables
Bounce
WritebackTmp
CommitLimit
Committed_AS
VmallocTotal
VmallocUsed
VmallocChunk
HugePages_Total
HugePages_Free
HugePages_Rsvd
HugePages_Surp
Hugepagesize
Tenga en cuenta que las entradas exactas dependern de la versin especfica del kernel
en ejecucin.
348
Un ejemplo sera un programa que asigna un bfer de 1 MB y luego usa solo unas pocas
pginas de memoria. Otro ejemplo es que cada vez que un proceso hijo es creado, recibe
una copia completa del espacio de memoria del padre. Debido a que Linux usa la
tcnica COW (copy on write), a menos de que uno de los procesos modifique la memoria,
no se necesita hacer ninguna copia real. Sin embargo el kernel tiene que asumir que sera
necesario realizar esa copia.
As, el kernel permite el overcommit de memoria, pero solo para pginas dedicadas a
procesos de usuario; las pginas usadas en el kernel no van al rea de intercambio y
siempre se asignan al momento de ser solicitadas.
Es posible modificar e incluso desactivar el overcommit ajustando el valor
de /proc/sys/vm/overcommit_memory:
1:
Todas
las
solicitudes
de
memoria
pueden
realizar
un
overcommit.
349
Para tomar decisiones acerca de quin es sacrificado para mantener vivo el sistema, se
calcula un valor llamado maldad (el cual puede ser leerse desde /proc/[pid]/oom_score)
para cada proceso en el sistema. El orden para matar los procesos se determina por este
valor.
Dos entradas en el mismo directorio pueden usarse para aumentar o disminuir la
probabilidad de exterminio. El valor de oom_adj es el nmero de bits en los cuales los
puntos se ajustan. Los usuarios normales pueden incrementar el valor solamente; solo un
superusuario puede disminuirlo (un valor negativo de oom_adj). El valor
de oom_adj_scoreajusta directamente el valor del punto. Tenga en cuenta que
ajustar oom_adj es obsoleto actualmente.
350
Asegrese de habilitar las reas de intercambio una vez que haya terminado, con
$ sudo/sbin/swapon -a
Ahora vamos a poner el sistema bajo una presin de memoria creciente. Una forma de
hacerlo es con el programa stress que instalamos anteriormente, al ejecutarlo con los
argumentos que se muestran a continuacin:
$ stress -m 8 -t 10s
351
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
352
Automatizacin:
manuales.
Repetibilidad y predictibilidad.
Seguridad y auditora.
353
Los paquetes de cdigo fuente se usan para generar paquetes binarios; uno
siempre debera tener la posibilidad de reconstruir un paquete binario (por
ejemplo, usando rpmbuildrebuild en sistemas basados en RPM) desde el
cdigo fuente. Un paquete de cdigo fuente puede ser usado en mltiples
arquitecturas.
Los administradores de sistema tienen que lidiar la mayora del tiempo con los paquetes
binarios. En sistemas de 64 bits que pueden ejecutar programas de 32 bits, es posible
tener dos paquetes binarios instalados para un programa dado; tal vez uno
con x86_64 o amd64 en el nombre y otro con i386 o i686.
Los paquetes de cdigo fuente pueden ser tiles para mantener el seguimiento de los
cambios y el cdigo usado que viene en los paquetes binarios. Generalmente no estn
instalados por defecto en un sistema pero siempre pueden ser obtenidos desde el
proveedor de la distribucin.
354
355
Un sistema antiguo es simplemente proveer los paquetes como archivos tar comprimidos,
sin ninguna gestin real o estrategia de eliminacin limpia del paquete; este enfoque es
usada todava por Slackware, una de las distribuciones ms antiguas de Linux.
Pero la mayora de las veces se usa RPM o dpkg, por lo cual esas sern los nicos
sistemas que consideraremos en este curso.
este
rol
en
los
sistemas
de
356
Sin embargo, algunos repositorios externos no estn muy bien construidos o mantenidos.
Por ejemplo, cuando un paquete se actualiza en el repositorio principal, las dependencias
podran no estar actualizadas en el repositorio externo, el cual podra conducir a
una dependencia infernal de paquetes.
No vamos a discutir los mecanismos acerca de cmo construir paquetes .rpm o .deb, ya
que ese es un asunto que atae ms a desarrolladores de software que a
administradores.
357
Explicar cmo el crear su propio paquete mejora el control que tiene sobre
exactamente lo que sucede con el software y cmo est instalado.
358
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
359
28.1 RPM
RPM (Redhat Package Manager) fue desarrollado por Red Hat (como era de esperar).
Todos los archivos relacionados a una tarea especfica estn empaquetados en un
archivo rpm nico, el cual tambin contiene informacin acerca de cmo y donde
instalar/desinstalar los archivos. Las versiones nuevas de software conducen a
archivos rpm nuevos, los que se usan para la actualizacin.
Los archivos rpm tambin contienen informacin acerca de las dependencias. Tenga en
cuenta que a menos que se especifique una URL para obtener los paquetes, rpm no ir a
buscar los paquetes a internet, sino que ms bien los instalar desde la mquina local
solamente, usando rutas absolutas o relativas para tal efecto.
Los archivos rpm generalmente dependen de la distribucin; de hecho instalar un paquete
en una distribucin diferente para la cual fue creado podra ser difcil o imposible.
Distinguir los archivos de documentacin del resto de los archivos del paquete, y
opcionalmente decidir no instalarlos para ahorrar espacio en disco.
360
Tenga en cuenta que el campo distro a menudo especifica el repositorio del cual
proviene el paquete, dado a que una instalacin puede usar varios repositorios de
paquetes como discutiremos en la seccin de yum y zypper, herramientas que trabajan
sobre RPM.
la base de datos RPM en la forma de archivos hash de Berkeley DB. Los archivos de la
base de datos no deberan ser modificados manualmente; las actualizaciones deberan
realizarse solamente a travs del programa rpm.
Es posible especificar un directorio alternativo para la base de datos con la opcin
dbpath en el programa rpm. Por ejemplo, esto podra ser til para examinar una base de
datos RPM copiada desde otro sistema.
Usted puede usar la opcinrebuilddb para reconstruir los ndices de la base de datos
desde los headers de los paquetes instalados; esto es ms bien una reparacin y no una
reconstruccin desde cero.
361
/usr/lib/rpm/rpmrc
/etc/rpmrc
~/.rpmrc
Tenga en cuenta que se leen todos esos archivo; rpm no se detiene tan pronto encuentra
uno de esos archivos. Puede especificarse un archivo rpmrc alternativo con la opcin
rcfile.
28.6 Consultas
Todas las consultas rpm incluyen la opcin -q, la cual puede ser combinada con diversas
subopciones, como las que siguen:
362
/var/run/pluto
c /etc/hba.conf
/usr/share/applications/defaults.list
c /etc/pam.d/fingerprint-auth
c /etc/pam.d/password-auth
/var/lib/nfs/rpc_pipefs
/usr/local/bin
/usr/local/etc
donde la salida anterior muestra solo unos pocos tems. Tenga en cuenta que este
comando podra tomar bastante tiempo ya que examina todos los archivos asociados a
cada
paquete.
Se genera una salida cuando hay un problema solamente.
363
Cada uno de los caracteres desplegados arriba denota el resultado de una comparacin
de atributo(s) del archivo con valor de los atributo(s) almacenados en la base de datos. Un
. nico (punto) significa que pas la prueba, mientras que un ? nico (signo de
interrogacin al final) indica que la prueba no se pudo realizar (porque por ejemplo los
permisos del archivo no permiten la lectura). De otra forma, el caracter denota una falla de
la prueba en la verificacin correspondiente:
364
en donde -i es para instalar, -v para tener una salida detallada y -h imprime marcas de
control para mostrar el progreso de la tarea.
RPM realiza varias tareas cuando se instala un paquete:
Desempaqueta los archivos desde los paquetes y los instala con los atributos
adecuados:
Adems de instalar archivos en el lugar correcto, RPM tambin configura atributos
tales como permisos, dueos y hora de modificacin.
365
Si una versin anterior del paquete est instalada, esta ser actualizada a la ms
nueva que est en el directorio.
El refrescar paquetes puede ser til para aplicar un montn de partes de una vez (para
actualizar paquetes, por ejemplo).
366
367
368
Solucin 28.1
1. $ rpm -qf /etc/logrotate.conf
logrotate-3.8.6-4.el7.x86_64
2. $ rpm -qil logrotate
...
Lo mismo podra hacerse de una forma ms elegante, que combina estos dos pasos:
3. $ rpm -qil $(rpm -qf /etc/logrotate.conf)
rpm -V logrotate
..?...... /etc/cron.daily/logrotate
S.5....T. c /etc/logrotate.conf
4. En RHEL 7:
$ sudo rpm -e logrotrate
error: Failed dependencies:
logrotate is needed by (installed) vsNpd-3.0.2-9.el7.x86_64
logrotate >= 3.5.2 is needed by (installed) rsyslog-7.4.7-7.el7_0.x86_64
En openSUSE 13.1:
$ sudo rpm -e logrotate
error: Failed dependencies:
logrotate is needed by (installed) xdm-1.1.10-24.2.1.x86_64
logrotate is needed by (installed) syslog-service-2.0-772.1.2.noarch
logrotate is needed by (installed) wpa_supplicant-2.0-3.4.1.x86_64
logrotate is needed by (installed) mcelog-1.0pre3.6e4e2a000124-19.4.1.x86_64
logrotate is needed by (installed) apache2-2.4.6-6.27.1.x86_64
logrotate is needed by (installed) net-snmp-5.7.2-9.8.1.x86_64
logrotate is needed by (installed) kdm-4.11.12-119.1.x86_64
Tenga en cuenta que el rbol exacto de dependencias de paquetes est en funcin tanto de la
distribucin como del soNware instalado.
369
Solucin 28.2
1. $ cd /var/lib
$ sudo cp -a rpm rpm_BACKUP
2. $ sudo rpmrebuilddb
3. $ ls -l rpm rpm_BACKUP
4. $ rpm -qa | tee /tmp/rpm-qa.output
5. $ ls -l rpm rpm_BACKUP
6. Realice este paso una vez que est seguro de que el sistema est funcionando
correctamente!
$ sudo rm -rf rpm_BACKUP
370
371
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
372
como en Debian:
logrotate_3.8.7-1_amd64.deb
y en Ubuntu:
logrotate_3.8.7-1ubuntu1_amd64.deb
373
374
webfs_1.21+ds1-8_amd64.deb
29.5 Instalacin/Actualizacin/Desinstalacin
El comando:
$ sudo dpkg -i foobar.deb
se usa para desinstalar por completo un paquete instalado, con excepcin de los archivos
de configuracin. El comando:
$ sudo dpkg -P package
se usa para desinstalar por completo un paquete instalado, incluyendo los archivos de
configuracin.
Nota: -P significa limpiar.
375
Solucin 29.1
1. $ dpkg -S /etc/logrotate.conf
logrotate: /etc/logrotate.conf
2. $ dpkg -L logrotate
...
3. $ dpkg -V logrotate
4. $ sudo dpkg -r logrotate
dpkg: dependency problems prevent removal of logrotate:
libvirt-bin depends on logrotate.
ubuntu-standard depends on logrotate.
dpkg: error processing package logrotate (--remove):
dependency problems - not removing
Errors were encountered while processing:
logrotate
376
377
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
378
379
Tenga en cuenta que en RHEL 6 no hay un archivo redhat.repo, pero est presente
en RHEL 7:
total 112
drwxr-xr-x.
drwxr-xr-x.
-rw-rr-- 1
-rw-rr-- 1
-rw-rr-- 1
-rw-rr-- 1
-rw-rr-- 1
380
30.5 Consultas
Tal como rpm, yum puede usarse para realizar consultas y bsquedas; sin embargo
puede buscar no solo lo que est instalado en el sistema local, sino que tambin en
repositorios remotos. Algunos ejemplos:
Lista todos los paquetes, o solo aquellos que estn instalados, disponibles o
actualizaciones que an no han sido instaladas.
$ sudo yum list [installed | updates | available]
como en
$ sudo yum provides /logrotate.conf
381
Tenga en cuenta que este es una extensin de yum, no un ejecutable. Hay muchos otros
plugins disponibles para yum, los cuales extienden el set de comandos y argumentos que
puede tomar.
30.7 Instalacin/Actualizacin/Desinstalacin
Aqu hay algunos ejemplos de operaciones que se realizan generalmente:
382
o
$ sudo yum install @group-name
Hay que ser cuidadoso con la desinstalacin de paquetes, ya que yum no solo
remover los paquetes seleccionados, sino que tambin los que dependen de l.
Puede que usted no desee esto, por lo cual no ejecute yum remove con la opcin -y,
la cual asume una confirmacin automtica de desinstalacin.
Si no se provee un nombre de paquete, todos los paquetes son actualizados (de existir
actualizaciones para todos ellos).
Durante la instalacin (o actualizacin), si un paquete tiene un archivo de configuracin
que va a ser actualizado, el archivo con la configuracin antigua ser renombrado con una
extensin .rpmsave. Si el archivo con la configuracin antigua va a funcionar con el
software nuevo, el archivo de configuracin nuevo ser renombrado con una
extensin .rpmnew. Usted puede buscar estas extensiones de nombres de archivo (la
mayora en el rbol de subdirectorios /etc) para determinar si necesita llevar a cabo
alguna reconciliacin, haciendo:
$ sudo find /etc -name *.rpm*
383
En particular:
Si se provee text-file, yum leer y ejecutar los comandos del archivo en vez de la
terminal.
almacnelos
en
el
Para ver la historia de los comandos yum, con las opciones correctas, incluso
deshacer o rehacer comandos anteriores:
$ sudo yum history
384
385
386
Todos los paquetes que con/enen una referencia a bash en su nombre o descripcin.
Los paquetes bash instalados y disponibles.
La informacin del paquete bash.
Las dependencias del paquete bash.
Ejecute los comandos del ejercicio tanto como root y usuario normal. Nota alguna diferencia?
Solucin 30.2
Nota: en RHEL 7 podra recibir algunos errores de permisos si no usa sudo con los siguientes
comandos, a pesar de que estamos obteniendo informacin solamente.
1. $ sudo yum search bash
2. $ sudo yum list bash
3. $ sudo yum info bash
4. $ sudo yum deplist bash
Todos los comandos de arriba deberan funcionar tanto para usuarios normales como para root.
387
388
389
Objetivos de aprendizaje
Actualmente usted debera ser capaz de:
390
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
Explicar qu es zypper.
Discutir las consultas que zypper puede hacer.
Instalar, desinstalar y actualizar paquetes usando zypper.
391
392
31.3 Instalacin/Actualizacin/Desinstalacin
A continuacin se muestran algunos ejemplos de operaciones que se realizan
comnmente:
Esto
es
til
para
usarse
en
scripts
es
equivalente
a yum
-y.
Tal como con yum, es necesario ser cuidadoso con el comando de desinstalacin,
ya que cualquier paquete que necesite del que se est eliminando va a ser
removido tambin.
Debido a que zypper soporta la biblioteca readline, es posible usar las mismas funciones
disponibles de edicin de lnea de comandos de la shell bash en la shell zypper.
393
el cual est ubicado en la URI proporcionada y que se usar con el alias que se pas
como parmetro.
Para eliminar un repositorio de la lista:
$ sudo zypper removerepo alias
394
$ zypper list-updates
$ sudo zypper update bash
$ zypper repos
$ zypper search -i kernel
$ zypper search kernel
5. $ sudo zypper install apache2-devel
395
Todos los paquetes que con/enen una referencia a bash en su nombre o descripcin.
Todos los paquetes bash instalados y disponibles.
La informacin del paquete bash.
Las dependencias del paquete bash.
Ejecute los comandos de arriba tanto como root y como usuario normal. Nota alguna diferencia?
Solucin 31.2
1. $ zypper search -d bash
Sin la opcin -d se muestran solamente los paquetes con bash en el nombre del archivo.
Tendra que hacer zypper info en el paquete para ver donde se menciona bash.
2. $ zypper search bash
3. $ zypper info bash
4. $ zypper inforequires bash
le dar una lista de archivos requeridos por bash. Tal vez la forma ms fcil es ver las
dependencias de bash cuando est instalado, haciendo
$ sudo zypper removedry-run bash
Para este ejercicio bash es una mala eleccin ya que es una parte esencial del sistema. De
todas formas no podr desinstalarlo.
Explicar qu es zypper.
Discutir las consultas que zypper puede hacer.
Instalar, desinstalar y actualizar paquetes usando zypper.
396
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
Explicar qu es APT.
Usar apt-cache para realizar consultas.
Instalar, desinstalar y actualizar paquetes usando apt-get.
397
32.2 apt-get
apt-get es la herramienta principal de la lnea de comandos de APT para gestionar
paquetes. Se usa para instalar, gestionar y actualizar paquetes individuales o el sistema
completo. Incluso puede actualizar la distribucin a una versin completamente nueva, lo
cual puede ser una tarea difcil.
Incluso hay extensiones
archivos rpm.
(imperfectas)
que
le
permiten
a apt-get trabajar
con
Tal como yum y zypper, apt-get funciona con mltiples repositorios remotos.
398
32.4 Instalacin/Actualizacin/Desinstalacin
El programa apt-get es el caballo de batalla para instalar, desinstalar y actualizar
paquetes:
Instalar
un
paquete
actualizar
uno
que
ya
est
instalado:
399
Limpie los archivos del cach y cualquier archivo de paquete que haya sido
instalado:
$ sudo apt-get clean
400
Solucin 32.1
1. Primero sincronice los archivos de ndice de paquetes con los repositorios remotos:
$ sudo apt-get update
Para actualizar realmente:
$ sudo apt-get upgrade
$ sudo apt-get -u upgrade
Tambin puede usar dist-upgrade, como se discu/ anteriormente. Solo la primera forma
tratar de realizar las instalaciones.
2. $ sudo apt-get upgrade bash
3. $ apt-cache search kernel
$ apt-cache search -n kernel
$ apt-cache pkgnames kernel
La segunda y tercera formas solo buscarn paquetes que tengan kernel en el nombre.
$ dpkgget-selec/ons *kernel*
LFS201: Fundamentos de Administracin de Sistemas Linux
401
para obtener los paquetes instalados solamente. Tenga en cuenta que en los sistemas basados
en Debian tendr que usar linux en vez kernel para los paquetes relacionados al kernel, ya que
usualmente no /enen kernel en el nombre.
4. $ sudo apt-get install apache2-dev
402
Todos los paquetes que con/enen una referencia a bash en su nombre o descripcin.
Todos los paquetes bash instalados y disponibles.
La informacin del paquete bash.
Las dependencias del paquete bash.
Ejecute los comandos de arriba tanto como root y como usuario normal. Nota alguna diferencia?
Solucin 32.2
1.
2.
3.
4.
403
404
Explicar qu es APT.
Usar apt-cache para realizar consultas.
Instalar, desinstalar y actualizar paquetes usando apt-get.
405
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
406
Nombre de usuario
El nombre nico asignado a cada usuario.
Contrasea de usuario
La contrasea asignada a cada usuario.
407
Directorio home
Para la mayora de los usuarios este es un directorio nico que le ofrece un rea
de trabajo. Normalmente cada usuario es dueo de su directorio, y con la
excepcin de root, se encontrar en el sistema bajo /home.
Shell de inicio
Generalmente este es un programa shell tal como /bin/bash o /bin/csh. Sin
embargo, en casos especiales se referencia un programa alternativo. En general
este campo aceptar cualquier ejecutable.
crear una cuenta de usuario llamada stephane, usando los algoritmos predeterminados
para asignar el id de usuario y grupo, como tambin para la eleccin de shell.
Especficamente, el comando useradd anterior provocar la ejecucin de los siguientes
pasos:
Los valores predeterminados pueden modificarse fcilmente a travs del uso de opciones
en useradd, como se muestra aqu:
$ sudo useradd -s /bin/csh -m -k /etc/skel -c Bullwinkle J Moose bmoose
408
Todas
las
referencias
al
eliminadas
desde
--help
--login NEW_LOGIN
--lock
--move-home
409
o, --non-unique
-p, --password PASSWORD
-R, --root CHROOT_DIR
-s, --shell SHELL
-u, --uid UID
-U, --unlock
-Z, --selinux-user SEUSER
account
lo cual significa que la cuenta se mantiene en el sistema pero que no puede iniciar sesin.
Es posible desbloquearla con la opcin -U.
Una prctica habitual es bloquear una cuenta de usuario cada vez que dejan la
organizacin o que hacen uso de una ausencia extendida.
Otra forma de bloquear una cuenta es usar chage para cambiar la fecha de expiracin de
una cuenta a una fecha en el pasado:
$ sudo chage -E 2014-09-11 isabelle
410
considera
una
mala
prctica
el
editar
directamente
ya sea usermod o el editor especial vipw, ya que se ocupa bien del bloqueo de los
archivos involucrados, corrupcin de datos, etc.
411
33.7 /etc/shadow
El archivo /etc/shadow contiene un registro (una lnea) por cada usuario, como en:
daemon:*:16141:0:99999:7:::
.....
beav:$6$iCZyCnBJH9rmq7P.
$RYNm10Jg3wrhAtUnahBZ/mTMg.RzQE6iBXyqaXHvxxbKTYqj.d
9wpoQFuRp7fPEE3hMK3W2gcIYhiXa9MIA9w1:16316:0:99999:7:::
lastchange: das desde el 1ero de enero de 1970 desde que la contrasea fue
cambiada por ltima vez
412
413
Note que cuando root cambia una contrasea de un usuario, no se le pide que ingrese la
contrasea actual del mismo:
$ sudo passwd kevin
New UNIX password: <kevins-new-password>
Retype new UNIX password: <kevins-password>
passwd: all authentication tokens updated successfully
Tenga en cuenta que los usuarios normales no tienen permitido configurar contraseas
malas, tales como las que son muy cortas o estn basadas en palabras de diccionario.
Sin embargo, root puede hacerlo.
Ejemplos:
$
$
$
$
sudo
sudo
sudo
sudo
chage
chage
chage
chage
-l
-m
-E
-d
stephane
14 -M 30 kevlin
2012-4-1 isabelle
0 clyde
Solo el usuario root puede usar chage. La nica excepcin a esto es que cualquier
usuario puede ejecutar chage -l para ver la informacin especfica de su cuenta.
Ejemplos:
$ sudo chage -l coop
Last password change : Sep 03, 2014
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
414
Impide
que
el
usuario
ambiente: SHELL, ENV y PATH.
redefina
las
siguientes
variables
de
Tenga en cuenta que hay otras restricciones; la mejor manera de verlas es hacer man
bash y buscar por RESTRICTED SHELL.
Debido a que la shell restringida ejecuta $HOME/.bash_profile sin restricciones, el
usuario no debe tener permisos de escritura ni ejecucin en el directorio /home.
Una shell restringida puede ser invocada desde la lnea de comandos o desde un script
con /bin/bash -r. Sin embargo, no se puede especificar parmetros en el
archivo /etc/passwd. Una forma simple de solucionar esta restriccin podra ser una de
las siguientes:
415
416
33.14 SSH
A menudo es necesario conectarse a sistemas remotos travs de la red, ya sea con el
mismo nombre de usuario u otro. O cuando se necesita transferir archivos hacia y desde
una mquina remota. En cualquier caso, uno desea hacerlo de forma segura, libre de
cualquier intercepcin.
SSH (Secure SHell) existe para este propsito. Usa un cifrado basado en algoritmos
fuertes. Asumiendo que los paquetes ssh apropiados estn instalados en el sistema, no
es necesario realizar una configuracin adicional antes de comenzar a usar ssh.
Para conectarse a un sistema remoto:
$ whoami
student
$ ssh farflung.com
student@farflung.com's password: (escriba aqu)
$
donde estamos asumiendo que hay una cuenta student en farflung.com. Para conectarse
con un usuario diferente:
$ ssh root@farflung.com
root@farflung.com's password: (escriba aqu)
o
$ ssh -l root farflung.com
root@farflung.com's password: (escriba aqu)
417
el cual contiene:
id rsa: la clave de cifrado privada del usuario.
id rsa.pub: la clave de cifrado pblica del usuario.
authorized keys: Una lista de claves pblicas que tienen permiso para conectarse.
known hosts: Una lista de hosts desde los cuales se han aceptado conexiones en el
pasado.
config: Un archivo de configuracin para especificar varias opciones.
Primero el usuario tiene que generar sus claves de cifrado privada y pblica con sshkeygen:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hilda/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hilda/.ssh/id_rsa
Your public key has been saved in /home/hilda/.ssh/id_rsa.pub
The key fingerprint is:
76:da:d3:51:1e:c8:2d:3b:34:28:46:b2:2b:db:d1:c4 hilda@c7
The keys randomart image is:
+--[ RSA 2048]----+
|
. .
|
|
=
o o
|
|
. E . * + |
|
= . . * . |
|
. o S . + . |
|
+ o + . o
|
|
. . . o .
|
|
.
|
|
|
+-----------------+
418
Usted puede examinar las pginas man para ver qu tipos de opciones pueden ir en el
archivo de configuracin dessh, config.
419
para las cuentas de usuario normales. Cules son iguales y cules diferentes?
2. Usando useradd cree una cuenta llamada user1.
3. Usando ssh conctese como user1. Puede hacerlo as:
$ ssh user1@localhost
4.
5.
6.
7.
8.
9.
10.
Debera fallar porque se necesita una contrasea para user1; no ha sido con.gurada todava.
Con.gure la contrasea de user1 como user1pw e intente conectarse de nuevo como user1.
Revise los registros nuevos que fueron creados en los archivos /etc/passwd, /etc/group y
/etc/shadow.
Revise el archivo /etc/default/useradd y vea cules son los valores por defecto actuales.
Tambin eche un vistazo al archivo /etc/login.defs.
Cree una cuenta de usuario llamada user2 que use la shell Korn (ksh) por defecto (si no /ene
/bin/ksh en el sistema, instlela o use la shell Cubicada en /bin/csh). Con.gure la contrasea
en user2pw.
Eche un vistazo a /etc/shadow. Cul es la fecha de expiracin para la cuenta user1?
Use chage para con.gurar la fecha de expiracin del usuario user1 a Diciembre 1, 2013.
Eche un vistazo a /etc/shadow para ver cul es la nueva fecha de expiracin.
Use usermod para bloquear la cuenta user1. Eche un vistazo a /etc/shadow para ver qu ha
cambiado en relacin a la contrasea del usuario user1. Restablezca la contrasea de la cuenta
a userp1 para completar este ejercicio.
420
Solucin 33.1
1. $ sudo grep student /etc/passwd /etc/shadow
/etc/passwd:student:x:1000:100:LF Student:/home/student:/bin/bash
/etc/shadow:student:$6$jtoFVPICHhba$iGFFUU8ctrtOGoistJ4/30DrNLi1FS66qnn0VbS6Mvm
luKI08SgbzT5.IcOHo5j/SOdCagZmF2RgzTvzLb11H0:16028:0:99999:7:::
Puede usar cualquier nombre de usuario normal en vez de student. Lo nico que coincide es el
campo de nombre de usuario.
2. $ sudo useradd user1
3. $ ssh user1@localhost
user1@localhosts password:
Tenga en cuenta que quizs tenga que iniciar primero el servicio sshd de la siguiente forma:
$ sudo service sshd restart
o
$ sudo systemctl restart sshd.service
4. $ sudo passwd user1
/etc/passwd:user1:x:1001:100::/home/user1:/bin/bash
/etc/shadow:user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2
TFpucuwRN1CCHZ19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7:::
6. Ya sea en sistemas RHEL 7 o openSUSE 13.1, por ejemplo:
$ cat /etc/default/useradd
# useradd defaults .le
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
$ cat /etc/login.defs
....
No vamos a pegar el contenido del segundo archivo porque es largo, pero examnelo en su
sistema.
421
user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2TFpucuwRN1CCHZ
19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7:::
No debera haber ninguna fecha de expiracin.
9. $ sudo chage -E 2013-12-1 user1
422
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
Explicar por qu es til que los usuarios del sistema pertenezcan a uno o ms
grupos.
Usar herramientas tales como groupadd, groupdel, groupmod yusermod para
crear, eliminar y gestionar grupos y sus miembros.
Describir los Grupos Privados de Usuario.
Explicar el concepto de pertenencia al grupo.
423
34.1 Grupos
Los usuarios en Linux pertenecen a uno o ms grupos. Los propsitos de esto incluyen:
Los grupos estn definidos en /etc/group, el cual cumple el mismo rol para los grupos
como /etc/passwd lo hace para los usuarios. Cada lnea del archivo luce de la siguiente
forma:
groupname:password:GID:user1,user2,...
donde:
Usuario).
miembros del grupo. El usuario no necesita estar listado aqu si este es su grupo
principal.
la
la
424
Ejemplos:
$
$
$
$
sudo
sudo
sudo
sudo
Nota: Sea muy cuidadoso con el comando usermod -G; la lista de grupos que le sigue
corresponde a la lista completa, no solo a los cambios que desea realizar. Cualquier grupo
que quede afuera de la lista ya no incluir al usuario. Para evitar ese comportamiento
utilice la opcin -a, la cual preservar cualquier pertenencia previa a grupos al agregar
otros nuevos.
425
426
Solucin 34.1
1. $ sudo useradd -m rocky
bullwinkle
rocky
student
427
4. $ ssh rocky@localhost
$ cd ~
$ mkdir somedir
$ chgrp bosses somedir
$ ls -l
total 16
-rw-r--r-- 1 rocky rocky 8980 Oct 4 2013 examples.desktop
drwxrwxr-x 2 rocky bosses 4096 Oct 30 09:53 somedir
$ chmod a+x .
$ ssh bullwinkle@localhost
$ touch /home/rocky/somedir/some.le
touch: cannot touch /home/rocky/somedir/some.le: Permission denied
$ exit
$ sudo usermod -a -G bosses bullwinkle
$ ssh bullwinkle@localhost
$ touch /home/rocky/somedir/some.le
$ ls -al /home/rocky/somedir
(Ojese en quin es el propietario de los archivos)
Explicar por qu es til que los usuarios del sistema pertenezcan a uno o ms
grupos.
Usar herramientas tales como groupadd, groupdel, groupmod yusermod para
crear, eliminar y gestionar grupos y sus miembros.
Describir los Grupos Privados de Usuario.
Explicar el concepto de pertenencia al grupo.
428
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
429
a_file
despus del primer caracter, el cual indica el tipo del objeto archivo, hay nueve ms que
indican los derechos de acceso a potenciales usuarios de archivos. Estos se agrupan en
tres grupos de tres caracteres:
430
9 15:04 a_file
9 15:04 a_file
431
Por
lo
tanto, 7 significa
y 5 lectura/ejecucin.
lectura/escritura/ejecucin, 6 significa
lectura/escritura
Cuando esto se aplica con chmod, es necesario darle un valor para cada uno de los tres
dgitos, tal como aqu:
$ chmod 755 a_file
$ ls -l a_file
-rwxr-xr-x 1 coop coop 1601 Mar
9 15:04 a_file
en donde se separa el usuario propietario del grupo con dos puntos (o uno).
LFS201: Fundamentos de Administracin de Sistemas Linux
432
433
Estos programas aceptan la opcin -R, lo cual significa recursivo. Por ejemplo:
$ chown -R coop:aproject ./
$ chown -R coop:aproject subdir
35.7 umask
Los permisos por defecto dados al crear un archivo son lectura/escritura para el
propietario, grupo y mundo (0666). Para un directorio es lectura/escritura/ejecucin para
todos (0777). Sin embargo, si hace lo siguiente:
$ touch afile
$ mkdir adir
$ ls -l | grep -e afile -e adir
drwxrwxr-x 2 coop coop 4096 Sep 16 11:18 adir
-rw-rw-r-- 1 coop coop
0 Sep 16 11:17 afile
notar que los permisos actuales cambiaron a 664 para el archivo y 775 para el directorio.
Han sido modificados por el umask actual, cuyo propsito es mostrar qu permisos
deberan ser denegados. El valor actual se puede mostrar con:
$ umask
0002
434
Ejemplo:
$ getfacl file1
Ejemplos:
$ setfacl -m u:isabelle:rx /home/stephane/file1
$ setfacl -x u:isabelle
/home/stephane/file
Tenga en cuenta que los archivos nuevos heredan la ACL predeterminada (si ha sido
configurada) desde el directorio en el cual residen. Note tambin que mv y cp
-p mantienen las ACLs.
Para eliminar una ACL:
$ setfacl -x u:isabelle /home/stephane/file1
435
436
437
438
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
439
Cada aplicacin o servicio que trabaja con PAM debe ser configurada en relacin a PAM,
en un archivo de configuracin individual en /etc/pam.d.
Un usuario invoca a la aplicacin que trabaja con PAM, tal como login, ssh o su.
La aplicacin llama a libpam.
La biblioteca verifica si hay archivos relacionados en /etc/pam.d; estos definen
qu mdulos PAM se invocarn, incluyendo system-auth.
Cada mdulo referenciado se ejecuta de acuerdo con las reglas del archivo de
configuracin relevante para esta aplicacin.
440
Observe que aqu hay una serie de dependencias; su requerir cargar system-auth, etc.
441
Por favor
encuentra
se
mdulo PAM.
Usted puede editar estos archivos manualmente o usar uno de los programas disponibles
(system-config-authentication o authconfig-tui)
LFS201: Fundamentos de Administracin de Sistemas Linux
442
Una de las con.guraciones ms comunes de PAM es denegar el acceso luego de un cierto nmero
de intentos fallidos. Esto se hace con el mdulo pam-tally2. En este ejercicio vamos a denegar el
acceso a travs de ssh despus de tres intentos fallidos de acceso.
1
Edite /etc/pam.d/sshd y con.grelo para denegar el acceso luego de tres intentos fallidos.
Pista: agregue las siguientes dos lneas al archivo
auth required pam_tally2.so deny=3 onerr=fail
account required pam_tally2.so 2.
Intente acceder tres veces con un usuario en par/cular (uno que tenga cuenta) y escriba mal la
contrasea.
Intente acceder con el mismo usuario, pero esta vez con la contrasea correcta.
Solucin 36.1
LFS201: Fundamentos de Administracin de Sistemas Linux
443
Password:
Password:
Password:
Permission denied (publickey,keyboard-interac/ve).
3. $ ssh student@localhost
Password:
Account locked due to 3 failed logins
4. $ sudo pam_tally2
Password:
Last failed login: Sat Nov 1 20:41:14 CDT 2014 from localhost on ssh:no@y
There were 6 failed login a@empts since the last successful login.
Last login: Sat Nov 1 20:28:38 2014 from localhost
Have a lot of fun...
444
445
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
446
Fallas de hardware.
A medida en la que la fiabilidad ha aumentado, tambin lo ha hecho la capacidad
en disco. An si la tasa de falla por byte disminuye, todava se produciran fallas
impredecibles. Puede ser pesimista decir que hay solo dos tipos de discos:
aquellos que fallaron y los que fallarn, pero es esencialmente cierto. El uso
de RAID ayuda, pero las copias de seguridad an son necesarias.
Fallas de software.
Ningn software es perfecto. Algunos bugs pueden destruir o corromper la
informacin. An los programas estables que se han usado por mucho tiempo
pueden tener problemas.
Eventos inexplicables.
Los archivos pueden desaparecer sin que usted sepa cmo, quin o incluso
cundo ocurri.
447
- Software que puede ser reinstalado fcilmente; en un sistema bien gestionado esto
sera prcticamente todo.
- El directorio /tmp, porque su contenido est pensado para ser temporal solamente.
4. Definitivamente no:
- Pseudosistemas de archivos tales como /proc, /dev y /sys.
- Cualquier particin o archivo de intercambio.
Obviamente los archivos esenciales de su organizacin requieren ser respaldados. Los
archivos de configuracin pueden cambiar frecuentemente, y junto a los archivos de los
usuarios requieren una copia de seguridad tambin.
Los archivos del registro pueden ser importante si usted tiene que investigar la historia del
sistema, lo cual puede ser particularmente importante para detectar intrusiones y otras
violaciones a la seguridad.
448
Completo:
Respalda todos los archivos en el sistema.
Incremental:
Respalda todos los archivos que han cambiado desde la ltima copia de seguridad
incremental o completa.
Diferencial:
Respalda todos los archivos que han cambiado desde la ltima copia de seguridad
completa.
Usuario:
Solamente se respalda el contenido del directorio de un usuario especfico.
449
Un ejemplo de una estrategia til que implica cintas (usted puede sustituir fcilmente por
otro medio en la descripcin):
1. Use la cinta 1 para tomar un respaldo completo el viernes.
2. Use las cintas 2-5 para copias de seguridad incrementales de lunes a jueves.
3. Use la cinta 6 para un respaldo completo el segundo viernes.
4. Use las cintas 2-5 para copias de seguridad incrementales de lunes a jueves
(segunda vez).
5. No sobrescriba la cinta 1 hasta que complete el respaldo completo en la cinta 6.
6. Luego de tener un respaldo completo en la cinta 6, mueva la cinta 1 a un lugar
externo para restauracin en caso de desastre.
7. En el siguiente respaldo completo (prximo viernes) traiga la cinta 1 y reemplcela
por la 6.
Una buena regla de oro es disponer de al menos dos semanas en copias de seguridad.
cpio
tar
gzip, bzip2, xz
cpio y tar crean y extraen archivos que contienen archivos. Los archivos a
menudo estn comprimidos congzip, bzip2, o xz. El archivo contenedor puede
escribirse a disco, cinta magntica o cualquier otro dispositivo que pueda
almacenar archivos. Los archivos de este tipo son muy tiles para transferir
archivos desde un sistema de archivos a otro o entre mquinas.
dd
Esta es una herramienta poderosa que se usa a menudo para transferir datos en
bruto entre medios. Es capaz de copiar particiones o discos completos.
rsync
Esta herramienta potente puede sincronizar rboles de subdirectorios o sistemas
de archivos completos a travs de una red, o entre diferentes lugares del sistema
de archivos en una mquina local.
dump y restore
Estas herramientas son antiguas y fueron diseadas especficamente para realizar
copias de seguridad. Leen directamente desde el sistema de archivos, lo cual es
ms eficiente. Sin embargo, los archivos deben ser restaurados en el mismo tipo
de sistema de archivos del cual provienen. Hay alternativas ms nuevas.
mt
Es til para consultar y posicionar cintas antes de realizar copias de seguridad y
restaurarlas.
LFS201: Fundamentos de Administracin de Sistemas Linux
450
37.7 cpio
cpio (copy in and out) es una herramienta general de compresin de archivos que ha
existido desde los primeros das de UNIX y fue diseada originalmente para realizar
copias de seguridad de cintas. Pese a que se han desarrollado otros programas ms
nuevos de este tipo (como tar, el cual no es exactamente nuevo) para realizar muchas de
las tareas que estaban en el dominio de cpio, este sobrevive todava.
Por ejemplo, ya hemos visto el uso de rpm2cpio para convertir paquetes RPM en
archivos cpio y luego extraerlos. Tambin el kernel Linux usa una versin
de cpio internamente
para
tratar
con
sistemas
de
archivos
de
ram
inicialinitramfs e initrd, como tambin con discos durante el arranque. Una de las
razones por las cuales cpio vive todava es que es ms liviano que tar y sus sucesores,
aunque es un poco menos robusto.
Ejemplos del uso de cpio:
Usted puede especificar la entrada (-I dispositivo) o salida (-O dispositivo), o usar una
redireccin en la lnea de comandos.
La opcin -o o --create instruye a cpio a copiar archivos hacia el archivo
comprimido. cpio lee una lista de nombres de archivos (uno por lnea) desde la entrada
estndar y escribe el archivo a la salida estndar.
La opcin -i o --extract instruye a cpio a copiar archivos desde un archivo comprimido,
leyendo el archivo desde la entrada estndar. Si usted lista nombres de archivos como
patrones (tales como *.c) en la lnea de comandos, solo los archivos en el archivo
comprimido que coinciden con el patrn van a ser copiados desde el archivo comprimido.
Si no se proveen patrones, se extraen todos los archivos.
La opcin -t o --list instruye a cpio a listar el contenido del archivo. Si se agrega la
opcin -v o --verbose se genera un listado largo.
451
452
Extrae un archivo:
$tar --extract --same-permissions --verbose --file /dev/st0
$tar -xpvf /dev/st0
$tar xpvf /dev/st0
Cualquiera de estas formas crea una copia de seguridad en /var/tmp de todos los
archivos que fueron creados despus del 1ero de diciembre de 2011.
Debido a que tar solo revisa la fecha de un archivo, no considera otros cambios al
archivo, tales como permisos o nombre de archivo. Para incluir archivos con este tipo de
cambios en el respaldo incremental, use find y cree una lista de archivos a ser tomados
en cuenta.
453
Nota: cuando se usa algn parmetro como --newer, usted debe usar el guin en los
parmetros como -vzf, de lo contrario tar se confundir. Esta confusin relacionada al
tipo de la especificacin del parmetro ocurre con herramientas antiguas de UNIX, tales
como ps y tar, las cuales tienen historias complicadas que involucran diferentes familias
de UNIX.
para generar un archivo comprimido. Note que el primer comando tiene exactamente el
mismo efecto que si uno hace:
$ tar cvf source.tar source ; gzip -v source.tar
454
Para descomprimir:
$ tar xzvf source.tar.gz
$ tar xjvf source.tar.bz2
$ tar xJvf source.tar.xz
o an ms simple:
$ tar xvf source.tar.gz
las versiones modernas de tar pueden detectar el mtodo de compresin y hacerse cargo
automticamente.
Obviamente no vale la pena usar estos mtodos en archivos cuyos archivos ya estn
comprimidos, tales como imgenes .jpg, archivos .pdf, etc.
37.12 dd
dd es una de las herramientas originales de UNIX y es extremadamente verstil. Si se
ejecuta sin parmetros realiza una copia de datos en bruto de archivos o incluso de discos
completos. Es capaz de realizar todo tipo de conversiones de datos durante la copia (tales
como cambiar el orden de los bytes) y tiene opciones para controlar offsets, nmero de
bytes, tamao de bloque, etc.
dd se usa a menudo para leer cantidades fijas de datos desde nodos de dispositivos
especiales tales como /dev/zero o/dev/random. La sintaxis bsica es la siguiente:
$ dd if=input-file of=output-file options
de
entrada
salida,
se
utiliza
por
$ dd --help
mostrar una lista de opciones muy larga, algunas usadas frecuentemente y otras en muy
raras ocasiones.
37.13 Ejemplos de dd
Aqu hay algunos ejemplos del uso de dd:
bs=1M count=10
Hacer una copia de seguridad de un disco duro completo a otro (datos en bruto):
$ dd if=/dev/sda of=/dev/sdb
455
Crear una imagen de un disco duro (la cual podra transferirse a otro disco ms
tarde):
$ dd if=/dev/sda of=sdadisk.img
37.14 rsync
rsync (sincronizacin remota) se usa para transferir archivos a travs de una red (o entre
diferentes lugares en la misma mquina), con la siguiente sintaxis:
$ rsync [options] source destination
La fuente y el destino toman la siguiente forma: target:path, donde target puede estar
en el formato [user@]host. La parte user@ es opcional y se usa si el usuario remoto es
diferente al local. Por lo tanto, estos son todos los comandos rsync posibles:
$ rsync file.tar someone@backup.mydomain:/usr/local
$ rsync -r a-machine:/usr/local b-machine:/usr/
$ rsync -r --dry-run /usr/local /BACKUP/usr
Tiene que ser muy cuidadoso con rsync en relacin a las localizaciones especficas
(especialmente si usa la opcin --delete), por lo que es altamente recomendado usar la
opcin dry-run primero y luego llevar a cabo la accin si la proyeccin luce correcta.
rsync es muy inteligente; verifica los archivos locales contra los remotos en trozos
pequeos. Es muy eficiente cuando copia a un directorio destino similar, ya que solo se
copian las diferencias a travs de la red. Esto sincroniza el segundo directorio con el
primero. A menudo se usa la opcin -r, la cual causa que rsync copie todo el contenido
del directorio recursivamente, por debajo de lo que figura como sourcefile. Por lo tanto
una forma muy til de respaldar un directorio de un proyecto en curso sera similar a:
$ rsync -r project-X archive-machine:archives/project-X
Una estrategia de respaldo simple (tambin muy efectiva y rpida) consiste en duplicar
directorios o particiones a travs de la red, con comandos rsync y hacerlo de forma
frecuente.
456
-0-9
-B records
457
-b blocksize
KB por registro.
-f file
-u
Actualiza /etc/dumpdates.
-W
458
37.18 restore
restore se usa para leer archivos comprimidos, cintas o archivos que fueron creados
con dump. Por ejemplo, para restaurar todos los archivos que fueron objeto de dump, en
relacin al directorio actual:
$ sudo restore -rvf /tmp/boot_backup
-r
-t
-x
-i
37.19 mt
La herramienta mt se usa para controlar dispositivos de cintas magnticas. Se usa con
mayor frecuencia para consultar o posicionar la cinta antes o despus de realizar copias
de seguridad y restaurar datos. Por defecto, mt usa la unidad de cinta definida en la
variable de ambiente TAPE. Tambin es posible usar el parmetro -f device para
especificar la cinta.
Tenga en cuenta que solo el usuario root puede usar mt. La sintaxis es la siguiente:
mt [-h] [-f device] operation [count] [arguments...]
459
donde
predeterminado es 1)
arguments: se usan en algunas operaciones
Rebobinar la cinta:
$ mt rewind
Borrar la cinta:
$ mt erase
460
461
462
463
Solucin 37.1
1. $ cd backup
$ cd /usr ; tar zcvf include.tar.gz include
o
$ tar -C /usr -zcf include.tar.gz include
$ tar -C /usr -jcf include.tar.bz2 include
$ tar -C /usr -Jcf include.tar.xz include
Note la e.cacia de la compresin de cada uno de los tres mtodos:
$ du -sh /usr/include
55M /usr/include
2. $ ls -lh include.tar.*
-rw-rw-r-- 1 coop coop 5.3M Nov 3 14:44 include.tar.bz2
-rw-rw-r-- 1 coop coop 6.8M Nov 3 14:44 include.tar.gz
-rw-rw-r-- 1 coop coop 4.7M Nov 3 14:46 include.tar.xz
3. $ tar tvf include.tar.xz
qdrwxr-xr-x root/root 0 2014-10-29 07:04 include/
-rw-r--r-- root/root 42780 2014-08-26 12:24 include/unistd.h
-rw-r--r-- root/root 957 2014-08-26 12:24 include/re_comp.h
-rw-r--r-- root/root 22096 2014-08-26 12:24 include/regex.h
-rw-r--r-- root/root 7154 2014-08-26 12:25 include/link.h
.....
Note que no es necesario proveer la opcin j, J o z al descomprimir, ya que tar es lo
su.cientemente inteligente para determinar lo que se necesita hacer.
4. $ cd .. ; mkdir restore ; cd restore
$ tar xvf ../backup/include.tar.bz2
include/
include/unistd.h include/re_comp.h include/regex.h
include/link
.....
$ did -qr include /usr/include
464
465
Solucin 37.2
1. $ (cd /usr ; .nd include | cpio -c -o > /home/student/backup/include.cpio)
82318 blocks
o para ponerlo de forma comprimida:
$ (cd /usr ; .nd include | cpio -c -o | gzip -c > /home/student/backup/include.cpio.gz)
82318 blocks
$ ls -lh include*
total 64M
-rw-rw-r-- 1 coop coop 41M Nov 3 15:26 include.cpio
-rw-rw-r-- 1 coop coop 6.7M Nov 3 15:28 include.cpio.gz
-rw-rw-r-- 1 coop coop 5.3M Nov 3 14:44 include.tar.bz2
-rw-rw-r-- 1 coop coop 6.8M Nov 3 14:44 include.tar.gz
-rw-rw-r-- 1 coop coop 4.7M Nov 3 14:46 include.tar.xz
2. $ cpio -ivt < include.cpio
drwxr-xr-x 86 root root 0 Oct 29 07:04 include
-rw-r--r-- 1 root root 42780 Aug 26 12:24 include/unistd.h
-rw-r--r-- 1 root root 957 Aug 26 12:24 include/re_comp.h
-rw-r--r-- 1 root root 22096 Aug 26 12:24 include/regex.h
..
Note la redireccin de la entrada; el archivo no es un argumento. Tambin se podra hacer:
$ cd ../restore
$ cat ../backup/include.cpio | cpio -ivt
$ gunzip -c include.cpio.gz | cpio -ivt
3. $ rm -rf include
$ cpio -id < ../backup/include.cpio
$ ls -lR include
or
$ cpio -idv < ../backup/include.cpio
$ did -qr include /usr/include
466
467
5. Para hacer otro ejercicio simple, remueva un rbol de subdirectorio en su copia de seguridad y
luego ejecute rsync de nuevo con y sin la opcin --dry-run:
$ rm -rf include/xen
$ rsync -av --delete --dry-run /usr/include .
sending incremental .le list
include/
include/xen/ include/xen/evtchn.h
include/xen/privcmd.h
sent 127412 bytes received 202 bytes 255228.00 bytes/sec
total size is 41239979 speedup is 323.16 (DRY RUN)
$ rsync -av --delete /usr/include .
6. Un script simple con un buen conjunto de parmetros para usar rsync:
#!/bin/sh
set x
rsync --progress -avrxH -e "ssh -c blow.sh" --delete $*
el cual funcionar en una mquina local como tambin en red. Tenga en cuenta la importancia
de la opcin -x, la cual impide que rsync cruce los lmites del sistema de archivos.
Para mayor diversin, si /ene acceso a ms de un computador, intente realizar estos pasos con
una fuente y des/no en dis/ntas mquinas.
468
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
469
38.1 Direcciones IP
Las direcciones IP se usan para identificar globalmente y de forma nica a los nodos en
la red. Estn registradas a travs de los ISPs (Internet Service Providers).
La direccin IP es el nmero que identifica su sistema en la red. Est presente en dos
tipos:
IPv4: Una direccin de 32 bits, compuesta de 4 octetos (un octeto son 8 bits, o
un byte). Ejemplo:
148.114.252.10
Unicast:
Una direccin
asociada
un host especfico.
Puede
ser
algo
como
140.211.169.4 o 64.254.248.193.
Red:
Una direccin cuya posicin del host est en cero (todos los dgitos binarios en 0).
Ejemplo: 192.168.1.0 (la posicin del host puede estar en los ltimos 1 a 3
octetos como veremos ms adelante. Aqu solo nos referimos al ltimo octeto).
Broadcast:
Una direccin en la cual cada miembro de una red en particular escuchar. Tendr
la seccin del host en 1, tal como en 172.16.255.255, 148.114.255.255
o 192.168.1.255 (la posicin del host son los dos ltimos octetos en los primeros
dos casos, y en el tercer caso es el ltimo octeto).
Multicast:
Una direccin en la que los nodos configurados apropiadamente escucharn. La
direccin 224.0.0.2 es un ejemplo de direccin multicast. Solo los nodos
especficamente configurados para prestar atencin a una direccin multicast
interpretarn los paquetes para ese grupo multicast.
470
127.x.x.x
<=
<=
254.
0.0.0.0
255.255.255.255
Cada uno de estos rangos tiene un propsito. Por ejemplo, el rango de direcciones
conocidas 192.168.x.x solo se usa para comunicaciones locales dentro de una
red privada.
Puede ver una lista larga de direcciones reservadas tanto para IPv4 como IPv6 en
http://en.wikipedia.org/wiki/Reserved_ IP_addresses.
471
Unicast:
Un paquete se entrega a una interfaz solamente.
- Enlace local: Autoconfigurado para que toda interfaz tenga uno. No enrutable.
- Global: Asignado dinmica o manualmente. Enrutable.
- Reservado para documentacin.
Multicast:
Un paquete se entrega a mltiples interfaces.
Anycast:
Un paquete se entrega a la interfaz ms cercana de un conjunto (en trminos de
distancia de enrutamiento).
IPv4-mapped:
Una direccin IPv4 mapeada a IPv6. Por ejemplo ::FFFF:a.b.c.d/96
Adicionalmente, IPv6 tiene algunos tipos especiales de direcciones, tales como loopback,
la cual se asigna a la interfazlo, como ::1/128.
Rango de octeto de
orden ms alto
Notas
1-127
128-191
192-223
224-239
Direcciones multicast
240-254
472
Decimal
Hexadecimal
255.0.0.0
ff:00:00:00
255.255.0.0
ff:ff:00:00
255.255.255.0
ff:ff:ff:00
Binario
11111111 00000000 00000000
00000000
11111111 11111111 00000000
00000000
11111111 11111111 11111111
00000000
Las direcciones de Clase A usan 8 bits para la porcin de red de la direccin y 24 bits para
la del host.
Las direcciones de Clase B usan 16 bits para la porcin de red de la direccin y 16 bits
para la del host.
Las direcciones de Clase C usan 24 bits para la porcin de red de la direccin y 8 bits
para la del host.
Las direcciones de Clase D se usan para multicast.
Las direcciones de Clase E no se usan actualmente.
La direccin de red se obtiene a travs de una operacin AND lgica entre la direccin IP
y la mscara de red. Nos interesan las direcciones de red porque definen una red local, la
cual consiste en un conjunto de nodos conectados a travs del mismo medio de
comunicacin, compartiendo la misma direccin de red. Los nodos en una misma red se
pueden ver entre s.
Ejemplo:
172.16.2.17 direccin ip
&255.255.0.0 mscara de red
----------------172.16.0.0 direccin de red
473
38.7 Hostname
El hostname es una etiqueta que se usa para identificar un dispositivo en la red, con el fin
de diferenciarlo de otros elementos. Histricamente tambin ha sido llamado nodename
(nombre de nodo).
Para efectos del DNS, a los hostnames se les agrega un punto y un nombre de dominio,
de tal forma que un hostname llamado antje podra tener un fully qualified domain
name (FQDN) como antje.linuxfoundation.org.
El hostname generalmente se configura durante la instalacin y puede modificarse en
cualquier momento posterior.
474
475
$ hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...
Query or change system hostname.
-h --help Show this help
--version Show package version
--transient Only set transient hostname
--static Only set static hostname
--pretty Only set pretty hostname
-P --privileged Acquire privileges before execution
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
Commands:
status Show current hostname settings
set-hostname NAME Set system hostname
set-icon-name NAME Set icon name for host
set-chassis NAME Set chassis type for host
476
Obtener, configurar y cambiar el nombre del host, de acuerdo al sistema que est
utilizando.
477
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
Usar ifconfig para configurar, controlar y consultar parmetros de una interfaz red,
ya sea desde la lnea de comandos o desde scripts de configuracin del sistema.
478
vmnet0,
A veces mltiples dispositivos virtuales pueden estar asociados con dispositivos fsicos
individuales; estos se nombran con dos puntos y nmeros, de tal forma que eth0:0 sera
el primer alias en el dispositivo eth0. Esto se hace para soportar mltiples direcciones IP
en una tarjeta de red.
479
2.
3.
4.
5.
dispositivos integrados:
Ejemplo: eno1
Incorporando nmeros de ndices de slots hotplug de PCI Express proporcionados
por el Firmware o la BIOS:
Ejemplo: ens1
Incorporando ubicacin fsica y/o geogrfica de la conexin de hardware:
Ejemplo: enp2s0
Incorporando la direccin MAC:
Ejemplo: enx7837d1ea46da
Usando el mtodo clsico:
Ejemplo: eth0
Estos nombres estn correlacionados con las ubicaciones fsicas del hardware en el
sistema PCI:
02:00.0
Gigabit
04:02.0
Gigabit
Ethernet
Ethernet
Ethernet
Ethernet
Vemos el mismo patrn. Es fcil desactivar el nuevo esquema y volver a los nombres
clsicos. Vamos a dejar eso como un proyecto de investigacin. De aqu en adelante
vamos a usar los nombres clsicos en pro de la claridad y simplicidad.
LFS201: Fundamentos de Administracin de Sistemas Linux
480
481
Las interfaces de red tambin pueden configurarse al vuelo usando ya sea ifconfig o las
herramientas ip. Sin embargo estas configuraciones no son persistentes.
39.6 ifconfig
ifconfig es una herramienta de administracin de sistemas que se encuentra en sistemas
operativos tipo UNIX y que sirve para configurar, controlar y consultar los parmetros de
las interfaces de red ya sea desde la lnea de comandos o desde scripts de configuracin
del sistema. Tambin a menudo es invocado por los scripts de inicio de la red. Aqu hay
algunos ejemplos:
482
39.7 La herramienta ip
ip es una herramienta de la lnea de comandos ms nueva (y lejos ms verstil) que la
conocida ifconfig. A nivel tcnico es ms eficiente porque usa sockets netlink en vez de
llamadas ioctl al sistema.
ip puede usarse para una amplia variedad de tareas. Puede ser usado para desplegar y
controlar dispositivos, enrutamiento, polticas de enrutamiento y tneles (tunneling).
La sintaxis bsica es:
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
Funcin
address
link
Dispositivos de red
maddress
Direccin Multicast
monitor
route
rule
tunnel
Tnel sobre IP
483
39.9 Enrutamiento
Enrutamiento es el proceso de seleccionar vas en una red a travs de la cual enviar
trfico de red. La tabla de enrutamiento es una lista de rutas a otras redes manejadas
por el sistema. Define vas a todas las redes y hosts, enviando trfico a routers remotos.
Con el comando route es posible visualizar la tabla de enrutamiento actual:
$ /sbin/route
Kernel IP routing table
Destination
Gateway
default
192.168.1.1
172.16.132.0
0.0.0.0
192.168.1.0
0.0.0.0
192.168.113.0 0.0.0.0
Genmask
0.0.0.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
U
U
U
Metric
1024
0
0
0
o con ip:
$ ip route
default via 192.168.1.1 dev enp2s0 proto static metric 1024
172.16.132.0/24 dev vmnet1 proto kernel scope link src 172.16.132.1
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.100
192.168.113.0/24 dev vmnet8 proto kernel scope link src 192.168.113.1
484
en /etc/network/interfaces.
En cualquier sistema es posible configurar el router por defecto con un comando como el
siguiente:
$ sudo route add default gw 192.168.1.10
$ route
Kernel IP routing table
Destination
Gateway
Genmask
default
192.168.1.10 0.0.0.0
default
192.168.1.1 0.0.0.0
172.16.132.0 0.0.0.0
255.255.255.0
192.168.1.0
0.0.0.0
255.255.255.0
192.168.113.0 0.0.0.0
255.255.255.0
enp2s0
Flags
UG
UG
U
U
U
Metric
0
1024
0
0
0
Tenga en cuenta que esto podra dejarlo sin conexin a la red. Usted puede restaurarla ya
sea reconfigurando la red, o haciendo lo siguiente en relacin al ejemplo anterior:
$ sudo route add default gw 192.168.1.1 enp2s0
485
Una ruta persistente puede ser configurada editando /etc/sysconfig/networkscripts/route-ethX como se muestra aqu:
$ cat /etc/sysconfig/network-scripts/route-eth0
10.5.0.0/16 via 172.17.9.1
En
un
sistema
basado
en SUSE es
necesario
agregar
lneas
a
/etc/sysconfig/network/ifroute-eth0 (o crear el archivo si no existe) como las
siguientes:
# Destination Gateway Netmask Interface [Type] [Options]
192.168.1.150 192.168.1.1 255.255.255.255 eth0
10.1.1.150 192.168.233.1.1 eth0
10.1.1.0/24 192.168.1.1 - eth0
486
39.13 /etc/hosts
/etc/hosts mantiene una base de datos local de hostnames y direcciones IP. Contiene
un conjunto de registros (uno por lnea), el cual mapea direcciones IP con sus
correspondientes hostnames y alias.
Un archivo /etc/hosts tpico luce como esto:
127.0.0.1
localhost
localhost4.localdomain4
::1
localhost
localhost6.localdomain6
192.168.1.100
hans
192.168.1.150
bethe
192.168.1.2
192.168.1.10
test32
localhost.localdomain
localhost4
localhost.localdomain
localhost6
hans7
bethe7
hans64
bethe64
hp-printer
oldpc
test64
Esta resolucin de nombres esttica se usa principalmente para redes locales, pequeas
y aisladas. Generalmente se verifica antes de usar un servidor DNS para resolver una
direccin; sin embargo, esta prioridad puede ser controlada en/etc/nsswitch.conf.
487
39.14 DNS
Si la resolucin de nombres no puede
realizarse localmente usando /etc/hosts,
entonces el sistema consultar a un
servidor DNS (Domain Name Server).
El DNS es dinmico y consiste en una red de
servidores, los cuales son usados por clientes
para buscar nombres. El servicio es distribuido;
cada servidor DNS tiene informacin acerca de
su zona de autoridad solamente. Sin embargo,
todos ellos juntos pueden colaborar para
resolver cualquier nombre.
El
uso
del
cliente DNS se
configura
en /etc/resolv.conf, el cual histricamente
ha tenido una forma como la siguiente:
search example.com aps.org
nameserver 192.168.1.1
nameserver 8.8.8.8
lo cual:
Puede
especificar
dominios
de
bsqueda en particular.
Define un orden estricto de servidores
de nombre para consultar.
Puede configurarse manualmente o ser actualizado desde un servicio como
DHCP (Dynamic Host Configuration Protocol).
488
489
ping:
Enva paquetes de prueba de 64 bytes a determinados hosts en la red, y si los
encuentra, trata de enviar un reporte de vuelta en relacin a los tiempos
requeridos para alcanzarlo (en milisegundos). Tambin se incluyen los paquetes
perdidos y algunos otros parmetros. Considere que la salida exacta variar de
acuerdo al host objetivo, pero al menos podr ver que la red est funcionando y
que el host es accesible.
traceroute:
Se usa para mostrar una ruta de red a un destino. Muestra los paquetes a travs
de los routers hasta alcanzar el host, como tambin el tiempo que toma en
cada salto (hop).
mtr:
Combina la funcionalidad de ping y traceroute,
continuamente actualizada, como top.
muestra
una
salida
dig:
Es til para probar la funcionalidad de DNS. Tenga en cuenta que tambin se
puede usar host o nslookup, programas ms antiguos que tambin devuelven
informacin del DNS de un host.
Note que algunas distribuciones recientes (como RHEL 7) requieren privilegios de root
(o sudo) para ejecutar las primeras tres herramientas de diagnstico mencionadas.
Ejemplos:
$ ping -c 10 linuxfoundation.org
$ traceroute linuxfoundation.org
$ mtr linuxfoundation.org
490
491
492
Solucin 39.1
1. $ ifcon.g eth0
$ route -n
$ cp /etc/resolv.conf resolv.conf.keep
2. $ sudo ifcon.g eth0 down
$ ping hostname
493
apunten a 127.0.0.1.
3. Como ejercicio opcional, descargue el archivo de host desde:
494
nueva direccin IP que usted le asignar. Esta direccin debe ser persistente.
Habilite el disposi/vo y prebelo.
Solucin 39.3
1. $ cd /etc/syscon.g/network-scripts
$ cp ifcfg-eth0 ifcN-eth0:0
Edite este archivo (como root) y asegrese que /ene las siguientes lneas:
DEVICE=eth0:0
BOOTPROTO=sta/c
ONBOOT=yes
IPADDR=192.168.1.110
NETMASK=255.255.255.0
usando cualquier direccin que desee, En RHEL 7 usted debera usar NAME en vez de DEVICE.
Para habilitar el disposi/vo puede usar ifcong, ifup o ip, pero haciendo simplemente:
$ sudo service network restart
tambin demostrar que el alias nuevo es persistente. Puede probarlo con
$ sudo ping 192.168.1.110
usando la direccin que con.gur.
495
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
496
497
Trabajaremos con las herramientas de bajo nivel por las siguientes razones:
40.3 firewalld
firewalld es
el Administrador
Dinmico
del
Cortafuegos.
Utiliza zonas de
red/cortafuegos que han definido niveles de confianza para interfaces de red o
conexiones. Soporta los protocolos IPv4 e IPv6.
Adicionalmente, separa los cambios a la configuracin que se realizan en tiempo de
ejecucin de los persistentes. Tambin incluye interfaces para servicios o aplicaciones,
para agregar reglas al cortafuegos.
Los archivos de configuracin se guardan en /etc/firewalld y /usr/lib/firewalld;
los archivos en/etc/firewalld anulan los del otro directorio y un administrador de
sistemas debera trabajar sobre ellos.
La herramienta de la lnea de comando es firewall-cmd, la cual discutiremos pronto.
Recomendamos que antes de seguir adelante ejecute:
$ firewall-cmd --help
Usage: firewall-cmd [OPTIONS...]
....
Status Options
--state
Return and print firewalld state
--reload
Reload firewall and keep state
information
--complete-reload
Reload firewall and loose state
information
--runtime-to-permanent Create permanent from runtime configuration
....
lo cual muestra alrededor de 200 lneas, demasiado largo para incluirlo aqu.
Sin embargo, ver que la mayora de las opciones son obvias ya que estn correctamente
nombradas. Como servicio,firewalld reemplaza el antiguo iptables. Es un error ejecutar
ambos servicios - firewalld e iptables - al mismo tiempo.
498
Tenga en cuenta que si tiene ms de una interfaz de red al usar IPv4, usted tiene que
activar ip forwarding. Puede hacer esto en tiempo de ejecucin con una de las dos
alternativas:
$ sudo sysctl net.ipv4.ip_forward=1
$ echo 1 > /proc/sys/net/ipv4/ip_forward
499
40.5 Zonas
firewalld trabaja con zonas, cada una de las cuales tiene un nivel definido de seguridad y
un cierto comportamiento ya definido para paquetes entrantes y salientes. Cada interfaz
pertenece a una zona en particular. Normalmente NetworkManager le informa
a firewalld acerca de la zona que aplica, pero esto puede modificarse con firewall-cmdo
la GUI firewall-config.
Las zonas son:
drop
Todos los paquetes entrantes son eliminados sin una respuesta. Solo se permiten
las conexiones salientes.
block
Todas las conexiones entrantes son rechazadas. Las nicas conexiones permitidas
son las internas del sistema.
public
No confe en ningn computador en la red; solo ciertas conexiones entrantes
seleccionadas conscientemente estn permitidas.
external
Se utiliza cuando masquerading est en uso, como en los routers. Los niveles de
confianza son los mismos que en public.
dmz (Zona desmilitarizada)
Se usa cuando algunos (pero no todos) servicios estn permitidos al pblico. Solo
se permiten conexiones entrantes en particular.
work
Confa (pero no completamente) en los nodos conectados que no son perjudiciales.
Solo se permiten ciertas conexiones entrantes.
home
Usted confa en la mayora de los dems nodos en la red, pero an selecciona qu
conexiones entrantes estn permitidas.
internal
Es similar a la zona work.
trusted
Todas las conexiones de red estn permitidas.
Durante la instalacin del sistema, la mayora, por no decir todas las
distribuciones Linux seleccionarn la zona pblica por defecto para todas las interfaces.
Las diferencias entre algunas de las zonas descritas anteriormente no son obvias, pero
tampoco necesitamos entrar mucho en detalle, pero tenga en cuenta que no hay que usar
una zona ms abierta de lo que realmente se necesita.
500
501
Finalmente, para obtener todos los detalles acerca de una zona en particular:
$ sudo firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Este proviene desde una direccin fuente que ya est asociada a la zona. O por
otra parte:
Este proviene desde una interfaz asociada a la zona.
Cualquier paquete que no encaje en los criterios anteriores se asigna a la zona por
defecto (que generalmente es public).
Para asignar una fuente a una zona (permanentemente):
$
sudo
firewall-cmd
source=192.168.1.0/24
success
--permanent
--zone=trusted
--add-
Esto dice que cualquier paquete con direccin IP 192.168.1.x ser agregado a la
zona trusted.
Tenga en cuenta que puede remover una fuente previamente asignada a una zona
usando la opcin --remove-source, o cambiar la zona usando --change-source.
Puede listar las fuentes asociadas a una zona con:
$ sudo firewall-cmd --permanent --zone=trusted --list-sources
192.168.1.0/24
el
502
El segundo comando, con --reload, es necesario para que los cambios sean efectivos.
Tambin
es
posible
agregar
servicios
editando
los
archivos
en /etc/firewalld/services.
La gestin de puertos es muy similar a la de servicios:
$ sudo firewall-cmd --zone=home --add-port=21/tcp
success
$ sudo firewall-cmd --zone=home --list-ports
21/tcp
503
504
505
Solo hemos revisado la super.cie de cmo se puede usar el paquete rewalld. Casi todo se hace a
travs de la herramienta lewall-cmd, la cual est facultada para realizar una gran variedad de
tareas, usando opciones con nombres muy claros.
Para tener una idea de esto solo hay que hacer:
$ .rewall-cmd --help
Usage: .rewall-cmd [OPTIONS...]
....
Service Op/ons
--new-service=<service>
Add a new service [P only]
--delete-service= <service>
Delete and exis/ng service [P only]
....
lo cual no reproduciremos aqu, ya que /ene 208 lneas en un sistema RHEL 7.
Para una explicacin ms detallada de todo lo que despierte su inters, haga man rewall-cmd, lo
cual provee de un resumen, como tambin una lista de otras pginas man que describen los
diversos archivos de con.guracin en /etc. Tambin se aclaran conceptos como zonas y servicios.
506
Agregue los servicios hTp y hTps a la zona pblica y veri.que que se muestran correctamente.
Solucin 40.3
$ sudo .rewall-cmd --zone=public --add-service=h@p
success
$ sudo .rewall-cmd --zone=public --add-service=h@ps
success
$ sudo .rewall-cmd --list-services --zone=public
dhcpv6-client h@p h@ps ssh
Tenga en cuenta que si ejecut
$ sudo .rewall-cmd --reload
$ sudo .rewall-cmd --list-services --zone=public
dhcpv6-client ssh
despus de agregar los servicios nuevos, van a desaparecer de la lista. Este comportamiento
curioso se debe a que no incluimos el parmetro --permanent, y la opcin --reload recarga los
servicios persistentes solamente.
507
508
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
509
sentido, ya que todas las habilidades necesarias se pueden adquirir. Todas las
organizaciones deberan tener al menos una persona en este nivel de experiencia a la
cual recurrir cuando sea requerido.
510
En otras palabras, la intuicin que resulta en algo til no viene de forma mgica, sino que
se obtiene de la experiencia.
Configuracin de la IP:
Use ifconfig o ip para comprobar si la interfaz est arriba, y si es as, ver si est
configurada.
Conectividad:
Use ping para ver si la red es visible, verifique el tiempo de respuesta y si hay
prdida de paquetes. Traceroute puede seguir paquetes a travs de la red,
mientras que mtr puede hacerlo de forma continua. El uso de estas herramientas
puede decirle si el problema es local o est en internet.
Resolucin de hostname:
Ejecute dig o host con una
apropiadamente.
URL
verifique
si
el DNS est
funcionando
Los problemas de red pueden ser causados ya sea por software o hardware, y puede ser
tan simple como que el controlador del dispositivo no est cargado o el cable de red no
est conectado. Si la red est arriba pero el rendimiento es terrible, el asunto cae en el
canasto de ajuste del rendimiento, no en la resolucin de problemas bsicos. Los
problemas pueden ser externos a la mquina, o requerir el ajuste de varios parmetros de
red, incluyendo tamaos del bfer y otros.
511
lo cual verificar los checksums en los archivos del paquete. Sin embargo, no todos los
paquetes tienen checksums, de tal forma que esto podra no ser completamente til. Es
posible usar las opciones -V o --verify en las versiones recientes de dpkg.
aide detecta intrusiones y es otra forma de verificar si hay cambios en los archivos:
$ sudo aide --check
ejecutar un anlisis de los archivos y los comparar con el ltimo reporte. Por supuesto,
tendr que mantener la base de datos de aide luego de inicializarla.
512
El kernel no carga:
Se se produce un kernel panic durante el proceso de arranque, es probable que el
kernel est mal configurado o se haya daado, o que se hayan pasado parmetros
incorrectos en la lnea de comandos del kernel, en el archivo de configuracin
de GRUB. Si el kernel ha arrancado satisfactoriamente en el pasado, entonces se
da o la lnea de comandos del kernel en el archivo de configuracin
de GRUB se alter de una forma improductiva. De ser posible, puede reinstalar el
kernel, o entrar en el men interactivo de GRUB en el arranque y usar parmetros
mnimos en la lnea de comandos para intentar resolver el problema de esa forma.
Tambin puede intentar arrancar con una imagen de rescate, como se describir
en
el
siguiente
captulo.
para intentar montar todos los sistemas de archivos. Si esto no tiene xito por completo,
puede tratar de montar manualmente los que tienen problemas. Primero debera ejecutar
513
fsck solo para examinar; luego de eso puede correrlo de nuevo para intentar de reparar
cualquier error que pueda haber.
514
por
515
516
517
Objetivos de aprendizaje
Al final de este captulo usted debera ser capaz de:
Explicar en qu formas vienen los medios de rescate del sistema, como se pueden
preparar y disponer de ellos.
Saber cmo entrar en modo de emergencia y qu se puede hacer ah.
Saber cmo entrar en modo monousuario, qu se puede hacer ah, y en qu se
diferencia del modo de emergencia.
518
No le podemos decir todas las posibilidades ya que cada distribucin tiene algo diferente,
pero es fcil determinar el procedimiento a seguir.
Lo siguiente es que puede esperar que se le hagan algunas preguntas tales como el
lenguaje a utilizar, como tambin tomar algunas elecciones dependiendo de su
distribucin. Entonces se le pedir seleccionar la ubicacin de una imagen vlida de
rescate: CD/DVD, Disco Duro, NFS, FTP o HTTP.
La ubicacin seleccionada debe contener un rbol de instalacin vlido, y este debe ser
de la misma versin Linux que tiene el disco de rescate. Y si est usando medios
extrables, el rbol de instalacin debe ser el mismo desde el cual fue creado el medio en
cuestin. Si est utilizando una imagen boot.iso proporcionada por el vendedor,
entonces tambin necesitar un rbol de instalacin basado en la red.
LFS201: Fundamentos de Administracin de Sistemas Linux
519
520
init es iniciado.
La red no se activa.
En este modo su sistema arranca en runlevel 1 (en lenguaje SysVinit). Debido a que el
modo monousuario intenta montar los sistemas de archivos automticamente, no lo puede
usar cuando el sistema de archivos raz no puede montarse satisfactoriamente, o si la
configuracin de init est daada.
Para arrancar en modo monousuario se usa el mismo mtodo descrito para modo de
emergencia, pero con la excepcin de reemplazar la palabra emergencia con single.
521
522
Acceder a la BIOS puede ser diOcil dependiendo del hipervisor que u/lice. Algunos de ellos
requieren combinaciones de teclas muy rpidas, as es que lea la documentacin y
asegrese que sabe cmo hacerlo.
Puede usar un disco p/co o Osico, asegurndose que est montado en la mquina virtual,
y si es USB podra tener algunos obstculos para asegurarse de que la mquina virtual
puede reclamar el disposi/vo Osico. Generalmente lo ms fcil es conectar un archivo de
imagen .iso directamente a la mquina virtual.
Si est trabajando con una mquina virtual, obviamente las cosas son menos peligrosas, y si /ene
miedo de corromper el sistema de forma irreparable, simplemente haga una copia de seguridad de
la imagen de la mquina virtual antes de realizar estos ejercicios. Siempre puede reemplazar la
imagen con la del respaldo ms tarde. No realice los siguientes ejercicios a menos que est seguro
de que puede arrancar su medio de rescate/recuperacin
523
524
525
5. Salga del ambiente de rescate y reinicie. El sistema debera arrancar correctamente esta vez.
1. Este ejercicio ha sido creado espec.camente para sistemas basados en Red Hat. Usted debera
ser capaz de construir fcilmente las subs/tuciones adecuadas para otras familias de
distribuciones.
Desinstale el paquete zsh (si es que est instalado):
$ yum remove zsh
o
$ rpm -e zsh
Tenga en cuenta que hemos elegido un paquete que generalmente no /ene dependencias con
el .n de simpli.car las cosas. Si usted elige algo que las /ene, tenga el cuidado de reinstalar
cualquier cosa que desinstale y que sea necesario.
2. Arranque en el ambiente de rescate.
3. Reinstale (o instale) zsh desde el ambiente de rescate. Primero monte el medio de instalacin
en /mnt/source:
$ mount /dev/cdrom /mnt/source
Luego reinstale el paquete:
$ rpm -ivh --force --root /mnt/sysimage /mnt/source/Packages/zsh*.rpm
La opcin --force le indica a rpm que use el directorio fuente para determinar la informacin
de las dependencias y otras cosas. Tenga en cuenta que si la imagen de instalacin es mucho
ms an/gua que su sistema, el cual ha tenido probablemente muchas actualizaciones, el
procedimiento completo podra colapsar.
4. Salga y reinicie.
5. Veri.que que zsh ha sido instalado:
$ rpm -q zsh
zsh-5.0.2-7.el7.x86_64 6.
6. $ zsh
....
[coop@q7]/tmp/LFS201%
LFS201: Fundamentos de Administracin de Sistemas Linux
526
Explicar en qu formas vienen los medios de rescate del sistema, como se pueden
preparar y disponer de ellos.
Saber cmo entrar en modo de emergencia y qu se puede hacer ah.
Saber cmo entrar en modo monousuario, qu se puede hacer ah, y en qu se
diferencia del modo de emergencia.
527