Documentos de Académico
Documentos de Profesional
Documentos de Cultura
linux
®
Biblia
Décima Edición
Machine Translated by Google
Machine Translated by Google
Lin® _
BIBLIA
Décima Edición
Cristóbal Negus
Machine Translated by Google
Copyright © 2020 por John Wiley & Sons, Inc., Indianápolis, Indiana Publicado
simultáneamente en Canadá
ISBN: 9781119578888
ISBN: 9781119578918 (ebk)
ISBN: 9781119578895 (ebk)
Fabricado en los Estados Unidos de América
Ninguna parte de esta publicación puede ser reproducida, almacenada en un sistema de recuperación o transmitida de ninguna
forma o por ningún medio, ya sea electrónico, mecánico, fotocopiado, grabado, escaneado o de otro modo, excepto según lo permitido
por las Secciones 107 o 108 de la Ley de derechos de autor de los Estados Unidos de 1976. Act, sin el permiso previo por escrito del
editor o la autorización mediante el pago de la tarifa correspondiente por copia al Copyright Clearance Center, 222 Rosewood Drive,
Danvers, MA 01923, (978) 7508400, fax (978) 646 8600. Las solicitudes de permiso al editor deben dirigirse al Departamento de
permisos, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 7486011, fax (201) 7486008, o en línea en http ://
www.wiley.com/go/permissions.
Límite de responsabilidad/Descargo de responsabilidad de la garantía: El editor y el autor no hacen representaciones ni garantías con
respecto a la precisión o la integridad del contenido de este trabajo y renuncian específicamente a todas las garantías, incluidas, entre
otras, las garantías de idoneidad para un propósito particular. Ninguna garantía puede ser creada o extendida por ventas o materiales
promocionales. Los consejos y estrategias contenidos en este documento pueden no ser adecuados para todas las situaciones. Este
trabajo se vende con el entendimiento de que el editor no se dedica a prestar servicios legales, contables u otros servicios profesionales.
Si se requiere asistencia profesional, se deben buscar los servicios de una persona profesional competente. Ni el editor ni el autor serán
responsables de los daños derivados del mismo. El hecho de que en este trabajo se haga referencia a una organización o sitio web como
una cita y/o una fuente potencial de información adicional no significa que el autor o el editor respalda la información que la organización o
el sitio web puede proporcionar o las recomendaciones que puede hacer. Además, los lectores deben tener en cuenta que los sitios web
de Internet enumerados en este trabajo pueden haber cambiado o desaparecido entre el momento en que se escribió este trabajo y el
momento en que se leyó.
Para obtener información general sobre nuestros otros productos y servicios, comuníquese con nuestro Departamento de atención al
cliente dentro de los Estados Unidos al (877) 7622974, fuera de los Estados Unidos al (317) 5723993 o al fax (317) 5724002.
Wiley publica en una variedad de formatos impresos y electrónicos y por impresión bajo demanda. Es posible que parte del material incluido
con las versiones impresas estándar de este libro no se incluya en los libros electrónicos o en la impresión bajo demanda. Si este libro
hace referencia a medios como un CD o DVD que no está incluido en la versión que compró, puede descargar este material en http://
booksupport.wiley.com. Para obtener más información sobre los productos Wiley, visite www.wiley.com.
Número de control de la Biblioteca del Congreso: 2019956690
Marcas comerciales: Wiley y el logotipo de Wiley son marcas comerciales o marcas comerciales registradas de John Wiley & Sons, Inc. y/
o sus afiliados, en los Estados Unidos y otros países, y no se pueden usar sin permiso por escrito. Linux es una marca registrada de Linus
Torvalds. Todas las demás marcas comerciales son propiedad de sus respectivos dueños. John Wiley & Sons, Inc. no está asociado con
ningún producto o proveedor mencionado en este libro.
Machine Translated by Google
Como siempre, dedico este libro a mi esposa, Sheree.
Machine Translated by Google
Machine Translated by Google
Sobre el Autor
Chris Negus es uno de los redactores técnicos principales de Red Hat, Inc. En más de una década con
Red Hat, Chris ha enseñado a cientos de profesionales de TI a convertirse en ingenieros certificados de
Red Hat (RHCE), y ha escrito decenas de documentos sobre todo, desde Desde Linux hasta virtualización,
computación en la nube y contenedorización.
Antes de unirse a Red Hat, Chris escribió o coescribió docenas de libros sobre Linux y UNIX, incluidos
Red Hat Linux Bible (todas las ediciones), Docker Containers, CentOS Bible, Fedora Bible, Linux
Troubleshooting Bible, Linux Toys, Linux Toys II y nueve ediciones de esta Biblia de Linux. Chris también
es coautor de varios libros de la serie Linux Toolbox para usuarios avanzados: Fedora Linux Toolbox,
SUSE Linux Toolbox, Ubuntu Linux Toolbox, Mac OS X Toolbox y BSD UNIX Toolbox.
Antes de convertirse en autor independiente, Chris trabajó durante ocho años con la organización de
AT&T que desarrolló el sistema operativo UNIX antes de mudarse a Utah para ayudar a contribuir con el
proyecto UnixWare de Novell a principios de la década de 1990. Cuando no escribe sobre Linux, a Chris
le gusta jugar fútbol, salir con su esposa, Sheree, y pasar el tiempo que puede con sus hijos, Seth y Caleb.
viii
Machine Translated by Google
Machine Translated by Google
Acerca de los editores técnicos
Jason W. Eckert es un capacitador técnico experimentado, consultor y autor de bestsellers en la
industria de la tecnología de la información (TI). Con 45 certificaciones de la industria, más de 30
años de experiencia en TI, 4 aplicaciones publicadas y 24 libros de texto publicados que cubren
temas como UNIX, Linux, seguridad, Windows Server, Microsoft Exchange Server, PowerShell,
BlackBerry Enterprise Server y desarrollo de videojuegos, El Sr. Eckert aporta su experiencia a cada
clase que imparte en triOS College en su función como Decano de Tecnología. Para obtener más
información sobre el Sr. Eckert, visite jasoneckert.net.
Derrick Ornelas es ingeniero sénior de mantenimiento de software en Red Hat, Inc. En su función
actual como líder de producto para las tecnologías de contenedores de Red Hat, incluidas OpenShift
Container Plat form y Red Hat Enterprise Linux CoreOS, Derrick trabaja para garantizar tanto la
'
compatibilidad como la calidad
productos
de Red
Anteriormente,
Hat para las ttrabajó
ecnologías
como
dle
íder
virtualización
senior de sdoporte
e Red
tHécnico
at, como
libvirt, KVM y el producto Red Hat Virtualization.
Durante sus 12 años en Red Hat, Derrick obtuvo las certificaciones Red Hat Certifi ed Engineer y
Red Hat Certifi ed Virtualization Administrator, y aplicó su amplio conocimiento de Linux para diseñar,
implementar y mantener varios laboratorios de hardware y aplicaciones.
Las casi dos décadas de experiencia en Linux de Derrick comenzaron cuando obtuvo su licenciatura en Ciencias de
la Computación de la Universidad Estatal de los Apalaches. Como partidario devoto de Linux, disfruta enseñar y ayudar a
los nuevos usuarios de Linux tanto dentro como fuera del horario laboral. Cuando no está
bronceado,
trabajando
a
eDn
errick
su monitor
le gusta
de
andar
en bicicleta de montaña, andar en motocicleta y viajar como mochilero con su esposa, Carolyn.
ix
Machine Translated by Google
Machine Translated by Google
gm
crecería hasta suiete
nos vseces
iete su tamaño, sería comprada por IBM por 34.000 millones de dólares y
Cuando (hasta
me contrataron en R
med
ahora) todavía Hat hace
antendría unos dde
el espíritu oce
años,
yn
apertura eo
sabía que
ntusiasmo Rted
que Hat
enía
cuando me
inscribí por primera vez. Todos los días, cuando vengo a trabajar, interactúo con muchos de los mejores
desarrolladores, probadores, instructores y profesionales de soporte de Linux y la nube del mundo.
'
mientras pueda t gracias a todos individualmente, me gustaría saludar la cultura de cooperación. ualmente, me gustaría
saludar la cultura de cooperación y excelencia en Red Hat que sirve para mejorar mis propias habilidades de Linux todos
los días. No hablo bien de Red Hat porque trabajo allí; Trabajo en Red Hat porque está a la altura de los ideales del
software de código abierto en formas que coinciden con mis propias creencias.
Dicho esto, hay algunos miembros de Red Hat que quiero reconocer en particular. En Red Hat, yo
'
Soy capaz de asumir tantos proyectos geniales y desafiantes gracias a la libertad que recibo
de las personas a las que les reporto. Incluyen a Michelle Bearer, Dawn Eisner y Sam Knuth. Sam,
en particular, me ha respaldado y alentado mi trabajo durante más de una década.
En mi trabajo diario, quiero agradecer a los Red Hatters Scott McCarty, Ben Breard, Laurie
Friedman, Dave Darrah, Micah Abbott, Steve Milner e Ian McLeod (herramientas de contenedores,
equipos RHCOS y OpenShift) y Tom McKay. , Joey Schorr, Bill Dettelback, Richa Marwaha y Dirk
Herrmann (equipo Quay). Finalmente, un agradecimiento especial a Vikram Goyal, quien
afortunadamente vive en Australia, por lo que siempre está disponible para ayudarme cuando exploto
en medio de la noche.
Cuando se trata de apoyo para escribir este libro, he tenido el lujo de contar con dos excelentes
editores técnicos: Jason Eckert y Derrick Ornelas. No conocía cargo,
a Jason
pero
antes
su admplia
e que
experiencia
asumiera ecste
on
diferentes sistemas Linux me ha ayudado a llamarme la atención cuando me centro demasiado en Red
Hat. A Derrick, a quien veo casi todos los días, se le pidió que hiciera este trabajo debido a su atención
a los detalles y su profundo conocimiento de cómo funciona Linux y lo que la gente necesita saber para
usarlo. Cualquiera que lea este libro tendrá una mejor experiencia gracias al trabajo que Jason y Derrick
han hecho al revisarlo.
En cuanto a la gente de Wiley, gracias por permitirme continuar desarrollando y mejorando este libro
a lo largo de los años. Gracias a Gary Schwartz, quien ejerce una presión suave y constante para
que siga trabajando en este libro en los momentos en que no tenía ciclos libres para trabajar en él.
'
fue Cuando la presión de Gary era suficiente, Devon Lewis intervenía para pintar una imagen más
clara sobre la importancia de los plazos. Gracias también a Margot Maley Hutchison de Waterside
Productions por contratarme el libro con Wiley y siempre velar por mis mejores intereses.
Finalmente, gracias a mi esposa, Sheree, por compartir su vida conmigo y hacer un gran trabajo
criando a Seth y Caleb.
—Christopher Negus
xi
Machine Translated by Google
Machine Translated by Google
en
Agradecimientos .................................................. .................................................... ..... xi
Introducción ................................... ........ .................................................................. ..........................................xxxv
Parte IV: Cómo convertirse en administrador de un servidor Linux . . . . .305
. . .Capítulo
. . . . . . . . . . .
13: Descripción
de
la administración del servidor .................................. .............307 Capítulo 14: Administración de
redes ............................... ....................................... 339 Capítulo 15: Inicio y detención de
servicios . .................................................... ...............369 Capítulo 16: Configuración de un servidor
de impresión .................. ...................................................403 Capítulo 17 : Configuración de un
servidor web ............................................. .......................427 Capítulo 18: Con guración de un servidor
FTP ........... .................................................... ............ 455 Capítulo 19: Con guración de un servidor
de uso compartido de archivos de Windows (Samba) .................. ............. 475 Capítulo 20:
Configuración de un servidor de archivos NFS .................. ..........................................499 Capítulo 21:
Solución de problemas de Linux .... .................................................... ..... ...................523
XIII
Machine Translated by Google
Contenido de un vistazo
Índice .................................................. .................................................... .....................863
xiv
Machine Translated by Google
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxv
Parte I: Primeros pasos 1
XV
Machine Translated by Google
Contenido
Ampliación del escritorio de GNOME 3 ............................................... ......................39
Uso de las extensiones de shell de GNOME .................. .......................................39
Uso de la herramienta de ajuste de
GNOME ..... .................................................... ........40 Comenzar con las aplicaciones
de escritorio .................................. ..........................41 Administrar archivos y
carpetas con Nautilus .................. ..............................42 Instalación y
administración de software adicional ............... ..........................43 Reproducción
de música con Rhythmbox .................. ..........................................45 Detener el
escritorio GNOME 3 .... .................................................... ...............46 Uso del escritorio
GNOME 2.................................. .................................................... ...46 Uso del
administrador de ventanas de Metacity ....................................... .................. 48
Cambiar la apariencia de GNOME ......... .................................................... ...........49
Uso de los paneles de GNOME ............................... .............................................50
Uso de las aplicaciones y el sistema menús ..................................................51
Adición de un subprograma . .................................................... .............................51
Adición de otro panel .................. .................................................... ......52
Adición de un lanzador de aplicaciones ....................................... ....................52
Adición de un cajón .......................... .................................................... .....53
Cambiar las propiedades del panel ...................................... ..........................54
Adición de efectos 3D con AIGLX .................. .................................................... ..54
Resumen .............................................. .................................................... ............57 Ejercicios ............................. ...............
Parte II: Convertirse en un usuario avanzado de Linux 59
Capítulo 3: Uso del Shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Acerca
de Shells y Terminal Windows .................................................. ..........................62 Uso del
indicador de shell .................. .................................................... ...........63 Uso de una
ventana de Terminal .................................. ..........................................63 Uso de
consolas virtuales ... .................................................... ............................65 Elección
de su caparazón .................. .................................................... .........................65 Ejecución
de comandos ...................... .................................................... .....................66 Comprensión
de la sintaxis de los comandos ......................... .......................................67
Localización de comandos ...... .................................................... .............................70
Recuperación de comandos mediante el historial de
comandos .................. .......................................72 Edición de la línea de
comandos .... .................. .................................................... ..........73 Finalización de
la línea de comandos ............................... .......................................75 Recuperación
de la línea de comandos.... .................................................... .............................76
Comandos de conexión y expansión ............... .................................................... .78
Conexionado entre mandos.................................................... .............................78
Comandos secuenciales .................. .................................................... ...............79
Comandos de fondo.................................... ..........................................79 Expansión
comandos .................................................. ..........................80 Expresiones aritméticas
en expansión .................. .................................................... .80 Expansión de variables .............................................
xvi
Machine Translated by Google
Contenido
Uso de variables de shell .................................................. .............................................81
Creación y uso de alias .................................................... .........................81 Salir del
shell ........................... .................................................... ...........83 Creación de su
entorno Shell ........................... ............................................. 84 Configuración de su
caparazón ................................................. .............................. 84 Configuración de
su aviso .................. .................................................... ...................85 Añadir variables
de entorno ........................... ..........................................87 Obtención de información
acerca de los comandos... .................................................... ..............88
Resumen ................................... .................................................... ........................90
Ejercicios ........... .................................................... ..........................................90
Capítulo 5: Trabajar con archivos de texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Edición de archivos con vim y vi........................................... .................................... 113
Comenzando con vi ........... .................................................... .......................... 115
Adición de texto ............... .................................................... ................ 115
Moverse por el texto .................................. .................................. 116
Eliminación, copia y cambio de texto ...... .......................................... 117 Pegar
(poner) texto . .................................................... .......................... 118 Repetición
de comandos ........................... ............................................. 118 Salir de
vi.. .................................................... ..................................... 118 Saltar por el
archivo ...... .................................................... .......... 119 Búsqueda de
texto ............................... .................................. ...................... 119 Uso del modo
ex .......................... .................................................... ................120 Más información
sobre vi y vim ........................... ..........................................120 Búsqueda de
archivos ......... .................................................... ..........................................120 Uso de la
localización para buscar archivos por nombre ................................................ ...............121
Búsqueda de archivos con fi nd ........................... ............................................122
Búsqueda de archivos por nombre .................................................... ......................123
Búsqueda de archivos por tamaño .................. .................................................... .. 124
xvii
Machine Translated by Google
Contenido
Búsqueda de archivos por usuario ............................................. ............................
124 Búsqueda de archivos con permiso .................. ..........................................125
Encontrar archivos por fecha y hora ............................................... ...............125
Uso de 'no' y 'o' al buscar archivos .................. ............................ 126 Búsqueda
de archivos y ejecución de comandos .................. .......................... 127
Buscando en archivos con grep ........... .................................................... ..........128
Resumen .......................................... .................................................... ....................129
Ejercicios .............................. .................................................... ..........................129
Capítulo 7: Escritura de scripts de Shell simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
147 Comprensión de los scripts de shell.................................... .................................. 147
Ejecución y depuración de scripts de shell ........... .............................................148
Comprender las variables de shell .................................................... .................. 149
Parámetros posicionales de caparazón especiales .................. .........................150
Lectura de parámetros ...................... .................................................. 151
Expansión de parámetros en bash.................................................... ...............
151 Realización de operaciones aritméticas en scripts de
shell .................. ............................ 152 Uso de construcciones de programación en
scripts de shell ............... ............................. 153 El ″si. .
declaraciones .then″ ............................................... .......... 153 El comando
case .................................. .......................................................156 El ″ para. .
bucle .do″ .............................................. ............................. 157 El ″mientras. . .do″
y ″hasta. . bucles .do″ ..........................................158 Probando algunos útiles
programas de manipulación de texto...................................159 El programa
regular general analizador de expresiones................................................ .159
Quitar secciones de líneas de texto (cortar) ....................................... .........159
Traducir o borrar caracteres (tr)................................... .....................160 El editor de secuencias (sed) .............
xviii
Machine Translated by Google
Contenido
Uso de scripts de shell sencillos ............................................... ............................. 161
Lista de teléfonos ............... .................................................... ............... 161
Script de copia de seguridad ........................... ....................................................
162 Resumen ............................................... .................................................... ......... 163
Ejercicios ....................................... .................................................... .................... 163
Parte III: Convertirse en un administrador del sistema Linux 165
Capítulo 9: Instalación de Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Elegir una computadora ............................................... ............................................ 196
Instalación de Fedora desde Live Media .................................................... ...........198
Instalación de Red Hat Enterprise Linux desde el medio de instalación .................. .............201
Descripción de las instalaciones basadas en la nube ............................... ..........................204
Instalación de Linux en la empresa .............. .................................................... .......205
Exploración de temas comunes de instalación.................................. ..........................207
Actualizar o instalar desde cero .................. .......................................207 Arranque
dual...... .................................................... .....................................208
xix
Machine Translated by Google
Contenido
Instalar Linux para ejecutar virtualmente ............................................. ...................209
Uso de las opciones de arranque de la instalación .................. ..........................................
210 Opciones de arranque para deshabilitar funciones .... ..........................................
210 Arranque opciones para problemas de video .................................................. ...........
210 Opciones de arranque para tipos de instalación especiales .................. ..........
210 Opciones de arranque para kickstarts y repositorios remotos ...........................
211 Arranque misceláneo opciones.................................................. ...............212
Uso de almacenamiento especializado ............................... ..........................................213
Particionamiento de discos duros .. .................................................... .......................... 214
Comprensión de los diferentes tipos de partición .................. .......................215
Consejos para crear particiones .................. .................................................... .215
Uso del cargador de arranque GRUB ........................................... ............................. 217
Resumen ................................................. .................................................... ....... 219
Ejercicios ............................................. .................................................... .......... 219
XX
Machine Translated by Google
Contenido
xxx
Machine Translated by Google
Contenido
Parte IV: Convertirse en un administrador de servidor Linux 305
Capítulo 13: Descripción de la administración del servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Comenzando con la administración del servidor ............................................... ......................308
Paso 1: Instalar el servidor ...................... .................................................... ....308
Paso 2: Configurar el servidor ...................................... .......................... 310 Uso de
archivos de configuración ........... .................................................... ...... 310
Comprobación de la confi guración por defecto .................................. ..............
310 Paso 3: Inicie el servidor ............................... .................................................. 311
Paso 4: Asegure el servidor ................................................ ............................. 312
Protección con contraseña .................. .................................................... ........
312 Cortafuegos ........................................ ....................................................
313 Envolturas TCP.................................................... ......... ............................
313 SELinux ............................... .................................................... .....................
313 Ajustes de seguridad en archivos de
configuración .................. .......................... 314
Paso 5: Supervisar el servidor ............................................... .............................. 314
Con gurar registro .................. .................................................... ........... 314
Ejecutar informes de actividad del sistema ........................... ............................
314 Ver actividad en vivo con Cockpit ................. ..........................................
314 Mantenga actualizado el software del sistema... .................................................... ...
315 Revise el sistema de archivos en busca de signos de
crackers.................................. ..... 315 Comprobación y configuración de
servidores ........................................ ..................................... 316 Administrar el acceso
remoto con el servicio Secure Shell .... .................................... 316 Inicio del servicio
opensshserver ....... .................................................... ...
cliente SSH .................................. .....................................
317 Uso de herramientas 3d18 e
Uso ssh para inicio de sesión remoto ............................................. ...................
318 Uso de ssh para ejecución remota......................... ..........................320
Copiar archivos entre sistemas con scp y rsync ....... ....................... 321 Copia
interactiva con sftp ...................... ...................................... 324 Uso de la
autenticación basada en clave (sin contraseña) ... .................................. 324
Configuración del registro del sistema ..... .................................................... ........................
326 Habilitación del registro del sistema con rsyslog .................. .....................................326
Comprender el archivo rsyslog.conf ..... ................................................... 327
Comprensión de la archivo de registro de mensajes ............................................. ....329
Configuración y uso de un host de registro con rsyslogd..................................
.330 Visualización de registros con logwatch.................................... ..................................
331 Comprobación de los recursos del sistema con sar .......... .................................................... .......
332 Comprobación del espacio del sistema ............................... .............................................334
Sistema de visualización espacio con df................................................... ...........334
Comprobación del uso del disco con du........................... ............................................334
Encontrar el consumo de disco con fi y .................................................. ..........335
Administración de servidores en la empresa .................................. ....................................336
Resumen ............. .................................................... .......................................... 336
Ejercicios ..... .................................................... .................................................... ..337
XXII
Machine Translated by Google
Contenido
Capítulo 15: Inicio y detención de servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Comprender el daemon de inicialización (init o systemd) .................................. 370
Comprender el clásico init demonios.................................................. ..... 371
Comprensión de la inicialización de systemd ........................................ ................
377 Aprendiendo los conceptos básicos de
systemd .................. ..................................... 377 Aprendiendo la
retrocompatibilidad de systemd con SysVinit ...... ...........382 Comprobación del estado
de los servicios ........................... .............................................384 Servicios de
cheques para sistemas SysVinit ............................................... ........385 Servicios de
detención e inicio ........................................... ......................................387
Detención e inicio de los servicios de SysVinit ...... ..........................................387
Parada un servicio con systemd .............................................. ..........389
Inicio de un servicio con systemd .................................................. .........389
Reiniciar un servicio con systemd .................................. ...........389 Recargar
un servicio con systemd .......................... ............................390 Habilitación de servicios
persistentes .................. .................................................... ........... 391 Con guración de servicios persistentes p
XXIII
Machine Translated by Google
Contenido
Habilitación de un servicio con systemd ............................................. ........... 392
Deshabilitar un servicio con systemd .................................. ...................... 393 Con
guración de un nivel de ejecución predeterminado o una unidad de
destino .................. ....................................394 Con guración del nivel de ejecución
predeterminado de SysVinit ........ ............................................394 Adición de servicios nuevos o
personalizados .................................................... ...........396 Adición de nuevos servicios
a SysVinit .......................... .......................................396 Paso 1: Cree un script de
servicio nuevo o personalizado fi le ..........................396 Paso 2: agregue el script
de servicio a /etc/rc.d/init.d... ...............398 Paso 3: Establezca el permiso apropiado
en el script ........... .......................398 Paso 4: Agregar el servicio a los directorios
de nivel de ejecución .................. ...............398 Adición de nuevos servicios a
systemd......................... ... .....................................399 Paso 1: Cree una unidad de
configuración de servicio nueva o personalizada fi archivo ........399 Paso 2: Mover
el archivo de la unidad de configuración de servicio .................. .....399 Paso 3:
Agregue el servicio al directorio Wants .................................. .400
Resumen ............................................................. .................................................... .........401 Ejercicios....................................... ..
XXIV
Machine Translated by Google
Contenido
Comprender el servidor web Apache .............................................. ...................427 Cómo
obtener e instalar su servidor web ........................... ...................................428
Comprender el paquete httpd ...... .................................................... ......428
Instalación de Apache ....................................... .............................................431
Inicio de Apache .. .................................................... ............................................ 432
Protección de Apache ... .................................................... ..................................433
Permisos y propiedad de los archivos de Apache ......... .....................................433
Apache y cortafuegos ........ .................................................... ............... 433
Apache y SELinux ............................... ..........................................434
Comprensión de los archivos de configuración de Apache ............................... ...............
435 Uso de directivas.................................. ............................................. 435
Comprender configuración por defecto................................................ ..........438
Adición de un host virtual a Apache.................................. ..........................440
Permitir a los usuarios publicar su propio contenido web ......... ..........................442
Proteger su tráfi co web con SSL/TLS ........ .............................................443
Comprender cómo SSL está confi gurado .............................................. ..445
Generación de una clave SSL y un certificado autofirmado ...........................447
Generación de una firma de certificado solicitud..................................................
448 Solución de problemas de su sitio web
Servidor................................................. .......................449 Comprobación de
errores de configuración .................. ..........................................449 Acceso
prohibido a un d errores internos del servidor ....................................... 451
Resumen .................................................... .................................................... ...... 453 Ejercicios..................................
Capítulo 18: Configuración de un servidor FTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Comprensión de FTP .................................................. ............................................ 455
Instalación del servidor FTP vsftpd .................................................... ....................... 457
Inicio del servicio vsftpd ...................... .................................................... ........458
Protección de su servidor FTP.................................... ............................................. 461
Apertura su cortafuegos para FTP ............................................. ...................
Con gurando SELinux para su servidor 461
FTP ....................... .............................463 Relación de los permisos de archivo de
Linux con vsftpd ............ ..........................................465 Con guración de su
servidor FTP .... .................................................... .......................465 Configuración del
acceso de usuario .................. .................................................... .........465
Permitiendo cargar ............ .................................................... .....................467
Configuración de vsftpd para Internet ...................... ..........................................468
Uso de clientes FTP para conectarse a su servidor. .................................................... ......469
Acceder a un servidor FTP desde Firefox ........................................... .....................
470 Acceder a un servidor FTP con el comando lftp .................. ...................... 470
Uso del cliente gFTP ....................... .................................................... ....... 472
Resumen ............................................. .................................................... ............... 473
Ejercicios ................................ .................................................... ........................ 473
xiv
Machine Translated by Google
Contenido
Capítulo 20: Configuración de un servidor de archivos NFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
499 Instalación de un servidor NFS ............................................... ..........................................502
Inicio del servicio NFS ..... .................................................... .............................502 Compartir
sistemas de archivos NFS .................. .................................................... ...................503 Con
guración del archivo /etc/exports ........................... ..........................................504
Nombres de host en /etc/exports .................................................... ..............505
Opciones de acceso en /etc/exports ........................... .............................506
Opciones de mapeo de usuarios en /etc/exports ........... .....................................506
Exportación de los sistemas de archivos
compartidos ....... .................................................... .......507 Protección de su servidor
NFS ...................................... .............................................508 Abriendo su fi cortafuegos
para NFS ............................. ...................................508 Permitir acceso NFS en
contenedores TCP ........ .................................................... 510 Configurando SELinux
para su servidor NFS ........................................... ........... 511 Uso de sistemas de archivos
NFS .................................. .................................................... ... 512 Visualización de recursos compartidos NFS .............
xxi
Machine Translated by Google
Contenido
Montaje manual de un sistema de archivos NFS .................................. ............. 512
Montar un sistema de archivos NFS en el momento del
arranque ........................... ........................ 513 Montaje de sistemas de archivos
no automáticos .................. .................................. 514 Uso de las opciones de
montaje ...... .................................................... ........... 515 Uso de autofs para montar
sistemas de archivos NFS bajo demanda .................. .......... 517 Montaje
automático en el directorio /net ........................... ....................... 517 Directorios
de inicio de montaje automático .................. .................................. 518 Desmontar sistemas de
archivos NFS ........... .................................................... ..........520
Resumen ....................................... .................................................... ......................... 521 Ejercicios ....................... ..............
xvii
Machine Translated by Google
Contenido
Solución de problemas en el modo de rescate ............................................... ..........................559
Resumen .......................... .................................................... .................................... 561
Ejercicios ............. .................................................... ............................................. 561
Parte V: Aprendizaje de las técnicas de seguridad de Linux 563
Implementación de la seguridad física .............................................. ..........................565
Implementación de la recuperación ante desastres .................. .............................................566
Protección de las cuentas de usuario .................................................... ............................566
Un usuario por cuenta de usuario .................. ..................................................567
Limitación del acceso a la cuenta de usuario root ...........................................
.567 Establecer fechas de caducidad en cuentas temporales ...........................567
Eliminar cuentas de usuario no utilizadas .. .................................................... ..568
Proteger contraseñas.................................................... ...................................... 570
Elegir buenas contraseñas ........ .................................................... ........ 570
Configuración y cambio de contraseñas .................................. ................... 571
Hacer cumplir las mejores prácticas de contraseñas.... ....................................................
572 Comprensión de los archivos de contraseñas y hash de contraseñas .........
574 Protección del sistema de archivos ............... .................................................... ..............
576 Administrar permisos de sistemas de archivos peligrosos .................. .........
576 Proteger los archivos de contraseña.................... ............................ 577
Bloqueo del sistema de archivos ................. ............................................. 578
Gestión de software y servicios .................................................... ............... 579
Actualización de paquetes de software ............................... .............................
579 Mantenerse al día con los avisos de
seguridad .................. ..........................................580 Implementación
avanzada ......... .................................................... ...............580 Supervisión de sus
sistemas ............................... ............................................. ............580 Monitoreo de
archivos de registro ........................... .................................................... 581 Monitoreo
de cuentas de usuario.................................................... .............................584
Detección de nuevas cuentas y privilegios falsificados .................. ..........584
Detección de contraseñas de cuentas incorrectas .................. ..........................586
Supervisión del sistema de archivos .................. .................................................... .....587
Verificación de paquetes de software .................................. .....................588
Exploración del sistema de archivos .................. ............................................589
Detección de virus y rootkits. .................................................... ........590 Auditoría y revisión
de Linux.................................... .......................................595 Realización de revisiones
de cumplimiento ....... .................................................... .........595 Cond. Realización
de revisiones de seguridad .............................................. .......................596
Resumen ......................... .................................................... ..............................596 Ejercicios ................. ..............................
Implementación de la seguridad de Linux con criptografía ............................................... ....599
Comprender el hash .................................................. ....................................600
xviii
Machine Translated by Google
Contenido
Comprender el cifrado/descifrado ............................................... ..........602 Comprender
los cifrados criptográficos .................................. .............602 Comprensión de las
claves de cifrado criptográfico........................... ...........603 Comprensión de las
firmas digitales .................................. ...........608 Implementación de la criptografía
de Linux ........................... ................................... 610 Garantizar la integridad de los
archivos ........... .................................................... .......... 610 Cifrado de un
sistema de archivos Linux durante la instalación ........................... ..... 611 Cifrado
de un directorio Linux.................................... ..................... 613 Cifrado de un
archivo Linux ....................... ............................................. 616 Cifrado de Linux
con herramientas misceláneas .................................. 616 Uso del cifrado desde
el escritorio .. .................................... ............... 617 Implementando la seguridad
de Linux con PAM ............................... .................................... 618
Comprensión del proceso de autenticación PAM.......................................... 619
Comprensión Contextos PAM ................................................. ............. 619
Comprender los indicadores de control de PAM ............................... ........................620
Comprensión de los módulos PAM ...................... .......................................... 621
Administración de PAM en su sistema Linux ... ..........................................622 Gestión
Archivos de configuración de aplicaciones compatibles con PAM ...........622
Administración de archivos de configuración de eventos del sistema
PAM ....... ..........................623 Implementación de restricciones de tiempo con
PAM .................. .......................... 626 Aplicación de buenas contraseñas con
PAM .................. ..........................628 Fomentar el uso de sudo con
PAM ........... ............................................. 632 Obtener más información en
PAM .................................................. ........... 633 suma
ario .................................................. .................................................... ....... 633 Ejercicios ................................................ ......
xxix
Machine Translated by Google
Contenido
Comprender el registro de SELinux ............................................... ...................654
Revisar los mensajes de SELinux en el registro de auditoría .................. ..............655
Revisar mensajes de SELinux en el registro de mensajes ........................... ....655
Solución de problemas de registro de SELinux .................................. .....................656
Resolución de problemas comunes de SELinux .................. ........................ 657 Uso
de un directorio no estándar para un servicio .................. ...................... 657 Uso
de un puerto no estándar para un servicio .................. ..........................658
Mover archivos y perder etiquetas de contexto de
seguridad .................. .....................658 Valores booleanos configurados
incorrectamente ......................... ..........................................658 Juntando
todo .. .................................................... ...................................659 Obtención de más
información sobre SELinux ......... ............... ..........................................659
Resumen .......... .................................................... .............................................660 Ejercicios.. ...............................................
Parte VI: Compromiso con la computación en la nube 691
Capítulo 26: Cambio a nubes y contenedores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Comprender los contenedores de Linux.................................................... ..........................694
Espacios de nombres .................. .................................................... .......................695
Registros de contenedores ........................ .................................................... .........695
Imágenes base y capas.................................... ..........................................696
Comenzando con los contenedores de Linux... .................................................... ......................
697 Arrastre y manejo de contenedores ...................... .......................................... 697
Tirando de un contenedor ... .................................................... ...................... 697
Ejecutando un shell desde un contenedor .................. ..................................698
Ejecución de un servidor FTP desde un contenedor ........ .....................................699
Arranque y parada de contenedores ........ ..................................... ................... 701
Construyendo una imagen de contenedor .......................... .............................................
702 Construir un simple imagen del contenedor .................................................. ..........
702 Crear un contenedor FTP desde GitHub .................................. .................... 703
xxx
Machine Translated by Google
Contenido
Etiquetado y envío de una imagen a un registro ........................................... ......705 Uso
de contenedores en la empresa ....................................... ........................706
Resumen ........................ .................................................... ..........................706
Ejercicios ................ .................................................... ............................................. 707
xxi
Machine Translated by Google
Contenido
Adición de claves ssh con cloudinit ........................................... ..............736
Adición de software con cloudinit ............................... .......................... 737
Uso de cloudinit en la informática empresarial ............... .....................................738
Uso de OpenStack para implementar imágenes en la
nube ...... .................................................... .....739 A partir del panel de control de
OpenStack ....................................... ...............739 Con guración de su red
virtual OpenStack ........................... ..........739 Con guración de teclas para
acceso remoto .................................. ................... 741 Lanzamiento de una
máquina virtual en OpenStack......................... .......... 742 Acceder a la máquina
virtual vía ssh.......................... ...................... 743 Uso de Amazon EC2 para implementar
imágenes en la nube .................. .......................................... 744
Resumen .......... .......................................... .................................................... .... 746 Ejercicios...........................................
Comprensión de Ansible ................................................. ...................................750
Exploración de los componentes de Ansible ....... .................................................... ...................
751 Inventarios ............................. .................................................... .......... 751 Libros
de jugadas................................ .................................................... ............... 752
Jugadas .................................. .................................................... ............ 752
Tareas ............................................. .................................................... .........
752 Módulos ....................................... .................................................... .. 752
Funciones, importaciones e incluye......................................... .....................
753 Recorriendo paso a paso una implementación de
Ansible ....................... ..................................... 753 Requisitos
previos ........... .................. .................................................... ...............754
Configuración de claves SSH para cada nodo ........................... ..................................754
Instalación de Ansible ........... .................................................... .............................756
Creación de un inventario .................. .................................................... ...........756
Autenticación en los hosts .................................. .......................................... 757
Creación de un libro de jugadas... .................................................... .............................
757 Ejecutar el libro de jugadas................ .................................................... ...........758
Ejecución de comandos adhoc de Ansible ....................... .............................................
760 Probando adhoc comandos .................................................. .......................... 761
Automatización de tareas con Ansible Tower Automation Framework .................. ............ ..
762 Resumen ............................................... .................................................... .......... 763 Ejercicios ...................................
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes. . . . . . . . . . . . . . . . 765
Comprensión de Kubernetes .............................................. ................................... 766
Maestros de Kubernetes ............... .................................................... ................... 766
Trabajadores de Kubernetes.................... .................................................... ..... 767
Aplicaciones de Kubernetes .......................................... .................................... 767
Interfaces de Kubernetes ............ .................................................... ................... 768
Probando Kubernetes.................................. .................................................... .............. 768
Obtener Kubernetes .................................. .................................................... 769
Cómo iniciar el tutorial básico de Kubernetes.................................... .. 769
Iniciando Minikube ............................................... ............................... 770
xxxii
Machine Translated by Google
Contenido
Ejecución del tutorial básico de Kubernetes ............................................... ......... 771
Obtener información sobre su clúster .................................. .......... 771
Implementar una aplicación de Kubernetes ........................... ............................
772 Obtener información sobre los pods de la
implementación .................. ..........................773 Exponer aplicaciones con
servicios .................. .................................... 776 Etiquetar un
servicio .......... .................................................... .....................777 Eliminar un
servicio ......................... .................................................... .....778 Ampliar una
aplicación ........................................... ............................. 779 Comprobar el
equilibrador de carga .................. .................................................... ..780
Reducir una aplicación ............................................... ...................... 781 Kubernetes de
calidad empresarial con OpenShift .. .................................................... .782
Resumen ............................................................. .................................................... .........783 Ejercicios............................
Parte VII: Apéndices 785
índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
xxxii
Machine Translated by Google
Machine Translated by Google
en
No pHe
uedes
he aprender
llegado
llegado
aa e esa
sa Linux ds
cconclusión
onclusión in usarlo.
espués
de más de dos décadas de enseñar a la gente a usar Linux.
No puedes simplemente leer un libro; no se puede simplemente escuchar una conferencia.
Necesitas a alguien que te guíe, y necesitas saltar y hacerlo tú mismo.
En 1999, escribí mi primer libro sobre Linux, la Biblia Red Hat Linux. El gran éxito del libro le dio a i id dh me
Durante aproximadamente una década, escribí la doocenas
portunidad
de libros i Linux
de convertirme
sobre en
yLinux
u
en
autor bmejores
a tiempo
xploré lias
ndependiente dd
completo. de
formas
de explicar Linux desde la tranquilidad de mi pequeña oficina en casa.
En 2008, salí a la carretera. Fui contratado por Red Hat, Inc., como instructor de tiempo completo,
enseñando Linux a administradores de sistemas profesionales que buscaban la certificación Red Hat
Certifi ed Engineer (RHCE). En mis tres años como instructor de Linux, perfeccioné mis habilidades de
enseñanza frente a una audiencia en vivo cuya experiencia en Linux varió de ninguna a profesionales
experimentados. Con el tiempo, pude ampliar mi propio conocimiento de Linux al adquirir alrededor de 10
certificaciones, incluida la certificación Red Hat Certifi ed Architect (RHCA).
En la edición anterior de la Biblia de Linux, convertí mi experiencia docente en texto para llevar al
lector de alguien que nunca ha usado Linux a alguien con las habilidades fundamentales para
convertirse en un profesional de Linux. Las habilidades que podría adquirir de esa edición también
permanecen vigentes en esta edición. Incluyen lo siguiente:
Principiante a profesional certificado: siempre que haya usado una computadora, un mouse y un
teclado, puede comenzar con este libro. Le digo cómo obtener Linux, comenzar a usarlo, revisar
los temas críticos y, en última instancia, sobresalir en su administración y protección.
Enfocado en el administrador del sistema: cuando haya terminado con este libro, sabrá cómo usar
Linux y cómo modificarlo y mantenerlo. En este libro se presentan casi todos los temas necesarios
para convertirse en un ingeniero certificado de Red Hat. Dicho esto, muchos desarrolladores de
software también han usado este libro para comprender cómo trabajar en un sistema Linux como
plataforma de desarrollo o destino para sus aplicaciones.
Énfasis en las herramientas de línea de comandos: aunque las ventanas de apuntar y hacer clic para
administrar Linux han mejorado mucho en los últimos años, muchas funciones avanzadas solo
se pueden utilizar ingresando comandos y editando archivos de configuración manualmente. Le
enseño cómo volverse competente con el shell de línea de comandos de Linux, y ocasionalmente
comparo las características del shell con herramientas gráficas para realizar las mismas tareas.
Dirigido a menos distribuciones de Linux: en ediciones anteriores, describí alrededor de 18
distribuciones de Linux diferentes. Con solo unas pocas excepciones notables, las distribuciones
de Linux más populares están basadas en Red Hat (Red Hat Enterprise Linux, Fedora, CentOS,
xxxv
Machine Translated by Google
Introducción
etc.) o basado en Debian (Ubuntu, Linux Mint, KNOPPIX, etc.). Aunque este libro cubre más a fondo las
distribuciones de Red Hat, aumenté la cobertura de Ubuntu a lo largo del libro, porque ahí es donde comienzan
muchos de los mayores fanáticos de Linux.
Muchas, muchas demostraciones y ejercicios: en lugar de simplemente decirte lo que hace Linux,
en realidad te muestra lo que hace. Luego, para asegurarse de que lo entendió, tiene la oportunidad de
probar los ejercicios de Linux usted mismo. Cada procedimiento y ejercicio ha sido probado para funcionar en
Fedora o Red Hat Enterprise Linux. La mayoría también funciona en Ubuntu.
Para esta décima edición, las principales mejoras incluyen un enfoque en la administración simplificada de
Linux, la automatización de tareas y la gestión de aplicaciones en contenedores (individualmente o a escala):
Interfaz de usuario web de administración de cabina: desde que se creó Linux, la gente ha tratado de desarrollar
interfaces gráficas simples o basadas en navegador para administrar sistemas Linux. Creo que Cockpit es la
mejor interfaz de usuario web jamás creada para administrar la mayoría de las funciones básicas de Linux. A lo
largo de este libro, he reemplazado la mayoría de las descripciones de herramientas de configuración del
sistema* más antiguas con aquellas que se enfocan en Cockpit. Con Cockpit, ahora puede agregar usuarios,
administrar el almacenamiento, monitorear actividades y realizar muchas otras tareas administrativas a través de
una única interfaz.
Conducir a las tecnologías de la nube: después de introducir las tecnologías de la nube en la anterior
edición, he ampliado esa cobertura aquí. Esta cobertura incluye configurar su propio host Linux para ejecutar
máquinas virtuales y ejecutar Linux en un entorno de nube, como Amazon Web Services. Linux está en el
corazón de la mayoría de los avances tecnológicos en la computación en la nube hoy en día. Eso significa que
necesita una comprensión sólida de Linux para trabajar de manera efectiva en el mañana al comienzo de este
'
libro. Luego, en los últimos capítulos, demuestro cómo puede
de dpatos.
s centros robar los
Te sistemas
ayudo Linux
los cc
a aprender omo hipervisores,
onceptos
básicos de Linux
controladores de nube y máquinas virtuales, así como administrar redes virtuales y almacenamiento en red.
Ansible: la automatización de tareas para la gestión de sistemas es cada vez más esencial en los centros de
datos modernos. Con Ansible, puede crear libros de jugadas que definan el estado de un sistema Linux.
Esto incluye cosas como configurar qué paquetes se instalan, qué servicios se ejecutan y cómo se
configuran las funciones. Un libro de jugadas puede configurar un sistema o miles de sistemas, combinarse
para formar un conjunto de servicios del sistema y volver a ejecutarse para devolver un sistema a un estado
definido. En esta edición, le presento Ansible, lo ayudo a crear su primer libro de jugadas de Ansible y le
muestro cómo ejecutar comandos de Ansible adhoc.
Contenedores: empaquetar y ejecutar aplicaciones en contenedores se está convirtiendo en el método
preferido para implementar, administrar y actualizar características y servicios de software pequeños
y escalables. Describo cómo extraer contenedores a su sistema, ejecutarlos, detenerlos e incluso crear sus
propias imágenes de contenedores utilizando los comandos podman y docker.
Kubernetes y OpenShift: si bien los contenedores son buenos por sí mismos, poder
implemente, administre y actualice contenedores en una gran empresa, necesita una plataforma de orches
tration. El proyecto Kubernetes proporciona esa plataforma. Para una plataforma comercial de Kubernetes
compatible, puede usar un producto como OpenShift.
xxxvi
Machine Translated by Google
Introducción
Cómo está organizado este libro
El libro está organizado para permitirle comenzar desde el principio con Linux y crecer hasta convertirse en un
administrador de sistemas Linux profesional y un usuario avanzado.
La Parte I, "Primeros pasos", incluye dos capítulos diseñados para ayudarlo a comprender qué
Linux es y comienza con un escritorio Linux:
■ El Capítulo 1, “Comenzar con Linux”, cubre temas tales como qué es el sistema operativo Linux, de
dónde proviene y cómo empezar a usarlo. ■ El Capítulo 2, “Creación del escritorio Linux perfecto”,
proporciona información sd
obre
funciones cómo puede
más pcopulares.
e escritorio rear un sistema de escritorio y utilizar algunas de las
La Parte II, "Convertirse en un usuario avanzado de Linux", brinda detalles detallados sobre cómo usar el shell de
Linux, trabajar con sistemas de archivos, manipular archivos de texto, administrar procesos y usar scripts de shell:
■ El Capítulo 3, “Uso del shell”, incluye información sobre cómo acceder a un shell, ejecutar comandos,
recuperar comandos (utilizando el historial) y completar tabuladores. El capítulo también describe
cómo usar variables, alias y páginas man (páginas de referencia de comandos tradicionales de
Linux). ■ El Capítulo 4, “Moverse por el sistema de archivos”, incluye comandos para listar, crear,
copiar y mover adel
rchivos
y directorios.
sistema Los
de archivos, temas
como la m ás avanzados
propiedad dae
de los este capítulo
rchivos, incluyen
y lla
los permisos seguridad
as listas de
control de acceso.
■ El Capítulo 5, “Trabajar con archivos de texto”, incluye todo, desde editores de texto básicos hasta
herramientas para encontrar archivos y buscar texto dentro de los archivos. ■ El Capítulo 6,
“Administración
de procesos
sistema en ceambiarlos.
y cómo jecución”, dLescribe
cómo
de cvambiar
as formas er qué plos
rocesos
se eistán
procesos ejecutando
ncluyen matar, peausar
n su y
enviar otros tipos de señales. ■ El Capítulo 7, “Escribir scripts de shell sencillos”, incluye funciones y
comandos de shell que puede reunir en un archivo para ejecutar como un comando en sí mismo.
En la Parte III, "Convertirse en administrador del sistema Linux", aprenderá a administrar
Sistemas Linux:
■ El Capítulo 8, “Administración de sistemas de aprendizaje”, brinda información sobre herramientas
gráficas básicas, comandos y archivos de configuración para administrar sistemas Linux.
Presenta la interfaz de usuario web de Cockpit para una administración de Linux centralizada y
simplificada.
■ El Capítulo 9, “Instalación de Linux”, cubre las tareas de instalación comunes, como la partición del
disco y la selección del paquete de software inicial, así como herramientas de instalación más
avanzadas, como la instalación desde archivos kickstart. ■ El Capítulo 10, “Obtención y administración
de software”, brinda
información
administrar sobre dce
paquetes ómo funcionan
software. los
■ El paquetes
11, "dAdministración
Capítulo e software y cómo
de couentas
btener
dye
usuario", analiza las herramientas para agregar y eliminar usuarios y grupos, así como también cómo
centralizar la administración de cuentas de usuario.
xxxvii
Machine Translated by Google
Introducción
■ El Capítulo 12, “Administración de discos y sistemas de archivos”, proporciona información sobre cómo
agregar particiones, crear sistemas de archivos y montar sistemas de archivos, además de trabajar con la
administración de volúmenes lógicos.
En la Parte IV, "Convertirse en administrador de un servidor Linux", aprenderá a crear potentes servidores
de red y las herramientas necesarias para administrarlos:
■ El Capítulo 13, “Descripción de la administración del servidor”, cubre el registro remoto, las herramientas
de supervisión y el proceso de inicio de Linux. ■ El Capítulo 14, “Administración de redes”, explica cómo
configurar las redes.
■ Eyl
iniciar C apítulo
detener s1ervicios.
5, “Iniciar
■ yC d etener
1s6
apítulo ervicios”,
proporciona
localmente información
en su sistema Linux osa
obre
cómo
través
de la
red desde otras computadoras.
configurar un s■ervidor
El Capítulo
web A1pache.
7, “Configuración de un servidor web”, describe cómo
, “Configuración de un servidor de impresión”, describe cómo configurar impresoras para usar
■ Capítulo 18 , “Configuración de un servidor FTP”, cubre los procedimientos para configurar un vsftpd
Servidor FTP que se puede usar para permitir que otros descarguen archivos de su sistema Linux a
través de la red. ■ Capítulo 19 configuración del servidor de archivos con Samba. ■ Capítulo 20
, “Configuración
Funciones del sistema para compartir
de un csarpetas de
ervidor de archivos
uso entre
compartido saistemas
de rchivos dae
tW
ravés
de
indows una red. c■ubre
(Samba)”, El Windows
Capítulo 21, “Resolución de problemas de Linux”, cubre herramientas populares para solucionar
problemas de su s, istema
Linux.
“Configuración
de un servidor de archivos NFS”, describe cómo usar Network File
En la Parte V, “Aprendizaje de las técnicas de seguridad de Linux”, aprenderá a proteger sus sistemas
y servicios de Linux:
■ El Capítulo 22, “Comprensión de la seguridad básica de Linux”, cubre los conceptos y técnicas básicos de
seguridad. ■ El Capítulo 23, "Comprensión de la seguridad avanzada de Linux", brinda información
sobre el uso de mseguridad
ódulos de ya utenticación conectables
la autenticación (PAM)
■ Eyl C
del sistema. herramientas criptológicas
apítulo 24, “Mejora de la speguridad
ara reforzar
de la
Linux con SELinux”, le muestra cómo habilitar Security Enhanced Linux (SELinux) para proteger los
servicios del sistema. ■ El Capítulo 25, “Seguridad de Linux en una red”, cubre las características de
seguridad de la red, como firewalld e iptables, para proteger los servicios del sistema.
En la Parte VI, “Engaging with Cloud Computing”, el libro gira desde un enfoque de un solo sistema
hacia la contenedorización, la computación en la nube y la automatización:
■ El Capítulo 26, “Pasar a las nubes y los contenedores”, describe cómo extraer, enviar, iniciar, detener,
etiquetar y crear imágenes de contenedores.
xxxviii
Machine Translated by Google
Introducción
■ El Capítulo 27, “Uso de Linux para computación en la nube”, presenta conceptos de
computación en la nube en Linux al describir cómo configurar hipervisores, construir
máquinas virtuales y compartir recursos a través de redes.
■ El Capítulo 28, “Implementación de Linux en la nube”, describe cómo implementar imágenes
de Linux en diferentes entornos de nube, incluidos OpenStack, Amazon EC2 o un sistema Linux
local configurado para la virtualización. ■ El Capítulo 29, "Automatización de aplicaciones e
infraestructura cAnsible
on Ansible", explica
adhoc para acutomatizar
ómo crear pla
laybooks de Ansible
configuración y ejecutar
de sistemas comandos
y otros de
Linux
dispositivos. ■ El Capítulo 30, "Implementación de aplicaciones como contenedores con
Kubernetes", describe el proyecto Kubernetes y cómo se usa para orquestar imágenes de
contenedores, con el potencial de escalar masivamente para grandes centros de datos.
La Parte VII contiene dos apéndices para ayudarlo a aprovechar al máximo su exploración de Linux.
El Apéndice A, “Medios”, brinda orientación sobre la descarga de distribuciones de Linux. El Apéndice B, “Respuestas de
los ejercicios”, proporciona ejemplos de soluciones para los ejercicios incluidos en los Capítulos 2 a 30.
Las convenciones usadas en este libro
A lo largo del libro, una tipografía especial indica código y comandos. Los comandos y el código se muestran en una
fuente monoespaciada:
Así es como se ve el código.
En el caso de que un ejemplo incluya tanto entrada como salida, se sigue utilizando la fuente monoespaciada, pero la entrada
se presenta en negrita para distinguir las dos. Aquí hay un ejemplo:
$ ftp ftp.handsonhistory.com Nombre (inicio:jake):
jake
Contraseña: ******
En cuanto a los estilos en el texto:
■ Los términos nuevos y las palabras importantes aparecen en cursiva cuando se introducen.
■ Los trazos de teclado aparecen así: Ctrl+A. Esta convención indica mantener presionada la tecla Ctrl
mientras presiona también la tecla "a". ■ Los
nombres de archivo, las URL y el código dentro del texto aparecen de la siguiente manera: persistencia
.propiedades.
Los siguientes elementos llaman su atención sobre puntos que son particularmente importantes.
NOTA
Un cuadro de Nota proporciona información adicional a la que debe prestar especial atención.
xxxix
Machine Translated by Google
Introducción
CONSEJO Un cuadro de Consejo muestra una forma especial de realizar una tarea en particular.
PRECAUCIÓN
Un cuadro de Precaución le advierte que tenga especial cuidado al ejecutar un procedimiento o podría dañar el hardware o el software de su computadora.
Saltando a Linux
Si es nuevo en Linux, es posible que tenga ideas vagas sobre qué es y de dónde proviene. Es posible
que haya escuchado algo sobre que es gratis (como en el costo) o gratis (como en la libertad de usarlo
como lo desee). Antes de que empiece a poner sus manos en Linux (lo cual haremos muy pronto), el
Capítulo 1 busca responder algunas de sus preguntas sobre los orígenes y características de Linux.
Tómese su tiempo y trabaje con este libro para ponerse al día con Linux y cómo puede hacer que funcione
para satisfacer sus necesidades. ¡Esta es su invitación para participar y dar el primer paso para convertirse
en un experto en Linux!
Visite el sitio web de la Biblia de Linux
Para encontrar enlaces a varias distribuciones de Linux, consejos sobre cómo obtener la certificación de Linux y
correcciones al libro a medida que estén disponibles, visite www.wiley.com/go/linuxbible10e.
Cómo ponerse en contacto con Wiley o el autor
Puede ponerse en contacto con Christopher Negus en striker57@gmail.com.
Si cree que ha encontrado un error en este libro y no aparece en la página del libro en www.wiley.com,
puede
informar el problema a nuestro equipo de asistencia técnica al cliente en support.wiley.com.
SG
Machine Translated by Google
rt
Empezando
EN ESTA PARTE
Capítulo 1
Comenzando con Linux
Capítulo 2
Creando el escritorio Linux perfecto
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Comenzando con Linux
EN ESTE CAPÍTULO
Aprendiendo qué es Linux
Aprendiendo de dónde viene Linux
Elegir distribuciones de Linux
Explorando oportunidades profesionales con Linux
Obtener la certificación en Linux
T
La guerra de los sistemas operativos ha terminado y Linux ha ganado. Los sistemas operativos
propietarios simplemente no pueden seguir el ritmo de las mejoras y la calidad que Linux puede lograr con su cultura.
tura de compartir e innovar. Incluso Microsoft, cuyo ex CEO Steve Ballmer se refirió una vez
a Linux como “un cáncer”, ahora dice que el uso de Linux en su servicio de computación en la nube Azure de
Microsoft ha superado el uso de Windows.
Linux es uno de los avances tecnológicos más importantes del siglo XXI. Más allá de su impacto en el crecimiento de
Internet y su lugar como tecnología habilitadora para una variedad de dispositivos controlados por computadora, el
desarrollo de Linux se ha convertido en un modelo de cómo los proyectos colaborativos pueden superar lo que los
individuos y las empresas pueden hacer solos.
Google ejecuta miles y miles de servidores Linux para potenciar su tecnología de búsqueda. Sus teléfonos Android están
basados en Linux. Del mismo modo, cuando descarga y ejecuta Chrome OS de Google, obtiene
por un
usn
istema
navegador
operativo
respaldado
Linux.
Facebook construye e implementa su sitio utilizando lo que se conoce como una pila LAMP (Linux, servidor web
Apache, base de datos MySQL y lenguaje de secuencias de comandos web PHP), todos proyectos de código abierto. De
hecho, Facebook mismo utiliza un modelo de desarrollo de código abierto, poniendo a disposición del público el código
fuente de las aplicaciones y herramientas que impulsan a Facebook. Este modelo ha ayudado a Facebook a eliminar errores
rápidamente, a obtener contribuciones de todo el mundo y a impulsar su crecimiento exponencial.
Las organizaciones financieras que tienen billones de dólares en juego con la velocidad y la seguridad de sus
sistemas operativos también dependen en gran medida de Linux. Estos incluyen la Bolsa de Valores de Nueva York, la
Bolsa Mercantil de Chicago y la Bolsa de Valores de Tokio.
Dado que la nube continúa siendo una de las palabras de moda en la actualidad, una parte de la oleada de la nube que
no es exagerada es que Linux y otras tecnologías de código abierto continúan siendo la base sobre la cual
3
Machine Translated by Google
Parte I: Primeros pasos
Se están construyendo las mayores innovaciones en la nube de la actualidad. Todos los componentes de software
que necesita para crear una nube privada o pública (como hipervisores, controladores de nube, almacenamiento
en red, redes virtuales y autenticación) están disponibles gratuitamente para que comience a usarlos desde el
mundo del código abierto.
La adopción generalizada de Linux en todo el mundo ha creado una gran demanda de experiencia en Linux.
Este capítulo lo inicia en el camino para convertirse en un experto en Linux al ayudarlo a comprender qué es
Linux, de dónde proviene y cuáles son sus oportunidades para convertirse en un experto en él.
El resto de este libro le brinda actividades prácticas para ayudarlo a obtener esa experiencia.
Finalmente, le muestro cómo aplicar esa experiencia a las tecnologías de la nube, incluidas las herramientas de
automatización, como Ansible, y las tecnologías de orquestación de contenedores, como Kubernetes y OpenShift.
Comprender qué es Linux
Linux es un sistema operativo de computadora. Un sistema operativo consiste en el software que administra su
computadora y le permite ejecutar aplicaciones en ella. Las características que componen Linux y sistemas
operativos de computadora similares incluyen lo siguiente:
Detección y preparación del hardware: cuando el sistema Linux arranca (cuando enciende su computadora),
examina los componentes de su computadora (CPU, disco duro, tarjetas de red, etc.) y carga el software
(controladores y módulos) necesarios para acceder a esos dispositivos de hardware en particular.
Gestión de procesos: el sistema operativo debe realizar un seguimiento de varios procesos que se ejecutan
al mismo tiempo y decidir cuáles tienen acceso a la CPU y cuándo.
El sistema también debe ofrecer formas de iniciar, detener y cambiar el estado de los procesos.
Administrar la memoria: la RAM y el espacio de intercambio (memoria extendida) deben asignarse a
aplicaciones a medida que necesitan memoria. El sistema operativo decide cómo se manejan las solicitudes
de memoria.
Proporcionar interfaces de usuario: un sistema operativo debe proporcionar formas de acceder al sistema. Se
accedía a los primeros sistemas Linux desde un intérprete de línea de comandos llamado shell. Hoy en
día, las interfaces gráficas de escritorio también están comúnmente disponibles.
Control de sistemas de archivos: las estructuras del sistema de archivos están integradas en el sistema operativo
(o se cargan como módulos). El sistema operativo controla la propiedad y el acceso a los archivos y directorios
(carpetas) que contienen los sistemas de archivos.
Proporcionar acceso y autenticación de usuarios: crear cuentas de usuario y permitir
Los límites que se establecen entre los usuarios es una característica básica de Linux. Las cuentas
separadas de usuario y grupo permiten a los usuarios controlar sus propios archivos y procesos.
Ofreciendo utilidades administrativas: en Linux, cientos (quizás miles) de com
mandos y ventanas gráficas están disponibles para hacer cosas tales como agregar usuarios, administrar
4
Machine Translated by Google
Capítulo 1: Comenzando con Linux
discos, monitorear la red, instalar software y, en general, asegurar y administrar su computadora. Las
herramientas de interfaz de usuario web, como Cockpit, han bajado el listón para realizar tareas administrativas
complejas.
Servicios de inicio: para usar impresoras, manejar mensajes de registro y proporcionar una variedad de
servicios de sistema y red, los procesos llamados procesos daemon se ejecutan en segundo plano, 1
esperando que lleguen las solicitudes. Muchos tipos de servicios se ejecutan en Linux.
Linux proporciona diferentes formas de iniciar y detener estos servicios. En otras palabras, mientras
que Linux incluye navegadores web para ver páginas web, también puede ser la computadora que sirve
páginas web a otros. Las características populares del servidor incluyen servidores web, de correo, de base
de datos, de impresora, de archivos, DNS y DHCP.
Herramientas de programación: Linux dispone de una amplia variedad de utilidades de programación para crear
aplicaciones y bibliotecas para implementar interfaces especiales.
Como alguien que administra sistemas Linux, debe aprender a trabajar con las funciones que se acaban de
describir. Si bien muchas funciones se pueden administrar mediante interfaces gráficas, la comprensión de la línea
de comandos de shell es fundamental para alguien que administra sistemas Linux.
Los sistemas Linux modernos ahora van mucho más allá de lo que podían hacer los primeros sistemas UNIX (en
los que se basaba Linux). Las funciones avanzadas de Linux, que se utilizan a menudo en grandes empresas,
incluyen las siguientes:
Agrupamiento: Linux se puede configurar para trabajar en clústeres, de modo que múltiples sistemas puedan
aparecer como un solo sistema para el mundo exterior. Los servicios se pueden configurar para pasar de
un lado a otro entre los nodos del clúster y mostrar a quienes usan los servicios que se están ejecutando
sin interrupción.
Virtualización: para administrar los recursos informáticos de manera más eficiente, Linux puede ejecutarse
como un host de virtualización. En ese host, podría ejecutar otros sistemas Linux, Microsoft Windows,
BSD u otros sistemas operativos como invitados virtuales. Para el mundo exterior, cada uno de esos
invitados virtuales aparece como una computadora separada. KVM y Xen son dos tecnologías en Linux
para crear hosts virtuales.
Computación en la nube: para administrar entornos de virtualización a gran escala, puede utilizar
plataformas completas de computación en la nube basadas en Linux. Proyectos como OpenStack y Red
Hat Virtualization (y su proyecto upstream oVirt) pueden administrar simultáneamente muchos hosts de
virtualización, redes virtuales, autenticación de usuarios y sistemas, huéspedes virtuales y almacenamiento
en red. Proyectos como Kubernetes pueden administrar aplicaciones en contenedores en centros de datos
masivos.
Computación en tiempo real: Linux se puede configurar para computación en tiempo real, donde
los procesos prioritarios pueden esperar una atención rápida y predecible.
'
Almacenamiento especializado: en lugar de solo almacenar datos en la computadora s disco duro, puede
almacenarlo en muchas interfaces de almacenamiento locales y en red especializadas que están
disponibles en Linux. Los dispositivos de almacenamiento compartido disponibles en Linux incluyen
iSCSI, Fibre Channel e Infiniband. Las plataformas de almacenamiento de código abierto completas incluyen
proyectos como Ceph (https://ceph.io) y GlusterFS (https://www.gluster.org).
5
Machine Translated by Google
Parte I: Primeros pasos
Algunos de estos temas avanzados no se tratan en este libro. Sin embargo, las funciones
cubiertas aquí para usar el shell, trabajar con discos, iniciar y detener servicios y configurar
una variedad de servidores deberían servir como base para trabajar con esas funciones
avanzadas.
Comprender cómo Linux se diferencia de otros
Sistemas operativos
Si es nuevo en Linux, es muy probable que haya utilizado un sistema operativo Microsoft
Windows o MacOS. Aunque MacOS tiene sus raíces en un sistema operativo de software libre,
conocido como Berkeley Software Distribution (más sobre esto más adelante), los sistemas
operativos de Microsoft y Apple se consideran sistemas operativos propietarios. Lo que eso significa
es lo siguiente:
■ No puede ver el código utilizado para crear el sistema operativo y, por lo tanto, no puede
cambiar el sistema operativo en sus niveles más básicos si no se ajusta a sus necesidades,
y no puede usar el sistema operativo para crear su propio sistema operativo. sistema desde
el código fuente.
■ No puede verificar el código para encontrar errores, explorar vulnerabilidades de seguridad o simplemente
aprender lo que ese código está haciendo.
■ Es posible que no pueda conectar fácilmente su propio software al sistema operativo si los
creadores de ese sistema no quieren
necesita
exponer
al m
las
undo
interfaces
exterior.
de programación que
Puede mirar esas afirmaciones sobre el software propietario y decir: “¿Qué me importa?
'
I No soy un desarrollador de software. No quiero ver ni cambiar cómo está construido mi sistema
operativo”.
Eso puede ser cierto. Sin embargo, el hecho de que otros puedan tomar software gratuito y de
código abierto y usarlo como les plazca ha impulsado el crecimiento explosivo de Internet (piense en
Google), teléfonos móviles (piense en Android), dispositivos informáticos especiales (piense en TiVo)
y cientos de empresas de tecnología. El software libre ha reducido los costes informáticos y ha
permitido una explosión de innovación.
Tal vez no desee utilizar Linux, como lo han hecho Google, Facebook y otras empresas, para sentar
las bases de una empresa multimillonaria. No obstante, esas empresas y otras que ahora confían
en Linux para impulsar sus infraestructuras informáticas necesitan más y más personas con las
habilidades para ejecutar esos sistemas.
Quizás se pregunte cómo un sistema informático que es tan poderoso y fl exible ha llegado a ser
también gratuito. Para entender cómo podría ser eso, necesita ver de dónde vino Linux. Así, las
próximas secciones de este capítulo describen el extraño y tortuoso camino del movimiento del
software libre que condujo a Linux.
6
Machine Translated by Google
Capítulo 1: Comenzando con Linux
Explorando la historia de Linux
Algunas historias de Linux comienzan con el siguiente mensaje titulado “¿Qué es lo que más le
gustaría ver en minix?” publicado por Linus Torvalds en el grupo de noticias comp.os.minix el 25 de
agosto de 1991, en 1
https://groups.google.com/forum/#!msg/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ
Linus Benedicto Torvalds
Hola a todos los que usan minix:
' '
I Estoy haciendo un sistema operativo (gratuito) (solo un pasatiempo, ser grande y profesional
ganó como gnu) para clones 386 (486) AT. Esto se ha estado gestando desde abril, y está empezando a
prepararse. Me gustaría
minix, yrecibir
a que
cmomentarios
i sistema osperativo
obre las
sce
osas
parece
que
un
a p
la
oco
gente
(mismo
le gustan/no
diseño físico
les gustan
del sistema
en
de archivos (debido a razones prácticas, entre otras cosas)... Cualquier sugerencia es bienvenida, pero
'
gané yo no prometo
Los implementaré :)
Linus (torvalds@kruuna.helsinki.fi)
PD. Sí, está libre de cualquier código minix y tiene un fs multiproceso. NO es
portátil [sic] (usa el cambio de tareas 386, etc.), y probablemente nunca admitirá
nada más que discos duros AT, ya que eso es todo lo que tengo :(.
Minix era un sistema operativo similar a UNIX que se ejecutaba en PC a principios de la década de 1990.
Al igual que Minix, Linux también era un clon del sistema operativo UNIX. Con pocas excepciones, como
Microsoft Soft Windows, la mayoría de los sistemas informáticos modernos (incluidos MacOS y el propio
Linux) se derivaron de los sistemas operativos UNIX, creados originalmente por AT&T.
Para apreciar verdaderamente cómo se podría haber modelado un sistema operativo libre a
partir de un sistema propietario de AT&T Bell Laboratories, es útil comprender la cultura en
la que se creó UNIX y la cadena de eventos que hizo posible reproducir libremente la esencia
de UNIX.
NOTA
Para obtener más información sobre cómo se creó Linux, consulte el libro Just for Fun: The Story of an Accidental
Revolutionary de Linus Torvalds (Harper Collins Publishing, 2001).
Cultura UNIX de flujo libre en Bell Labs
Desde el principio, el sistema operativo UNIX se creó y se alimentó en un entorno comunitario.
Su creación no fue impulsada por las necesidades del mercado sino por el deseo de superar los
impedimentos para producir programas. AT&T, que originalmente poseía la marca comercial UNIX,
finalmente convirtió a UNIX en un producto comercial. Sin embargo, en ese momento, muchos de los
conceptos (e incluso gran parte del código inicial) que hicieron que UNIX fuera especial habían caído
en el dominio público.
7
Machine Translated by Google
Parte I: Primeros pasos
Si no tiene la edad suficiente para recordar cuándo se separó AT&T en 1984, es posible que no recuerde un
momento en que AT&T era la compañía telefónica. Hasta principios de la década de 1980, AT&T no tenía que
pensar mucho en la competencia porque si querías un teléfono en los Estados Unidos, tenías que ir a AT&T.
Tenía el lujo de financiar proyectos de investigación pura. La meca de tales proyectos fue el sitio de Bell
Laboratories en Murray Hill, Nueva Jersey.
Después de que un proyecto llamado Multics fracasara alrededor de 1969, los empleados de Bell Labs, Ken
Thompson y Dennis Ritchie, se pusieron en marcha por su cuenta para crear un sistema operativo que
ofreciera un entorno mejorado para el desarrollo de software. Hasta ese momento, la mayoría de los
programas se escribían en tarjetas perforadas de papel que debían alimentarse en lotes a las computadoras
centrales. En una conferencia de 1980 sobre "La evolución del sistema de tiempo compartido de UNIX", Dennis
Ritchie resumió el espíritu que inició UNIX:
Lo que queríamos preservar no era solo un buen entorno en el que programar, sino un
sistema en torno al cual se pudiera formar una comunidad. Sabíamos por experiencia que la
esencia de la informática comunitaria proporcionada por máquinas de tiempo compartido de acceso
remoto no es simplemente escribir programas en una terminal en lugar de un teclado, sino fomentar
una comunicación cercana.
La simplicidad y el poder del diseño de UNIX comenzaron a derribar las barreras que, hasta ese momento,
habían impedido a los desarrolladores de software. La base de UNIX se estableció con varios elementos clave:
El sistema de archivos UNIX: debido a que incluía una estructura que permitía niveles de subdirectorios
(que, para los usuarios de escritorio
usarse dpe
ara
hoy,
organizar
parecen
los
carpetas
archivos
dentro
y directorios
de carpetas),
de manera
UNIX intuitiva.
podía
Además, los métodos complejos para acceder a discos, cintas y otros dispositivos se simplificaron
en gran medida al representar esos dispositivos como archivos de dispositivos individuales a los que
también se podía acceder como elementos en un directorio.
Redirección de entrada/salida: los primeros sistemas UNIX también incluían redirección de entrada y
conductos. Desde una línea de comandos, los usuarios de UNIX podían dirigir la salida de un
comando a un archivo usando una tecla de flecha hacia la derecha (>). Más tarde, se agregó el
concepto de conductos (|) donde la salida de un comando podría dirigirse a la entrada de otro comando.
Por ejemplo, la siguiente línea de comando concatena (cat) archivo1 y archivo2, ordena (ordena)
las líneas en esos archivos alfabéticamente, pagina el texto ordenado para imprimir (pr) y dirige la
'
salida a la computadora s impresora predeterminada (lpr):
$ gato archivo1 archivo2 | ordenar | pr | lpr
Este método de dirigir la entrada y la salida permitió a los desarrolladores crear sus propias utilidades
especializadas que podían unirse a las utilidades existentes. Esta modularidad hizo posible que
muchas personas diferentes desarrollaran muchos códigos. Un usuario podría simplemente juntar
las piezas que necesitaba.
Portabilidad: simplificar la experiencia de usar UNIX también hizo que se volviera extraordinariamente
portátil para ejecutarse en diferentes equipos informáticos. Al tener controladores de dispositivos
(representados por archivos en el árbol del sistema de archivos), UNIX podría presentar una interfaz
para las aplicaciones de tal manera que los programas no tuvieran que conocer los detalles.
8
Machine Translated by Google
Capítulo 1: Comenzando con Linux
del hardware subyacente. Para portar UNIX más tarde a otro sistema, los desarrolladores solo
tenían que cambiar los controladores. ¡Los programas de aplicación no
hardware
tenían que
diferente!
cambiar por
Sin embargo, para hacer realidad la portabilidad, se necesitaba un lenguaje de programación de alto nivel
1
para implementar el software necesario. Con ese fin, Brian Kernighan y Dennis Ritchie crearon el lenguaje
de programación C. En 1973, UNIX se reescribió en C. Hoy en día, C sigue siendo el lenguaje principal
utilizado para crear los núcleos del sistema operativo UNIX (y Linux).
Como dijo Ritchie en una conferencia de 1979 (https://www.belllabs.com/usr/dmr/ www/hist.html):
Hoy en día, el único programa UNIX importante que aún se escribe en ensamblador es
el ensamblador mismo; prácticamente todos los programas de utilidad están en C, al igual que la
mayoría de los programas de la aplicación, aunque también hay sitios con muchos en Fortran,
Pascal y Algol 68. Parece seguro que gran parte del éxito de UNIX se deriva de la legibilidad,
modificabilidad y portabilidad de su software que, a su vez, se deriva de su expresión en lenguajes
de alto nivel.
Si es un entusiasta de Linux y está interesado en qué características de los primeros días de Linux han
sobrevivido, una lectura interesante es la reimpresión de Dennis Ritchie UNIX
del p(rimer
fechado
manual
el 3 dpe
rofesional
noviembre
de
'
gramática de 1971). Puede encontrarlo en el sitio web de Dennis Ritchie:
https://www.belllabs.com/usr/dmr/www/1stEdman.html. La forma de esta documentación son las páginas
man de UNIX, que sigue siendo el formato principal para documentar los comandos y las herramientas de
programación de los sistemas operativos UNIX y Linux en la actualidad.
Lo que
queda claro a medida que lee la documentación inicial y los relatos del sistema UNIX es que el
desarrollo fue un proceso de flujo libre, carecía de ego y estaba dedicado a hacer que UNIX fuera excelente.
Este proceso condujo a compartir el código (tanto dentro como fuera de Bell Labs), lo que permitió el rápido
desarrollo de un sistema operativo UNIX de alta calidad. También condujo a un sistema operativo que a AT&T
le resultaría difícil recuperar más tarde.
UNIX comercial Antes de la
desinversión de AT&T en 1984, cuando se dividió en AT&T y siete compañías "Baby Bell", a AT&T se le
prohibió vender sistemas informáticos. Las empresas que más tarde se convertirían en Verizon, Qwest,
Nokia y AlcatelLucent formaban parte de AT&T. Como resultado de AT&T
'
Como monopolio del sistema telefónico, al gobierno de los EE. UU. le preocupaba que una AT&T sin
restricciones pudiera dominar la incipiente industria informática.
Debido a que a AT&T se le restringió la venta de computadoras directamente a los clientes antes de su titulación
de desinversión, el código fuente de UNIX fue licenciado a las universidades por una tarifa nominal. Esto permitió
que las instalaciones de UNIX crecieran en tamaño y reconocimiento entre las mejores universidades. Sin
embargo, todavía no había ningún sistema operativo UNIX a la venta de AT&T que
mismo.
no tuviera que compilar usted
Llega Berkeley Software Distribution En 1975,
UNIX V6 se convirtió en la primera versión de UNIX disponible para uso generalizado fuera de Bell
Laboratories. A partir de este primitivo código fuente de UNIX, la primera variante principal de UNIX fue
9
Machine Translated by Google
Parte I: Primeros pasos
creado en la Universidad de California, Berkeley. Fue nombrada Distribución de Software de Berkeley
(BSD).
Durante la mayor parte de la próxima década, las versiones BSD y Bell Labs de UNIX se dirigieron en
direcciones separadas. BSD siguió adelante con la manera de compartir el código que fluía libremente,
que era el sello distintivo de los primeros Bell Labs UNIX, mientras que AT&T comenzó a dirigir UNIX
hacia la comercialización. Con la formación de un Laboratorio UNIX separado, que se mudó de Murray Hill
y se dirigió a Summit, Nueva Jersey, AT&T comenzó sus intentos de comercializar UNIX. En 1984, la
desinversión estaba detrás de AT&T y estaba realmente listo para comenzar a vender UNIX.
Laboratorio UNIX y comercialización El
Laboratorio UNIX se consideraba una joya que no acababa de encontrar un hogar o una forma de
obtener beneficios. A medida que se movía entre Bell Laboratories y otras áreas de AT&T, su nombre
cambió varias veces. Probablemente se recuerde mejor por el nombre que tenía cuando comenzó su
escisión de AT&T: UNIX System Laboratories (USL).
El código fuente de UNIX que salió de USL, cuyo legado se vendió en parte a Santa Cruz Operation
(SCO), se usó durante un tiempo como base para las demandas cada vez más reducidas de SCO
contra los principales proveedores de Linux (como IBM y Red Hat, Inc.). Por eso, creo que los esfuerzos
de USL que han contribuido al éxito de Linux se pierden en la mayoría de la gente.
Durante la década de 1980, por supuesto, muchas compañías informáticas temían que una AT&T
recién desinvertida representara una amenaza mayor para controlar la industria informática que una
empresa advenediza en Redmond, Washington. Para calmar los temores de IBM, Intel, Digital
Equipment Corporation y otras empresas informáticas, UNIX Lab hizo los siguientes compromisos para
garantizar la igualdad de condiciones:
Solo código fuente: en lugar de producir su propio conjunto de UNIX en caja, AT&T continuó
vendiendo solo el código fuente y poniéndolo a disposición de todos los licenciatarios por igual.
Luego, cada empresa trasladaría UNIX a su propio equipo. No fue hasta alrededor de 1992,
cuando el laboratorio se escindió como una empresa conjunta con Novell (llamado Univel), y
finalmente se vendió a Novell, que se produjo un conjunto comercial de UNIX (llamado UnixWare)
directamente a partir de ese código fuente. .
Interfaces publicadas: para crear un entorno de equidad y comunidad para sus OEM (fabricantes de
equipos originales), AT&T comenzó a estandarizar lo que los diferentes puertos de UNIX tenían
que poder hacer para seguir llamándose UNIX. Con ese fin, los estándares de la interfaz de
sistema operativo portátil (POSIX) y la definición de interfaz del sistema V (SVID) de AT&T UNIX
eran especificaciones que los proveedores de UNIX podían usar para crear sistemas UNIX
compatibles. Esos mismos documentos también sirvieron como hojas de ruta para la creación de Linux.
NOTA
En una de las primeras publicaciones de un grupo de noticias por correo electrónico, Linus Torvalds solicitó una copia, preferiblemente en línea, del estándar POSIX.
Creo que nadie de AT&T esperaba que alguien fuera capaz de escribir su propio clon de UNIX desde esas interfaces
sin utilizar ninguno de sus códigos fuente de UNIX.
10
Machine Translated by Google
Capítulo 1: Comenzando con Linux
Enfoque técnico: nuevamente, hasta el final de USL, la mayoría de las decisiones sobre la dirección
de UNIX se tomaron en función de consideraciones técnicas. La gerencia fue ascendida a través
de los rangos técnicos y, que yo sepa, nunca se habló de escribir software para romper el software
de otras compañías o restringir el éxito de USL.
'
socios 1
Cuando USL finalmente comenzó a contratar expertos en marketing y a crear un producto UNIX de
escritorio para usuarios finales, Microsoft Windows ya tenía un dominio firme en el mercado de escritorio.
Además, debido a que la dirección de UNIX siempre había sido hacia la concesión de licencias de código
fuente destinadas a grandes sistemas informáticos, USL tenía dificultades con los precios de sus productos.
Por ejemplo, en el software que incluía con UNIX, USL tuvo que pagar tarifas de licencia por computadora
que se basaban en mainframes de $100,000 en lugar de PC de $2,000. Agregue a eso el hecho de que no
había programas de aplicación disponibles con UnixWare y puede ver por qué fracasó el esfuerzo.
Sin embargo, la comercialización exitosa de los sistemas UNIX en ese momento estaba ocurriendo con otras
compañías de computadoras. SCO había encontrado un nicho de mercado, principalmente vendiendo versiones
para PC de UNIX con terminales tontas en oficinas pequeñas. Sun Microsystems estaba vendiendo muchas
estaciones de trabajo UNIX (originalmente basadas en BSD pero fusionadas con UNIX en SVR4) para
programadores y aplicaciones tecnológicas de alto nivel (como el comercio de acciones).
Otros sistemas UNIX comerciales también surgieron en la década de 1980. Esta nueva afirmación
de propiedad de UNIX estaba empezando a afectar el espíritu de las contribuciones abiertas. Se
estaban iniciando demandas judiciales para proteger el código fuente y las marcas registradas de UNIX.
En 1984, este UNIX nuevo y restrictivo dio lugar a una organización que finalmente lideró el camino hacia
Linux: la Free Software Foundation.
GNU hace la transición de UNIX a la libertad En
1984, Richard M. Stallman inició el proyecto GNU (https://gnu.org), denominado recursivamente con
la frase GNU no es UNIX. Como proyecto de la Free Software Foundation (FSF), GNU pretendía
convertirse en una recodificación de todo el sistema operativo UNIX que pudiera distribuirse libremente.
La página del Proyecto GNU (https://gnu.org/gnu/thegnuproject.html) cuenta la historia de cómo surgió
el proyecto en las propias palabras de Stallman. Tsoftware
ambién epxpone
ropietario
los peroblemas
staban imponiendo
que las empresas
a los de
desarrolladores de software que querían compartir, crear e innovar.
Aunque reescribir millones de líneas de código puede parecer abrumador para una o dos personas,
distribuir el esfuerzo entre docenas o incluso cientos de programadores hizo posible el proyecto. Recuerde
que UNIX fue diseñado para construirse en piezas separadas que podrían conectarse entre sí. Debido a
que estaban reproduciendo comandos y utilidades con interfaces publicadas muy conocidas, ese esfuerzo
podría dividirse fácilmente entre muchos desarrolladores.
Resultó que no solo se podían obtener los mismos resultados con todo el código nuevo, sino que, en
algunos casos, ese código era mejor que las versiones originales de UNIX. Porque todos podían ver
11
Machine Translated by Google
Parte I: Primeros pasos
el código que se produce para el proyecto, el código mal escrito podría corregirse rápidamente o reemplazarse
con el tiempo.
Si está familiarizado con UNIX, intente buscar en los cientos de paquetes de software GNU, que contienen
miles de comandos, su comando UNIX favorito en el Directorio de software libre (https://directory.fsf.org/wiki/
GNU). Es muy probable que lo encuentre allí, junto con muchos, muchos otros proyectos de software disponibles.
Con el tiempo, el término software libre ha sido reemplazado en su mayoría por el término software de
código abierto. Free Software Foundation prefiere el término software libre , mientras que Open Source Initiative
( https://opensource.org) promueve el software de código abierto .
Para dar cabida a ambos campos, algunas personas utilizan el término software libre y de código abierto
(FOSS, por sus siglas en inglés) . Sin embargo, un principio subyacente de FOSS es que, aunque usted es
libre de usar el software como desee, tiene la responsabilidad de hacer que las mejoras que realice en el código
estén disponibles para otros. De esta manera, todos en la comunidad pueden beneficiarse de su trabajo, como
usted se ha beneficiado del trabajo de otros.
Para defi nir claramente cómo se debe manejar el software de código abierto, el proyecto de software GNU
creó la Licencia Pública GNU o GPL. Aunque muchas otras licencias de software cubren enfoques
ligeramente diferentes para proteger el software libre, la GPL es la más conocida, y es la que cubre el kernel
de Linux en sí. La Licencia Pública GNU incluye las siguientes características básicas:
Derechos de autor: El autor original conserva los derechos de su software.
Distribución gratuita: las personas pueden usar el software GNU en su propio software, cambiándolo y
redistribuyéndolo como les plazca. Sin embargo, tienen que incluir el código fuente con su
distribución (o hacer que esté fácilmente disponible).
Derechos de autor mantenidos: Incluso si tuviera que volver a empaquetar y revender el software, el
El acuerdo GNU original debe mantenerse con el software, lo que significa que todos los futuros
destinatarios del software tienen la oportunidad de cambiar el código fuente, tal como lo hizo usted.
No hay garantía en el software GNU. Si algo sale mal, el desarrollador original del software no tiene la
obligación de solucionar el problema. Sin embargo, muchas organizaciones, grandes y pequeñas, ofrecen
soporte pago (a menudo en forma de suscripción) para el software cuando se incluye en su Linux u otra
distribución de software de código abierto. (Consulte la sección “Definición de código abierto OSI” más adelante
en este capítulo para obtener una definición más detallada de software de código abierto).
A pesar de su éxito en la producción de miles de utilidades de UNIX, el proyecto GNU en sí mismo no pudo
producir una pieza crítica de código: el kernel. Sus intentos de construir un núcleo de código abierto con el
proyecto GNU Hurd (https://gnu.org/software/hurd/) no tuvieron éxito al principio, por lo que no logró convertirse
en el principal núcleo de código abierto.
BSD pierde fuerza El único proyecto
de software que tenía la oportunidad de vencer a Linux para convertirse en el principal kernel de
código abierto era el venerable proyecto BSD. A fines de la década de 1980, los desarrolladores de BSD en
12
Machine Translated by Google
Capítulo 1: Comenzando con Linux
Universidad de California (UC), Berkeley se dio cuenta de que ya habían reescrito la mayor parte del
código fuente de UNIX que habían recibido una década antes.
En 1989, UC Berkeley distribuyó su propio código similar a UNIX como Net/1 y más tarde (en 1991)
como Net/2. Justo cuando UC Berkeley estaba preparando un sistema operativo completo similar a UNIX
que estaba libre de todo el código de AT&T, AT&T los demandó en 1992. La demanda afirmaba que el 1
'
software fue escrito utilizando secretos comerciales tomados de AT&T. Sistema UNIX.
Es importante señalar aquí que los desarrolladores de BSD habían reescrito completamente el código protegido
por derechos de autor de AT&T. Los derechos de autor fueron el medio principal que AT&T usó para proteger sus
derechos sobre el código UNIX. Algunos creen que si AT&T hubiera patentado los conceptos cubiertos en ese
código, podría no haber un sistema operativo Linux (o cualquier clon de UNIX) en la actualidad.
La demanda se retiró cuando Novell compró UNIX System Laboratories de AT&T en 1994.
Sin embargo, durante ese período crítico hubo suficiente temor y duda sobre la legalidad del código
BSD que se perdió el impulso que BSD había ganado hasta ese momento en la incipiente comunidad
de código abierto. Muchas personas comenzaron a buscar otra alternativa de código abierto. Había
llegado el momento para un estudiante universitario de Finlandia que estaba trabajando en su propio
núcleo.
NOTA
Hoy en día, las versiones de BSD están disponibles en tres proyectos principales: FreeBSD, NetBSD y OpenBSD. La gente generalmente
caracteriza a FreeBSD como el más fácil de usar, NetBSD como disponible en la mayoría de las plataformas de hardware y OpenBSD
como fanáticamente seguro. Muchas personas preocupadas por la seguridad todavía prefieren BSD a Linux. Además, debido a su licencia,
el código BSD puede ser utilizado por proveedores de software propietario, como Microsoft y Apple, que no comparten el código dno
e sq uiero
u
sistema operativo con otros. MacOS se basa en un derivado de BSD.
Linus construye la pieza que falta Linus
Torvalds comenzó a trabajar en Linux en 1991, mientras estudiaba en la Universidad de Helsinki,
Finlandia. Quería crear un kernel similar a UNIX para poder usar el mismo tipo de sistema operativo
en la PC de su casa que usaba en la escuela. En ese momento, Linus estaba usando Minix, pero
quería ir más allá de lo que permitían los estándares de Minix.
Como se señaló anteriormente, Linus anunció la primera versión pública del kernel de Linux en
el grupo de noticias comp.os.minix el 25 de agosto de 1991, aunque Torvalds supone que la primera
versión no salió hasta mediados de septiembre de ese año. .
'
Aunque Torvalds declaró que Linux fue escrito para el procesador 386 y probablemente era portátil, t
otros persistieron en alentar (y contribuir a) un enfoque más portátil en las primeras versiones de Linux.
El 5 de octubre de 1991, se lanzó Linux 0.02 con gran parte del código ensamblador original reescrito
en el lenguaje de programación C, lo que hizo posible comenzar a migrarlo a otras máquinas.
El kernel de Linux fue la última y más importante pieza de código que se necesitaba para completar
un sistema operativo similar a UNIX bajo la GPL. Así que cuando la gente empezó
13
Machine Translated by Google
Parte I: Primeros pasos
armando distribuciones, el nombre Linux y no GNU es lo que quedó. Sin embargo, algunas
distribuciones, como Debian, se refieren a sí mismas como distribuciones GNU/Linux.
(No incluir GNU en el título o subtítulo de un sistema operativo Linux también es motivo de muchas
quejas públicas por parte de algunos miembros del proyecto GNU. Consulte https://gnu.org).
Hoy en día, Linux se puede describir como un sistema operativo similar a UNIX de código abierto que
refleja una combinación de conformidad con SVID, POSIX y BSD. Linux sigue apuntando hacia el
cumplimiento de POSIX, así como de los estándares establecidos por el propietario de la marca comercial
UNIX, The Open Group (https://opengroup.org).
Los laboratorios de desarrollo de código abierto sin fines de lucro, rebautizados como Linux Foundation
después de fusionarse con Free Standards Group (https://linuxfoundation.org), que emplea a Linus Torvalds,
administran la dirección actual de los esfuerzos de desarrollo de Linux. Su lista de patrocinadores es como
un Quién
es Quién
SUSE, de pHroveedores
Oracle, de aplicaciones
P, Dell, Computer y sistemas
Associates, Linux
Intel, Cisco comerciales,
Systems incluidos
y cientos IBM, Red Hat,
de otros.
El estatuto principal de Linux Foundation es proteger y acelerar el crecimiento de Linux proporcionando
protección legal y estándares de desarrollo de software para los desarrolladores de Linux.
Si bien gran parte del impulso de los esfuerzos corporativos de Linux está en la informática empresarial,
también continúan las grandes mejoras en el campo de los escritorios. Los entornos de escritorio KDE y
GNOME mejoran continuamente la experiencia de Linux para usuarios ocasionales. Los entornos de
escritorio livianos más nuevos, como Chrome OS, Xfce y LXDE, ahora ofrecen alternativas eficientes que
hoy llevan Linux a miles de propietarios de netbooks.
Linus Torvalds continúa manteniendo y mejorando el kernel de Linux.
NOTA
Para una historia más detallada de Linux, consulte el libro Open Sources: Voices from the Open Source Revolution (O 'Reilly,
1999). La primera edición completa está disponible en línea en
https://oreilly.com/openbook/opensources/book/
Definición de código abierto de OSI Linux
proporciona una plataforma que permite a los desarrolladores de software cambiar el sistema operativo
a su gusto y obtener una amplia gama de ayuda para crear las aplicaciones que necesitan. Uno de los
guardianes del movimiento de fuente abierta es la Iniciativa de Fuente Abierta u OSI (https://
opensource.org).
Aunque el objetivo principal del software de código abierto es hacer que el código fuente esté disponible,
OSI también define otros objetivos del software de código abierto en su definición de código abierto. La
mayoría de las siguientes reglas para licencias de fuente abierta aceptables sirven para proteger la libertad
y la integridad del código fuente abierto:
'
Distribución gratuita: Una licencia de código abierto t requiere una tarifa de cualquier persona que revende
puede el software.
14
Machine Translated by Google
Capítulo 1: Comenzando con Linux
Código fuente: El código fuente debe estar incluido con el software, y no puede haber
Restricciones a la redistribución.
Obras derivadas: La licencia debe permitir la modificación y redistribución del código.
bajo los mismos términos.
1
Integridad del código fuente del autor: La licencia puede exigir que aquellos que usan el código fuente
eliminen el nombre o la versión del proyecto original si cambian el código fuente.
Sin discriminación contra personas o grupos: La licencia debe permitir que todas las personas sean igualmente
elegibles para usar el código fuente.
Sin discriminación contra los campos de actividad: la licencia no puede restringir un proyecto
de usar el código fuente porque es comercial, o porque está asociado con un campo de actividad que no
le gusta al proveedor de software.
Distribución de la licencia: no se necesita ninguna licencia adicional para usar y redistribuir
El software.
La licencia no debe ser específi ca de un producto: la licencia no puede restringir el código fuente a una
distribución de software en particular.
La licencia no debe restringir otro software: la licencia no puede impedir que alguien incluya el
software de código abierto en el mismo medio que el software de código abierto.
La licencia debe ser tecnológicamente neutral: La licencia no puede restringir los métodos en los que el
el código fuente se puede redistribuir.
Las licencias de código abierto utilizadas por los proyectos de desarrollo de software deben cumplir con estos
criterios para que OSI las acepte como software de código abierto. OSI acepta alrededor de 70 licencias diferentes
para etiquetar el software como "Software de código abierto certificado por OSI". Además de la GPL, otras licencias
populares aprobadas por OSI incluyen las siguientes:
LGPL: La Licencia pública general reducida de GNU (LGPL) se utiliza a menudo para distribuir
bibliotecas de las que dependen otros programas de aplicación.
BSD: la licencia de distribución de software de Berkeley permite la redistribución del código fuente, con el
requisito de que el código fuente conserve el aviso de derechos de autor de BSD y no use los nombres
de los contribuyentes para respaldar o promocionar software derivado sin permiso por escrito. Sin
embargo, una gran diferencia con GPL es que BSD no requiere que las personas modifiquen el código
para pasar esos cambios a la comunidad. Como resultado, los proveedores de software propietario como
Apple y Microsoft han utilizado el código BSD en sus propios sistemas operativos.
MIT: La licencia MIT es como la licencia BSD, excepto que no incluye el endoso
requisito de ment y promoción.
Mozilla: la licencia de Mozilla cubre el uso y la redistribución del código fuente asociado
asociado con el navegador web Firefox y otro software relacionado con el proyecto Mozilla
15
Machine Translated by Google
Parte I: Primeros pasos
(https://www.mozilla.org/enUS/). Es una licencia mucho más larga que las otras que acabamos de
mencionar porque contiene más definiciones de cómo deben comportarse los contribuyentes y los
que reutilizan el código fuente. Esto incluye enviar un archivo de cambios al enviar modificaciones y
que aquellos que hagan sus propias adiciones al código para su redistribución deben estar al tanto
de los problemas de patentes u otras restricciones asociadas con su código.
El resultado final del código fuente abierto es un software que tiene más fl exibilidad para crecer y menos
límites en la forma en que se puede usar. Muchos creen que el hecho de que numerosas personas revisen
el código fuente de un proyecto da como resultado un software de mayor calidad para todos. Como dice el
defensor del código abierto Eric S. Raymond en una línea citada a menudo: "Con suficientes ojos, todos los
errores son superficiales".
Comprender cómo surgieron las distribuciones de Linux
Tener paquetes de código fuente flotando en Internet que podrían compilarse y empaquetarse en un
sistema Linux funcionó bien para los geeks. Sin embargo, los usuarios ocasionales de Linux necesitaban
una forma más sencilla de armar un sistema Linux. Para responder a esa necesidad, algunos de los mejores
geeks comenzaron a crear sus propias distribuciones de Linux.
Una distribución de Linux consta de los componentes necesarios para crear un sistema Linux que funcione
y los procedimientos necesarios para instalar y ejecutar esos componentes. Técnicamente, Linux es
realmente lo que se conoce como kernel. Antes de que el kernel pueda ser útil, debe tener otro software,
como comandos básicos (utilidades GNU), servicios que desea ofrecer (como inicio de sesión remoto o
servidores web) y posiblemente una interfaz de escritorio y aplicaciones gráficas. Luego debe poder reunir
todo eso e instalarlo en el disco duro de su computadora.
Slackware (http://www.slackware.com) es una de las distribuciones de Linux más antiguas que aún se
admite en la actualidad. Hizo que Linux fuera amigable para usuarios menos técnicos al distribuir software
ya compilado y agrupado en paquetes. (Esos paquetes de componentes de software estaban en un formato
llamado tarballs). Luego, usaría los comandos básicos de Linux para hacer cosas como formatear su disco,
habilitar el intercambio y crear cuentas de usuario.
En poco tiempo, se crearon muchas otras distribuciones de Linux. Algunas distribuciones de Linux se
crearon para satisfacer necesidades especiales, como KNOPPIX (un Linux CD en vivo), Gentoo (un Linux
personalizable genial) y Mandrake (más tarde llamado Mandriva, que fue una de varias distribuciones de
Linux de escritorio). Pero dos distribuciones principales se convirtieron en la base de muchas otras
distribuciones: Red Hat Linux y Debian.
Elegir una distribución de Red Hat
Cuando apareció Red Hat Linux a fines de la década de 1990, se convirtió rápidamente en la distribución de
Linux más popular por varias razones:
Administración de paquetes RPM: los tarballs están bien para colocar software en su computadora, pero
no funcionan tan bien cuando desea actualizar, eliminar o incluso averiguar
dieciséis
Machine Translated by Google
Capítulo 1: Comenzando con Linux
sobre ese software. Red Hat creó el formato de paquete RPM para que un paquete de software pudiera
contener no solo los archivos que se iban a compartir, sino también información sobre la versión del paquete,
quién lo creó, qué archivos eran de documentación o de configuración y cuándo se creó. . Al instalar software
empaquetado en formato RPM, puede almacenar esa información sobre cada paquete de software en una base
de datos RPM local. 1
Se volvió fácil encontrar lo que estaba instalado, actualizarlo o eliminarlo.
Instalación simple: el instalador de Anaconda simplificó mucho la instalación de Linux.
Como usuario, puede seguir algunas preguntas simples, en la mayoría de los casos aceptando los valores
predeterminados, para instalar Red Hat Linux.
Administración gráfica: Red Hat agregó herramientas gráficas simples para configurar impresoras, agregar usuarios,
establecer fecha y hora y realizar otras tareas administrativas básicas. Como resultado, los usuarios de escritorio
podían usar un sistema Linux sin siquiera tener que ejecutar comandos.
Durante años, Red Hat Linux fue la distribución de Linux preferida tanto por los profesionales como por los entusiastas
de Linux. Red Hat, Inc., entregó el código fuente, así como las versiones compiladas y listas para ejecutar de Red Hat
Linux (conocidas como binarios). Pero a medida que las necesidades de los usuarios de la comunidad de Linux y los
clientes importantes comenzaron a separarse, Red Hat abandonó Red Hat Linux y comenzó a desarrollar dos sistemas
operativos en su lugar: Red Hat Enterprise Linux y Fedora.
Uso de Red Hat Enterprise Linux En
marzo de 2012, Red Hat, Inc., se convirtió en la primera empresa de software de código abierto en generar más de mil
millones de dólares en ingresos anuales. Logró ese objetivo mediante la creación de un conjunto de productos en torno
a Red Hat Enterprise Linux (RHEL) que satisfaría las necesidades de los entornos informáticos empresariales más
exigentes. Después de expandir su línea de productos para incluir muchos componentes de computación en la nube
híbrida, IBM compró Red Hat en julio de 2019 por $ 34 mil millones.
Mientras que otras distribuciones de Linux se enfocaban en sistemas de escritorio o computación para pequeñas
empresas, RHEL trabajó en aquellas características necesarias para manejar aplicaciones de misión crítica para
grandes empresas y gobiernos. Desarrolló sistemas que podían acelerar las transacciones para los intercambios s
financieros más grandes del mundo y se implementaron como clústeres y hosts virtuales.
En lugar de solo vender RHEL, Red Hat ofrece un ecosistema de beneficios que los clientes de Linux pueden aprovechar.
Para usar RHEL, los clientes compran suscripciones que pueden usar para implementar cualquier versión de RHEL que
deseen. Si dan de baja un sistema RHEL, pueden usar la suscripción para implementar otro sistema.
Hay diferentes niveles de soporte disponibles para RHEL, según las necesidades del cliente. Los clientes pueden estar
seguros de que, junto con el soporte, pueden obtener hardware y software de terceros certificados para funcionar con
RHEL. Pueden obtener consultores e ingenieros de Red Hat para ayudarlos a armar los entornos informáticos que
necesitan. También pueden obtener capacitación y exámenes de certificación para sus empleados (consulte la discusión
sobre la certificación RHCE más adelante en este capítulo).
17
Machine Translated by Google
Parte I: Primeros pasos
Red Hat también ha agregado otros productos como extensiones naturales de Red Hat Enterprise Linux.
JBoss es un producto de middleware para implementar aplicaciones basadas en Java en Internet o intranets de
empresas. Red Hat Virtualization comprende los hosts de virtualización, los administradores y las computadoras
invitadas que le permiten instalar, ejecutar, administrar, migrar y desmantelar enormes entornos informáticos
virtuales.
En los últimos años, Red Hat ha ampliado su cartera a la computación en la nube. Red Hat
OpenStack Platform y Red Hat Virtualization ofrecen plataformas completas para ejecutar y administrar
máquinas virtuales. Sin embargo, la tecnología con el mayor impacto en los últimos años es Red Hat
OpenShift, que proporciona un paquete de software de nube híbrida que tiene como base Kuber netes, el
proyecto de plataforma de orquestación de contenedores más popular. Con la adquisición de Red Hat, IBM se
ha fijado el objetivo de contener la mayoría de sus aplicaciones para que se ejecuten en OpenShift.
Hay quienes han intentado clonar RHEL, utilizando el código fuente de RHEL disponible gratuitamente,
reconstruyéndolo y renombrándolo. Oracle Linux está construido a partir del código fuente de RHEL, pero
actualmente ofrece un kernel incompatible. CentOS es una distribución de Linux patrocinada por la comunidad
que se crea a partir del código fuente de RHEL. Recientemente, Red Hat se hizo cargo del soporte del proyecto CentOS.
'
Elegí usar Red Hat Enterprise Linux para muchos de los ejemplos de este libro porque,
Si desea una carrera trabajando en sistemas Linux, existe una gran demanda de aquellos que pueden
administrar sistemas RHEL. Sin embargo, si está comenzando con Linux, Fedora puede proporcionar un
excelente punto de entrada a las mismas habilidades que necesita para usar y administrar sistemas RHEL.
Uso de Fedora
Si bien RHEL es la distribución de Linux comercial, estable y compatible, Fedora es la distribución de Linux
gratuita y de vanguardia patrocinada por Red Hat, Inc. Fedora es el sistema Linux que Red Hat utiliza para
involucrar a la comunidad de desarrollo de Linux y Animo a los que quieran un Linux libre para uso personal y
rápido desarrollo.
Fedora incluye decenas de miles de paquetes de software, muchos de los cuales se mantienen actualizados
con la última tecnología de código abierto disponible. Como usuario, puede probar las últimas interfaces
administrativas, de escritorio y de servidor de Linux en Fedora de forma gratuita. Como desarrollador de
software, puede crear y probar sus aplicaciones utilizando las últimas herramientas de desarrollo y kernel de Linux.
Debido a que el enfoque de Fedora está en la última tecnología, se enfoca menos en la estabilidad. Por lo
tanto, espere que necesite hacer un trabajo adicional para que todo funcione y que no todo el software esté
completamente horneado.
Le recomiendo que utilice Fedora o RHEL para la mayoría de los ejemplos de este libro por las siguientes
razones:
■ Fedora se utiliza como campo de pruebas para Red Hat Enterprise Linux. Red Hat prueba muchas
aplicaciones nuevas en Fedora antes de enviarlas a RHEL. Al usar Fedora, aprenderá las
habilidades que necesita para trabajar con funciones a medida que se desarrollan para Red Hat
Enterprise Linux.
18
Machine Translated by Google
Capítulo 1: Comenzando con Linux
■ Para el aprendizaje, Fedora es más conveniente que RHEL, y aun así incluye muchas de las
herramientas más avanzadas y listas para la empresa que se encuentran
en RHEL. ■ Fedora es gratis, no solo como “libertad”, sino también como “no tienes que hacerlo”.
paga por ello."
Fedora es extremadamente popular entre quienes desarrollan software de código abierto. Sin embargo, en los
1
últimos años, otra distribución de Linux ha captado la atención de muchas personas que comienzan con Linux: Ubuntu.
Elegir Ubuntu u otra distribución de Debian Al igual que Red Hat Linux, la distribución
Debian GNU/Linux fue una de las primeras distribuciones de Linux que sobresalió en el empaquetado y la
administración de software. Debian usa el formato y las herramientas de empaquetado deb para administrar todos los
paquetes de software en sus sistemas. Debian también tiene una reputación de estabilidad.
Muchas distribuciones de Linux pueden rastrear sus raíces hasta Debian. Según DistroWatch (https://distrowatch.com),
más de 130 distribuciones activas de Linux se remontan a Debian. Las distribuciones populares basadas en Debian
incluyen Linux Mint, Elementary OS, Zorin OS, LXLE, Kali Linux y muchas otras. Sin embargo, el derivado de Debian
que ha tenido más éxito es Ubuntu (https://ubuntu.com).
Al confiar en el desarrollo y empaquetamiento estables del software Debian, la distribución de Ubuntu Linux
(patrocinada por Canonical Ltd.) fue capaz de incorporar las características que le faltaban a Debian. En la búsqueda
de traer nuevos usuarios a Linux, el proyecto Ubuntu agregó un instalador gráfico simple y herramientas gráficas fáciles
de usar. También se centró en los sistemas de escritorio con todas las funciones y, al mismo tiempo, seguía ofreciendo
paquetes de servidores populares.
Ubuntu también fue un innovador en la creación de nuevas formas de ejecutar Linux. Usando CD en vivo o unidades USB
en vivo que ofrece Ubuntu, puede tener Ubuntu en funcionamiento en solo unos minutos.
A menudo, los CD en vivo incluían aplicaciones de código abierto, como navegadores web y procesadores de texto,
que en realidad se ejecutaban en Windows. Esto facilitó la transición a Linux desde Windows para algunas personas.
Si estás usando Ubuntu, no temas. La mayor parte del tema tratado en este libro funcionará tan bien en Ubuntu como en
Fedora o RHEL.
Encontrar oportunidades profesionales con Linux hoy
Si desea desarrollar una idea para un proyecto de investigación relacionado con la informática o una empresa de
tecnología, ¿por dónde empieza? Empiezas con una idea. Después de eso, busca las herramientas que necesita para
explorar y eventualmente crear su visión. Luego buscas a otros para que te ayuden durante ese proceso de creación.
Hoy en día, los costos directos de iniciar una empresa como Google o Facebook incluyen solo una computadora,
una conexión a Internet y suficiente bebida con cafeína de su elección para
19
Machine Translated by Google
Parte I: Primeros pasos
mantenerte despierto toda la noche escribiendo código. Si tiene su propia idea que cambiará el mundo,
Linux y miles de paquetes de software están disponibles para ayudarlo a construir sus sueños. El mundo
del código abierto también incluye comunidades de desarrolladores, administradores y usuarios que están
disponibles para ayudarlo.
Si desea involucrarse en un proyecto de código abierto existente, los proyectos siempre buscan
personas para escribir código, probar software o escribir documentación. En esos proyectos, encontrará
personas que usan el software, trabajan en ese software y, por lo general, también están dispuestas a
compartir su experiencia para ayudarlo.
Ya sea que busque desarrollar el próximo gran proyecto de software de código abierto, o simplemente
quiera adquirir las habilidades necesarias para competir por los miles de puestos de desarrollo o
administrador de Linux bien pagados, le ayudará a saber cómo instalar, asegurar, y mantener los sistemas
Linux.
En marzo de 2020, Indeed.com incluyó más de 60 000 trabajos que requerían conocimientos de Linux.
Casi la mitad de los que se ofrecen pagan $ 100,000 por año o más. Sitios como Fossjobs.net proporcionan
un lugar para publicar y encontrar trabajos relacionados con Linux y otras habilidades de software libre y
de código abierto.
El mensaje que se debe extraer de estos sitios de trabajo es que Linux continúa creciendo y
creando demandas de experiencia en Linux. Las empresas que han comenzado a usar Linux han seguido
avanzando con él. Aquellos que usan Linux continúan expandiendo su uso y descubren que el ahorro de
costos, la seguridad y la fl exibilidad que ofrece continúan haciendo de Linux una buena inversión.
Comprender cómo las empresas ganan dinero con Linux Los entusiastas del código
abierto creen que un mejor software puede resultar de un modelo de desarrollo de software de código
abierto que de modelos de desarrollo propietarios. Por lo tanto, en teoría, cualquier empresa que cree
software para su propio uso puede ahorrar dinero sumando sus contribuciones de software a las de otros
para obtener un producto final mucho mejor.
Las empresas que quieren ganar dinero vendiendo software deben ser más creativas que en los viejos
tiempos. Aunque puede vender el software que crea, que incluye el software GPL, debe transmitir el
código fuente de ese software. Por supuesto, otros pueden volver a compilar ese producto, básicamente
usando e incluso revendiendo su producto sin cargo. Aquí hay algunas formas en que las empresas están
lidiando con ese problema:
Suscripciones de software: Red Hat, Inc., vende sus productos Red Hat Enterprise Linux por
suscripción. Por una cierta cantidad de dinero al año, obtiene código binario para ejecutar Linux
(para que no tenga que compilarlo
el hardware
usted myismo),
el software
soporte
en
gsarantizado,
u computadora,
herramientas
acceso ap lara
a base
rastrear
de
'
conocimiento de la compañía, y otros activos. s
'
Aunque Red Hat El proyecto Fedora incluye gran parte del mismo software y también es
está disponible en forma binaria, no hay garantías asociadas con el software o
20
Machine Translated by Google
Capítulo 1: Comenzando con Linux
futuras actualizaciones de ese software. Una pequeña oficina o un usuario personal puede correr el
riesgo de usar Fedora (que en sí mismo es un excelente sistema operativo), pero una gran empresa que
está ejecutando aplicaciones de misión crítica probablemente invertirá unos cuantos dólares en RHEL.
Capacitación y certificación: con el aumento del uso del sistema Linux en el gobierno y las grandes 1
negocio, se necesitan profesionales para dar soporte a esos sistemas. Red Hat ofrece cursos de capacitación
y exámenes de certificación para ayudar a los administradores de sistemas a dominar el uso de los sistemas
Red Hat Enterprise Linux. En particular, las certificaciones Red Hat Certifi ed Engineer (RHCE) y Red Hat
Certifi ed System Administrator (RHCSA) se han vuelto populares (https://www.redhat.com/en/services/
trainingandcertification/why obtener la certificación). Más información sobre las certificaciones RHCE/
RHCSA más adelante en este capítulo.
Linux Professional Institute (https://www.lpi.org) y CompTIA (wwww.comptia.org/) ofrecen otros programas de
certificación. LPI y CompTIA son asociaciones profesionales de la industria informática.
Recompensas: Las recompensas de software son una forma fascinante para que las empresas de software de
código abierto ganen dinero. Suponga que está utilizando el paquete de software XYZ y necesita una nueva
función de inmediato. Al pagar una recompensa de software al proyecto en sí o a otros desarrolladores de
software, puede hacer que las mejoras requeridas se muevan al principio de la cola. El software que paga
permanecerá cubierto por su licencia de código abierto, pero tendrá las funciones que necesita, probablemente
a una fracción del costo de construir el proyecto desde cero.
Donaciones: Muchos proyectos de código abierto aceptan donaciones de individuos o abren
empresas de origen que utilizan código de sus proyectos. Sorprendentemente, muchos proyectos de
código abierto apoyan a uno o dos desarrolladores y funcionan exclusivamente con donaciones.
Juegos en caja, tazas y camisetas: algunos proyectos de código abierto tienen tiendas en línea donde puede
comprar juegos en caja (a algunas personas todavía les gustan los DVD físicos y las copias impresas de la
documentación) y una variedad de tazas, camisetas, alfombrillas de ratón, etc. y otros artículos. Si realmente
amas un proyecto, por el amor de Dios, ¡cómprate una camiseta!
Esta no es una lista exhaustiva, porque cada día se inventan formas más creativas para apoyar a quienes crean
software de código abierto. Recuerde que muchas personas se han convertido en colaboradores y mantenedores
de software de código abierto porque ellos mismos necesitaban o querían el software. Las contribuciones que hacen
gratis valen el retorno que obtienen de otros que hacen lo mismo.
Obtención de la certificación Red Hat Aunque
este libro no se centra en obtener la certificación en Linux, aborda las actividades que debe dominar para aprobar
los exámenes de certificación de Linux más populares. En
21
Machine Translated by Google
Parte I: Primeros pasos
En particular, la mayor parte de lo que se cubre en los exámenes Red Hat Certifi ed Engineer (RHCE) y Red
Hat Certifi ed System Administrator (RHCSA) para Red Hat Enterprise Linux 8 se describe en este libro.
Si está buscando trabajo como profesional de TI de Linux, la certificación RHCSA o RHCE a menudo se incluye
como requisito, o al menos como preferencia, para el empleo. El examen RHCSA (EX200) brinda una
certificación básica que cubre temas como la configuración de discos y sistemas de archivos, la adición de
usuarios, la configuración de un servidor Web y FTP simple y la adición de espacio de intercambio. El examen
RHCE (EX300) evalúa una configuración de servidor más avanzada, así como un conocimiento avanzado de
funciones de seguridad, como SELinux y cortafuegos.
Aquellos de nosotros que hemos impartido cursos de RHCE/RHCSA y dado exámenes (como lo hice yo
durante tres años) no podemos decirle exactamente qué hay en el examen. Sin embargo, Red Hat brinda
una descripción general de cómo funcionan los exámenes, así como una lista de temas que puede esperar
que se cubran en el examen. Puede encontrar esos objetivos de examen en los siguientes sitios:
RHCSA
https://redhat.com/en/services/training/ex200redhatcertified
administradordelsistemarhcsaexamen
RHCE
https://redhat.com/en/services/training/ex294redhatingenierocertificadorhceexamredhat
enterpriselinux8
Como indican los objetivos del examen, los exámenes RHCSA y RHCE se basan en el rendimiento, lo que
significa que se le asignan tareas que debe realizar y debe realizarlas en un sistema Red Hat Enterprise
Linux real, como lo haría en el trabajo. Se le califica según qué tan bien obtuvo los resultados de esas tareas.
Si planea realizar los exámenes, vuelva a consultar las páginas de objetivos del examen con frecuencia porque
cambian de vez en cuando. También tenga en cuenta que la RHCSA es una certificación independiente; sin
embargo, debe aprobar los exámenes RHCSA y RHCE para obtener una certificación RHCE. A menudo, los dos
exámenes se dan el mismo día.
Puede inscribirse en la capacitación y los exámenes de RHCSA y RHCE en https://redhat.com/en/services/
trainingandcertification. La capacitación y los exámenes se brindan en las principales ciudades de los
Estados Unidos y en todo el mundo. Las habilidades que necesita para completar estos exámenes se
describen en las siguientes secciones.
Temas de RHCSA
Como se mencionó anteriormente, los temas del examen de RHCSA cubren las habilidades básicas de administración del
sistema. Estos son los temas actuales enumerados para Red Hat Enterprise Linux 8 en el sitio de objetivos del examen
RHCSA (nuevamente, consulte el sitio de objetivos del examen en caso de que cambien) y en qué parte de este libro puede
obtener información sobre ellos:
Comprender las herramientas esenciales: se espera que tenga un conocimiento práctico de las
shell de comandos (bash), incluido cómo usar la sintaxis de comandos adecuada y cómo ingresar /
22
Machine Translated by Google
Capítulo 1: Comenzando con Linux
redirección de salida (< > >>). Necesita saber cómo iniciar sesión en sistemas remotos y locales. Espere tener
que crear, editar, mover, copiar, vincular, eliminar y cambiar el permiso y la propiedad de los archivos. Asimismo,
debe saber cómo buscar información en las páginas man y /usr/share/doc. La mayoría de estos temas se tratan
en el Capítulo 3 y el Capítulo 4 de este libro. El Capítulo 5 describe cómo editar y buscar archivos.
1
Operar sistemas en ejecución: en esta categoría, debe comprender el proceso de inicio de Linux y cómo apagar,
reiniciar y cambiar a diferentes objetivos (anteriormente llamados niveles de ejecución). Debe identificar procesos
y eliminar procesos según lo solicitado. Debe poder encontrar e interpretar archivos de registro. El Capítulo 15
describe cómo cambiar los objetivos y administrar los servicios del sistema. Consulte el Capítulo 6 para obtener
información sobre la gestión y el cambio de procesos. El registro se describe en el Capítulo 13 .
Configure el almacenamiento local: la configuración de particiones de disco incluye la creación de volúmenes físicos
y su configuración para que se usen para la administración de volúmenes lógicos (LVM) o el cifrado (LUKS).
También debería poder configurar esas particiones como sistemas de archivos o espacio de intercambio que se
puede montar o habilitar en el momento del arranque. El particionamiento del disco y LVM se tratan en el Capítulo
12 . LUKS y otros temas de cifrado se describen en el Capítulo , "Comprensión de la seguridad avanzada de Linux".
tener 23
Cree y configure sistemas de archivos: cree y monte automáticamente diferentes tipos de sistemas de archivos,
incluidos los sistemas de archivos regulares de Linux (ext2, ext3 o ext4) y los sistemas de archivos de red (NFS).
Cree directorios colaborativos utilizando la función de conjunto de bits de ID de grupo.
También debe poder utilizar LVM para ampliar el tamaño de un volumen lógico. Los temas del sistema de
archivos se tratan en el Capítulo 12 . Consulte el Capítulo 20 para conocer la cobertura de NFS.
Implementar, configurar y mantener sistemas: Esto cubre una variedad de temas, que incluyen
configurar redes y crear tareas cron. Para paquetes de software, debe poder instalar paquetes desde Red Hat
Content Delivery Network (CDN), un repositorio remoto o el sistema de archivos local. La función cron se describe
en el Capítulo 13 .
Administrar usuarios y grupos: debe saber cómo agregar, eliminar y cambiar cuentas de usuarios y grupos. Otro
tema que debes conocer es la caducidad de la contraseña, utilizando el comando chage. Consulte el Capítulo
11 para obtener información sobre la configuración de usuarios y grupos.
Administrar la seguridad: debe tener conocimientos básicos sobre cómo configurar un cortafuegos
(firewalld, systemconfigfirewall o iptables) y cómo usar SELinux.
Debe poder configurar SSH para realizar la autenticación basada en claves. Aprenda sobre SELinux en el Capítulo
24 . Los cortafuegos se tratan en el Capítulo 25 . El Capítulo 13 incluye una descripción de la autenticación basada
en claves.
La mayoría de estos temas están cubiertos en este libro. Consulte la documentación de Red Hat (https://access.redhat.com/
documentation) bajo el encabezado Red Hat Enterprise Linux para obtener descripciones de funciones que no se encuentran
en este libro. En particular, las guías de administración del sistema contienen descripciones de muchos de los temas
relacionados con RHCSA.
Temas de RHCE
Los temas del examen de RHCE cubren una configuración de servidor más avanzada, junto con una variedad de
características de seguridad para proteger esos servidores en Red Hat Enterprise Linux 8. Nuevamente, verifique la
23
Machine Translated by Google
Parte I: Primeros pasos
Sitio de objetivos del examen RHCE para obtener la información más actualizada sobre los temas que debe estudiar
para el examen.
Configuración y gestión del sistema
El requisito de administración y configuración del sistema para el examen RHCE cubre una variedad de temas,
incluidos los siguientes:
Cortafuegos: bloquee o permita el tráfico a puertos seleccionados en su sistema que ofrecen servicios
como web, FTP y NFS, así como bloquear o permitir el acceso a servicios basados en la dirección IP del
originador. Los cortafuegos se tratan en el Capítulo 25, "Asegurar Linux en una red".
Autenticación Kerberos: use Kerberos para autenticar a los usuarios en un sistema RHEL.
Informes del sistema: use funciones como sar para informar sobre el uso del sistema de la memoria, el disco
acceso, tráfico de red y utilización del procesador. El Capítulo 13 describe cómo usar el comando sar.
Scripts de shell: Cree un script de shell simple para tomar entradas y producir salidas de varias maneras.
Shell scripting se describe en el Capítulo 7 .
SELinux: con Security Enhanced Linux en el modo Enforcing, asegúrese de que todas las configuraciones de
servidor descritas en la siguiente sección estén debidamente protegidas con SELinux.
SELinux se describe en el Capítulo 24 .
Ansible: comprenda los componentes principales de Ansible (inventarios, módulos, playbooks, etc.). Ser capaz
de instalar y configurar un nodo de control Ansible. Trabaje con roles de Ansible y use funciones avanzadas
de Ansible. Consulte el Capítulo 29 para obtener información sobre el uso de playbooks de Ansible para
instalar y administrar sistemas Linux.
Instalación y configuración de servicios de red Para
cada uno de los servicios de red de la lista siguiente, asegúrese de que puede seguir los pasos para instalar los
paquetes requeridos por el servicio, configurar SELinux para permitir el acceso al servicio, configurar el servicio para
que se inicie en el arranque tiempo, asegure el servicio por host o por usuario (usando iptables o características
provistas por el propio servicio), y configúrelo para operación básica.
Estos son los servicios:
Servidor web: Configure un servidor Apache (HTTP/HTTPS). Debe poder configurar un host virtual,
implementar un script CGI, usar directorios privados y permitir que un grupo de Linux en particular
administre el contenido. El Capítulo 17 describe cómo configurar un servidor web.
Servidor DNS: configure un servidor DNS (paquete de enlace) para que actúe como un servidor de nombres solo de almacenamiento en caché
que puede reenviar consultas DNS a otro servidor DNS. No es necesario configurar zonas maestras o
esclavas. El DNS se describe desde el lado del cliente en el Capítulo 14 . Para obtener información sobre
cómo configurar un servidor DNS con Bind, consulte la Guía de redes de RHEL en https://access.redhat.com/
documentation/enus/red_hat_enter prise_linux/7/htmlsingle/networking_guide/index
24
Machine Translated by Google
Capítulo 1: Comenzando con Linux
Servidor NFS: Configure un servidor NFS para compartir directorios específi cos con sistemas de clientes
específi cos para que puedan usarse para la colaboración en grupo. El Capítulo 20 cubre NFS.
Servidor de uso compartido de archivos de Windows: configure Linux (Samba) para proporcionar recursos compartidos de SMB a hosts
y usuarios específi cos. Configure los recursos compartidos para la colaboración en grupo. Consulte el Capítulo 19 para obtener
información sobre la configuración de Samba. 1
Servidor de correo: Configure postfix o sendmail para aceptar correo entrante desde fuera de
el anfitrión local. Retransmitir correo a un host inteligente. La configuración del servidor de correo no se
trata en este libro (y no debe hacerse a la ligera). Consulte la Guía del administrador del sistema RHEL s
para obtener información sobre la configuración de servidores de correo en:
https://access.redhat.com/documentation/enus/red_hat_enter prise_linux/7/htmlsingle/
system_administrators_guide/index#ch Mail_Servers
Servidor Secure Shell: configure el servicio SSH (sshd) para permitir el inicio de sesión remoto en su sistema
local, así como la autenticación basada en claves. De lo contrario, configure el archivo sshd.conf según sea
necesario. El Capítulo 13 describe cómo configurar el servicio sshd.
Servidor de tiempo de red: configure un servidor de protocolo de tiempo de red (ntpd) para sincronizar el tiempo
con otros pares NTP.
Servidor de base de datos: Configure la base de datos MariaDB y adminístrela de varias maneras. Aprenda a
configurar MariaDB desde el sitio MariaDB.org (https://mariadb.com/kb/en/library/documentation/).
Aunque hay otras tareas en el examen RHCE, como se acaba de señalar, tenga en cuenta que la mayoría de las
tareas requieren que configure servidores y luego los asegure usando cualquier técnica que necesite. Estos pueden
incluir reglas de cortafuegos (iptables), SELinux o cualquier función integrada en los archivos de configuración para el
servicio en particular.
Resumen
Linux es un sistema operativo creado por una comunidad de desarrolladores de software de todo el mundo,
liderada por su creador, Linus Torvalds. Se deriva originalmente del sistema operativo UNIX, pero ha crecido más
allá de UNIX en popularidad y poder a lo largo de los años.
La historia del sistema operativo Linux se puede rastrear desde los primeros sistemas UNIX que se
distribuyeron gratuitamente a las universidades y se mejoraron mediante iniciativas como Berkeley Software
Distribution (BSD). La Free Software Foundation ayudó a fabricar muchos de los componentes necesarios para
crear un sistema operativo similar a UNIX completamente libre. El kernel de Linux en sí era el último componente
importante necesario para completar el trabajo.
La mayoría de los proyectos de software de Linux están protegidos por un conjunto de licencias que se
encuentran bajo el paraguas de la Iniciativa de código abierto. La más destacada de ellas es la Licencia Pública
GNU (GPL). Estándares como Linux Standard Base y organizaciones y organizaciones Linux de clase mundial.
25
Machine Translated by Google
Parte I: Primeros pasos
(como Canonical Ltd. y Red Hat, Inc.) hacen posible que Linux siga siendo un sistema
operativo estable y productivo en el futuro.
Aprender los conceptos básicos de cómo usar y administrar un sistema Linux le será útil en
cualquier aspecto del trabajo con Linux. Los capítulos restantes proporcionan una serie de
ejercicios con los que puede poner a prueba su libro,
comprensión.
aprenderá
Por
mejor
eso,
cdon
urante
un sistema
el resto
Linux
del
frente a usted para que pueda trabajar con los ejemplos de cada capítulo y completar los
ejercicios con éxito.
El siguiente capítulo explica cómo empezar con Linux describiendo cómo obtener y usar un
sistema de escritorio Linux.
26
Machine Translated by Google
CAPÍTULO S
Creando lo perfecto
Escritorio Linux
EN ESTE CAPÍTULO
Comprender el sistema X Window y los entornos de escritorio
Ejecutar Linux desde una imagen de DVD en vivo
Navegando por el escritorio de GNOME 3
Agregar extensiones a GNOME 3
Usando Nautilus para administrar archivos en GNOME 3
Trabajando con el escritorio GNOME 2
Habilitación de efectos 3D en GNOME 2
todo en Linux, tienes opciones. Hay entornos de escritorio GNOME o KDE con todas las
Usar Linux
como so
funciones u seistema de escritorio
scritorios livianos dciario
omo es
LcXDE
ada vo
ez
Xmfce.
ás fácil
Hay de hacer todo
incluso el
más stimples
iempo. Aindependientes
l igual que con
gestores de ventanas.
Una vez que haya elegido un escritorio, descubrirá que casi todos los principales tipos de aplicaciones de escritorio que
tiene en un sistema Windows o Mac tienen aplicaciones equivalentes en Linux. Para las aplicaciones que no están
disponibles en Linux, a menudo puede ejecutar una aplicación de Windows en Linux utilizando software compatible con Windows.
El objetivo de este capítulo es familiarizarlo con los conceptos relacionados con los sistemas de escritorio Linux y brindarle
consejos para trabajar con un escritorio Linux. En este capítulo usted hace lo siguiente:
■ Recorra las funciones y tecnologías de escritorio que están disponibles en Linux ■
Recorra las principales funciones del entorno de escritorio GNOME ■ Obtenga consejos
y trucos para aprovechar al máximo su experiencia de escritorio GNOME
Para utilizar las descripciones de este capítulo, le recomiendo que tenga un sistema Fedora ejecutándose frente a usted.
Puede obtener Fedora de muchas maneras, incluidas las siguientes:
Ejecutar Fedora desde un medio en vivo Consulte el Apéndice A para obtener información sobre cómo descargar
y grabar la imagen en vivo de Fedora en un DVD o unidad USB para que pueda iniciarla en vivo y usarla
con este capítulo.
Instalación de Fedora de forma permanente Instale Fedora en su disco duro e inícielo desde allí (como se
describe en el Capítulo 9, “Instalación de Linux”).
27
Machine Translated by Google
Parte I: Primeros pasos
Debido a que la versión actual de Fedora usa la interfaz GNOME 3, la mayoría de los procedimientos
descritos en este capítulo funcionan con otras distribuciones de Linux que tienen disponible GNOME 3.
Si usa un sistema Red Hat Enterprise Linux más antiguo (RHEL 6 usa GNOME 2, pero RHEL 7 y RHEL
8 usan GNOME 3), agregué descripciones de GNOME 2 que también puede probar.
NOTA
Ubuntu cambió de su propio escritorio Unity como predeterminado a GNOME 3 con la versión 17.10. Unity todavía está disponible
para versiones más recientes, pero solo desde el repositorio Universe sin soporte mantenido por la comunidad.
Comprender la tecnología de escritorio de Linux
Los sistemas de escritorio de computadora modernos ofrecen ventanas gráficas, íconos y menús que se operan con
un mouse y un teclado. Si tiene menos de 40 años, podría pensar que no hay nada especial en eso. Sin embargo, los
primeros
sistemas
ajustados pLara
inux
no disponían
tareas de (interfaces
especiales gráficas.
por ejemplo, Además,
funcionar
como m uchos
un servidores
servidor web o uLn
inux
actuales
de aqrchivos)
servidor ue están
no tienen
software de escritorio instalado.
Casi todas las principales distribuciones de Linux que ofrecen interfaces de escritorio se basan en el sistema X
Window originalmente de la Fundación X.Org (http://www.x.org). El sistema X Window proporciona un marco en el que se
pueden construir diferentes tipos de entornos de escritorio o administradores de ventanas simples. Se está desarrollando un
reemplazo para X.Org llamado Wayland (http://wayland .freedesktop.org). Aunque Wayland es el servidor X predeterminado
para Fedora ahora, aún puede elegir X.Org en su lugar.
El sistema X Window (a veces llamado simplemente X) se creó antes de que existiera Linux, e incluso es anterior a
Microsoft Windows. Fue construido para ser un marco de escritorio ligero y en red.
X funciona en una especie de modelo cliente/servidor inverso. El servidor X se ejecuta en el sistema local y proporciona
una interfaz para su pantalla, mouse y teclado. Los clientes X (como procesadores de texto, reproductores de música y
visores de imágenes) se pueden iniciar desde el sistema local o desde cualquier sistema de su red al que el servidor X le dé
permiso para hacerlo.
X se creó en una época en que los terminales gráficos (clientes ligeros) simplemente administraban el teclado, el mouse
y la pantalla. Las aplicaciones, el almacenamiento en disco y la potencia de procesamiento estaban todos en
computadoras centralizadas más grandes. Por lo tanto, las aplicaciones se ejecutaban en máquinas más grandes, pero
se mostraban y administraban a través de la red en el cliente ligero. Más tarde, los clientes ligeros fueron reemplazados
por computadoras personales de escritorio. La mayoría de las aplicaciones cliente en las PC se ejecutaban localmente
utilizando la potencia de procesamiento local, el espacio en disco, la memoria y otras funciones de hardware, mientras que las
aplicaciones que no se iniciaban desde el sistema local no estaban permitidas.
X en sí proporciona un fondo gris liso y un simple cursor de ratón "X". No hay menús, paneles o íconos en una pantalla
X simple. Si tuviera que iniciar un cliente X (como una ventana de terminal o un procesador de textos), aparecería en la
pantalla X sin borde alrededor para mover, minimizar o cerrar la ventana. Esas características son agregadas por un
administrador de ventanas.
28
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Un administrador de ventanas agrega la capacidad de administrar las ventanas en su escritorio y, a menudo,
proporciona menús para iniciar aplicaciones y trabajar con el escritorio. Un entorno de escritorio completo
incluye un administrador de ventanas, pero también agrega menús, paneles y, por lo general, una interfaz de
programación de aplicaciones que se usa para crear aplicaciones que funcionan bien juntas.
Entonces, ¿cómo le ayuda la comprensión de cómo funcionan las interfaces de escritorio en Linux cuando
se trata de usar Linux? Estas son algunas de las formas:
■ Debido a que no se requieren entornos de escritorio Linux para ejecutar un sistema Linux, es
posible que se haya instalado un sistema Linux sin un escritorio. Es posible que solo ofrezca
una interfaz de línea de comandos de texto sin formato. Puede optar por agregar un escritorio más
tarde. Una vez instalado, puede elegir si desea iniciar el escritorio cuando se inicia la computadora o
iniciarlo según sea necesario.
■ Para un sistema Linux muy liviano, como uno destinado a ejecutarse en computadoras menos 2
potentes, puede elegir un administrador de ventanas eficiente, aunque menos rico en funciones
(como twm o fluxbox) o un entorno de escritorio liviano (como LXDE o Xfce).
■ Para computadoras más sólidas, puede elegir entornos de escritorio más potentes (como GNOME
y KDE) que pueden hacer cosas como observar eventos (como insertar una unidad flash USB) y
responder a esos eventos (como abrir una ventana para ver el contenido de la unidad).
■ Puede tener varios entornos de escritorio instalados y puede elegir cuál ejecutar cuando inicie
sesión. De esta forma, diferentes usuarios en la misma computadora pueden usar diferentes
entornos de escritorio.
Muchos entornos de escritorio diferentes están disponibles para elegir en Linux. Aquí hay unos ejemplos:
GNOME GNOME es el entorno de escritorio predeterminado para Fedora, Red Hat Enterprise
Linux, y muchos otros. Piense en ello como un entorno de escritorio profesional que se centra en la
estabilidad más que en los efectos sofisticados.
K Desktop Environment KDE es probablemente el segundo entorno de escritorio más popular para
Linux. Tiene más campanas y silbatos que GNOME y ofrece aplicaciones más integradas. KDE
también está disponible con Fedora, Ubuntu y muchos otros sistemas Linux. Para RHEL 8, KDE se
eliminó de la distribución.
Xfce El escritorio Xfce fue uno de los primeros entornos de escritorio livianos. Es
bueno para usar en computadoras más antiguas o menos potentes. Está disponible con Fedora,
Ubuntu y otras distribuciones de Linux.
LXDE El entorno de escritorio Lightweight X11 (LXDE) fue diseñado para ser un
entorno de escritorio de alto rendimiento y ahorro de energía. A menudo, LXDE se usa en dispositivos
menos costosos (como computadoras netbook) y en medios en vivo (como un CD en vivo o una
memoria USB en vivo). Es el escritorio predeterminado para la distribución de CD en vivo de KNOPPIX.
Aunque LXDE no se incluye con RHEL, puede probarlo con Fedora o Ubuntu.
29
Machine Translated by Google
Parte I: Primeros pasos
GNOME se diseñó originalmente para parecerse al escritorio de MacOS, mientras que KDE estaba destinado
a emular el entorno de escritorio de Windows. Debido a que es el entorno de escritorio más popular y el que
se usa con más frecuencia en los sistemas Linux empresariales, la mayoría de los procedimientos y ejercicios de
escritorio de este libro usan el escritorio GNOME. Sin embargo, el uso de GNOME aún le brinda la opción de
varias distribuciones de Linux diferentes.
Comenzando con la imagen de Fedora GNOME Desktop Live
Una imagen ISO de Linux en vivo es la forma más rápida de poner en marcha un sistema Linux para que pueda
comenzar a probarlo. Dependiendo de su tamaño, la imagen se puede grabar en un CD, DVD o unidad USB y
arrancar en su computadora. Con una imagen en vivo de Linux, puede hacer que Linux se haga cargo de la
operación de su computadora temporalmente sin dañar el contenido de su disco duro.
Si tiene instalado Windows, Linux simplemente lo ignora y toma el control de su computadora. Cuando haya
terminado con la imagen en vivo de Linux, puede reiniciar la computadora, sacar el CD o DVD y volver a ejecutar
el sistema operativo que estaba instalado en el disco duro.
Para probar un escritorio GNOME junto con las descripciones de esta sección, le sugiero que obtenga un Fedora
Live DVD (como se describe en el Apéndice A). Debido a que un DVD en vivo hace todo su trabajo desde el DVD
y en la memoria, funciona más lentamente que un sistema Linux instalado. Además, aunque puede cambiar
archivos, agregar software y configurar su sistema, de manera predeterminada, el trabajo que realiza desaparece
cuando reinicia, a menos que guarde explícitamente esos datos en su disco duro o almacenamiento externo.
El hecho de que los cambios que realice en el entorno en vivo desaparezcan al reiniciar es muy bueno para probar
Linux, pero no tan bueno si desea un sistema de escritorio o servidor continuo. Por esa razón, te recomiendo que
si tienes una computadora de repuesto, instales Linux permanentemente en esa computadora.
'
s disco duro para usar con el resto de este libro (como se describe en el Capítulo 9).
Una vez que tenga un CD o DVD en vivo a mano, haga lo siguiente para comenzar:
1. Obtenga una computadora. Si tiene una PC estándar (32 bits o 64 bits) con una unidad de CD/DVD,
al menos 1 GB de memoria (RAM) y al menos un procesador de 1 GHz, está listo para comenzar.
'
(Solo asegúrese de que la imagen que descargue coincida con la de su computadora: s arquitecto
un medio de 64 bits no se ejecuta en una computadora de 32 bits. Fedora 31 y RHEL 7 dejaron de
ser compatibles con 32 bits, por lo que necesitará versiones anteriores de esas distribuciones para
ejecutar en esas máquinas más antiguas).
2. Inicie el CD/DVD en vivo. Inserte el CD/DVD en vivo o la unidad USB en su computadora y reiníciela.
Según el orden de inicio establecido en su computadora, la imagen en vivo puede iniciarse directamente
desde el BIOS (el código que controla la computadora antes de que se inicie el sistema operativo).
30
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
NOTA
Si, en lugar de iniciar el medio en vivo, su sistema operativo instalado se inicia, debe realizar un paso adicional para iniciar el
CD/DVD en vivo. Reinicie nuevamente, y cuando vea la pantalla del BIOS, busque algunas palabras que digan algo como "Orden
de arranque". Las instrucciones en pantalla pueden indicar que presione la tecla F12 o F1. Presione esa tecla inmediatamente
desde la pantalla del BIOS. A continuación, debería ver una pantalla que muestra las selecciones disponibles. Resalte una entrada
para CD/DVD o unidad USB y presione Entrar para iniciar la imagen en vivo. Si no
la
ve
configuración
la unidad allí,
del
es
BpIOS
osible
y hqabilitar
ue deba
la a
ucceder
nidad da
e
CD/DVD o USB allí.
3. Inicie Fedora. Si la unidad seleccionada puede iniciarse, verá una pantalla de inicio. Para
Fedora, con Iniciar Fedora resaltado, presione Entrar para iniciar el medio en vivo.
4. Comience a usar el escritorio. Para Fedora, el medio en vivo le permite elegir entre instalar Fedora
o arrancarlo directamente desde el medio a un escritorio GNOME 3. 2
Ahora puede pasar a la siguiente sección, "Uso del escritorio GNOME 3" (que incluye información sobre el
uso de GNOME 3 en Fedora, Red Hat Enterprise Linux y otros sistemas operativos). Después de eso,
cubriré el escritorio GNOME 2.
Uso del escritorio GNOME 3
El escritorio GNOME 3 ofrece una desviación radical de sus contrapartes GNOME 2.x. GNOME 2. x es útil, pero
GNOME 3 es elegante. Con GNOME 3, un escritorio Linux ahora se parece más a las interfaces gráficas de los
dispositivos móviles, con menos énfasis en los múltiples botones del mouse y combinaciones de teclas y más
enfoque en el movimiento del mouse y las operaciones con un solo clic.
En lugar de sentirse estructurado y rígido, el escritorio GNOME 3 parece expandirse según lo necesite. A
medida que se ejecuta una nueva aplicación, su icono se agrega al Tablero. A medida que usa el siguiente
espacio de trabajo, se abre uno nuevo, listo para que coloque más aplicaciones.
Después de que la computadora arranque Si
arrancó una imagen en vivo, cuando llega al escritorio, se le asigna como usuario del sistema en vivo para
su nombre de usuario. Para un sistema instalado, verá la pantalla de inicio de sesión, con cuentas de usuario
en el sistema listas para que seleccione e ingrese una contraseña. Inicie sesión con el nombre de usuario y la
contraseña que haya definido para su sistema.
La Figura 2.1 es un ejemplo de la pantalla del escritorio de GNOME 3 que aparece en Fedora. Presione la
tecla de Windows (o mueva el cursor del mouse a la esquina superior izquierda del escritorio) para alternar
entre un escritorio en blanco y la pantalla de descripción general.
31
Machine Translated by Google
Parte I: Primeros pasos
FIGURA 2.1
Comenzando con el escritorio GNOME 3 en Fedora.
Hay muy poco en el escritorio de GNOME 3 cuando empiezas. La barra superior tiene la palabra
"Actividades" a la izquierda, un reloj en el medio y algunos íconos a la derecha para ajustar el volumen de
audio, verificar su conexión de red y ver el nombre del usuario actual. La pantalla Resumen es donde puede
seleccionar abrir aplicaciones, ventanas activas o diferentes espacios de trabajo.
Navegando con el ratón
Para comenzar, intente navegar por el escritorio de GNOME 3 con el mouse:
1. Alternar actividades y ventanas. Mueva el cursor del mouse a la esquina superior izquierda de la
pantalla cerca del botón Actividades. Cada vez que se mueve allí, su pantalla cambia para
mostrarle las ventanas que está usando activamente y un conjunto de actividades disponibles.
(Esto tiene el mismo efecto que presionar la tecla de Windows).
2. Abra ventanas desde la barra de aplicaciones. Haga clic para abrir algunas aplicaciones desde el
Guión a la izquierda (Firefox, File Manager, Rhythmbox u otros). Mueva el mouse a la esquina
superior izquierda nuevamente y alterne entre mostrar todas las ventanas activas minimizadas
(pantalla de descripción general) y mostrarlas superpuestas (tamaño completo). La figura 2.2
muestra un ejemplo de la vista de ventanas en miniatura.
3. Abra las aplicaciones de la lista de aplicaciones. En la pantalla Resumen, seleccione el
Botón de aplicación de la parte inferior de la columna izquierda (el botón tiene nueve puntos en un
cuadro). La vista cambia a un conjunto de iconos que representan las aplicaciones instaladas en su
sistema, como se muestra en la Figura 2.3.
32
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
FIGURA 2.2
Mostrar todas las ventanas del escritorio minimizadas.
FIGURA 2.3
Muestra la lista de aplicaciones disponibles.
33
Machine Translated by Google
Parte I: Primeros pasos
4. Ver aplicaciones adicionales. Desde la pantalla Aplicaciones, puede cambiar la
ver sus aplicaciones de varias maneras, así como ejecutarlas de diferentes maneras:
a. Página a través. Para ver íconos que representan aplicaciones que no están en pantalla, use el mouse para
hacer clic en los puntos a la derecha para recorrer las aplicaciones. Si tiene un mouse con rueda, puede
usarlo en su lugar para desplazar los íconos. b. Frecuente. Seleccione el botón Frecuente en la parte inferior
de la pantalla para ver con frecuencia
ejecutar aplicaciones o el botón Todo para volver a ver todas las aplicaciones.
C. Lanzamiento de una aplicación. Para iniciar la aplicación que desea, haga clic izquierdo en su icono para
abrir la aplicación en el espacio de trabajo actual. Haga clic con el botón derecho para abrir un menú que le
permite elegir abrir una ventana nueva, agregar o eliminar la aplicación de Favoritos (para que el ícono de la
aplicación aparezca en el Tablero) o Mostrar
del menú.
detalles sobre la aplicación. La figura 2.4 muestra un ejemplo
FIGURA 2.4
Haga clic en el botón central del mouse para mostrar el menú de selección de una aplicación.
5. Abra aplicaciones adicionales. Inicie aplicaciones adicionales. Tenga en cuenta que cuando abre una nueva
aplicación, aparece un icono que representa esa aplicación en la barra de guión de la izquierda. Aquí hay otras
formas de iniciar aplicaciones:
a. icono de la aplicación. Haga clic en cualquier icono de aplicación para abrir esa aplicación. b.
Coloque los iconos de Dash en el espacio de trabajo. Desde la vista de Windows, puede arrastrar cualquier
icono de la aplicación desde el Tablero presionando y manteniendo presionado el botón izquierdo del
mouse sobre él y arrastrando ese icono a cualquiera de los espacios de trabajo en miniatura a la derecha.
6. Utilice múltiples espacios de trabajo. Mueva el mouse a la esquina superior izquierda nuevamente para mostrar una
vista minimizada de todas las ventanas. Observe todas las aplicaciones de la derecha atascadas en una pequeña
representación de un espacio de trabajo mientras que un espacio de trabajo adicional está vacío. Arrastre y suelte
algunas de las ventanas en un espacio de escritorio vacío. La figura 2.5 muestra el aspecto de los espacios de
trabajo pequeños. Observe que un vacío adicional
34
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
el espacio de trabajo se crea cada vez que se utiliza el último vacío. Puede arrastrar y soltar las ventanas en miniatura a
cualquier espacio de trabajo y luego seleccionar el espacio de trabajo para verlo.
FIGURA 2.5
A medida que se utilizan nuevos escritorios, aparecen otros adicionales a la derecha.
7. Utilice el menú de la ventana. Mueva el mouse a la esquina superior izquierda de la pantalla para regresar al espacio de
trabajo activo (vista de ventana grande). Haga clic derecho en la barra de título de una ventana para ver el menú de la
ventana. Pruebe estas acciones desde ese menú:
a. Minimizar. Retire la ventana temporalmente de la vista. b. Maximizar.
Ampliar la ventana al tamaño máximo. C. Mover. Cambia la ventana al modo
de movimiento. Al mover el mouse, se mueve la ventana.
Haga clic para fijar la ventana en un lugar.
d. Redimensionar Cambie la ventana al modo de cambio de tamaño. Al mover el mouse, se cambia el tamaño de
la ventana. Haga clic para mantener el tamaño.
mi. Selecciones de espacio de trabajo. Varias selecciones le permiten usar espacios de trabajo en diferentes
maneras. Seleccione Siempre visible para que la ventana actual siempre esté visible sobre otras ventanas en el área
de trabajo. Seleccione Siempre en el área de trabajo visible para mostrar siempre la ventana en el área de trabajo
que está visible, o seleccione Mover al área de trabajo hacia arriba o Mover al área de trabajo hacia abajo para mover
la ventana al área de trabajo arriba o abajo, respectivamente.
Si no se siente cómodo navegando por GNOME 3 con su mouse, o si no tiene un mouse, la siguiente sección lo ayudará
a navegar
por el escritorio desde el teclado.
35
Machine Translated by Google
Parte I: Primeros pasos
Navegando con el teclado
Si prefiere mantener las manos en el teclado, puede trabajar con el escritorio GNOME 3 directamente desde el teclado
de varias maneras, incluidas las siguientes:
clave de Windows. Presiona la tecla de Windows en el teclado. En la mayoría de los teclados de PC, esta es la
tecla con el logotipo de Microsoft Windows junto a la tecla Alt. Esto alterna las vistas de miniventana
(Descripción general) y ventana activa (área de trabajo actual). Mucha gente usa esta clave a menudo.
Seleccione diferentes vistas. Desde la vista de Windows o Aplicaciones, mantenga presionadas las teclas
Ctrl+Alt+Tab para ver un menú de las diferentes vistas (consulte la Figura 2.6). Manteniendo presionadas
las teclas Ctrl+Alt, presione Tab nuevamente para resaltar uno de los siguientes íconos del menú y suéltelo
para seleccionarlo:
FIGURA 2.6
Presione Ctrl+Alt+Tab para mostrar áreas de escritorio adicionales para seleccionar.
Barra superior. Resalta la barra superior. Después de seleccionarlo, puede tabular entre elementos en
esa barra (Actividades, Calendario y el menú Barra superior).
Estrellarse. Resalta la primera aplicación en la barra de aplicaciones de la izquierda. Use las teclas de
flecha para moverse hacia arriba y hacia abajo en ese menú y presione Entrar para abrir la aplicación
resaltada.
Ventanas. Selecciona la vista de Windows.
36
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Aplicaciones. Selecciona la vista Aplicaciones.
Buscar. Resalta el cuadro de búsqueda. Escriba algunas letras para mostrar solo los iconos de las
aplicaciones que contienen las letras que escribe. Cuando haya escrito suficientes letras para
identificar de manera única la aplicación que desea, presione Entrar para iniciar la aplicación.
Seleccione una ventana activa. Regrese a cualquiera de sus espacios de trabajo (presione la tecla de
Windows si aún no está en un espacio de trabajo activo). Presione Alt+Tab para ver una lista de todas
las ventanas activas (vea la Figura 2.7). Continúe presionando la tecla Alt mientras presiona la tecla
Tabulador (o las teclas de flecha derecha o izquierda) para resaltar la aplicación que desea de la lista
de ventanas de aplicaciones de escritorio activas. Si una aplicación tiene varias ventanas abiertas,
presione Alt+` (marca de verificación, ubicada arriba de la tecla Tabulador) para elegir entre esas
subventanas. Suelte la tecla Alt para seleccionarlo.
2
FIGURA 2.7
Presione Alt+Tab para seleccionar a qué aplicación en ejecución ir.
Inicie un comando o una aplicación. Desde cualquier espacio de trabajo activo, puede iniciar un
comando de Linux o una aplicación gráfica. Estos son algunos ejemplos: Aplicaciones. En la
pantalla de descripción general, presione Ctrl+Alt+Tab y continúe presionando Tab hasta que se
resalte el ícono Aplicaciones; luego suelte Ctrl+Alt. Aparece la vista Aplicaciones, con el primer
icono resaltado. Use la tecla Tabulador o las teclas de flecha (arriba, abajo, derecha e izquierda)
para resaltar el ícono de la aplicación que desea y presione Entrar.
Caja de comandos. Si conoce el nombre (o parte de un nombre) de un comando que desea
ejecutar, presione Alt+F2 para mostrar un cuadro de comando. Escriba el nombre del comando
que desea ejecutar en el cuadro (pruebe con gnomecalculator para abrir una aplicación de
calculadora, por ejemplo).
37
Machine Translated by Google
Parte I: Primeros pasos
Caja de búsqeda. En la pantalla de descripción general, presione Ctrl+Alt+Tab y continúe presionando
Tab hasta que se resalte el icono de la lupa (Buscar); luego suelte Ctrl+Alt. En el cuadro de búsqueda
s
pnara
ahora resaltado, escriba algunas letras en la descripción de una aplicación (escriba scr ombre
olo que
ver
obtiene). Siga escribiendo hasta que se resalte la aplicación que desea (en este caso, Captura de
pantalla) y presione Entrar para iniciarla.
Estrellarse. En la pantalla de descripción general, presione Ctrl+Alt+Tab y continúe presionando Tab
hasta que se resalte el icono de estrella (Guión); luego suelte Ctrl+Alt. Desde el Tablero, mueva las
flechas hacia arriba y hacia abajo para resaltar una aplicación que desee iniciar y presione Entrar.
Escapar. Cuando esté atascado en una acción que no desea completar, intente presionar la tecla Esc. Por
ejemplo, después de presionar Alt+F2 (para ingresar un comando), abrir un ícono desde la barra superior
o ir a una página de descripción general, presionar Esc lo regresa a la ventana activa en el escritorio
activo.
Espero que ahora se sienta cómodo navegando por el escritorio de GNOME 3. A continuación, puede
intentar ejecutar algunas aplicaciones de escritorio útiles y divertidas desde GNOME 3.
Configuración del escritorio de GNOME 3 Gran parte de
lo que necesita que GNOME 3 haga por usted se configura automáticamente. Sin embargo, debe realizar algunos
ajustes para obtener el escritorio de la forma que desea. La mayoría de estas actividades de configuración están
disponibles en la ventana Configuración del sistema (consulte la Figura 2.8). Abra el icono de Configuración de la
lista de aplicaciones.
FIGURA 2.8
Cambie la configuración del escritorio desde la ventana Configuración del sistema.
38
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Aquí hay algunas sugerencias para configurar un escritorio GNOME 3:
Configurar redes. Una conexión de red por cable a menudo se configura automáticamente cuando inicia su sistema
Fedora. Para la conexión inalámbrica, probablemente deba seleccionar su red inalámbrica y agregar una
contraseña cuando se le solicite. Un icono en la barra superior le permite realizar cualquier configuración de red
cableada o inalámbrica que necesite. Consulte el Capítulo 14, "Administración de redes", para obtener más
información sobre la configuración de redes.
Bluetooth. Si su computadora tiene hardware Bluetooth, puede habilitar ese dispositivo para
comunicarse con otros dispositivos Bluetooth (como un auricular Bluetooth o una impresora).
Dispositivos. Desde la pantalla Dispositivos, puede configurar su teclado, mouse y panel táctil, impresoras, medios
extraíbles y otras configuraciones.
Sonido. Haga clic en el botón Configuración de sonido para ajustar los dispositivos de entrada y salida de sonido en
tu sistema.
2
Extendiendo el escritorio GNOME 3
Si el shell de GNOME 3 no hace todo lo que desea, no se desespere. Puede agregar extensiones para proporcionar
funcionalidad adicional a GNOME 3. Además, una herramienta llamada GNOME Tweaks le permite cambiar la configuración
avanzada en GNOME 3.
Uso de las extensiones de shell de
GNOME Las extensiones de shell de GNOME están disponibles para cambiar la apariencia y el comportamiento de su
escritorio GNOME. Visite el sitio de extensiones de GNOME Shell (http://extensions.gnome.org) desde su navegador
Firefox en su escritorio GNOME 3. Ese sitio le dice qué extensiones ha instalado y cuáles están disponibles para que las
instale. (Debe seleccionar para permitir que el sitio vea esas extensiones).
Debido a que la página de extensiones sabe qué extensiones tiene y la versión de GNOME 3 que está ejecutando, puede
presentar solo aquellas extensiones que son compatibles con su sistema. Muchas de las extensiones lo ayudan a agregar
funciones de GNOME 2, incluidas las siguientes:
Menú de aplicaciones. Agrega un menú de aplicaciones al panel superior, tal como estaba
en GNOMO 2.
Indicador de estado de lugares. Agrega un menú de estado del sistema, similar al menú Lugares en GNOME 2,
para permitirle navegar rápidamente a carpetas útiles en su sistema.
Lista de ventanas. Agrega una lista de ventanas activas al panel superior, similar a la lista de ventanas
que aparecía en el panel inferior de GNOME 2.
Para instalar una extensión, simplemente seleccione el botón ON al lado del nombre. O bien, puede hacer clic en el nombre
de la extensión de la lista para ver la página de la extensión y hacer cACTIVADO.
lic en el botón
de ecsa
Haga lic peágina de DcESACTIVADO
n Instalar a
uando se le pregunte
si desea descargar e instalar la extensión. Luego, la extensión se agrega a su escritorio.
39
Machine Translated by Google
Parte I: Primeros pasos
La Figura 2.9 muestra un ejemplo de la lista de ventanas del menú de aplicaciones (que muestra varios íconos de
aplicaciones activas) y las extensiones del indicador de estado de lugares (con las carpetas que se muestran en
un menú desplegable) instaladas.
FIGURA 2.9
Las extensiones agregan funciones al escritorio de GNOME 3.
Más de 100 extensiones de shell de GNOME están disponibles ahora, y se agregan más todo el tiempo. Otras
extensiones populares incluyen Notifi cations Alert (que le avisa de los mensajes no leídos), Presentation Mode
(que evita que se active el salvapantallas cuando está dando una presentación) y Music Integration (que integra
reproductores de música populares en GNOME 3, de modo que recibe alertas sobre las canciones que se están
reproduciendo).
Debido a que el sitio de Extensiones puede realizar un seguimiento de sus extensiones, puede hacer clic en el
botón Extensiones instaladas en la parte superior de la página y ver todas las extensiones que están instaladas.
Puede activar y desactivar las extensiones desde allí e incluso eliminarlas de forma permanente.
Uso de la herramienta Tweak de
GNOME Si no
comportan
le gusta cómo
algunas
se de las características integradas de GNOME 3, puede cambiar muchas de ellas
con la herramienta Tweak de GNOME. Esta herramienta no está instalada de forma predeterminada con Fedora
GNOME Live CD, pero puede agregarla instalando el paquete gnometweaks. (Consulte el Capítulo 10,
"Obtención y en
administración
de software",
Fedora). Después para obtener
la hierramienta
de la instalación, nformación
Gsobre
cómo
NOME instalar
Tweak peaquetes
Tool de software
stá disponible
iniciando
el ícono de Configuración avanzada desde la pantalla de aplicaciones. Comience con la categoría Escritorio para
considerar lo que podría querer cambiar en GNOME 3. La Figura 2.10 muestra la herramienta Tweak Tool
mostrando la configuración de Apariencia.
40
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
FIGURA 2.10
Cambie la configuración del escritorio con la herramienta Tweak de GNOME (Configuración de apariencia).
Si las fuentes son demasiado pequeñas para usted, seleccione la categoría Fuentes y haga clic en el signo más junto al
cuadro Factor de escala para aumentar el tamaño de la fuente o cambiar las fuentes individualmente para documentos,
títulos de ventanas o fuentes monoespaciadas.
En la configuración de la barra superior, puede cambiar cómo se muestra la información del reloj en la barra
superior o establecer si desea mostrar el número de la semana en el calendario. Para cambiar el aspecto del
escritorio, seleccione la categoría Apariencia y cambie el tema Iconos y el tema GTK+ como desee en los
cuadros desplegables.
Comenzando con las aplicaciones de escritorio El Live
DVD de escritorio de GNOME 3 de Fedora viene con algunas aplicaciones geniales que puede comenzar a usar
de inmediato. Para usar GNOME 3 como su escritorio diario, debe instalarlo permanentemente en el editor de
'
imágenes de su computadora, adplicación
s de
isco duro dgregue
y a ibujo, etc.).
las aSplicaciones
i recién está
comenzando,
que las
necesita (un siguientes
procesador dse
ecciones
textos,
enumeran algunas aplicaciones interesantes para probar.
41
Machine Translated by Google
Parte I: Primeros pasos
Administrar archivos y carpetas con Nautilus
Para mover, copiar, eliminar, renombrar y organizar archivos y carpetas en GNOME 3, puede usar
el administrador de archivos de Nautilus. Nautilus viene con el escritorio GNOME y funciona como
otros administradores de archivos que puede usar en Windows o Mac.
Para abrir Nautilus, haga clic en el ícono de Archivos desde el Tablero de GNOME o la lista de Aplicaciones. Su
cuenta de usuario comienza con un conjunto de carpetas diseñadas para contener los tipos de contenido más
comunes: música, imágenes, videos y similares. Todos estos se almacenan en lo que se conoce como su
directorio de inicio. La figura 2.11 muestra Nautilus abierto en un directorio de inicio.
FIGURA 2.11
Administre archivos y carpetas desde la ventana de Nautilus.
Cuando desee guardar archivos que descargó de Internet o creó con un procesador de textos, puede organizarlos
en estas carpetas. Puede crear nuevas carpetas según sea necesario, arrastrar y soltar archivos y carpetas para
copiarlos y moverlos, y eliminarlos.
Debido a que Nautilus no es muy diferente de la mayoría de los administradores de archivos que ha usado
en otros sistemas informáticos, este capítulo no entra en detalles sobre cómo usar arrastrar y soltar y recorrer
carpetas para encontrar su contenido. Sin embargo, quiero hacer algunas observaciones que pueden no ser
obvias sobre cómo usar Nautilus:
Carpeta de inicio Tiene control total sobre los archivos y carpetas que crea en su carpeta de inicio. La
mayoría de las otras partes del sistema de archivos no son accesibles para usted como usuario regular.
Organización del sistema de archivos Aunque aparece bajo el nombre Home, su Home
La carpeta está realmente ubicada en el sistema de archivos bajo la carpeta /home en una carpeta llamada
42
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
después de su nombre de usuario: por ejemplo, /home/liveuser o /home/chris. En los próximos capítulos, aprenderá
cómo se organiza el sistema de archivos (especialmente en relación con el shell de comandos de Linux).
Trabajar con archivos y carpetas Haga clic con el botón derecho en un icono de archivo o carpeta para ver cómo puede
hacer algo al respecto. Por ejemplo, puede copiar, cortar, mover a la papelera (eliminar) o abrir cualquier icono de
archivo o carpeta.
Creación de carpetas Para crear una nueva carpeta, haga clic con el botón derecho en una ventana de carpeta y seleccione
Nueva carpeta. Escriba el nuevo nombre de la carpeta sobre la Carpeta sin título resaltada y presione Entrar para
nombrar la carpeta.
Acceso a contenido remoto Nautilus puede mostrar contenido de servidores remotos así como del sistema de archivos
local. En Nautilus, seleccione Otras ubicaciones en el menú de archivo. Desde el cuadro Conectar al servidor que
aparece, puede conectarse a un servidor remoto a través de SSH (shell seguro), FTP con inicio de sesión, FTP
público, recurso compartido de Windows, WebDav (HTTP) o WebDav seguro (HTTPS). Agregue la información 2
adecuada de usuario y contraseña según sea necesario, y el contenido del servidor remoto aparecerá en la ventana
de Nautilus. La Figura 2.12 muestra un ejemplo de una ventana de Nautilus que le solicita una contraseña para iniciar
sesión en un servidor remoto a través del protocolo SSH (ssh://192.168.122.81).
FIGURA 2.12
Acceda a carpetas remotas utilizando la función Nautilus Connect to Server.
Instalación y administración de software adicional Fedora Live
Desktop viene con un navegador web (Firefox), un administrador de archivos (Nautilus) y algunas otras aplicaciones comunes.
Sin embargo, hay muchas otras aplicaciones útiles que, debido a su tamaño, simplemente no caben en un CD en vivo. Si instala
la estación de trabajo Fedora en vivo en su disco
software.
duro (como se describe en el Capítulo 9), seguramente querrá agregar más
43
Machine Translated by Google
Parte I: Primeros pasos
NOTA
Puede intentar instalar el software si está ejecutando el medio en vivo. Sin embargo, tenga en cuenta que debido a que el
espacio grabable en un medio en vivo usa memoria virtual (RAM), ese espacio es limitado y puede agotarse fácilmente.
Además, cuando reinicia su sistema, todo lo que instala desaparece.
Cuando se instala Fedora, se configura automáticamente para conectar su sistema al enorme
repositorio de software de Fedora que está disponible en Internet. Siempre que tenga una conexión
a Internet, puede ejecutar la herramienta de software Add/Remove para descargar e instalar
cualquiera de los miles de paquetes de Fedora.
Aunque toda la facilidad para administrar el software en Fedora (las funciones yum y rpm) se describe
en detalle en el Capítulo 10, puede cmucho
omenzar a instalar
sobre cómo faunciona
lgunos pla
aquetes de
Csomience
función. oftware syin
saber
endo a la
pantalla de aplicaciones y abriendo la ventana del Software. La Figura 2.13 muestra un ejemplo de la
ventana Software.
Con la ventana Software abierta, puede seleccionar las aplicaciones que desea instalar buscando
(escriba el nombre en el cuadro Buscar) o eligiendo una categoría. Cada categoría ofrece paquetes
ordenados por subcategorías y paquetes destacados en esa categoría.
Seleccione el ícono del catalejo en la esquina superior izquierda y luego escriba una palabra
asociada con el paquete de software que desea instalar. Puede leer una descripción de cada paquete
que aparece en su búsqueda. Cuando esté listo, haga clic en Instalar para instalar el paquete y los
paquetes dependientes necesarios para que funcione.
FIGURA 2.13
Descargue e instale el software desde el enorme repositorio de Fedora.
44
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Al buscar e instalar algunas aplicaciones de escritorio comunes, debería poder comenzar a usar su escritorio
de manera efectiva. Consulte el Capítulo 10 para obtener detalles sobre cómo agregar repositorios de software y
usar los comandos dnf, yum y rpm para administrar el software en Fedora y Red Hat Enterprise Linux.
Reproducción de música con
Rhythmbox Rhythmbox es el reproductor de música que viene con Fedora GNOME Live Desktop. Puede
iniciar Rhythmbox desde GNOME 3 Dash e inmediatamente reproducir CD de música, podcasts o programas
de radio por Internet. Puede importar archivos de audio en formatos WAV y Ogg Vorbis o agregar complementos
para MP3 u otros formatos de audio.
La Figura 2.14 muestra un ejemplo de la ventana de Rhythmbox con música reproduciéndose desde una
biblioteca de audio importada.
2
FIGURA 2.14
Reproduzca música, podcasts y radio por Internet desde Rhythmbox.
45
Machine Translated by Google
Parte I: Primeros pasos
Aquí hay algunas maneras en que puede comenzar con Rhythmbox:
Radio Haga doble clic en la selección de Radio en Biblioteca y elija una estación de radio de
la lista que aparece a la derecha.
Podcasts Busque podcasts en Internet y encuentre la URL de uno que le interese.
est usted. Haga clic con el botón derecho en la entrada Podcasts y seleccione New Podcast Feed. Pegue o
escriba la URL del podcast y haga clic en Agregar. Aparece una lista de podcasts del sitio que seleccionó a la
derecha. Haga doble clic en el que desea escuchar.
CD de audio Inserte un CD de audio y presione Reproducir cuando aparezca en la ventana de Rhythmbox.
Rhythmbox también le permite extraer y grabar CD de audio.
Archivos de audio Rhythmbox puede reproducir archivos WAV y Ogg Vorbis. Al agregar complementos, usted
puede reproducir muchos otros formatos de audio, incluido MP3. Debido a que existen problemas de patentes
relacionados con el formato MP3, la capacidad de reproducir MP3 no está incluida en Fedora. En el Capítulo
10 tory de su d, istribución
Describo cdómo
e Linux.
obtener el software que necesita que no está en el depósito.
Los complementos están disponibles para Rhythmbox para obtener carátulas, mostrar información sobre artistas
y canciones, agregar soporte para servicios de música (como Last.fm y Magnatune) y buscar letras de canciones.
Detener el escritorio de GNOME 3 Cuando haya
terminado con su sesión de GNOME 3, seleccione el botón de flecha hacia abajo en la esquina superior derecha
de la barra superior. Desde allí, puede elegir el botón Activar/Desactivar, que le permite cerrar sesión o cambiar a
una cuenta de usuario diferente sin cerrar sesión.
Uso del escritorio GNOME 2
El escritorio GNOME 2 es la interfaz de escritorio predeterminada utilizada a través de Red Hat Enterprise Linux 6. Es
bien conocida, estable y quizás un poco aburrida.
Los escritorios de GNOME 2 proporcionan los menús, paneles, iconos y espacios de trabajo más estándar. Si está
utilizando un sistema Red Hat Enterprise Linux hasta RHEL 6, o una distribución anterior de Fedora o Ubuntu,
probablemente esté buscando un escritorio GNOME 2. Ahora proporcionaré un recorrido por GNOME 2, junto con
algunas oportunidades para arreglarlo un poco. Las versiones de GNOME 2 incluyen efectos 3D (consulte “Adición de
efectos 3D con AIGLX” más adelante en este capítulo).
Para usar su escritorio GNOME, debe familiarizarse con los siguientes componentes:
Metacity (administrador de ventanas) El administrador de ventanas predeterminado para GNOME 2 es Metacity.
Las opciones de configuración de Metacity le permiten controlar temas, bordes de ventanas y controles
utilizados en su escritorio.
Compiz (administrador de ventanas) Puede habilitar este administrador de ventanas en GNOME para
proporcionar efectos de escritorio en 3D.
Nautilus (administrador de archivos/shell gráfico) Cuando abre una carpeta (haciendo doble
haciendo clic en el ícono de Inicio en su escritorio, por ejemplo), se abre la ventana de Nautilus
46
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
y muestra el contenido de la carpeta seleccionada. Nautilus también puede mostrar otros tipos de
contenido, como carpetas compartidas de computadoras con Windows en la red (usando SMB).
Paneles de GNOME (lanzador de aplicaciones/tareas) Estos paneles, que se alinean en la parte superior e
inferior de la pantalla, están diseñados para que le resulte cómodo iniciar las aplicaciones que utiliza,
administrar las aplicaciones en ejecución y trabajar con varios escritorios virtuales. De manera
predeterminada, el panel superior contiene botones de menú (Aplicaciones, Lugares y Sistema), lanzadores
de aplicaciones de escritorio (correo electrónico Evolution y navegador web Firefox), un selector de espacio
de trabajo (para administrar cuatro escritorios virtuales) y un reloj.
Los iconos aparecen en el panel cuando necesita actualizaciones de software o SELinux detecta un
problema. El panel inferior tiene un botón Mostrar escritorio, listas de ventanas, una papelera y un
conmutador de espacio de trabajo.
Área del escritorio Las ventanas y los iconos que utiliza están organizados en el área del escritorio, 2
que admite arrastrar y soltar entre aplicaciones, un menú de escritorio (haga clic con el botón derecho
para verlo) e íconos para iniciar aplicaciones. El ícono de una computadora consolida las unidades de
CD, las unidades de disquete, el sistema de archivos y los recursos de red compartidos en un solo lugar.
GNOME también incluye un conjunto de ventanas de Preferencias que le permiten configurar diferentes aspectos
de su escritorio. Puede cambiar fondos, colores, fuentes, métodos abreviados de teclado y otras funciones
relacionadas con el aspecto y el comportamiento del escritorio. La Figura 2.15 muestra cómo aparece el entorno de
escritorio GNOME 2 la primera vez que inicia sesión, con algunas ventanas añadidas a la pantalla.
FIGURA 2.15
El entorno de escritorio GNOME 2
47
Machine Translated by Google
Parte I: Primeros pasos
El escritorio que se muestra en la Figura 2.15 es para Red Hat Enterprise Linux. Las siguientes secciones proporcionan
detalles sobre el uso del escritorio GNOME 2.
Uso del administrador de ventanas Metacity El administrador de
ventanas Metacity parece haber sido elegido como el administrador de ventanas predeterminado para GNOME debido a su
simplicidad. El creador de Metacity se refiere a él como un "administrador de ventanas aburrido para el adulto que hay en ti" y
luego compara otros administradores de ventanas con cereales coloridos y azucarados, mientras que Metacity se caracteriza como
Cheerios.
NOTA
'
Para usar efectos 3D, su mejor solución es usar el administrador de ventanas de Compiz, que se describe más adelante en este capítulo. Puede t
hacer mucho con Metacity (excepto hacer su trabajo de manera eficiente). Asigne nuevos temas a Metacity y cambie los colores y las decoraciones
de las ventanas a través de las preferencias de GNOME (que se describen más adelante).
Las funciones básicas de Metacity que podrían interesarle son los atajos de teclado y el selector de espacio de trabajo. La Tabla
2.1 muestra los atajos de teclado para moverse por el administrador de ventanas de Metacity.
TABLA 2.1 Atajos de teclado
Comportamiento pulsaciones de teclas
Ciclo hacia atrás, sin iconos emergentes Alt+Mayús+Esc
Retroceder entre paneles Alt+Ctrl+Mayús+Tab
Cerrar menú Esc
También puede usar otros métodos abreviados de teclado con el administrador de ventanas. Seleccione Sistema Preferencias
Métodos abreviados de teclado para ver una lista de métodos abreviados, como los siguientes:
Diálogo Ejecutar Para ejecutar un comando para iniciar una aplicación desde el escritorio
nombre del comando, presione Alt+F2. En el cuadro de diálogo que aparece, escriba el comando y presione Entrar.
Por ejemplo, escriba gedit para ejecutar un editor de texto gráfico simple.
Pantalla de bloqueo Si desea alejarse de la pantalla y bloquearla, presione Ctrl+Alt+L.
Debe escribir su contraseña de usuario para volver a abrir la pantalla.
Mostrar menú principal Para abrir una aplicación desde Aplicaciones, Lugares o Sistema
menú, presione Alt+F1. Luego use las teclas de flecha hacia arriba y hacia abajo para seleccionar desde el menú actual
o use las teclas de flecha hacia la derecha y hacia la izquierda para seleccionar desde otros menús.
Imprimir pantalla Presione la tecla Imprimir pantalla para tomar una foto de todo el escritorio. Prensa
Alt+Imprimir pantalla para tomar una foto de la ventana actual.
48
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Otra característica de interés de Metacity es el selector de espacio de trabajo. Aparecen cuatro espacios de trabajo virtuales en el
selector de espacios de trabajo del panel de GNOME 2. Puede hacer lo siguiente con Workspace Switcher:
Elija el espacio de trabajo actual Aparecen cuatro espacios de trabajo virtuales en el selector de espacios de trabajo.
Haga clic en cualquiera de los cuatro espacios de trabajo virtuales para convertirlo en su espacio de trabajo actual.
Mover ventanas a otros espacios de trabajo Haga clic en cualquier ventana, cada una representada por un pequeño rectángulo en
un espacio de trabajo, para arrastrarla y soltarla en otro espacio de trabajo. Asimismo, puede arrastrar una aplicación desde la
lista de ventanas para mover esa aplicación a otro espacio de trabajo.
Agregue más espacios de trabajo Haga clic con el botón derecho en el Selector de espacios de trabajo y seleccione Preferencias.
Puede agregar espacios de trabajo (hasta 32).
Asigne un nombre a los espacios de trabajo Haga clic con el botón derecho en el Conmutador de espacios de trabajo y seleccione
2
Preferencias. Haga clic en el panel Espacios de trabajo para cambiar los nombres de los espacios de trabajo por los nombres que elija.
Puede ver y cambiar información sobre los controles y configuraciones de Metacity usando la ventana del editor gconf (escriba gconf
editor desde una ventana de Terminal). Como dice la ventana, no es la forma recomendada de cambiar las preferencias, por lo que
cuando sea posible, debe cambiar el escritorio a través de las preferencias de GNOME 2. Sin embargo, gconfeditor es una buena manera
de ver las descripciones de cada característica de Metacity.
Desde la ventana del editor de gconf, seleccione aplicaciones metacity y elija entre combinaciones de teclas generales, globales, comandos
de combinaciones de teclas, combinaciones de teclas de ventana y nombres de espacios de trabajo. Haga clic en cada clave para ver su valor,
junto con descripciones cortas y largas de la clave.
Cambiar la apariencia de GNOME Puede cambiar la apariencia
Tema Hay temas completos disponibles para el escritorio GNOME 2 que cambian los colores, iconos, fuentes y otros aspectos del
escritorio. Varios temas diferentes vienen con el escritorio GNOME, que simplemente puede seleccionar desde esta pestaña
para usar. O haga clic en "Obtener más temas en línea" para elegir entre una variedad de temas disponibles.
Fondo Para cambiar el fondo de su escritorio, seleccione de una lista de fondos en esta pestaña para que el que elija tenga efecto
inmediatamente. Para agregar un fondo diferente, coloque el fondo que desea en su sistema (quizás descargue uno
seleccionando "Obtener más fondos en línea" y descargándolo en su carpeta Imágenes). Luego haga clic en Agregar y
seleccione la imagen de su carpeta Imágenes.
Fuentes Se pueden seleccionar diferentes fuentes para usar de forma predeterminada con sus aplicaciones, documentos, escritorio,
barra de título de la ventana y para un ancho fijo.
49
Machine Translated by Google
Parte I: Primeros pasos
Uso de los paneles de GNOME Los
paneles de GNOME se colocan en la parte superior e inferior del escritorio de GNOME. Desde
esos paneles, puede iniciar aplicaciones (desde botones o menús), ver qué programas están activos
y monitorear cómo se está ejecutando su sistema. También puede cambiar los paneles superior e
inferior de muchas maneras, agregando aplicaciones o monitores o cambiando la ubicación o el
comportamiento del panel, por ejemplo.
Haga clic derecho en cualquier espacio abierto en cualquiera de los paneles para ver el menú Panel. La Figura 2.16 muestra
el menú Panel en la parte superior.
FIGURA 2.16
El menú del panel de GNOME
'
Desde GNOMO En el menú Panel, puede elegir entre una variedad de funciones, incluidas las siguientes:
Usa los menús:
■ El menú Aplicaciones muestra la mayoría de las aplicaciones y herramientas del sistema que utilizará desde
el escritorio.
■ El menú Lugares le permite seleccionar lugares para ir, como la carpeta Escritorio, Inicio
carpeta, medios extraíbles o ubicaciones de red.
■ El menú Sistema le permite cambiar las preferencias y la configuración del sistema, así como obtener
otra información sobre GNOME.
Agregar al Panel. Agregue un subprograma, menú, lanzador, cajón o botón.
Propiedades. Cambie la posición, el tamaño y las propiedades de fondo del panel.
Eliminar este panel. Eliminar el panel actual.
Panel nuevo. Agregue paneles a su escritorio en diferentes estilos y ubicaciones.
También puede trabajar con elementos en un panel. Por ejemplo, puede hacer lo siguiente:
Mover elementos. Para mover un elemento en un panel, haga clic con el botón derecho en él, seleccione Mover y arrástrelo y
suéltelo en una nueva posición.
50
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Cambiar el tamaño de los elementos. Puede cambiar el tamaño de algunos elementos, como la lista de ventanas,
haciendo clic en un borde y arrastrándolo al nuevo tamaño.
Utilice la lista de ventanas. Las tareas que se ejecutan en el escritorio aparecen en el área de la lista de ventanas.
Haga clic en una tarea para minimizarla o maximizarla.
Las siguientes secciones describen algunas cosas que puede hacer con el panel de GNOME.
Uso de los menús Aplicaciones y Sistema Haga clic en
Aplicaciones en el panel y verá categorías de aplicaciones y herramientas del sistema que puede seleccionar. Haga clic en la
aplicación que desea iniciar. Para agregar un elemento de un menú para que pueda iniciarse desde el panel, arrastre y suelte el
elemento que desee en el panel.
Puede agregar elementos a sus menús de GNOME 2. Para ello, haga clic con el botón derecho en cualquiera de los nombres
de los menús y seleccione Editar menús. La ventana que aparece le permite agregar o eliminar menús asociados con los menús 2
Aplicaciones y Sistema. También puede agregar elementos para iniciar desde esos menús seleccionando Nuevo elemento y
escribiendo el nombre, el comando y el comentario del elemento.
Agregar un subprograma
Puede ejecutar varias aplicaciones pequeñas, llamadas subprogramas, directamente en el panel de GNOME. Estas aplicaciones
pueden mostrar información que tal vez desee ver de forma continua o simplemente proporcionarle algo de diversión. Para ver
qué subprogramas están disponibles y agregar los subprogramas que desee a su panel, siga estos pasos:
1. Haga clic con el botón derecho en un espacio abierto en el panel para que aparezca el menú Panel.
2. Haga clic en Agregar al panel. Aparece una ventana Agregar al panel.
3. Seleccione entre varias docenas de subprogramas, incluido un reloj, búsqueda de diccionario, tablero de cotizaciones e
informe meteorológico. El subprograma que seleccione aparecerá en el panel, listo para que lo use.
La figura 2.17 muestra (de izquierda a derecha) los ojos, el monitor del sistema, el informe meteorológico, la terminal y el pez
Wanda.
FIGURA 2.17
La colocación de subprogramas en el panel facilita el acceso a ellos.
Después de instalar un subprograma, haga clic con el botón derecho en el panel para ver las opciones disponibles.
Por ejemplo, seleccione Preferencias para el tablero de cotizaciones y puede agregar o eliminar acciones cuyos precios desea
monitorear. Si no le gusta la ubicación del subprograma,
mouse
haga chlic
asta
con
que
el beotón
l subprograma
y
derecho
haga clic
en
epsté
éara
l, hdaga
eonde
stablecer
clic
desee
en sMu
(over,
incluso
ubicación.
deslice
en otro
el panel)
51
Machine Translated by Google
Parte I: Primeros pasos
Si ya no desea que aparezca un subprograma en el panel, haga clic con el botón derecho en él y haga clic en
Quitar del panel. El icono que representa el applet desaparece. Si descubre que se quedó sin espacio en su panel,
puede agregar un nuevo panel a otra parte de la pantalla, como se describe en la siguiente sección.
Adición de otro panel Si se
queda sin espacio en los paneles superior o inferior, puede agregar más paneles a su escritorio. Puede tener varios
paneles en su escritorio GNOME 2. Puede agregar paneles que se extiendan por toda la parte inferior, superior o
lateral de la pantalla. Para agregar un panel, siga estos pasos:
1. Haga clic con el botón derecho en un espacio abierto en el panel para que aparezca el menú Panel.
2. Haga clic en Panel nuevo. Aparece un nuevo panel en el lateral de la pantalla.
3. Haga clic con el botón derecho en un espacio abierto en el nuevo panel y seleccione Propiedades.
4. Desde las Propiedades del panel, seleccione dónde desea colocar el panel en el cuadro Orientación
(Superior, Inferior, Izquierda o Derecha).
'
Después de ha agregado un panel, puede agregarle applets o lanzadores de aplicaciones como lo hizo
ti con el panel predeterminado. Para eliminar un panel, haga clic con el botón derecho en él y seleccione Eliminar este panel.
Adición de un iniciador de aplicaciones
Los iconos de su panel representan un navegador web y varias aplicaciones de productividad de ofi cina.
También puede agregar sus propios íconos para iniciar aplicaciones desde el panel. Para agregar un nuevo
lanzador de aplicaciones al panel, siga estos pasos:
1. Haga clic derecho en un espacio abierto en el panel.
2. Haga clic en Agregar al panel Iniciador de aplicaciones en el menú. Toda la categoría de aplicación
Aparecerán artículos de los menús Aplicaciones y Sistema.
3. Seleccione la flecha junto a la categoría de aplicación que desea y luego seleccione
Agregar. En el panel aparece un icono que representa la aplicación.
Para iniciar la aplicación que acaba de agregar, simplemente haga clic en el icono del panel.
Si la aplicación que desea iniciar no está en uno de sus menús, puede crear un iniciador usted mismo de la
siguiente manera:
1. Haga clic derecho en un espacio abierto en el panel.
3. Proporcione la siguiente información para la aplicación que desea agregar:
a. Tipo. Seleccione Aplicación (para iniciar una aplicación GUI regular) o Aplicación
en Terminal. Use la aplicación en la terminal si la aplicación es una aplicación basada en caracteres o
ncurses. (Las aplicaciones escritas con la biblioteca ncurses se ejecutan en una ventana de Terminal,
pero ofrecen controles de teclado y mouse orientados a la pantalla).
52
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
b. Nombre. Elija un nombre para identificar la aplicación. (Esto aparece en la información sobre
herramientas cuando el mouse está sobre el ícono). c. Dominio. Esto identifica la línea de comando
que se ejecuta cuando se inicia la aplicación. Utilice el nombre de ruta completo, además de las opciones
necesarias.
d. Comentario. Introduzca un comentario que describa la aplicación. También aparece cuando
luego mueve el mouse sobre el lanzador.
4. Haga clic en el cuadro Icono (podría decir Sin icono), seleccione uno de los iconos que se muestran y
haga clic en Aceptar. Alternativamente, puede explorar su sistema de archivos para elegir un icono.
5. Haga clic en Aceptar.
La aplicación debería aparecer ahora en el panel. Haga clic en él para iniciar la aplicación.
NOTA
2
Los iconos disponibles para representar su aplicación se encuentran en el directorio /usr/share/pixmaps. Estos
iconos están en formato PNG o XPM. Si no uno
hay d
uen ícono en el directorio que desea usar, cree uno propio (en
esos dos formatos) y asignarlo a la aplicación.
Adición de un cajón
Un cajón es un icono en el que puede hacer clic para mostrar otros iconos que representan menús, subprogramas
y lanzadores; se comporta como un panel. Esencialmente, cualquier elemento que pueda agregar a un panel puede
agregarlo a un cajón. Al agregar un cajón a su panel de GNOME, puede incluir varios subprogramas y lanzadores
que juntos ocupan el espacio de un solo ícono. Haga clic en el cajón para mostrar los subprogramas y lanzadores
como si estuvieran sacados de un icono de cajón en el panel.
Para agregar un cajón a su panel, haga clic con el botón derecho en el panel y seleccione Agregar al panel
Cajón. Aparece un cajón en el panel. Haga clic con el botón derecho en él y agréguele applets o lanzadores como lo
haría con un panel. Vuelva a hacer clic en el icono para retraer el cajón.
La figura 2.18 muestra una parte del panel con un cajón abierto que incluye un icono para iniciar un informe
meteorológico, notas adhesivas y un monitor de acciones.
FIGURA 2.18
Agregue lanzadores o applets a un cajón en su panel GNOME 2.
53
Machine Translated by Google
Parte I: Primeros pasos
Cambiar las propiedades del
panel Puede cambiar la orientación, el tamaño, la política de ocultación y las propiedades de fondo de los
paneles de su escritorio. Para abrir la ventana Propiedades del panel que se aplica a un panel específico,
haga clic con el botón derecho en un espacio abierto en el panel y elija Propiedades. La ventana Propiedades
del panel que aparece incluye los siguientes valores:
Orientación Mueva el panel a una ubicación diferente en la pantalla haciendo clic en un
nueva posición.
Tamaño Seleccione el tamaño de su panel eligiendo su altura en píxeles (48 píxeles
por defecto).
Expandir Seleccione esta casilla de verificación para que el panel se expanda para llenar todo el lado o desmarque
la casilla de verificación para que el panel sea tan ancho como los subprogramas que contiene.
Ocultar automáticamente Seleccione si un panel se oculta automáticamente (aparece solo cuando el
puntero del ratón está en el área).
Mostrar botones Ocultar Elija si los botones Ocultar/Mostrar (con flechas de mapa de píxeles)
en ellos) aparecen en los bordes del panel.
Flechas en botones ocultos Si selecciona Mostrar botones ocultos, puede optar por tener flechas en esos
botones.
Fondo Desde la pestaña Fondo, puede asignar un color al fondo del panel, asignar una imagen de mapa de
píxeles o simplemente dejar el valor predeterminado (que se basa en el tema del sistema actual). Haga clic
en la casilla de verificación Imagen de fondo si desea seleccionar una imagen para el fondo y luego seleccione
una imagen, como un mosaico de /usr/share/backgrounds/tiles u otro directorio.
CONSEJO
Por lo general, activo la función Ocultar automáticamente y apago los botones Ocultar. El uso de AutoHide le brinda más espacio en
el escritorio con el que puede trabajar. Cuando mueve el mouse hacia el borde donde se encuentra el panel, el panel aparece, por lo
que no necesita los botones Ocultar.
Adición de efectos 3D con AIGLX Varias iniciativas
han avanzado en los últimos años para traer efectos de escritorio 3D a Linux.
Ubuntu, openSUSE y Fedora usaron AIGLX (https://fedoraproject.org/wiki/RenderingProject/aiglx).
El objetivo del proyecto Accelerated Indirect GLX (AIGLX) es agregar efectos 3D a los sistemas de escritorio cotidianos.
Para ello, implementa los efectos acelerados de OpenGL (http://opengl.org) utilizando la implementación OpenGL de
código abierto de Mesa (http://www.mesa3d.org).
Actualmente, AIGLX es compatible con un conjunto limitado de tarjetas de video e implementa solo algunos
efectos 3D, pero ofrece una idea de los atractivos que se están trabajando.
Si su tarjeta de video se detectó y configuró correctamente, es posible que simplemente pueda activar la función
Efectos de escritorio para ver los efectos que se han implementado hasta el momento. A
54
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Habilitar Compiz hace lo siguiente:
Inicia Compiz Detiene el administrador de ventanas actual e inicia el administrador de ventanas
Compiz.
Habilita el efecto Windows Wobble When Moved Con este efecto activado, cuando
tome la barra de título de la ventana para moverla, la ventana se tambalea mientras se mueve. Los menús
y otros elementos que se abren en el escritorio también se tambalean.
Habilita el efecto Espacios de trabajo en un cubo Arrastre una ventana desde el escritorio hacia la derecha
o hacia la izquierda y el escritorio girará como un cubo, con cada uno de los espacios de trabajo de su
escritorio apareciendo como un lado de ese cubo. Suelta la ventana en el espacio de trabajo donde 2
quieras que vaya. También puede hacer clic en el subprograma Workspace Switcher en el panel inferior
para rotar el cubo y mostrar diferentes espacios de trabajo.
Otros buenos efectos de escritorio resultan del uso de las teclas Alt+Tab para tabular entre diferentes
ventanas en ejecución. A medida que presiona Alt+Tab, una miniatura de cada ventana se desplaza por la
pantalla a medida que se resalta la ventana que representa.
La Figura 2.19 muestra un ejemplo de un escritorio Compiz con AIGLX habilitado. La figura ilustra una ventana
de navegador web que se mueve de un espacio de trabajo a otro mientras esos espacios de trabajo giran en un
cubo.
FIGURA 2.19
Gire los espacios de trabajo en un cubo con los efectos de escritorio AIGLX habilitados.
55
Machine Translated by Google
Parte I: Primeros pasos
Los siguientes son algunos efectos interesantes que puede obtener con su escritorio 3D AIGLX:
Girar el cubo Mantenga presionadas las teclas Ctrl+Alt y presione las teclas de flecha derecha e izquierda. El cubo
de escritorio gira a cada espacio de trabajo sucesivo (hacia adelante o hacia atrás).
Rotar lentamente el cubo Mantenga presionadas las teclas Ctrl+Alt, presione y mantenga presionado el botón izquierdo del mouse,
y mueve el ratón por la pantalla. El cubo se mueve lentamente con el mouse entre los espacios de trabajo.
Escale y separe las ventanas Si su escritorio está desordenado, mantenga presionadas las teclas Ctrl+Alt y presione
la tecla de flecha hacia arriba. Windows se encoge y se separa en el escritorio. Manteniendo presionadas las teclas
Ctrl+Alt, use las teclas de flecha para resaltar la ventana que desea y suelte las teclas para que esa ventana salga a la
superficie.
Tabulador a través de las ventanas Mantenga presionada la tecla Alt y presione la tecla Tabulador. Verá versiones
reducidas de todas sus ventanas en una franja en el medio de su pantalla, con la ventana actual resaltada en el
medio. Manteniendo presionada la tecla Alt, presione Tab o Mayús+Tab para avanzar o retroceder por las ventanas.
Suelte las teclas cuando se resalte la que desea.
Escale y separe los espacios de trabajo Mantenga presionadas las teclas Ctrl+Alt y presione la tecla de flecha hacia
abajo para ver imágenes reducidas del espacio de trabajo que se muestra en una tira. Sin soltar Ctrl+Alt, use las
teclas de flecha derecha e izquierda para moverse entre los diferentes espacios de trabajo. Suelte las teclas cuando
se resalte el espacio de trabajo que desea.
Enviar la ventana actual al siguiente espacio de trabajo Mantenga presionadas las teclas Ctrl+Alt+Shift juntas y
presione las teclas de flecha izquierda y derecha. El siguiente espacio de trabajo a la izquierda oa la derecha,
respectivamente, aparece en el escritorio actual.
Deslice las ventanas Mantenga presionado el botón izquierdo del mouse en la barra de título de la ventana y luego
presione la tecla de flecha izquierda, derecha, arriba o abajo para deslizar la ventana actual en la pantalla.
Si se cansa de las ventanas tambaleantes y los cubos giratorios, puede desactivar fácilmente los efectos 3D de AIGLX y volver
a usar Metacity como administrador de ventanas. Seleccione Sistema Preferencias Efectos de escritorio nuevamente y
desactive el botón Habilitar efectos de escritorio para desactivar la función.
Si tiene una tarjeta de video compatible pero descubre que no puede activar Desktop Effects, verifique que su servidor X se
haya iniciado correctamente. En particular, asegúrese de que su archivo /etc/X11/xorg.conf esté correctamente configurado.
Asegúrese de que dri y glx estén cargados en la sección Módulo. Además, agregue una sección de extensiones en cualquier
lugar del archivo (generalmente al final del archivo) que aparece de la siguiente manera:
Sección "extensiones"
Opción "Compuesto"
sección final
56
Machine Translated by Google
Capítulo 2: Creación del escritorio Linux perfecto
Otra opción es agregar la siguiente línea al archivo /etc/X11/xorg.conf en la sección Dispositivo:
Opción "XAANoOffscreenPixmaps"
La opción XAANoOffscreenPixmaps mejora el rendimiento. Verifique su archivo /var/log/ Xorg.log para
asegurarse de que las funciones DRI y AIGLX se iniciaron correctamente. Los mensajes en ese archivo
también pueden ayudarlo a depurar otros problemas.
Resumen
El entorno de escritorio GNOME se ha convertido en el entorno de escritorio predeterminado para
muchos sistemas Linux, incluidos Fedora y RHEL. El escritorio GNOME 3 (ahora utilizado en Fedora y
RHEL 7 y RHEL 8) es un escritorio moderno y elegante, diseñado para adaptarse a los tipos de interfaces 2
disponibles en muchos de los dispositivos
móviles
RHEL actuales. Eul
6) proporciona escritorio
na GNOME
de e2scritorio
experiencia (utilizado
a través
más de
radicional.
Además de los escritorios GNOME, puede probar otros entornos de escritorio populares y útiles.
El entorno de escritorio K (KDE) ofrece muchas más funciones que GNOME y se usa de forma
predeterminada en varias distribuciones de Linux. Las distribuciones de netbooks y CD en vivo algunas
veces usan los escritorios LXDE o Xfce.
Ahora que sabe cómo obtener y usar un escritorio Linux, es hora de comenzar a profundizar en las interfaces
administrativas más profesionales. El Capítulo 3, “Uso del Shell”, le presenta
la interfaz
comandos del
de shell de línea de
Linux.
Ejercicios
Utilice estos ejercicios para probar su habilidad en el uso de un escritorio GNOME. Puede usar un escritorio
GNOME 2.x (Red Hat Enterprise Linux hasta RHEL 6. x) o GNOME 3. x (Fedora 16 o posterior o Ubuntu
hasta 11.10, o posterior usando el proyecto Ubuntu GNOME). Si está atascado, las soluciones a las tareas
para los escritorios GNOME 2 y GNOME 3 se muestran en el Apéndice B.
1. Obtenga un sistema Linux con un escritorio GNOME 2 o GNOME 3 disponible. Comenzar
el sistema e inicie sesión en un escritorio GNOME.
2. Inicie el navegador web Firefox y vaya a la página de inicio de GNOME (http://
gnome.org).
3. Elija un fondo que le guste del sitio de arte de GNOME (http://gnomelook.org), descárguelo a su
carpeta Imágenes y selecciónelo como su fondo actual.
4. Inicie una ventana del Administrador de archivos de Nautilus y muévala al segundo espacio de trabajo en
tu escritorio
5. Busque la imagen que descargó para usarla como fondo de escritorio y ábrala.
en cualquier visor de imágenes.
57
Machine Translated by Google
Parte I: Primeros pasos
6. Avance y avance entre el espacio de trabajo con Firefox y el que tiene el administrador de
archivos Nautilus.
7. Abra una lista de aplicaciones instaladas en su sistema y seleccione un visor de imágenes para
abierto de esa lista. Utilice la menor cantidad posible de clics o pulsaciones de teclas.
8. Cambie la vista de las ventanas en su espacio de trabajo actual a vistas más pequeñas por las
que puede pasar. Seleccione cualquier ventana que le gustaría convertirla en su ventana actual.
9. Desde su escritorio, usando solo el teclado, inicie un reproductor de música.
10. Tome una foto de su escritorio usando solo las teclas.
58
Machine Translated by Google
rt
convertirse en un li
Usuario de poder
EN ESTA PARTE
Capítulo 3
Usando el caparazón
Capítulo 4
Moverse por el sistema de archivos
Capítulo 5
Trabajar con archivos de texto
Capítulo 6
Gestión de procesos en ejecución
Capítulo 7
Escribir scripts de shell simples
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Usando el caparazón
EN ESTE CAPÍTULO
Comprender el shell de Linux
Usando el shell desde consolas o Terminales
Uso de comandos
Uso del historial de comandos y finalización de pestañas
Comandos de conexión y expansión
Comprensión de variables y alias
Hacer que la configuración del shell sea permanente
Uso de páginas man y otra documentación
la mayoría de las computadoras. En los sistemas UNIX, de los que se derivó Linux, el programa utilizado
Antes de
que lios
para íconos y las
nterpretar y avdministrar
entanas se acpoderaran
omandos de
sle
as
dpenominaba
antallas de las
computadoras, escribía comandos para interactuar con
shell .
No importa qué distribución de Linux esté utilizando, siempre puede contar con el hecho de que el shell está disponible
para usted. Proporciona una forma de crear archivos de secuencias de comandos ejecutables, ejecutar programas,
trabajar con sistemas de archivos, compilar código de computadora y administrar la computadora. Aunque el shell es menos
intuitivo que las interfaces gráficas de usuario (GUI) comunes, la mayoría de los expertos en Linux consideran que el shell es
'
mucho más potente que las GUI. Los shells existen desde hace mucho tiempo, y se puede acceder a muchas funciones no sirve
avanzadas que se pueden acceder desde el escritorio ejecutando comandos de shell.
El shell de Linux ilustrado en este capítulo se llama shell bash, que significa Bourne Again Shell. El nombre
se deriva del hecho de que bash es compatible con uno de los primeros shells de UNIX: el shell Bourne
(llamado así por su creador, Stephen Bourne, y representado por el comando sh).
Aunque bash se incluye con la mayoría de las distribuciones y se considera un estándar, hay otros shells
disponibles, incluido el shell C (csh), que es popular entre los usuarios de BSD UNIX, y el shell Korn (ksh), que
es popular entre los usuarios de UNIX System V. . Ubuntu usa dash shell de forma predeterminada en el
momento del arranque, que está diseñado para funcionar más rápido que bash shell. Linux también tiene un
shell tcsh (un shell C mejorado) y un shell ash (otro parecido al shell Bourne).
Es muy probable que la distribución de Linux que está utilizando tenga más de un shell disponible para su
uso. Este capítulo, sin embargo, se enfoca principalmente en el shell bash. Eso es porque Linux
61
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Las distribuciones presentadas en este libro, Fedora, Ubuntu y Red Hat Enterprise Linux, usan el shell
bash de forma predeterminada cuando abre una ventana de Terminal.
Las siguientes son algunas de las principales razones para aprender a usar el shell:
■ Aprenderá a moverse por cualquier sistema Linux u otro sistema similar a UNIX. Por ejemplo, puedo iniciar
sesión en mi servidor web Red Hat Enterprise Linux, el servidor multimedia de mi hogar, el enrutador de mi
hogar o la Mac de mi esposa y eIncluso
xplorar pyuedo
usar icniciar
ualquiera
sesión
de
ye esos
jecutar
sistemas
comandos
informáticos
en mi teléfono
desde uA
n
ndroid.
shell.
Todos ejecutan Linux o sistemas similares en el interior.
■ Las características especiales del shell le permiten recopilar la entrada de datos y la salida directa de datos
entre los comandos y los sistemas de archivos de Linux. Para ahorrar en escribir, puede buscar, editar y
repetir comandos desde su historial de shell. Muchos usuarios avanzados apenas tocan una interfaz gráfica
y realizan la mayor parte de su trabajo desde un shell.
■ Puede recopilar comandos en un archivo utilizando construcciones de programación como pruebas condicionales,
bucles y declaraciones de casos para realizar operaciones complejas rápidamente, lo que sería difícil de
volver a escribir una y otra vez. Los programas que consisten en comandos que se almacenan y ejecutan
desde un archivo se denominan scripts de shell. Muchos administradores de sistemas Linux utilizan scripts de
shell para automatizar tareas como la copia de seguridad de datos, la supervisión de archivos de registro o la
comprobación del estado del sistema.
El shell es un intérprete de lenguaje de comandos. Si ha usado sistemas operativos de Microsoft, verá
tú que usar un shell en Linux es similar, pero generalmente mucho más poderoso que,
el intérprete de PowerShell utilizado para ejecutar comandos. Puede usar Linux felizmente desde una interfaz
gráfica de escritorio, pero a medida que crezca en Linux, seguramente necesitará usar el shell en algún
momento para rastrear un problema o administrar algunas funciones.
Cómo usar el shell no es obvio al principio, pero con la ayuda adecuada puede aprender rápidamente
muchas de las características más importantes del shell. Este capítulo es su guía para trabajar con los
comandos, procesos y sistemas de archivos del sistema Linux desde el shell. Describe el entorno de shell
y le ayuda a adaptarlo a sus necesidades.
Acerca de Shells y Terminal Windows
Hay varias formas de llegar a una interfaz de shell en Linux. Tres de los más comunes son el símbolo del sistema, la
ventana de Terminal y la consola virtual, sobre los que aprenderá más en las siguientes secciones.
Para comenzar, inicie su sistema Linux. En su pantalla, debería ver una pantalla de inicio de sesión gráfica o un indicador
de inicio de sesión de texto sin formato similar al siguiente:
Red Hat Enterprise Linux Server versión 8.0 (Ootpa)
Kernel 4.18.042.el8.x86_64 en un inicio de sesión
de mylinuxhost X86:
En cualquier caso, debe iniciar sesión con una cuenta de usuario normal. Si tiene un indicador de inicio de sesión de
texto sin formato, continúe con la siguiente sección, "Uso del indicador de shell". Si inicia sesión a través de una pantalla
gráfica, vaya a la sección "Uso de una ventana de terminal" para ver cómo acceder a un shell
62
Machine Translated by Google
Capítulo 3: Usando el Shell
desde el escritorio. En cualquier caso, puede acceder a más shells como se describe en la sección "Uso de
consolas virtuales", que aparece brevemente en este capítulo.
Uso del indicador de shell Si su sistema
Linux no tiene una interfaz gráfica de usuario (o una que no funciona en este momento),
lo más probable es
que vea un indicador de shell después de iniciar sesión. Escribir comandos desde el shell probablemente sea su
medio principal de utilizar el sistema Linux.
El indicador predeterminado para un usuario normal es simplemente un signo de dólar:
ps
El aviso predeterminado para el usuario raíz es un signo de libra (también llamado signo de número o
etiqueta hash):
En la mayoría de los sistemas Linux, las indicaciones $ y # están precedidas por su nombre de usuario, el nombre
del sistema y el nombre del directorio actual. Por ejemplo, un indicador de inicio de sesión para el usuario llamado
jake en una computadora llamada pine con /usr/share/ como el directorio de trabajo actual aparecería de la siguiente
manera:
[jake@pine comparte]$
Puede cambiar el indicador para mostrar los caracteres que desee e incluso leer información sobre su sistema.
Por ejemplo, puede usar el directorio de trabajo actual, la fecha, el nombre de la computadora local o cualquier 3
cadena de caracteres como mensaje. Para configurar su mensaje, consulte la sección "Configuración de su mensaje"
más adelante en este capítulo.
Aunque hay una gran cantidad de funciones disponibles con el shell, es fácil comenzar ingresando solo algunos
comandos. Pruebe algunos de los comandos que se muestran en las secciones restantes para familiarizarse con su
entorno de shell actual.
En los ejemplos siguientes, los símbolos de dólar ($) y libra (#) indican un indicador. Un $ indica que cualquier
usuario puede ejecutar el comando, pero un # generalmente significa que debe ejecutar el comando como
usuario root; es decir, muchas herramientas administrativas requieren permisos de root para poder ejecutarlas. El
indicador es seguido por el comando que escribe (y luego presiona Enter). Las líneas que siguen muestran la
salida resultante del comando.
NOTA
Aunque usamos # para indicar que un comando debe ejecutarse como usuario root, no necesita iniciar sesión como usuario root
para ejecutar un comando como root. De hecho, la forma más común de ejecutar un comando como usuario root es usar el comando
sudo. Consulte el Capítulo 8, "Administración del sistema de aprendizaje", para obtener más información sobre el comando sudo.
Uso de una ventana de Terminal Con la
GUI de escritorio ejecutándose, puede abrir un programa emulador de Terminal (a veces denominado ventana
de Terminal) para iniciar un shell. La mayoría de las distribuciones de Linux facilitan
63
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
para llegar a un shell desde la GUI. Aquí hay dos formas comunes de iniciar una ventana de Terminal desde un escritorio
Linux:
Haga clic derecho en el escritorio. En el menú contextual que aparece, si ve Abrir en Terminal, Shells, Nueva Terminal,
Ventana de Terminal, Xterm o algún elemento similar, selecciónelo para iniciar una ventana de Terminal. (Algunas
distribuciones han deshabilitado esta función).
Haga clic en el menú del panel. Muchos escritorios Linux incluyen un panel en la parte superior o inferior de la
pantalla desde el que puede iniciar aplicaciones. Por ejemplo, en algunos sistemas que usan el escritorio
GNOME 2, puede seleccionar Aplicaciones Herramientas del sistema Terminal para abrir una ventana de
Terminal. En GNOME 3, haga clic en el menú Actividades, escriba Terminal y presione Entrar.
En todos los casos, debería poder escribir un comando como lo haría desde un shell sin GUI.
Diferentes emuladores de Terminal están disponibles con Linux. En Fedora, Red Hat Enterprise Linux (RHEL) y otras
distribuciones de Linux que usan el escritorio GNOME, la ventana del emulador de Terminal predeterminada es la Terminal
GNOME (iniciada por el comando gnometerminal).
GNOME Terminal admite muchas características más allá del shell básico. Por ejemplo, puede cortar y pegar texto
hacia o desde una ventana de GNOME Terminal, cambiar fuentes, establecer un título, elegir colores o imágenes para
usar como fondo y establecer cuánto texto guardar cuando el texto se desplaza fuera de la pantalla.
Para probar algunas funciones de GNOME Terminal, inicie un sistema Fedora o RHEL e inicie sesión en el escritorio.
Luego sigue este procedimiento:
3. En la pestaña General o perfil actual (dependiendo de su versión de GNOME), marque
el cuadro "Fuente personalizada".
4. Seleccione el campo Fuente, pruebe con una fuente y un tamaño diferentes y luego haga clic en Seleccionar.
La nueva fuente aparece en la ventana de Terminal.
5. Anule la selección de la casilla "Fuente personalizada". Esto te lleva de vuelta a la fuente original.
6. En la pestaña Colores, desmarque la casilla de verificación "Usar colores del tema del sistema". De aquí,
puede probar diferentes fuentes y colores de fondo.
7. Vuelva a seleccionar la casilla "Usar colores del tema del sistema" para volver a los colores predeterminados.
8. Vaya a la ventana de su perfil. Hay otras características con las que quizás desee experimentar, como
configurar la cantidad de datos desplazados que se conservan.
9. Cierre la ventana Perfil cuando haya terminado. Ahora está listo para usar su Ter
ventana terminal.
Si está utilizando Linux desde un escritorio gráfico, lo más probable es que acceda al shell desde una ventana de
Terminal.
64
Machine Translated by Google
Capítulo 3: Usando el Shell
Uso de consolas virtuales La
mayoría de los sistemas Linux que incluyen una interfaz de escritorio inician múltiples consolas virtuales que
se ejecutan en la computadora. Las consolas virtuales son una forma de tener varias sesiones de shell
abiertas a la vez además de la interfaz gráfica que está utilizando.
Puede cambiar entre consolas virtuales manteniendo presionadas las teclas Ctrl y Alt y presionando
una tecla de función entre F1 y F6. Por ejemplo, en Fedora, presione Ctrl+Alt+F1 (o F2, F3, F4, etc.
hasta F6 en la mayoría de los sistemas Linux) para mostrar una de las siete consolas virtuales. La GUI
normalmente se encuentra en una de las dos primeras consolas virtuales, y las otras seis consolas
virtuales suelen ser consolas virtuales basadas en texto.
Puede volver a la GUI (si se está ejecutando una) presionando Ctrl+Alt+F1. En algunos sistemas, la GUI
puede ejecutarse en una consola virtual diferente, como la consola virtual 2 (Ctrl+Alt+F2). Los sistemas
más nuevos, como Fedora 29, ahora inician el gdm (la pantalla de inicio de sesión) de forma persistente
en tty1 para permitir múltiples sesiones de GUI simultáneas: el gdm está en tty1, el primer escritorio se
inicia en tty2, el segundo escritorio se inicia en tty3, etcétera.
Pruébalo ahora mismo. Mantenga presionadas las teclas Ctrl+Alt y presione F3. Debería ver un
indicador de inicio de sesión de texto sin formato. Inicie sesión con su nombre de usuario y contraseña.
Pruebe algunos comandos. Cuando termine, escriba exit para salir del shell y luego presione Ctrl+Alt+F1
o Ctrl+Alt+F2 para volver a la interfaz gráfica de escritorio. Puede alternar entre estas consolas tanto
como desee.
3
Elegir tu caparazón
En la mayoría de los sistemas Linux, su shell predeterminado es bash shell. Para averiguar cuál es su shell de inicio de
sesión predeterminado, ingrese los siguientes comandos:
$ quién soy
chris pts/0 $ grep 20191021 22:45 (:0.0)
chris /etc/passwd
chris:x:13597:13597:Chris Negus:/home/chris:/bin/bash
Tenga en cuenta que los ejemplos de línea de comandos que se muestran aquí y en todo el libro
muestran el comando seguido de la salida de ese comando. Cuando se completa el comando, se le
presenta nuevamente el símbolo del sistema.
El comando Quién soy yo muestra su nombre de usuario y el comando grep (que reemplaza a chris con
su nombre de usuario) muestra la definición de su cuenta de usuario en el archivo /etc/passwd.
El último campo en esa entrada muestra que el shell bash (/bin/bash) es su shell predeterminado (el
que se inicia cuando inicia sesión o abre una ventana de Terminal).
'
Él Es posible, aunque no probable, que tenga un conjunto de shell predeterminado diferente. Para probar
un shell diferente, simplemente escriba el nombre de ese shell (los ejemplos incluyen ksh, tcsh, csh, sh,
dash y otros, suponiendo que estén instalados). Puede probar algunos comandos en ese shell y escribir
exit cuando haya terminado para volver al shell bash.
sesenta y cinco
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Puede elegir usar diferentes shells por las siguientes razones:
■ Está acostumbrado a utilizar sistemas UNIX System V (a menudo ksh de forma predeterminada) o
sistemas Sun Micro y otras distribuciones basadas en UNIX de Berkeley (con frecuencia csh de
forma predeterminada), y se siente más cómodo utilizando shells predeterminados de esos entornos.
■ Desea ejecutar secuencias de comandos de shell que se crearon para un entorno de shell en particular
y necesita ejecutar la shell para la que se crearon para poder probar o usar esas secuencias de
comandos desde su shell actual. ■ Simplemente prefiere las funciones de un caparazón a las de otro.
por ejemplo, un
miembro de mi grupo de usuarios de Linux prefiere ksh sobre bash porque no le gusta la forma en que
se usan los alias con bash.
Aunque la mayoría de los usuarios de Linux tienen preferencia por un shell u otro, cuando sabe cómo usar un
shell, puede aprender rápidamente cualquiera de los otros consultando ocasionalmente la página de manual
del shell
de (ipor
ejemplo,
aecerca
nformación scriba
mlan
de os b ash) . Las pbáginas
comandos”) rindan m an (descritas mpás
documentación acdelante
ara en lfa
omandos, sección
ormatos d“e
Obtención
archivo y
otros componentes en Linux. La mayoría de las personas usan bash simplemente porque no tienen una razón
particular para usar un shell diferente. El resto de este capítulo describe el shell bash.
Bash incluye funciones desarrolladas originalmente para shells sh y ksh en los primeros sistemas UNIX, así
como algunas funciones de csh. Espere que bash sea el shell de inicio de sesión predeterminado en la mayoría
de los sistemas Linux que está utilizando, con la excepción de algunos sistemas Linux especializados (como
algunos que se ejecutan en dispositivos integrados) que pueden requerir un shell más pequeño que necesita
menos memoria y requiere menos funciones. La mayoría de los ejemplos de este capítulo se basan en el shell bash.
CONSEJO
Vale la pena conocer el shell bash no solo porque es el predeterminado en la mayoría de las instalaciones, sino porque es el que usará con
la mayoría de los exámenes de certificación de Linux.
Ejecución de comandos
La forma más sencilla de ejecutar un comando es simplemente escribir el nombre del comando desde un shell.
Desde su escritorio, abra una ventana de Terminal. Luego ingrese el siguiente comando:
$ fecha
jue 29 de junio 08:14:53 EDT 2019
Ingresar el comando de fecha, sin opciones ni argumentos, hace que el día, el mes, la fecha, la hora, la zona
horaria y el año actuales se muestren como se muestra.
Aquí hay algunos otros comandos que puede probar:
$ pwd /
home/chris $ nombre
de host
66
Machine Translated by Google
Capítulo 3: Usando el Shell
mi escritorio
$ ls
Escritorio Descargas Imágenes Plantillas
Documentos Música Público Vídeos
El comando pwd muestra su directorio de trabajo actual. Al ingresar el nombre de host, se muestra el
nombre de host de su computadora. El comando ls enumera los archivos y directorios en su directorio
actual. Aunque muchos comandos se pueden ejecutar simplemente ingresando los nombres de los
comandos, es más común escribir otros caracteres después del comando para modificar su comportamiento.
Los caracteres y palabras que puede escribir después de un comando se denominan opciones y argumentos.
Comprensión de la sintaxis de los comandos La
mayoría de los comandos tienen una o más opciones que puede agregar para cambiar el
comportamiento del comando. Las opciones normalmente consisten en una sola letra precedida por un
guión. Sin embargo, puede agrupar opciones de una sola letra o preceder cada una con un guión para
usar más de una opción a la vez. Por ejemplo, los siguientes dos usos de opciones para el comando ls
son iguales:
$ ls l a t $ ls lato
En ambos casos, el comando ls se ejecuta con las opciones l (lista larga), a (mostrar archivos de
puntos ocultos) y t (lista por tiempo).
Algunos comandos incluyen opciones que están representadas por una palabra completa. Para 3
indicarle a un comando que use una palabra completa como opción, generalmente lo antecede con
un guión doble (). Por ejemplo, para usar la opción de ayuda en muchos comandos, ingrese help en la
línea de comando. Sin el doble guión, las letras h, e, l y p se interpretarían como opciones separadas. Hay
algunos comandos que no siguen la convención de doble guión, usando un solo guión pero
antes
la mdayoría
e una d
pe
alabra,
los
comandos usan guiones dobles para opciones de palabras.
NOTA
Puede usar la opción help con la mayoría de los comandos para ver las opciones y los argumentos que admiten.
Por ejemplo, intente escribir hostname help .
Muchos comandos también aceptan argumentos después de ingresar ciertas opciones o al final de
toda la línea de comando. Un argumento es una información adicional, como un nombre de archivo, un
directorio, un nombre de usuario, un dispositivo u otro elemento, que le dice al comando sobre qué actuar.
Por ejemplo, cat /etc/passwd muestra el contenido del archivo /etc/passwd en su pantalla. En este caso, /
etc/passwd es el argumento. Por lo general, puede tener tantos argumentos como desee en la línea de
comando, limitado solo por el número total de caracteres permitidos en una línea de comando. A veces,
un argumento está asociado con una opción. En ese caso, el argumento debe seguir inmediatamente a la
opción. Con opciones de una sola letra, el
67
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
el argumento generalmente sigue después de un espacio. Para las opciones de palabra completa, el argumento
suele seguir un signo igual (=). Aquí hay unos ejemplos:
$ ls hide=Escritorio
Documentos Música Público Vídeos
Descargas Imágenes Plantillas
En el ejemplo anterior, la opción hide le dice al comando ls que no muestre el archivo o el directorio
llamado Escritorio al enumerar el contenido del directorio. Observe que el signo igual sigue inmediatamente
a la opción (sin espacios) y luego al argumento (nuevamente, sin espacios).
'
Aquí Es un ejemplo de una opción de una sola letra seguida de un argumento:
$ tar cvf copia de seguridad.tar /home/chris
En el ejemplo de tar que se acaba de mostrar, las opciones dicen crear (c) un archivo (f) llamado
backup.tar que incluye todo el contenido del directorio /home/chris y sus subdirectorios y muestra
mensajes detallados (v) como el se crea la copia de seguridad. Dado que backup.tar es un argumento
de la opción f, backup.tar debe seguir inmediatamente a la opción.
Aquí hay algunos comandos que puede probar. Vea cómo se comportan de manera diferente con
diferentes opciones:
$ ls
Escritorio Documentos Descargas Música Imágenes Público Plantillas
Vídeos
$ ls a
. Escritorio .local Documentos .gnote .bash_history
.gnome2_private .lesshst Público
.. Descargas .gnupg .mozilla .bash_logout .emacs .gstreamer0.10 Plantillas
Música Vídeos
.xsesión
errores
.bash_profile .esd_auth .gtkbookmarks Imágenes Imágenes .zshrc
.bashrc .fsync.log .gvfs
$ anular nombre
linux
$ uname a
Linux mydesktop 5.3.7301.fc31.x86_64 #1 SMP lun 21 oct 19:18:58 UTC
2019 x86_64 x86_64 x86_64 GNU/Linux $ fecha
mié. 4 de marzo de 2020 09:06:25 p .
miércoles, 04 de marzo de 2020
El comando ls, por sí mismo, muestra todos los archivos y directorios regulares en el directorio actual.
Al agregar a, también puede ver los archivos ocultos en el directorio (aquellos que comienzan con un
punto). El comando uname muestra el tipo de sistema que está ejecutando (Linux). Cuando agrega a,
también puede ver el nombre de host, la versión del kernel y la versión del kernel.
68
Machine Translated by Google
Capítulo 3: Usando el Shell
El comando de fecha tiene algunos tipos especiales de opciones. Por sí mismo, la fecha simplemente
imprime el día, la fecha y la hora actuales como se muestra arriba. Pero el comando de fecha admite una
opción especial de formato +, que le permite mostrar la fecha en diferentes formatos. Ingrese la fecha ayuda
para ver los diferentes indicadores de formato que puede usar.
Pruebe los comandos id y who para tener una idea de su entorno Linux actual, como se describe en
los siguientes párrafos.
Cuando inicia sesión en un sistema Linux, Linux lo ve como si tuviera una identidad particular, que incluye su
nombre de usuario, nombre de grupo, ID de usuario e ID de grupo. Linux también realiza un seguimiento de su
sesión de inicio de sesión: sabe cuándo inició sesión, cuánto tiempo estuvo inactivo y desde dónde inició sesión.
Para encontrar información sobre su identidad, use el comando id de la siguiente manera:
$ id
uid=1000(chris) gid=1000(chris) grupos=1005(ventas), 7(lp)
En este ejemplo, el nombre de usuario es chris, que está representado por el ID de usuario numérico (uid)
1000. El grupo principal de chris también se llama chris, que tiene una ID de grupo (gid) de 1000.
Es normal que los usuarios de Fedora y Red Hat Enterprise Linux tengan el mismo nombre de grupo principal
que su nombre de usuario. El usuario chris también pertenece a otros grupos llamados sales (gid 1005) y lp (gid
7). Estos nombres y números representan los permisos que Chris tiene para acceder a los recursos informáticos.
NOTA
3
Las distribuciones de Linux que tienen Security Enhanced Linux (SELinux) habilitado, como Fedora y RHEL, muestran información adicional
al final de la salida de id. Esa salida podría ser algo como lo siguiente:
context=no confinado_u:no confinado_r:no confinado_t:s0s0:c0.c1023
SELinux proporciona un medio para bloquear firmemente la seguridad de un sistema Linux. Consulte el Capítulo 24, "Mejora de la seguridad
de Linux con SELinux", si desea obtener información sobre SELinux.
Puede ver información sobre su sesión de inicio de sesión actual utilizando el comando who. En el siguiente
ejemplo, la opción u dice que agregue información sobre el tiempo de inactividad y el ID del proceso y H pide
que se imprima un encabezado:
$ quien uH
LÍNEA TIEMPO INACTIVO COMENTARIO PID
NOMBRE Chris tty1 13 de enero 20:57 . 2019
El resultado de este comando who muestra que el usuario chris inició sesión en tty1 (que es la primera
consola virtual en el monitor conectado a la computadora) y su sesión de inicio de sesión comenzó a las 20:57
el 13 de enero. El tiempo IDLE muestra cómo tiempo que el shell ha estado abierto sin que se haya escrito
ningún comando (el punto indica que está actualmente activo).
'
PID muestra el ID de proceso del usuario la shell de inicio de sesión. COMENTARIO mostraría el nombre de
computadora remota desde la que el usuario había iniciado sesión, si ese usuario había iniciado sesión desde
69
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
otra computadora en la red, o el nombre de la pantalla X local si ese usuario estaba usando una ventana
de Terminal (como: 0.0).
Localización de comandos
Ahora que ha escrito algunos comandos, es posible que se pregunte dónde se encuentran esos
comandos y cómo encuentra el shell los comandos que escribe. Para encontrar los comandos que
escribe, el shell busca en lo que se conoce como su ruta. Para los comandos que no están en su ruta,
puede escribir la identidad completa de la ubicación del comando.
Si conoce el directorio que contiene el comando que desea ejecutar, una forma de ejecutarlo es escribir la
ruta completa o absoluta de ese comando. Por ejemplo, ejecuta el comando de fecha desde el directorio /
bin ingresando lo siguiente:
$ /bin/fecha
Por supuesto, esto puede ser un inconveniente, especialmente si el comando reside en un directorio con
un nombre de ruta largo. La mejor manera es tener los comandos almacenados en directorios conocidos
y luego agregar esos directorios a la variable de entorno PATH de su shell. La ruta consta de una lista de
directorios que se verifican secuencialmente para los comandos que ingresa. Para ver su ruta actual,
ingrese lo siguiente:
$ echo $RUTA /
usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: /home/chris/bin
Los resultados muestran una ruta predeterminada común para un usuario regular de Linux. Los
directorios en la lista de rutas están separados por dos puntos. La mayoría de los comandos de usuario
que vienen con Linux se almacenan en el directorio /bin, /usr/bin o /usr/local/bin. Los directorios /sbin y /
usr/sbin contienen comandos administrativos (algunos sistemas Linux rutas
no colocan
de los eusos
suarios
directorios
regulares).
en las
El
último directorio que se muestra es el directorio bin en el directorio de inicio del usuario (/home/chris/bin).
CONSEJO
Si desea agregar sus propios comandos o scripts de shell, colóquelos en el directorio bin de su directorio de inicio (como /home/
chris/bin para el usuario llamado chris). Este directorio se agrega automáticamente a su ruta en algunos sistemas Linux, aunque
es posible que deba crear ese directorio o agregarlo a su RUTA en otros sistemas Linux. Entonces, siempre que agregue el
comando a su contenedor con permiso de ejecución, puede comenzar a usarlo simplemente escribiendo el nombre del comando
en el indicador de shell. Para que los comandos estén disponibles para todos los usuarios, agréguelos a /usr/local/bin .
tory para un ejecutable antes de buscar la ruta. Inmediatamente comienza a buscar la ruta, y los ejecutables
en el directorio actual se ejecutan solo si están en la variable PATH o si proporciona su valor absoluto
(como /home/chris/scriptx.sh) o relativo (por ejemplo, ./scriptx. sh) ubicación.
70
Machine Translated by Google
Capítulo 3: Usando el Shell
El orden del directorio de rutas es importante. Los directorios se comprueban de izquierda a derecha.
Entonces, en este ejemplo, si hay un comando llamado foo ubicado en los directorios /usr/bin y /bin, se
ejecuta el que está en /usr/bin. Para ejecutar el otro comando foo, escriba la ruta completa al comando o
cambie su variable PATH. (Cambiar su RUTA y agregarle directorios se describe más adelante en este
capítulo).
No todos los comandos que ejecuta están ubicados en directorios en su variable PATH. Algunos
comandos están integrados en el shell. Se pueden anular otros comandos mediante la creación de alias
que definan cualquier comando y opción que desee que ejecute el comando. También hay formas de
definir una función que consta de una serie de comandos almacenados. Este es el orden en el que el
shell comprueba los comandos que escribe:
1. Alias. Estos son nombres establecidos por el comando alias que representan un comando
particular y un conjunto de opciones. Escriba alias para ver qué alias están configurados. A
menudo, los alias le permiten defi nir un nombre corto para un comando largo y complicado.
(Describo cómo crear sus propios alias más adelante en este capítulo).
2. Palabra reservada de Shell. Estas son palabras reservadas por el caparazón para uso especial.
Muchas de estas son palabras que usaría en funciones de tipo programación, como do, while,
,
case y else. (Cubro algunas de estas palabras reservadas en el Capítulo 7, "Escribir scripts de
shell simples".)
3. Función. Este es un conjunto de comandos que se ejecutan juntos dentro del
cáscara actual.
4. Comando incorporado. Este es un comando integrado en el shell. Como resultado, no hay 3
representación del comando en el sistema de archivos. Algunos de los comandos más comunes
que usará son comandos integrados en el shell, como cd (para cambiar de directorio), echo
(para enviar texto a la pantalla), exit (para salir de un shell), fg (para traer un comando
ejecutándose en segundo plano al primer plano), history (para ver una lista de comandos que se
ejecutaron previamente), pwd (para enumerar el directorio de trabajo actual), set (para configurar
las opciones de shell) y type (para mostrar la ubicación de un comando).
5. Comando del sistema de archivos. Este comando se almacena y ejecuta desde el sistema de ' s
archivos de la computadora. (Estos son los comandos indicados por el valor de la variable PATH).
Para determinar la ubicación de un comando en particular, puede usar el comando tipo. (Si está usando
un shell que no sea bash, use el comando which en su lugar). Por ejemplo, para averiguar dónde se
encuentra el comando del shell bash, ingrese lo siguiente:
$ escriba bash
bash es /bin/bash
Pruebe estas pocas palabras con el comando type para ver otras ubicaciones de los comandos: which,
case y return. Si un comando reside en varias ubicaciones, puede agregar la opción a para que se
impriman todas las ubicaciones conocidas del comando. Por ejemplo, el tipo de comando a ls debería
mostrar una ubicación con alias y un sistema de archivos para el comando ls.
71
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
CONSEJO
A veces, ejecuta un comando y recibe un mensaje de error que indica que no se encontró el comando o que se denegó el permiso
para ejecutar el comando. Si no se encontró el comando, verifique que lo haya escrito correctamente y que esté ubicado en su
variable PATH. Si se denegó el permiso para ejecutar el comando, el comando puede estar en la variable PATH pero puede no
ser ejecutable. Recuerde también que las mayúsculas y minúsculas son importantes, por lo que escribir CAT o Cat no encontrará
el comando cat.
Si un comando no está en su variable PATH, puede usar el comando de localización para intentar
encontrarlo. Usando la localización, puede buscar cualquier parte del sistema que sea accesible para usted.
(Algunos archivos solo son accesibles para el usuario raíz). Por ejemplo, si quisiera encontrar la ubicación del
comando cambiar, podría ingresar lo siguiente:
$ localizar cambio /
usr/bin/cambio /usr/
sbin/lchage /usr/share/
man/fr/man1/chage.1.gz /usr/share/man/it/
man1/chage.1.gz /usr/ share/man/ja/man1/
chage.1.gz /usr/share/man/man1/chage.1.gz /
usr/share/man/man1/lchage.1.gz /usr/share/
man/pl/ man1/chage.1.gz /usr/share/man/ru/
man1/chage.1.gz /usr/share/man/sv/man1/
chage.1.gz /usr/share/man/tr/man1/ cambio.1.gz
Tenga en cuenta que localizar no solo encontró el comando chage, sino que también encontró el
comando lchage y una variedad de páginas man asociadas con chage para diferentes idiomas. El comando
de localización busca en todo el sistema de archivos, no solo en los directorios que contienen comandos.
(Si localizar no encuentra archivos agregados recientemente a su sistema, ejecute updatedb como raíz para
actualizar la base de datos de localización).
En los próximos capítulos, aprenderá a usar comandos adicionales. Por ahora, quiero que te familiarices
con el funcionamiento del shell. A continuación, analizo las funciones para recuperar comandos, completar
comandos, usar variables y crear alias.
Recuperación de comandos mediante el historial de comandos
Puede ser conveniente poder repetir un comando que ejecutó anteriormente en una sesión de shell. Recuperar
una línea de comando larga y compleja que escribió mal puede ahorrarle algunos problemas. Afortunadamente,
algunas funciones de shell le permiten recuperar líneas de comando anteriores, editar esas líneas o completar
una línea de comando escrita parcialmente.
El historial de shell es una lista de los comandos que ha ingresado antes. Usando el comando his tory
en un shell bash, puede ver sus comandos anteriores. Luego usando varios
72
Machine Translated by Google
Capítulo 3: Usando el Shell
funciones de shell, puede recuperar líneas de comando individuales de esa lista y cambiarlas como desee.
El resto de esta sección describe cómo editar la línea de comandos, cómo completar partes de las líneas de
comandos y cómo recuperar y trabajar con la lista de historial.
Edición de la línea de comandos Si
escribe algo mal en una línea de comandos, el shell bash garantiza que no tenga que eliminar toda la línea y
empezar de nuevo. Asimismo, puede recuperar una línea de comando anterior y cambiar los elementos para crear
un nuevo comando.
De forma predeterminada, el shell bash utiliza la edición de línea de comandos que se basa en el editor de texto
de emacs. (Escriba man emacs para leer al respecto, si desea hacerlo). Si está familiarizado con emacs,
probablemente ya conozca la mayoría de las pulsaciones de teclas descritas aquí.
CONSEJO
Si prefiere el comando vi para editar las líneas de comando del shell, puede hacerlo fácilmente. Agregue la siguiente línea al
archivo .bashrc en su directorio de inicio:
visto o nosotros
La próxima vez que abra un shell, puede usar los comandos vi para editar sus líneas de comando.
Para realizar la edición, puede usar una combinación de teclas de control, teclas meta y teclas de flecha.
3
Por ejemplo, Ctrl+F significa mantener presionada la tecla Ctrl y escribir f. Alt+F significa mantener presionada la tecla
Alt y escribir f. (En lugar de la tecla Alt, su teclado puede usar una tecla Meta o la tecla Esc. En un teclado de
Windows, puede usar la tecla de Windows).
Para probar un poco de edición de línea de comandos, ingrese lo
siguiente: $ ls /usr/bin | ordenar f | menos
Este comando enumera el contenido del directorio /usr/bin, ordena el contenido en orden alfabético
(independientemente de las mayúsculas y minúsculas) y canaliza la salida a less. El comando less muestra la
primera página de salida, después de lo cual puede recorrer el resto de la salida una línea (presione Intro) o una
página (presione la barra espaciadora) a la vez. Simplemente presione q cuando haya terminado.
Ahora, suponga que desea cambiar /usr/bin a /bin. Puede usar los siguientes pasos para cambiar el comando:
1. Presione la tecla de flecha hacia arriba (↑). Esto muestra el comando más reciente de su
historia de la concha.
2. Presione Ctrl+A. Esto mueve el cursor al principio de la línea de comando.
3. Presione Ctrl+F o la tecla de flecha hacia la derecha (→). Repita este comando varias veces para
coloque el cursor debajo de la primera barra inclinada (/).
4. Presione Ctrl+D. Escriba este comando cuatro veces para eliminar /usr de la línea.
73
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
5. Presione Entrar. Esto ejecuta la línea de comando.
Mientras edita una línea de comando, en cualquier momento puede escribir caracteres regulares para agregar esos
caracteres a la línea de comando. Los caracteres aparecen en la ubicación de su cursor de texto.
Puede usar las flechas derecha → e izquierda ← para mover el cursor de un extremo al otro en la línea de comando. También
puede presionar las teclas de flecha hacia arriba ↑ y hacia abajo ↓ para recorrer los comandos anteriores en la lista del historial y
seleccionar una línea de comando para editar. (Consulte la sección "Recuperación de la línea de comandos" para obtener detalles
sobre cómo recuperar los comandos de la lista del historial). Puede usar muchas pulsaciones de teclas para editar sus líneas de
comandos. La Tabla 3.1 enumera las pulsaciones de teclas que puede utilizar para desplazarse por la línea de comandos.
TABLA 3.1 Pulsaciones de teclas para navegar por las líneas de comandos
Las pulsaciones de teclas de la Tabla 3.2 se pueden usar para editar líneas de comando.
Nombre completo Significado
Personaje adelante 74
Avanza
un carácter.
Carácter al revés Retrocede un carácter.
Palabra adelante Avanza una palabra.
Palabra al revés Retrocede una palabra.
Comienzo de linea Ir al principio de la línea actual.
Fin de la línea Ir al final de la línea.
Machine Translated by Google
Capítulo 3: Usando el Shell
Utilice las pulsaciones de teclas de la Tabla 3.3 para cortar y pegar texto en una línea de comando.
TABLA 3.3 Pulsaciones de teclas para cortar y pegar texto desde líneas de comando
Finalización de la línea de comandos Para
ahorrarle algunas pulsaciones de teclas, el shell bash ofrece varias formas diferentes de completar valores escritos
parcialmente. Para intentar completar un valor, escriba los primeros caracteres y presione Tab. Estos son algunos de
los valores que puede escribir parcialmente desde un shell bash:
3
Comando, alias o función Si el texto que escribe comienza con caracteres regulares, el shell intenta completar el
texto con un comando, alias o nombre de función.
Variable Si el texto que escribe comienza con un signo de dólar ($), el shell completa el
texto con una variable del shell actual.
Nombre de usuario Si el texto que escribe comienza con una tilde (~), el shell completa el texto con un nombre de
usuario. Como resultado, ~username indica el directorio de inicio del usuario nombrado.
Nombre de host Si el texto que escribe comienza con el símbolo de arroba (@), el shell completa el texto con un
nombre de host tomado del archivo /etc/hosts.
CONSEJO
Para agregar nombres de host desde un archivo adicional, puede configurar la variable HOSTFILE con el nombre de ese archivo. El
archivo debe tener el mismo formato que /etc/hosts .
Estos son algunos ejemplos de finalización de comandos. (Cuando vea <Tab>, significa que debe presionar la tecla Tab
en su teclado). Ingrese lo siguiente:
$ echo $OS<Tab> $
cd ~ro<Tab> $
userm<Tab>
75
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
El primer ejemplo hace que $OS se expanda a la variable $OSTYPE. En el siguiente ejemplo, ~ro se expande al
'
comando root user usermod. s directorio de inicio (~raíz/). A continuación, userm se expande a la
Presionar Tabulador dos veces ofrece maravillosas posibilidades. A veces, están disponibles varios complementos
posibles para la cadena de caracteres que ha introducido. En esos casos, puede verificar las posibles formas en que
se puede expandir el texto presionando Tabulador dos veces en el punto donde desea completar.
A continuación se muestra el resultado que obtendría si verificara las posibles terminaciones en $P:
$ echo $P<Tab><Tab>
$RUTA $PPID $PS1 $PS2 $PS4 $PWD $ echo
$P
En este caso, hay seis variables posibles que comienzan con $P. Después de que se muestran las posibilidades,
vuelve la línea de comando original, lista para que la completes como quieras. Por ejemplo, si escribiste otra P y
volviste a presionar Tab, la línea de comando se completaría con $PPID (la única posibilidad única).
Recuperación de la línea de
comandos Después de escribir un comando, la línea de comandos completa se guarda en la lista de historial de su shell.
La lista se almacena en el shell actual hasta que salga del shell. Después de eso, se escribe en un archivo de
historial, desde el cual se puede recuperar cualquier comando para ejecutarlo nuevamente en su próxima sesión.
Después de recuperar un comando, puede modificar la línea de comando, como se describió anteriormente.
Para ver su lista de historial, use el comando de historial. Ingrese el comando sin opciones o seguido de un número
para enumerar muchos de los comandos más recientes. Por ejemplo:
$ historia 8 382
fecha
383 ls/usr/bin | ordenar a | más
384 tipo de hombre
385 cd /usr/local/bin
386 hombre más
387 useradd m /home/chris u 101 chris 388 contraseña chris
389 historial 8
Un número precede a cada línea de comando en la lista. Puede recuperar uno de esos comandos usando un
signo de exclamación (!). Tenga en cuenta que cuando se usa un signo de exclamación, el comando se ejecuta a
ciegas sin presentar una oportunidad para confirmar el comando al que hace referencia. Hay varias formas de ' re
ejecutar un comando inmediatamente desde esta lista, incluidas las siguientes:
!n Número de comando de ejecución. Reemplace la n con el número de la línea de comando y esa línea
se ejecuta. Por ejemplo, aquí se explica cómo repetir el comando de fecha que se muestra como
número de comando 382 en la lista de historial anterior:
$ !382
76
Machine Translated by Google
Capítulo 3: Usando el Shell
fecha
Vie 29 de junio 15:47:57 EDT 2019
'
!!!! Ejecute el comando anterior. Ejecuta la línea de comando anterior. Aquí ejecute es como lo harías
inmediatamente ese mismo comando de fecha:
$ !!
fecha
viernes 29 de junio 15:53:27 EDT 2019
!?cadena? Ejecute el comando que contiene una cadena. Esto ejecuta el comando más reciente que
contiene una cadena particular de caracteres. Por ejemplo, puede ejecutar el comando de fecha
nuevamente simplemente buscando parte de esa línea de comando de la siguiente manera:
$ !? eso?
fecha
Vie 29 de junio 16:04:18 EDT 2019
En lugar de simplemente ejecutar una línea de comando de historial inmediatamente, puede recuperar una línea
en particular y editarla. Puede usar las siguientes teclas o combinaciones de teclas para hacerlo, como se muestra
en la Tabla 3.4.
Otra forma de trabajar con su lista de historial es usar el comando fc. Escriba fc seguido de un número de
línea de historial, y esa línea de comando se abre en un editor de texto (vi de forma predeterminada, escriba :wq
para guardar y salir o :q! para simplemente salir si está atascado en vi). Haz los cambios que quieras. Cuando
sale del editor, se ejecuta el comando. También puede dar un rango de línea 3
TABLA 3.4 Pulsaciones de teclas para usar el historial de comandos
77
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
números (por ejemplo, fc 100 105). Todos los comandos se abren en su editor de texto y luego se
ejecutan uno tras otro cuando sale del editor.
Después de cerrar su shell, la lista de historial se almacena en el directorio _ archivo de historial en su
de inicio .bash. De forma predeterminada, se almacenan hasta 1000 comandos de historial.
NOTA
Algunas personas deshabilitan la función de historial para el usuario raíz configurando la variable de shell HISTFILE en /dev/null o
'
simplemente dejando en blanco HISTSIZE. Esto evita que se explote información sobre el usuario s actividades
root. Si es
de
un
ser
usuario
potencialmente
administrativo con privilegios de raíz, puede considerar vaciar su archivo al salir también por las mismas razones. Además, debido
a que el historial de shell se almacena de forma permanente cuando el shell sale correctamente, puede evitar almacenar el historial
de un shell eliminando un shell. Por ejemplo,
shell.para eliminar un shell con el ID de proceso 1234, escriba kill 9 1234 desde cualquier
Comandos de conexión y expansión
Una característica verdaderamente poderosa del shell es la capacidad de redirigir la entrada y salida
de comandos hacia y desde otros comandos y archivos. Para permitir que los comandos se
encadenen, el shell usa metacaracteres. Un metacarácter es un carácter escrito que tiene un significado
especial para el shell para conectar comandos o solicitar expansión.
Los metacaracteres incluyen el carácter vertical (|), el ampersand (&), el punto y coma (;), el paréntesis
derecho ()), el paréntesis izquierdo ((), el signo menor que (<) y el signo mayor que (>). describir cómo usar
metacaracteres en la línea de comando para cambiar el comportamiento de los comandos.
Canalización entre comandos El
metacarácter de tubería (|) conecta la salida de un comando con la entrada de otro comando. Esto le
permite hacer que un comando trabaje en algunos datos y luego hacer que el siguiente comando se ocupe
de los resultados. Aquí hay un ejemplo de una línea de comando que incluye tuberías:
$ gato /etc/contraseña | ordenar | menos
Este comando enumera el contenido del archivo /etc/passwd y canaliza la salida al comando sort. El
comando sort toma los nombres de usuario que comienzan cada línea del archivo /etc/passwd, los
ordena alfabéticamente y canaliza la salida al comando less (para recorrer la salida).
Las tuberías son una excelente ilustración de cómo se creó UNIX, el predecesor de Linux, como un
sistema operativo formado por bloques de construcción. Una práctica estándar en UNIX era conectar las
utilidades de diferentes maneras para realizar diferentes trabajos. Por ejemplo, antes de los días de los
procesadores de texto gráficos, los usuarios creaban archivos de texto sin formato que incluían macros para
indicar el formato. Para ver cómo se veía realmente el documento, usarían un comando como el siguiente:
$ gunzip < /usr/share/man/man1/grep.1.gz | nroffchombre | menos
78
Machine Translated by Google
Capítulo 3: Usando el Shell
En este ejemplo, el contenido de la página man de grep (grep.1.gz) se dirige al comando gun zip para
descomprimirlo. La salida de gunzip se canaliza al comando nroff para formatear la página del manual usando
la macro manual (man). Para mostrar la salida, se canaliza al comando less. Debido a que el archivo que se
muestra está en texto sin formato, podría haber sustituido cualquier cantidad de opciones para trabajar con el
texto antes de mostrarlo. Puede ordenar el contenido, cambiar o eliminar parte del contenido o traer texto de
otros documentos.
La clave es que, en lugar de que todas esas funciones estén en un solo programa, obtiene resultados al
canalizar y redirigir la entrada y la salida entre múltiples comandos.
Comandos secuenciales A veces,
es posible que desee que se ejecute una secuencia de comandos, con un comando completo antes de que
comience el siguiente comando. Puede hacerlo escribiendo varios comandos en la misma línea de comando
y separándolos con punto y coma (;):
$ fecha ; troff me documento muy grande | lpr; fecha
En este ejemplo, estaba formateando un documento enorme y quería saber cuánto tardaría. El primer
comando (fecha) mostraba la fecha y la hora antes de que comenzara el formateo.
El comando troff formateó el documento y luego envió la salida a la impresora.
Cuando finalizó el formateo, la fecha y la hora se imprimieron nuevamente (así que sabía cuánto tiempo
tardó en completarse el comando troff).
Otro comando útil para agregar al final de una línea de comandos larga es mail. Puede agregar lo siguiente
al final de una línea de comando: 3
; mail s "Terminó el comando largo" chris@example.com
Luego, por ejemplo, se envía un mensaje de correo al usuario que elija después de que se complete
el comando.
Comandos en segundo plano Algunos
comandos pueden tardar un poco en completarse. A veces, es posible que no desee atar su caparazón
esperando que finalice un comando. En esos casos, puede hacer que los comandos se ejecuten en segundo
plano usando el signo ampersand (&).
Los comandos de formato de texto (como nroff y troff, descritos anteriormente) son ejemplos de comandos
que se pueden ejecutar en segundo plano para formatear un documento grande. También es posible que
desee crear sus propios scripts de shell que se ejecuten en segundo plano para verificar continuamente que
ocurran ciertos eventos, como que el disco duro se llene o que determinados usuarios inicien sesión.
El siguiente es un ejemplo de un comando que se ejecuta en segundo plano:
$ troff me documento muy grande | lpr &
No cierre el shell hasta que se complete el proceso o hasta que finalice el proceso. En el Capítulo 6,
“Administración de procesos en ejecución”, se describen otras formas de administrar procesos segundo
en plano
y en primer plano.
79
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Expansión de comandos Con la
sustitución de comandos, puede hacer que la salida de un comando sea interpretada por el shell
en lugar del comando mismo. De esta forma, puede hacer que la salida estándar de un comando se
convierta en un argumento para otro comando. Las dos formas de sustitución de comandos son $
(comando) y ̀comando` (comillas invertidas, no comillas simples).
El comando en este caso puede incluir opciones, metacaracteres y argumentos. El siguiente es un
ejemplo del uso de la sustitución de comandos:
$ vi $(buscar /inicio | grep xyzzy)
En este ejemplo, la sustitución del comando se realiza antes de ejecutar el comando vi. Primero,
el comando de búsqueda comienza en el directorio /home e imprime todos los archivos y directorios
debajo de ese punto en el sistema de archivos. La salida se canaliza al comando grep, que filtra todos
los archivos excepto aquellos que incluyen la cadena xyzzy en el nombre del archivo. Finalmente, el
comando vi abre todos los nombres de archivos para editar (uno a la vez) que incluyen xyzzy. (Si
ejecuta esto y no está familiarizado con vi, puede escribir :q! para salir del archivo).
Este ejemplo en particular es útil si desea editar un archivo del que conoce el nombre pero no la
ubicación. Siempre que la cadena no sea común, puede buscar y abrir todas las instancias de un
nombre de archivo que exista debajo de un punto que elija en el sistema de archivos. (En otras
palabras, no use grep del sistema de archivos raíz o coincidirá e intentará editar varios miles de
archivos).
Expansión de expresiones aritméticas A veces,
desea pasar resultados aritméticos a un comando. Hay dos formas que puede usar para expandir
una expresión aritmética y pasarla al shell: $[expresión] o $(expresión). Lo siguiente es un ejemplo:
$ echo "Tengo $[2020 1957] años".
tengo 63 años
El shell interpreta primero la expresión aritmética (2020 1957) y luego pasa esa información al
comando echo. El comando echo muestra el texto con los resultados de la aritmética (63) insertada.
'
Aquí s un ejemplo de la otra forma:
$ echo "Hay $(ls | wc w) archivos en este directorio".
Hay 14 archivos en este directorio.
Esto enumera el contenido del directorio actual (ls) y ejecuta el comando de recuento de palabras
para contar el número de archivos encontrados (wc w). El número resultante (14, en este caso) se
repite con el resto de la oración que se muestra.
Expansión de variables Las
variables que almacenan información dentro del shell se pueden expandir utilizando el metacarácter del
signo de dólar ($). Cuando expande una variable de entorno en una línea de comando, el valor de la
variable se imprime en lugar del nombre de la variable en sí, de la siguiente manera:
$ ls l $BASH rwxr
xrx. 1 raíz raíz 1219248 12 de octubre 17:59 /usr/bin/bash
80
Machine Translated by Google
Capítulo 3: Usando el Shell
El uso de $BASH como argumento para ls l hace que se imprima una lista larga del comando
bash.
Uso de variables de shell
'
El shell en sí almacena información que puede ser útil para el usuario s sesión de shell en lo que son
llamada variables. Los ejemplos de variables incluyen $SHELL (que identifi ca el shell que está
usando), $PS1 (que defi ne el indicador de su shell) y $MAIL (que identifi ca la ubicación de su
'
usuario). buzón de correo).
Puede ver todas las variables configuradas para su shell actual escribiendo el comando set. Un
subconjunto de sus variables locales se conoce como variables de entorno. Las variables de entorno
son variables que se exportan a cualquier shell nuevo abierto desde el shell actual. Escriba env para ver
las variables de entorno.
Puede escribir echo $VALOR, donde VALOR se reemplaza por el nombre de una variable de entorno
en particular que desea enumerar. Y debido a que siempre hay múltiples formas de hacer cualquier
cosa en Linux, también puede escribir declare para obtener una lista de las variables de entorno actuales
y sus valores junto con una lista de funciones de shell.
Además de las que configura usted mismo, los archivos del sistema establecen variables que almacenan
cosas tales como ubicaciones de archivos de configuración, buzones de correo y directorios de rutas. También
pueden almacenar valores para sus indicaciones de shell, el tamaño de su lista de historial y el tipo de sistema
operativo. Puede hacer referencia al valor de cualquiera de esas variables precediéndolo con un signo de dólar ($) 3
y colocándolo en cualquier lugar de una línea de comando. Por ejemplo:
$ echo $USUARIO
chris
Este comando imprime el valor de la variable USER, que contiene su nombre de usuario (chris).
Sustituya cualquier otro valor por USUARIO para imprimir su valor en su lugar.
Cuando inicia un shell (iniciando sesión a través de una consola virtual o abriendo una ventana
de Terminal), muchas variables de entorno ya están configuradas. La tabla 3.5 muestra algunas
variables que se configuran cuando usa un shell bash o que usted puede configurar para usarlas con
diferentes funciones.
Creación y uso de alias Con el comando
alias, puede crear efectivamente un acceso directo a cualquier comando y opción que desee
ejecutar más adelante. Puede agregar y enumerar alias con el comando alias.
Considere los siguientes ejemplos de uso de alias desde un shell bash:
$ alias p='pwd; ls –CF' $ alias
rm='rm i'
En el primer ejemplo, la letra p se asigna para ejecutar el comando pwd y luego ejecutar ls CF para
imprimir el directorio de trabajo actual y enumerar su contenido en forma de columna.
81
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
TABLA 3.5 Variables de entorno comunes de Shell
Variable Descripción
INTENTO Contiene la ruta completa del comando bash. Esto suele ser /bin/bash.
BASH_VERSION Este es un número que representa la versión actual del comando bash.
IDUE Este es el número de ID de usuario efectivo del usuario actual. Se asigna cuando se
'
inicia el shell, en función del usuario. s en el archivo /etc/passwd.
FCEDIT Si se establece, esta variable indica el editor de texto utilizado por el comando fc para
'
editar comandos de historial. Si esta variable es el comando st e
conjunto,
utiliza. el vi
ARCHIVO HISTÓRICO
Esta es la ubicación de su archivo de historial. Por lo general, se encuentra en $HOME/.
bash_historia.
TAMAÑOARCHIVOHIST Este es el número de entradas del historial que se pueden almacenar. Después de
alcanzar este número, los comandos más antiguos se descartan. El valor predeterminado
es 1000.
HISTCMD Esto devuelve el número del comando actual en la lista de historial.
HOGAR Este es su directorio de inicio. Es su directorio de trabajo actual cada vez que inicia
sesión o escribe el comando cd con cualquier opción.
TIPO DE HOST Este es un valor que describe la arquitectura de la computadora en la que se ejecuta
el sistema Linux. Para PC compatibles con Intel, el valor es i386, i486, i586, i686 o
algo así como i386linux. Para máquinas AMD de 64 bits, el valor es x86_64.
CORREO Esta es la ubicación de su archivo de buzón. El archivo suele ser su nombre de usuario
en el directorio /var/spool/mail.
OLDPWD Este es el directorio que era el directorio de trabajo antes de cambiar al directorio de trabajo
actual.
OSTIPO Este nombre identifica el sistema operativo actual. Para Fedora Linux, el valor OSTYPE
es linux o linuxgnu, según el tipo de shell que esté utilizando. (Bash también puede
ejecutarse en otros sistemas operativos).
CAMINO Esta es la lista de directorios separados por dos puntos que se utilizan para encontrar
los comandos que escribe. El valor predeterminado para usuarios normales varía según
las diferentes distribuciones, pero normalmente incluye lo siguiente: /bin:/usr/bin:/usr/
local/bin:/usr/bin/X11:/usr/X11R6/bin:~/bin. Debe escribir la ruta completa o una ruta relativa
a un comando que desea ejecutar y que no está en su RUTA. Para el usuario raíz, el valor
también incluye /sbin, /usr/sbin y /usr/local/sbin.
PPID Este es el ID de proceso del comando que inició el shell actual (por ejemplo, la ventana de
Terminal que contiene el shell).
82
Machine Translated by Google
Capítulo 3: Usando el Shell
Variable Descripción
PROMPT_COMMAND Esto se puede establecer en un nombre de comando que se ejecuta cada vez antes de que se
muestre el indicador de shell. Configurar PROMPT_COMMAND=date enumera la fecha/
hora actual antes de que aparezca el aviso.
ps1 Esto establece el valor de su indicador de shell. Hay muchos elementos que puede leer en su
indicador (fecha, hora, nombre de usuario, nombre de host, etc.).
A veces, un comando requiere indicaciones adicionales, que puede configurar con las variables
PS2, PS3, etc.
PCD Este es el directorio que está asignado como su directorio actual. Este valor cambia cada vez
que cambia de directorio con el comando cd.
ALEATORIO Al acceder a esta variable, se genera un número aleatorio. El número está entre 0 y 99999.
SEGUNDOS Este es el número de segundos desde el momento en que se inició el shell.
SHLVL Este es el número de niveles de shell asociados con el shell actual
sesión. Cuando inicia sesión en el shell, el SHLVL es 1. Cada vez que inicia un nuevo
comando bash (por ejemplo, usando su para convertirse en un nuevo usuario, o simplemente
escribiendo bash), este número se incrementa.
TMOUT Esto se puede establecer en un número que representa la cantidad de segundos que el
shell puede estar inactivo sin recibir información. Una vez alcanzado el número de segundos,
el shell sale. Esta función de seguridad hace que sea menos probable que personas no
autorizadas accedan a shells desatendidos. (Esto debe configurarse en el shell de inicio de
sesión para que realmente haga que el shell cierre la sesión del usuario).
3
El segundo ejemplo ejecuta el comando rm con la opción i cada vez que escribe rm.
(Este es un alias que a menudo se configura automáticamente para el usuario raíz. En
lugar de simplemente eliminar archivos, se le solicita que elimine cada archivo individual. Esto
evita que elimine automáticamente todos los archivos en un directorio al escribir algo por error
como rm *.)
Mientras está en el shell, puede verificar qué alias están configurados escribiendo el
comando alias. Si desea eliminar un alias, utilice unalias. (Recuerde que si el alias está
configurado en un archivo de configuración, se configurará nuevamente cuando abra otro shell).
Salir del shell Para
salir del shell cuando haya terminado, escriba exit o presione Ctrl+D. Si va al shell desde
una ventana de Terminal y está utilizando el shell original de esa ventana, al salir, la ventana
de Terminal se cierra. Si está en una consola virtual, el shell se cierra y lo devuelve a un
indicador de inicio de sesión.
83
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Si tiene varios shells abiertos desde la misma sesión de shell, salir de un shell simplemente lo devuelve al
shell que inició el shell actual. Por ejemplo, el comando su abre un shell como nuevo usuario. Salir de ese
shell simplemente lo devuelve al shell original.
Creación de su entorno Shell
Puede ajustar su caparazón para ayudarlo a trabajar de manera más eficiente. Puede establecer alias
para crear accesos directos a sus líneas de comando favoritas y variables de entorno para almacenar
fragmentos de información. Al agregar esos ajustes a los archivos de configuración de shell, puede tener
los ajustes disponibles cada vez que abre un shell.
Configurando su shell Varios
archivos de configuración soportan cómo se comporta su shell. Algunos de los archivos se ejecutan para
cada usuario y cada shell, mientras que otros son específi cos para el usuario que crea el archivo de
configuración. La Tabla 3.6 muestra los archivos que son de interés para cualquier persona que use el shell
bash en Linux. (Observe el uso de ~ en los nombres de archivo para indicar que el archivo se encuentra en
' usuario el directorio de inicio de cada uno).
Para cambiar los archivos /etc/profile o /etc/bashrc, debe ser usuario root. Es mejor crear un archivo /etc/
profile.d/custom.sh para agregar configuraciones de todo el sistema en lugar de
TABLA 3.6 Archivos de configuración de Bash
Archivo Descripción
/etc/perfil Esto configura la información del entorno del usuario para cada usuario. Se ejecuta
cuando inicia sesión por primera vez. Este archivo proporciona valores para su ruta
además de establecer variables de entorno para cosas tales como la ubicación de
su buzón y el tamaño de sus archivos de historial. Finalmente, /etc/profile recopila la
configuración de shell de los archivos de configuración en el directorio /etc/profile.d.
/etc/bashrc Esto se ejecuta para cada usuario que ejecuta el shell bash cada vez que se abre
un shell bash. Establece el aviso predeterminado y puede agregar uno o más alias.
'
Los valores en este archivo pueden ser anulados por la información en cada archivo s
~/.bashrc de usuario.
~/. Esto lo utiliza cada usuario para ingresar información que es específi ca de su
bash_perfil uso del shell. Se ejecuta solo una vez, cuando el usuario inicia sesión.
'
De forma predeterminada, establece algunas variables de entorno y ejecuta el s
archivo .bashrc del usuario. Este es un buen lugar para agregar variables de entorno
porque, una vez establecidas, son heredadas por shells futuros.
~/.bashrc Este contiene la información que es específi ca de sus shells bash. Se lee cuando
inicia sesión y también cada vez que abre un nuevo shell bash. Esta es la mejor
ubicación para agregar alias para que su shell los recoja.
~/. Esto se ejecuta cada vez que cierra la sesión (salga del último shell bash).
bash_logout
84
Machine Translated by Google
Capítulo 3: Usando el Shell
editar esos archivos directamente, sin embargo. Los usuarios pueden cambiar la información en los archivos
$HOME/ .bash_profile, $HOME/.bashrc y $HOME/.bash_logout en sus propios directorios de inicio.
Hasta que aprenda a usar el editor vi, descrito en el Capítulo 5, “Trabajar con archivos de texto”, puede usar un editor
simple llamado nano para editar archivos de texto sin formato. Por ejemplo, ingrese lo siguiente para editar y agregar
cosas a su archivo $HOME/.bashrc:
$ nano $HOME/.bashrc
Con el archivo abierto en nano, mueva el cursor hacia abajo hasta la parte inferior del archivo (usando la tecla de
flecha hacia abajo). Escriba la línea que desee (por ejemplo, podría escribir alias d= 'fecha +%D '). Para guardar el
archivo, presione Ctrl+O (la letra O); para salir, presione Ctrl+X. La próxima vez que inicie sesión o abra un nuevo
shell, puede usar el nuevo alias (en este caso, simplemente escriba d). Para que la nueva información que acaba de
agregar al archivo esté disponible desde el shell actual, escriba lo siguiente:
$ fuente $HOME/.bashrc $ d
29/06/19
Las siguientes secciones brindan ideas sobre elementos para agregar a sus archivos de configuración de shell. En la
mayoría de los casos, agrega estos valores al archivo .bashrc en su directorio de inicio. Sin embargo, si administra un
sistema, es posible que desee establecer algunos de estos valores como predeterminados para todos los usuarios de
su sistema Linux.
3
Configuración de su mensaje Su
mensaje consiste en un conjunto de caracteres que aparecen cada vez que el shell está listo para aceptar un
comando. La variable de entorno PS1 establece lo que contiene el indicador y es con lo que interactuará la mayor
parte del tiempo. Si su shell requiere una entrada adicional, utiliza los valores de PS2, PS3 y PS4.
Cuando su sistema Linux está instalado, a menudo se configura un indicador para que contenga más que un
signo de dólar o un signo de libra. Por ejemplo, en Fedora o Red Hat Enterprise Linux, su indicador está configurado
para incluir la siguiente información: su nombre de usuario, su nombre de host y el nombre base de su directorio de
trabajo actual. Esa información está entre corchetes y seguida de un signo de dólar (para usuarios regulares) o un
signo de libra (para el usuario root). El siguiente es un ejemplo de ese aviso:
[chris@mi contenedor de host]$
Si cambia de directorio, el nombre del contenedor cambiará al nombre del nuevo directorio.
Del mismo modo, si iniciara sesión como un usuario diferente o en un host diferente, esa información cambiaría.
Puede usar varios caracteres especiales (indicados agregando una barra invertida a una variedad de letras)
para incluir información diferente en su solicitud. Se pueden usar caracteres especiales para mostrar su número de
terminal, la fecha y la hora, así como otra información.
La Tabla 3.7 proporciona algunos ejemplos (puede encontrar más en la página de manual de bash).
85
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
TABLA 3.7 Caracteres para agregar información al aviso de Bash
Descripción de carácter especial
\! Esto muestra el número de historial de comandos actual. Esto incluye todos los comandos
anteriores almacenados para su nombre de usuario.
\# Esto muestra el número de comando del comando actual. Esto incluye solo los comandos
para el shell activo.
ps Esto muestra el aviso del usuario ($) o el aviso raíz (#), según el tipo de usuario que sea.
\EN Esto muestra solo el nombre base del directorio de trabajo actual. Por ejemplo, si el
directorio de trabajo actual era /var/spool/mail, este valor simplemente aparece como
correo.
\[ Esto precede a una secuencia de caracteres no imprimibles. Esto se puede usar para
agregar una secuencia de control de Terminal en el indicador para cosas como cambiar
colores, agregar efectos de parpadeo o poner caracteres en negrita. (Su terminal determina
las secuencias exactas disponibles).
\] Esto sigue una secuencia de caracteres no imprimibles.
\\ Esto muestra una barra invertida.
\d Esto muestra el nombre del día, el mes y el número de día de la fecha actual, por ejemplo,
sábado 23 de enero.
\h Esto muestra el nombre de host de la computadora que ejecuta el shell.
\norte Esto hace que se produzca una nueva línea.
\nnn Esto muestra el carácter que se relaciona con el número octal reemplazando a nnn.
\s Esto muestra el nombre de shell actual. Para el shell bash, el valor sería bash.
\t Esto imprime la hora actual en horas, minutos y segundos, por ejemplo, 10:14:39.
\en Esto imprime su nombre de usuario actual.
\En Esto muestra la ruta completa al directorio de trabajo actual.
CONSEJO
Si está configurando su aviso temporalmente escribiendo en el shell, debe poner el valor de PS1 entre comillas.
Por ejemplo, podría escribir export PS1="[\t \w]\$ " para ver un aviso similar a este: [20:26:32 /var/spool]$.
Para hacer un cambio permanente en su solicitud, agregue el valor de PS1 a su archivo .bashrc
en su directorio de inicio (suponiendo que esté usando el shell bash). Es posible que ya haya un
valor de PS1 en ese archivo, que puede modificar. Consulte el CÓMO de Bash Prompt
86
Machine Translated by Google
Capítulo 3: Usando el Shell
(http://www.tldp.org/HOWTO/BashPromptHOWTO) para obtener información sobre el cambio de colores, comandos y
otras características de su indicador de shell bash.
Agregar variables de entorno Es posible que desee
considerar agregar algunas variables de entorno a su archivo .bashrc.
Estos pueden ayudar a que el trabajo con el caparazón sea más eficiente y efectivo:
TMOUT Esto establece cuánto tiempo puede estar inactivo el shell antes de que bash se cierre automáticamente.
El valor es el número de segundos durante los cuales el shell no ha recibido entrada. Esta puede ser una
buena característica de seguridad, en caso de que deje su escritorio mientras aún está conectado a Linux. Para
evitar que se cierre la sesión mientras está trabajando, es posible que desee establecer el valor en algo como
TMOUT=1800 (para permitir 30 minutos de tiempo de inactividad). Puede usar cualquier sesión de Terminal
para cerrar el shell actual después de un número determinado de segundos, por ejemplo, TMOUT=30.
PATH Como se describió anteriormente, la variable PATH establece los directorios en los que se buscan los
comandos que utiliza. Si suele utilizar directorios de comandos que no se encuentran en su ruta, puede
agregarlos permanentemente. Para hacer esto, agregue una variable PATH a su archivo .bashrc. Por ejemplo,
para agregar un directorio llamado /getstuff/bin, agregue lo siguiente:
RUTA=$RUTA:/getstuff/bin; RUTA de exportación
Este ejemplo primero lee todos los directorios de ruta actuales en la nueva RUTA ($PATH), agrega el
directorio /getstuff/bin y luego exporta la nueva RUTA. 3
PRECAUCIÓN
Algunas personas agregan el directorio actual a su RUTA agregando un directorio identificado simplemente como un punto ( . ), de la siguiente manera:
RUTA=.:$RUTA ; RUTA de exportación
Esto le permite ejecutar comandos en su directorio actual antes de evaluar cualquier otro comando en la ruta (a lo que las personas pueden estar
acostumbradas si han usado DOS). Sin embargo, el riesgo de seguridad con este procedimiento es que podría estar en un directorio que contiene un
comando que no pretende ejecutar desde ese directorio. Por ejemplo,
lugar due
na
enumerar
persona eml alintencionada
contenido de su
podría
directorio,
poner
haga
un comando
algo tortuoso.
ls en uDn
ebido
directorio
a esto,
que,
se en
desaconseja encarecidamente la práctica de agregar el punto a su ruta.
LO QUE SEA Puede crear sus propias variables de entorno para proporcionar atajos en su trabajo. Elija
cualquier nombre que no se esté utilizando y asígnele un valor útil.
Por ejemplo, si trabaja mucho con archivos en el directorio /work/time/files/info/ memos, puede establecer
la siguiente variable:
M=/trabajo/tiempo/archivos/info/notas ; exportar M
Puede convertirlo en su directorio actual escribiendo cd $M. Podría ejecutar un programa desde ese directorio
llamado hotdog escribiendo $M/hotdog. Puede editar un archivo desde allí llamado bollo escribiendo vi $M/
bun.
87
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Obtener información sobre los comandos
Cuando empiezas a usar el caparazón por primera vez, puede ser intimidante. Todo lo que ves es un aviso.
¿Cómo sabe qué comandos están disponibles, qué opciones usan o cómo usar las funciones avanzadas?
Afortunadamente, hay mucha ayuda disponible. Aquí hay algunos lugares que puede buscar para complementar
lo que aprende en este capítulo:
■ Compruebe la RUTA. Escriba echo $RUTA. Verá una lista de los directorios que contienen
comandos a los que puede acceder inmediatamente. Listar el contenido de esos directorios
muestra la mayoría de los comandos estándar de Linux. Por ejemplo: $ ls /bin
arco dd llaves de carga de montaje en fusor mv
chmod educar
gzip correo ping6
■ Utilice el comando de ayuda. Algunos comandos están integrados en el shell, por lo que no
aparecer en un directorio. El comando de ayuda enumera esos comandos y muestra las opciones
disponibles con cada uno de ellos. (Ingrese ayuda | menos para navegar por la lista). Para obtener
ayuda con un comando incorporado en particular, ingrese comando de ayuda, reemplazando comando
con el nombre que le interese. El comando de ayuda funciona solo con el shell bash. ■ Uso ayuda
con el comando. Muchos comandos incluyen una opción help que
puede usar para obtener información sobre cómo se usa el comando. Por ejemplo, si ingresa fecha
ayuda | menos, la salida muestra no solo las opciones, sino también los formatos de tiempo que
puede usar con el comando de fecha. Otros comandos simplemente usan una opción –h, como fdisk
h.
88
Machine Translated by Google
Capítulo 3: Usando el Shell
■ Utilice el comando de información. El comando info es otra herramienta para mostrar información sobre
los comandos del shell. El comando info puede moverse entre una jerarquía de nodos para encontrar
información sobre comandos y otros elementos. No todos los comandos tienen información disponible
en la base de datos de información, pero a veces se puede encontrar más información allí que en una
página de manual. ■ Utilice el comando man. Para obtener más información sobre un comando en
particular, ingrese man
dominio. (Reemplace comando con el nombre de comando que desee). Aparecerá una descripción del
comando y sus opciones en la pantalla.
Las páginas de manual son los medios más comunes para obtener información sobre los comandos, así como
sobre otros componentes básicos de un sistema Linux. Cada página del manual cae en una de las categorías
enumeradas en la Tabla 3.8. Como usuario regular, estará más interesado en las páginas del manual en la sección 1.
Como administrador del sistema, también estará interesado en las secciones 5 y 8, y ocasionalmente en la sección
4. Los programadores estarán interesados en las páginas man de las secciones 2 y 3.
TABLA 3.8 Secciones de la página del manual
Número de sección Nombre de la sección Descripción
1 Comandos de usuario Comandos que un usuario normal puede ejecutar desde el shell
(por lo general, no se necesitan privilegios administrativos)
2 Llamadas al sistema Funciones de programación utilizadas dentro de una aplicación para
realizar llamadas al núcleo
3
3 Funciones de la biblioteca C Funciones de programación que proporcionan interfaces a bibliotecas
de programación específicas (como las de ciertas interfaces gráficas u
otras bibliotecas que operan en el espacio del usuario)
4 Dispositivos y Nodos del sistema de archivos que representan dispositivos de hardware
Archivos especiales (como terminales o unidades de CD) o dispositivos de software (como
generadores de números aleatorios)
5 Formatos de archivo y Tipos de archivos (como un archivo gráfico o de procesamiento de texto) o
Convenciones archivos de configuración específi cos (como el archivo de contraseña o de
grupo)
6 Juegos Juegos disponibles en el sistema
7 Misceláneas Resúmenes de temas como protocolos, sistemas de archivos, estándares
de conjuntos de caracteres, etc.
8 Administracion del sistema Comandos que requieren root u otros privilegios administrativos para usar
Herramientas y demonios
89
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Las opciones del comando man le permiten buscar en la base de datos de páginas man o mostrar páginas man en
la pantalla. Estos son algunos ejemplos de comandos y opciones man:
$ hombre k contraseña
...
contraseña (15) actualizar los tokens de autenticación del usuario
contraseña archivo de contraseña
$ hombre contraseña
$ hombre 5 contraseña
Con la opción k, puede buscar el nombre y las secciones de resumen de todas las páginas man instaladas en
el sistema. Hay alrededor de una docena de páginas del manual que incluyen "passwd" en el nombre o la descripción
de un comando.
NOTA
Si man k no muestra ningún resultado, es posible que la base de datos de la página del manual no se haya inicializado. Escriba mandb como root para
inicializar la base de datos de la página del manual.
Digamos que las dos páginas man en las que estoy interesado son el comando passwd (en la sección 1 de las
páginas man) y el archivo passwd (en la sección 5) páginas man. Debido a que solo escribir man passwd muestra
la página de la sección 1, necesito solicitar explícitamente la página del manual de la sección 5 si quiero ver eso en
su lugar ( man 5 passwd).
Mientras está mostrando una página de manual, puede ver diferentes partes del archivo usando las teclas Page
Down y Page Up (para mover una página a la vez). Utilice la tecla Intro o las flechas hacia arriba y hacia abajo
para mover una línea a la vez. Presione una barra diagonal ( /) y escriba un término para buscar ese término en
el documento. Presione n para repetir la búsqueda hacia adelante o N para repetir la búsqueda hacia atrás. Para
salir de la página del manual, escriba q.
Resumen
Para convertirse en un usuario experto de Linux, debe poder usar el shell para escribir comandos. Este capítulo se
centra en el shell bash, que es el que se usa más comúnmente con los sistemas Linux. Aprendió cómo se estructuran
los comandos y cuántas funciones especiales, como variables, finalización de comandos y alias, se utilizan.
El siguiente capítulo describe cómo moverse por el sistema de archivos de Linux desde la línea de comandos de shell.
Ejercicios
Use estos ejercicios para probar su conocimiento del uso del shell. Estas tareas asumen que está ejecutando un
sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionan en otros sistemas Linux). Si
está atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo hay varias
formas de completar una tarea).
90
Machine Translated by Google
Capítulo 3: Usando el Shell
1. Desde su escritorio, cambie a la tercera consola virtual e inicie sesión en su cuenta de usuario. Ejecute
algunos comandos. Luego salga del shell y regrese al escritorio.
2. Abra una ventana de Terminal y cambie el color de fuente a rojo y el fondo
al amarillo
3. Busque la ubicación del comando de montaje y la página man de tracepath.
4. Escriba los siguientes tres comandos y luego recupere y cambie esos comandos
como se describe:
$ cat /etc/passwd $ ls
$HOME $ fecha
a. Utilice la función de recuperación de la línea de comandos para recuperar el comando cat y cambiar /
etc/contraseña a /etc/grupo.
b. Recuerde el comando ls, determine cómo listar archivos por tiempo (usando el comando man
página), y agregue esa opción a la línea de comando ls $HOME.
C. Agregue indicadores de formato al comando de fecha para mostrar la salida de fecha
como mes/día/año.
5. Ejecute el siguiente comando, escribiendo la menor cantidad de caracteres posible (usando tabulador
terminación):
nombre base /usr/share/doc/
6. Use el comando cat para enumerar el contenido del archivo /etc/services y canalice ese
3
contenido al comando less para que pueda hojearlo (presione q para salir cuando haya
terminado).
7. Ejecute el comando de fecha de tal manera que la salida de ese comando produzca el día, mes, fecha y año
actuales. Haga que se lea en otra línea de comando, lo que dará como resultado un texto similar al siguiente
(su fecha, por supuesto, será diferente): Hoy es jueves, 19 de diciembre de 2019.
8. Usando variables, averigüe cuál es su nombre de host, nombre de usuario, shell y dirección de inicio.
tories están configurados actualmente en.
9. Cree un alias llamado mypass que muestre el contenido del archivo /etc/passwd en su pantalla de tal manera que
esté disponible cada vez que inicie sesión o abra un nuevo shell desde su cuenta de usuario.
10. Muestre la página del manual para la llamada al sistema de montaje.
91
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Moverse por el sistema de archivos
EN ESTE CAPÍTULO
Aprender sobre el sistema de archivos de Linux
Listado de atributos de archivos y directorios
Creación de archivos y directorios
Listado y cambio de permisos y propiedad
Hacer copias y mover archivos
T
El sistema de archivos de Linux es la estructura en la que se almacena toda la información de su computadora.
De hecho, una de las propiedades definitorias de los sistemas UNIX en los que se basa Linux es que
casi todo lo que necesita identificar en su sistema (datos, comandos, enlaces simbólicos, dispositivos y
directorios) está representado por elementos en los sistemas de archivos. Saber dónde están las cosas y
comprender cómo sortear el sistema de archivos desde el shell son habilidades fundamentales en Linux.
En Linux, los archivos se organizan dentro de una jerarquía de directorios. Cada directorio puede contener
archivos, así como otros directorios. Puede hacer referencia a cualquier archivo o directorio mediante una ruta
completa (por ejemplo, /home/joe/myfile.txt) o una ruta relativa (por ejemplo, si /home/joe fuera su directorio actual,
simplemente podría hacer referencia a el archivo como myfile.txt).
Si tuviera que mapear los archivos y directorios en Linux, se vería como un árbol al revés. En la parte superior
está el directorio raíz (que no debe confundirse con el usuario raíz), que se representa con una sola barra inclinada
(/). Debajo hay un conjunto de directorios comunes en el sistema Linux, como bin, dev, home, lib y tmp, por
nombrar algunos. Cada uno de esos directorios, así como los directorios agregados al directorio raíz, pueden
contener subdirectorios.
La Figura 4.1 ilustra cómo el sistema de archivos de Linux está organizado como una jerarquía. Para demostrar
cómo se conectan los directorios, la figura muestra un directorio /home que contiene un subdirectorio para el
usuario joe. Dentro del directorio joe se encuentran Escritorio, Documentos y otros subdirectorios. Para hacer
referencia a un archivo llamado memo1.doc en el directorio de memos, puede escribir la ruta completa de /home/
joe/Documents/memos/memo1.doc. Si su directorio actual es /home/joe/, consulte el archivo como Documentos/
memos/memo1.doc.
93
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
FIGURA 4.1
El sistema de archivos de Linux está organizado como una jerarquía de directorios.
José
Descargas de documentos de escritorio Imágenes de música
planes de notas proyectos
memo1.doc
Algunos de estos directorios de Linux te pueden interesar:
/papelera Contiene comandos comunes de usuario de Linux, como ls, sort, date y chmod.
/bota Tiene el kernel de Linux de arranque, el disco RAM inicial y los archivos de configuración del cargador de
arranque (GRUB).
/desarrollo Contiene archivos que representan puntos de acceso a dispositivos en sus sistemas. Estos incluyen
dispositivos terminales (tty*), discos duros (hd* o sd*), RAM (ram*) y CDROM (cd*). Los usuarios pueden
acceder a estos dispositivos directamente a través de estos archivos de dispositivos; sin embargo, las
aplicaciones a menudo ocultan los nombres reales de los dispositivos a los usuarios finales.
/etc Contiene archivos de configuración administrativa. La mayoría de estos archivos son archivos de texto sin
formato que, si el usuario tiene el permiso adecuado, se pueden editar con cualquier editor de texto.
/hogar Contiene directorios asignados a cada usuario regular con una cuenta de inicio de sesión. (El usuario root
es una excepción, ya que usa /root como su directorio de inicio).
/media Proporciona una ubicación estándar para dispositivos de montaje automático (medios extraíbles en par
particular). Si el medio tiene un nombre de volumen, ese nombre se suele utilizar como punto de montaje. Por
ejemplo, una unidad USB con el nombre de volumen myusb se montaría en /media/myusb.
/lib Contiene bibliotecas compartidas que necesitan las aplicaciones en /bin y /sbin para arrancar el
sistema.
/mnt Un punto de montaje común para muchos dispositivos antes de que fuera reemplazado por el directorio
estándar /media. Algunos sistemas Linux de arranque todavía utilizan este directorio para montar
particiones de disco duro y sistemas de archivos remotos. Mucha gente todavía usa este directorio para
montar temporalmente sistemas de archivos locales o remotos, que no se montan de forma permanente.
/misc Un directorio que a veces se usa para automontar sistemas de archivos a pedido.
/optar Estructura de directorio disponible para almacenar software de aplicación adicional.
94
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
/proc Contiene información sobre los recursos del sistema.
/raíz Representa al usuario raíz ' directorio de inicio de s. El directorio de inicio para root no
que reside debajo de /home por razones de seguridad.
/sbin Contiene comandos administrativos y procesos daemon.
/sistema Contiene parámetros para cosas como ajustar el almacenamiento de bloques y administrar cgroups.
/tmp Contiene archivos temporales utilizados por las aplicaciones.
/usr Contiene documentación del usuario, juegos, archivos gráficos (X11), bibliotecas (lib) y una
variedad de otros comandos y archivos que no son necesarios durante el proceso de arranque.
El directorio /usr está diseñado para archivos que no cambian después de la instalación (en teoría, /
usr podría montarse como de solo lectura).
/era Contiene directorios de datos utilizados por varias aplicaciones. En particular, aquí es
donde colocaría los archivos que comparte como un servidor FTP (/var/ftp) o un servidor web
(/var/www). También contiene todos los archivos de registro del sistema (/var/log) y los archivos
de cola en /var/spool (como correo, tazas y noticias). El directorio /var contiene directorios y archivos
que deben cambiar con frecuencia. En las computadoras servidor, es común crear el directorio /var
como un sistema de archivos separado, utilizando un tipo de sistema de archivos que se puede
expandir fácilmente.
Los sistemas de archivos en los sistemas operativos DOS o Microsoft Windows difieren de la estructura de archivos de
Linux, como se explica en la barra lateral "Sistemas de archivos de Linux versus sistemas de archivos basados en Windows".
Sistemas de archivos de Linux frente a sistemas basados en Windows
sistemas de archivos
Aunque similar en muchos aspectos, el sistema de archivos de Linux tiene algunas diferencias sorprendentes en comparación con los
sistemas de archivos utilizados en los sistemas operativos MSDOS y Windows. Estas son algunas de estas diferencias: ■ En los
sistemas de archivos MSDOS y Windows, las letras de las unidades representan diferentes dispositivos de almacenamiento.
En Linux, todos los dispositivos de almacenamiento están conectados a la jerarquía del sistema de archivos. Por lo tanto,
el hecho de que todo /usr pueda estar en un disco duro separado o que /mnt/remote1 sea un sistema de archivos de otra 4
computadora es invisible para el usuario.
■ Las barras, en lugar de las barras invertidas, se utilizan para separar los nombres de los directorios en Linux. Entonces C:
\home\joe en un sistema Microsoft es /home/joe en un sistema Linux.
■ Los nombres de archivo casi siempre tienen sufijos en DOS (como .txt para archivos de texto o .docx para
archivos de procesamiento de textos). Aunque a veces puede usar esa convención en Linux, los sufijos de
tres caracteres no tienen un significado obligatorio en Linux. Pueden ser útiles para identificar un tipo de archivo.
Muchas aplicaciones y entornos de escritorio de Linux utilizan sufijos de archivo para determinar el contenido de un
archivo. En Linux, sin embargo, las extensiones de comandos de DOS como .com, .exe y .bat no significan
necesariamente un ejecutable. (Los indicadores de permiso hacen que los archivos de Linux sean ejecutables).
■ Cada archivo y directorio en un sistema Linux tiene permisos y propiedad asociados.
La seguridad varía entre los sistemas de Microsoft. Debido a que DOS y Microsoft Windows comenzaron como sistemas
de un solo usuario, la propiedad de archivos no estaba integrada en esos sistemas cuando se diseñaron.
Las versiones posteriores agregaron funciones como atributos de archivos y carpetas para abordar este problema.
95
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Uso de comandos básicos del sistema de archivos
Quiero presentarle algunos comandos simples para moverse por el sistema de archivos para
comenzar. Si desea seguir, inicie sesión y abra un shell. Cuando inicia sesión en un sistema Linux y
abre un shell, se lo coloca en su directorio de inicio. Como usuario de Linux, la mayoría de los
archivos que guarda y con los que trabaja probablemente estarán en ese directorio o en subdirectorios
que cree. La Tabla 4.1 muestra los comandos para crear y usar archivos y directorios.
TABLA 4.1 Comandos para crear y usar archivos
Dominio Resultado
cd Cambios a otro directorio
personas con discapacidad Imprime el nombre del directorio de trabajo actual (o actual)
mkdir Crea un directorio
chmod Cambia el permiso en un archivo o directorio
ls Muestra el contenido de un directorio.
Uno de los comandos más básicos que usa desde el shell es cd. El comando cd se puede usar sin
opciones (para llevarlo a su directorio de inicio) o con rutas completas o relativas.
Considere los siguientes comandos:
$ cd /usr/share/ $ pwd /
usr/share $ cd doc $
pwd /usr/share/doc $
cd $ pwd /home/chris
La opción /usr/share representa la ruta absoluta a un directorio en el sistema. Debido a que comienza
con una barra inclinada (/), esta ruta le dice al shell que comience en la raíz del sistema de archivos y
lo lleve al directorio compartido que existe en el directorio usr. La opción doc del comando cd busca un
directorio llamado doc que sea relativo al directorio actual. Entonces ese comando convirtió a /usr/
share/doc en su directorio actual.
Después de eso, al escribir cd solo, volverá a su directorio de inicio. Si alguna vez se pregunta
dónde se encuentra en el sistema de archivos, el comando pwd puede ayudarlo. Aquí hay algunas
otras opciones interesantes de comando cd:
$ cd ~ $
pwd /
inicio/chris
96
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
$ cd ~/Música $
pwd /home/chris/
Música $ cd ../../../usr $
pwd /usr
La tilde (~) representa su directorio de inicio. Así que cd ~ te lleva allí. También puede usar la tilde para referirse a
directorios relacionados con su directorio de inicio, como /home/chris/ Music con ~/Music. Escribir un nombre como opción
lo lleva a un directorio debajo del directorio actual, pero puede usar dos puntos (..) para ir a un directorio arriba del directorio
actual. El ejemplo que se muestra lo lleva hasta tres niveles de directorio (a /) y luego lo lleva al directorio /usr.
Los siguientes pasos lo guían a través del proceso de creación de directorios dentro de su directorio de inicio y moverse
entre sus directorios, con una mención de configuración de permisos de archivo apropiados:
1. Vaya a su directorio de inicio. Para hacer esto, simplemente escriba cd en un shell y presione Entrar.
(Para conocer otras formas de hacer referencia a su directorio de inicio, consulte la barra lateral "Identificación
de directorios").
2. Para asegurarse de que está en su directorio de inicio, escriba pwd. Cuando hago esto, obtengo
la siguiente respuesta (la suya reflejará su directorio personal): $ pwd /home/joe
3. Cree un nuevo directorio llamado prueba en su directorio de inicio, de la siguiente manera:
$ mkdir prueba
4. Verifique los permisos del directorio:
$ ls ld prueba drwxr
xrx 2 joe sales 1024 24 de enero 12:17 prueba
Este listado muestra que prueba es un directorio (d). La d va seguida de los permisos (rwxrxrx), que se
explican más adelante en la sección "Descripción de los permisos y la propiedad de los archivos". El resto de
4
la información indica el propietario (joe), el grupo (ventas) y la fecha en que se modificaron por última vez los
archivos del directorio (24 de enero a las 12:17 p. m.).
NOTA
Cuando agrega un nuevo usuario en Fedora y Red Hat Enterprise Linux, el usuario se asigna a un grupo con el mismo nombre
de forma predeterminada. Por ejemplo, en el texto anterior, el usuario joe estaría asignado al grupo joe. Este enfoque para la
asignación de grupos se denomina esquema de grupo privado de usuarios .
Por ahora, ingresa lo siguiente:
$ chmod 700 prueba
97
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Este paso cambia los permisos del directorio para darle acceso completo y a todos los demás sin acceso. (Los
nuevos permisos deben leer rwx).
5. Convierta el directorio de prueba en su directorio actual de la siguiente manera:
$ cd prueba
$ pwd /home/
joe/prueba
Si siguió adelante, en este punto, un subdirectorio de su directorio de inicio llamado prueba es su directorio de trabajo
actual. Puede crear archivos y directorios en el directorio de prueba junto con las descripciones en el resto de este capítulo.
Uso de metacaracteres y operadores
Ya sea que esté listando, moviendo, copiando, eliminando o actuando en archivos de su sistema Linux, ciertos caracteres
especiales, denominados metacaracteres y operadores, lo ayudan a trabajar con archivos de manera más eficiente. Los
metacaracteres pueden ayudarlo a hacer coincidir uno o más archivos sin escribir completamente cada nombre de archivo.
Los operadores le permiten dirigir información de un comando o archivo a otro comando o archivo.
Uso de metacaracteres de coincidencia de archivos Para
ahorrarle algunas pulsaciones de teclas y permitirle hacer referencia fácilmente a un grupo de archivos, el shell bash le
permite usar metacaracteres. Cada vez que necesite hacer referencia a un archivo o directorio, como listarlo, abrirlo o
eliminarlo, puede usar metacaracteres para que coincidan con los archivos que desea. Aquí hay algunos metacaracteres
útiles para hacer coincidir los nombres de archivos:
* Coincide con cualquier número de caracteres.
? Coincide con cualquier carácter.
[...] Coincide con cualquiera de los caracteres entre corchetes, que pueden incluir un rango de letras o números
separados por guiones.
Pruebe algunos de estos metacaracteres de coincidencia de archivos yendo primero a un directorio vacío (como
el directorio de prueba descrito en la sección anterior) y creando algunos archivos vacíos:
$ toque manzana plátano uva toronja sandía
El comando táctil crea archivos vacíos. Los comandos que siguen le muestran cómo usar metacaracteres de shell con el
comando ls para hacer coincidir los nombres de archivo. Pruebe los siguientes comandos para ver si obtiene las mismas
respuestas:
$ ls a*
manzana
$ ls g*
toronja pomelo $ ls g*t
98
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
pomelo $ ls *e*
manzana uva
pomelo sandía $ ls *n* plátano sandía
El primer ejemplo coincide con cualquier archivo que comience con una (manzana). El siguiente ejemplo coincide
con cualquier archivo que comience con g (uva, pomelo). A continuación, los archivos que comienzan con g y
terminan en t se emparejan (pomelo). A continuación, se compara cualquier archivo que contenga una e en el
nombre (manzana, uva, pomelo, sandía). Finalmente, se empareja cualquier archivo que contenga n (banana,
sandía).
Aquí hay algunos ejemplos de coincidencia de patrones con el signo de interrogación (?):
$ ls ????e
manzana uva $
ls g???e* pomelo
pomelo
El primer ejemplo coincide con cualquier archivo de cinco caracteres que termine en e (manzana, uva). El
segundo coincide con cualquier archivo que comience con g y tenga e como quinto carácter (uva, pomelo).
Los siguientes ejemplos usan llaves para hacer coincidencias de patrones:
$ ls [abw]*
manzana plátano sandía $ ls
[agw]*[ne] manzana uva sandía
En el primer ejemplo, cualquier archivo que comience con a, bow coincide. En el segundo, se compara
cualquier archivo que comience con a, g o w y también termine con n o e. También puede incluir rangos entre
paréntesis. Por ejemplo:
$ ls [ag]*
manzana plátano uva toronja
Aquí, cualquier nombre de archivo que comience con una letra de la a a la g se compara. 4
Uso de metacaracteres de redirección de archivos Los
comandos reciben datos de la entrada estándar y los envían a la salida estándar. Usando canalizaciones
(descritas anteriormente), puede dirigir la salida estándar de un comando a la entrada estándar de otro. Con
los archivos, puede usar los signos menor que (<) y mayor que (>) para dirigir los datos hacia y desde los
archivos. Estos son los caracteres de redirección de archivos:
< Dirige el contenido de un archivo al comando. En la mayoría de los casos, esta es la acción
predeterminada esperada por el comando y el uso del carácter es opcional; usar less bigfile es lo
mismo que less < bigfile.
> Dirige la salida estándar de un comando a un archivo. Si el archivo existe, el contenido de ese
archivo se sobrescribe.
99
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
2> Dirige el error estándar (mensajes de error) al archivo.
&> Dirige tanto la salida estándar como el error estándar al archivo.
>> Dirige la salida de un comando a un archivo, agregando la salida al final del
archivo existente.
Los siguientes son algunos ejemplos de líneas de comando donde la información se dirige hacia y desde
archivos:
$ mail root < ~/.bashrc $ man chmod
| col b > /tmp/chmod $ echo "Terminé el proyecto el
$(fecha)" >> ~/proyectos
En el primer ejemplo, el contenido del archivo .bashrc en el directorio de inicio se envía en un mensaje de
'
usuario root.
correo a la página de manual de la computadora La segunda
(usando línea de
el comando mcan),
omando formatea
elimina el chmod
los espacios de retroceso
adicionales (col b) y envía la salida al archivo /tmp/chmod (borrando el archivo anterior /tmp/chmod, si existe).
El comando fi nal da como resultado que se agregue el siguiente texto al usuario
'
s archivo de proyecto:
Terminé el proyecto el sábado 15 de junio a las 13:46:49 EDT de 2019
Otro tipo de redirección, denominado aquí texto (también llamado aquí documento), le permite escribir texto que
se puede usar como entrada estándar para un comando. Aquí, los documentos implican ingresar dos caracteres
menores que (<<) después de un comando, seguidos de una palabra. Todo lo que se escribe después de esa
palabra se toma como entrada del usuario hasta que la palabra se repite en una línea por sí misma. Aquí hay un
ejemplo:
$ mail root cnegus rjones bdecker << thetext > Quiero decirles a todos
que habrá una reunión a las 10 am > en la sala de conferencias B. Todos deberían
asistir.
>
> Jaime
> el texto
ps
Este ejemplo envía un mensaje de correo a los nombres de usuario root, cnegus, rjones y bdecker. El texto
ingresado entre <<eltexto y eltexto se convierte en el contenido del mensaje.
Un uso común del texto aquí es usarlo con un editor de texto para crear o agregar un archivo desde dentro
de un script:
/bin/ed /etc/resolve.conf <<reenviado
a
servidor de nombres 100.100.100.100
.
En
Q regresa
Con estas líneas agregadas a un script ejecutado por el usuario raíz, el editor de texto editado agrega la
dirección IP de un servidor DNS al archivo /etc/resolv.conf.
100
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
Uso de caracteres de expansión de llaves Al
usar llaves ({}), puede expandir un conjunto de caracteres en nombres de archivos, nombres
de directorios u otros argumentos a los que da comandos. Por ejemplo, si desea crear un
conjunto de archivos como memo1 a memo5, puede hacerlo de la siguiente manera:
$ toque memo{1,2,3,4,5} $ ls
memo1 memo2 memo3 memo4
memo5
Los elementos que se expanden no tienen que ser números o incluso dígitos individuales. Por
ejemplo, podría usar rangos de números o dígitos. También puede usar cualquier cadena de
caracteres, siempre que los separe con comas. Aquí hay unos ejemplos:
$ touch {John,Bill,Sally}{Desayuno,Almuerzo,Cena} $ ls BillDesayuno Bill
Almuerzo JohnCena SallyDesayuno SallyLunch BillCena JohnDesayuno
JohnAlmuerzo SallyCena $ rm f {John,Bill,Sally}{Desayuno,Almuerzo,Cena} $ toque {a..f}{1..5}
$ ls a1 a3 a5 b2 b4 c1 c3 c5 d2 d4 e1 e3 e5 f2 f4
a2 a4 b1 b3 b5 c2 c4 d1 d3 d5 e2 e4 f1 f3 f5
En el primer ejemplo, el uso de dos juegos de llaves significa que John, Bill y Sally tienen nombres
de archivo asociados con Desayuno, Almuerzo y Cena. Si hubiera cometido un error, podría
recuperar fácilmente el comando y cambiar touch a rm f para eliminar todos los archivos. En el
siguiente ejemplo, el uso de dos puntos entre las letras a y f y los números 1 y 5 especifica los
rangos que se utilizarán. Tenga en cuenta los archivos que se crearon a partir de esos pocos caracteres.
Listado de archivos y directorios
El comando ls es el comando más común que se usa para mostrar información sobre archivos y
directorios. Muchas opciones disponibles con el comando ls le permiten recopilar diferentes conjuntos
de archivos y directorios, así como ver diferentes tipos de información sobre ellos. 4
De forma predeterminada, cuando escribe el comando ls, la salida muestra todos los archivos y
directorios no ocultos contenidos en el directorio actual. Sin embargo, cuando escribe ls, muchos
sistemas Linux (incluidos Fedora y RHEL) asignan un alias ls para agregar opciones. Para ver si ls
tiene un alias, ingrese lo siguiente:
$ alias ls alias
ls='ls color=auto'
La opción color=auto hace que diferentes tipos de archivos y directorios se muestren en diferentes
colores. Entonces, regrese al directorio $HOME/test creado anteriormente en este capítulo, agregue un
par de tipos diferentes de archivos y luego vea cómo se ven con el comando ls.
$ cd $HOME/prueba
$ touch scriptx.sh manzana
101
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
$ chmod 755 scriptx.sh $ mkdir
Cosas $ ln s apple pointer_to_apple
$ ls apple pointer_to_apple scriptx.sh Cosas
Aunque no puede verlo en el ejemplo de código anterior, el directorio Stuff aparece en azul, pointer_to_apple
(un enlace simbólico) aparece como aqua y scriptx.sh (que es un archivo ejecutable) aparece en verde.
Todos los demás archivos regulares aparecen en negro. Escribir ls l para ver una lista larga de esos
archivos puede hacer que estos diferentes tipos de archivos sean aún más claros:
$ ls l total
4
rwrwr. 1 joe joe 0 18 de diciembre 13:38 apple lrwxrwxrwx. 1
joe joe 5 18 de diciembre 13:46 pointer_to_apple > apple rwxrxrx. 1 joe joe 0 18 de diciembre
13:37 scriptx.sh drwxrwxrx. 2 joe joe 4096 18 de diciembre 13:38 Cosas
Mientras observa la lista larga, observe que el primer carácter de cada línea muestra el tipo de
archivo. Un guión () indica un archivo normal, d indica un directorio y l (L minúscula ) indica un enlace
simbólico. Un archivo ejecutable (un script o un archivo binario que se ejecuta como un comando) tiene
los bits de ejecución activados (x). Obtenga más información sobre los bits de ejecución en la próxima
sección "Comprensión de los permisos y la propiedad de los archivos".
A continuación, debe familiarizarse con el contenido de su directorio de inicio. Use las opciones l y a para
ls.
$ ls la /home/joe
total 158
drwxrwxrwx 2 joe sales 4096 12 de mayo 13:55 . root root 4096 10
drwxrxrx 3 de mayo 01:49 .. joe sales
2204 18 de mayo
21:30 .bash_history joe sales
rw 1 24 10 de mayo 01:50 .bash_logout joe sales 230 10 de mayo
rwrr 1 01:50 .bash_profile joe sales
124
4096 1d0
10 dm
e e ayo
mayo 01:50 .bashrc
01:50 .kde joe s1ales
joe sales 49872
rwrr 1 11 de mayo 22:49 carta
rwrr 1
a travésrr 1
rwrwr 1
^ ^ ^ ^ ^ ^ ^
col 1 col 2 col 3 col 4 col 5 col 6 columna 7
Mostrar una lista larga (opción l) del contenido de su directorio de inicio le muestra más sobre los
tamaños de archivo y los directorios. La línea total muestra la cantidad total de espacio en disco utilizado
por los archivos de la lista (158 kilobytes en este ejemplo). Al agregar la opción de todos los archivos (a),
se muestran los archivos que comienzan con un punto (.). Los directorios como el directorio actual (.) y el
directorio principal (..), el directorio por encima del directorio actual, se indican como directorios con la letra
d al comienzo de cada entrada. Cada directorio comienza con un anuncio y cada archivo comienza con un
guión ().
102
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
Los nombres de archivos y directorios se muestran en la columna 7. En este ejemplo, un punto (.) representa /
home/joe y dos puntos (..) representan /home, el directorio principal de /joe. La mayoría de los archivos de
este ejemplo son archivos de punto (.) que se utilizan para almacenar propiedades de GUI (directorio .kde) o
propiedades de shell (archivos .bash). El único archivo sin puntos en esta lista es el que se llama letra.
La columna 3 muestra el propietario del directorio o del archivo. El directorio /home es propiedad de root,
y todo lo demás es propiedad del usuario joe, que pertenece al grupo de ventas (los grupos se enumeran
en la columna 4).
Además de la d o , la columna
1 de cada línea contiene los permisos establecidos para ese archivo o
directorio. Otra información en la lista incluye la cantidad de enlaces físicos al elemento (columna 2), el
tamaño de cada archivo en bytes (columna 5) y la fecha y hora en que se modificó más recientemente cada
archivo (columna 6).
Aquí hay algunos otros datos sobre las listas de archivos y directorios:
■ El número de caracteres que se muestra para un directorio (4096 bytes en estos ejemplos)
refleja el tamaño del archivo que contiene información sobre el directorio. Aunque este número
puede superar los 4096 bytes para un directorio que contiene muchos archivos, este número no
refleja el tamaño de los
archivos
fecha contenidos
y hora en ese
puede variar. dlirectorio.
En ■ostrar
ugar de m El formato de
mlayo",
"12 de a columna de
la fecha
podría mostrarse como "20190512", según la distribución y la configuración de idioma (variable LANG).
■ En ocasiones, en lugar de ver el bit de ejecución (x) establecido en un archivo ejecutable, es
posible que vea una s en ese lugar. Con una s apareciendo dentro de los permisos de propietario
(rwsrxrx) o grupo (rwxrsrx), o ambos (rwsrsrx), cualquier usuario puede ejecutar la
aplicación, pero la propiedad del proceso en ejecución se asigna al usuario/grupo de la aplicación
en lugar del usuario que ejecuta eprograma
l comando.
Esto
GID se conoce crespectivamente.
establecido , omo un UID establecido o un el
Por ejemplo,
comando de montaje tiene permisos establecidos como rwsrxrx. Esto permite que cualquier
usuario ejecute mount para enumerar los sistemas de archivos montados (aunque, en la mayoría
de los casos, aún debe ser root para usar mount para montar sistemas de archivos desde la línea
de comandos).
■ Si aparece at al final de un directorio, indica que el sticky bit está configurado para ese directorio 4
(por ejemplo, drwxrwxrt). Al establecer el sticky bit en un directorio, el propietario del directorio
puede permitir que otros
usuarios
usuarios eliminen
y grupos
los
agreguen
archivos adrchivos
e los demás
al directorio,
en ese pdero
irectorio.
evitar que los
Con un GID establecido asignado a un directorio, todos los archivos creados en ese directorio
se asignan al mismo grupo que el grupo del directorio.
(Si
dve
lugar e una
los S o
d
bits una
e T mayúscula
ejecución en un en
directorio, significa que se configuró el GID establecido o el permiso de bit fijo, respectivamente,
pero por alguna razón el bit de ejecución tampoco se activó). ■ Si ve un signo más al final de los
bits de permiso (por ejemplo, rwrw
r+), significa que los atributos extendidos (+), como las Listas de control de acceso (ACL), se
establecen en el archivo. Un punto al final (.) indica que SELinux está configurado en el archivo.
103
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Identificación de directorios
Cuando necesite identificar su directorio de inicio en una línea de comando de shell, puede usar lo siguiente:
$HOGAR Esta variable de entorno almacena el nombre de su directorio de inicio.
~ La tilde (~) representa su directorio de inicio en la línea de comandos.
También puede usar la tilde para identificar el directorio de inicio de otra persona. Por ejemplo, ~joe se
expandiría al directorio de inicio de joe (probablemente /home/joe). Entonces, si quisiera ir al directorio /home/
joe/test, podría ingresar cd ~joe/test para llegar allí.
Otras formas especiales de identificar directorios en el shell incluyen las siguientes:
. Un solo punto (.) se refiere al directorio actual.
.. Dos puntos (...) se refieren a un directorio directamente encima del directorio actual.
$PWD Esta variable de entorno hace referencia al directorio de trabajo actual.
$OLDPWD Esta variable de entorno hace referencia al directorio de trabajo anterior antes de cambiar al actual.
(Al ingresar cd, lo regresa al directorio representado por $OLDPWD).
Como mencioné anteriormente, hay muchas opciones útiles para el comando ls. Regrese al directorio
'
$HOME/test en el que tiene ls options. Don este punto.
he estado trabajando Aquí hay algunos ejemplos de
'
No se preocupe si la salida no coincide exactamente con lo que hay en su directorio en
Cualquier archivo o directorio que comience con un punto (.) se considera oculto y no se muestra de forma
predeterminada con ls. Estos archivos de puntos suelen ser archivos de configuración o directorios que deben
estar en su directorio de inicio, pero no necesitan verse en su trabajo diario. El a le permite ver esos archivos.
La opción t muestra los archivos en el orden en que se modificaron más recientemente. Con la opción F,
aparece una barra invertida (/) al final de los nombres de directorio, se agrega un asterisco (*) a los archivos
ejecutables y se muestra un signo de arroba (@) junto a los enlaces simbólicos.
Para mostrar archivos ocultos y no ocultos:
$ ls a .
apple docs pomelo pointer_to_apple .cosas sandía .. banana uva .hiddendir
script.sh .tmpfile
Para enumerar todos los archivos por fecha de modificación más reciente:
$ ls
at .tmpfile .hiddendir .. docs sandía banana script.sh . .stuff pointer_to_apple
pomelo manzana uva
104
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
Para listar archivos y agregar indicadores de tipo de archivo:
$ ls F
apple banana docs/ pomelo pomelo pointer_to_apple@script.sh*
sandía
Para evitar mostrar ciertos archivos o directorios cuando usa ls, use la opción hide=.
En el siguiente conjunto de ejemplos, cualquier archivo que comience con g no aparece en la salida. El uso de la opción d en
un directorio muestra información sobre ese directorio en lugar de mostrar los archivos y directorios que contiene el directorio.
La opción R enumera todos los archivos en el directorio actual, así como cualquier archivo o directorio que esté asociado con
el directorio original.
La opción S enumera los archivos por tamaño.
Para excluir cualquier archivo que comience con la letra g en la lista:
$ ls hide=g* apple
banana docs pointer_to_apple script.sh sandía
Para mostrar información sobre un directorio en lugar de los archivos que contiene:
$ ls ld $INICIO/prueba/
drwxrwxrx. 4 joe joe 4096 18 de diciembre 22:00 /inicio/joe/prueba/
Para crear varias capas de directorio (se necesita p):
$ mkdir p $INICIO/prueba/documentos/notas/
Para enumerar todos los archivos y directorios recursivamente desde el directorio actual hacia abajo:
$ ls R
...
Para listar archivos por tamaño:
$ lsS
...
Descripción de los permisos y la propiedad de los archivos 4
'
Después de He trabajado con Linux por un tiempo, es casi seguro que obtendrá un Permiso
negar el mensaje. Los permisos asociados con archivos y directorios en Linux se diseñaron para evitar que los usuarios
accedan a los archivos privados de otros usuarios y para proteger archivos importantes del sistema.
Los nueve bits asignados a cada archivo para permisos defi ne el acceso que usted y otras personas tienen a su archivo.
Los bits de permiso para un archivo normal aparecen como rwxrwxrwx. Esos bits se utilizan para definir quién puede leer,
escribir o ejecutar el archivo.
NOTA
Para un archivo normal, aparece un guión delante del indicador de permisos de nueve bits. En lugar de un guión, puede ver ad (para un
directorio), l (para un enlace simbólico), b (para un dispositivo de bloque), c (para un dispositivo de caracteres), s (para un socket), o p (para un
una tubería con nombre).
105
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
'
De los permisos de nueve bits, los tres primeros bits se aplican al propietario, los s permiso, el siguiente
tres se aplican al grupo asignado al archivo y los tres últimos se aplican a todos los demás. La r significa
lectura, la w significa escritura y la x significa permisos de ejecución. Si aparece un guión en lugar de la letra,
significa que el permiso está desactivado para ese bit de lectura, escritura o ejecución asociado.
Debido a que los archivos y directorios son diferentes tipos de elementos, los permisos de lectura,
escritura y ejecución en archivos y directorios significan cosas diferentes. La Tabla 4.2 explica lo que puede
hacer con cada uno de ellos.
TABLA 4.2 Configuración de permisos de lectura, escritura y ejecución
Archivo de permisos Directorio
Ejecutar Ejecutar el archivo como Cambie al directorio como el directorio actual, busque en el directorio o ejecute
un programa. un programa desde el directorio. Acceda a los metadatos del archivo (tamaño
del archivo, marcas de tiempo, etc.) de los archivos en ese directorio.
Como se señaló anteriormente, puede ver el permiso para cualquier archivo o directorio escribiendo el
comando ls ld. El archivo o directorio nombrado aparece como los que se muestran en este ejemplo:
$ ls ld ch3 test rwrwr
1 joe sales 4983 18 de enero 22:13 ch3 drwxrxrx 2 joe sales
1024 24 de enero 13:47 test
La primera línea muestra que el archivo ch3 tiene permisos de lectura y escritura para el propietario y
el grupo. Todos los demás usuarios tienen permiso de lectura, lo que significa que pueden ver el
archivo pero no pueden cambiar su contenido ni eliminarlo. La segunda línea muestra el directorio de
prueba (indicado por la letra d antes de los bits de permiso). El propietario tiene permisos de lectura,
escritura y ejecución, mientras que el grupo y otros usuarios solo tienen permisos de lectura y
ejecución. Como resultado, el propietario puede agregar, cambiar o eliminar archivos en ese directorio,
y todos los demás solo pueden leer el contenido, cambiar a ese directorio y enumerar el contenido del
directorio. (Si no hubiera usado las opciones d para ls, habría enumerado los archivos en el directorio
de prueba en lugar de los permisos de ese directorio).
Cambiar permisos con chmod (números)
Si posee un archivo, puede usar el comando chmod para cambiar el permiso que desee. En un método para
hacer esto, a cada permiso (lectura, escritura y ejecución) se le asigna un número (r=4, w=2 y x=1) y usted usa
'
cada conjunto s número total para establecer el
106
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
permiso. Por ejemplo, para hacer que los permisos sean completamente abiertos para usted como
propietario, establecería el primer número en 7 (4+2+1), y luego otorgaría al grupo y a otros permisos de
solo lectura configurando tanto el segundo como el tercero. números a 4 (4+0+0), de modo que el número
fi nal sea 744. Puede resultar cualquier combinación de permisos desde 0 (sin permiso) hasta 7 (permiso
total).
Aquí hay algunos ejemplos de cómo cambiar el permiso en un archivo (archivo con nombre) y cuál sería el
permiso resultante:
El siguiente comando chmod da como resultado este permiso: rwxrwxrwx
# archivo chmod 777
El siguiente comando chmod da como resultado este permiso: rwxrxrx
# archivo chmod 755
El siguiente comando chmod da como resultado este permiso: rwrr
# archivo chmod 644
El siguiente comando chmod da como resultado este permiso:
# archivo chmod 000
El comando chmod también se puede usar de forma recursiva. Por ejemplo, suponga que desea otorgar
permiso 755 a una estructura de directorio completa (rwxrxrx), comenzando en el directorio $HOME/
myapps. Para hacer eso, puede usar la opción R, de la siguiente manera:
$ chmod R 755 $HOME/misaplicaciones
Todos los archivos y directorios a continuación, incluido el directorio myapps en su directorio de inicio, tendrán
755 permisos establecidos. Debido a que el método de los números para configurar los permisos cambia
todos los bits de permiso a la vez, es más común usar letras para cambiar los bits de permiso de forma
recursiva en un gran conjunto de archivos.
Cambiar permisos con chmod (letras)
También puede activar y desactivar los permisos de archivos usando los signos más (+) y menos (–), 4
respectivamente, junto con letras para indicar qué cambia y para quién. Usando letras, para cada archivo
puede cambiar el permiso para el usuario (u), grupo (g), otro (o) y todos los usuarios (a).
Lo que cambiaría incluye los bits de lectura (r), escritura (w) y ejecución (x). Por ejemplo, comience con un
archivo que tenga todos los permisos abiertos (rwxrwxrwx). Ejecute los siguientes comandos chmod usando
las opciones de signo menos. Los permisos resultantes se muestran a la derecha de cada comando.
El siguiente comando chmod da como resultado este permiso: rxrxrx
$ archivo chmod aw
El siguiente comando chmod da como resultado este permiso: rwxrwxrw
$ archivo buey chmod
El siguiente comando chmod da como resultado este permiso: rwx
107
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
$ archivo chmod gorwx
Asimismo, los siguientes ejemplos comienzan con todos los permisos cerrados (). El signo más se
usa con chmod para activar los permisos.
El siguiente comando chmod da como resultado este permiso: rw
$ chmod u+rw archivos
El siguiente comando chmod da como resultado este permiso: xxx
$ chmod a+x archivos
El siguiente comando chmod da como resultado este permiso: rxrx
$ chmod y+rx archivos
El uso de letras para cambiar el permiso de forma recursiva con chmod generalmente funciona mejor que
el uso de números porque puede cambiar los bits de forma selectiva en lugar de cambiar todos los bits de
permiso a la vez. Por ejemplo, suponga que desea eliminar el permiso de escritura para "otro" sin cambiar
ningún otro bit de permiso en un conjunto de archivos y directorios. Podrías hacer lo siguiente:
$ chmod R ow $HOME/myapps
Este ejemplo elimina recursivamente los permisos de escritura para "otros" en cualquier archivo y directorio
debajo del directorio myapps. Si hubiera utilizado números como 644, el permiso de ejecución estaría
desactivado para los directorios; usando 755, el permiso de ejecución se activaría para archivos regulares.
Usando ow, solo se apaga un bit y todos los demás bits se dejan solos.
Configuración del permiso de archivo predeterminado con umask
Cuando crea un archivo como usuario normal, se le rwrwr
otorga el
dpe
ermiso
forma predeterminada. Un directorio recibe
el permiso rwxrwxrx. Para el usuario root, los permisos de archivo y directorio son rwrr y rwxrxrx,
respectivamente. Estos valores predeterminados están determinados por el valor de umask. Ingrese umask
para ver cuál es su valor de umask. Por ejemplo:
$ máscara
0002
Si ignora el cero inicial por el momento, el valor de umask enmascara lo que se considera permisos totalmente
abiertos para un archivo 666 o un directorio 777. El valor de umask de 002 da como resultado un permiso
para un directorio de 775 (rwxrwxrx) . Ese mismo umask da como resultado un permiso de archivo de 644 (rw
rwr). (Los permisos de ejecución están desactivados de forma predeterminada para los archivos normales).
Para cambiar su valor de umask temporalmente, ejecute el comando umask. Luego intente crear algunos
archivos y directorios para ver cómo el valor de umask afecta la forma en que se establecen los permisos.
Por ejemplo:
$ umask 777; toque archivo01 ; mkdirdir01; ls ld archivo01 dir01 d. 2 joe joe 6 dic 19 11:03
dir01
. 1 joe joe 0 19 de diciembre 11:02 file01
$ umask 000; toque archivo02 ; mkdirdir02; ls ld archivo02 dir02
108
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
drwxrwxrwx. 2 joe joe 6 dic 19 11:00 dir02/ rwrwrw. 1 joe
joe 0 19 de diciembre 10:59 file02 $ umask 022 ; toque
archivo03; mkdirdir03; ls ld archivo03 dir03 drwxrxrx. 2 joe joe 6 dic 19 11:07 dir03 rwr
r. 1 joe joe 0 19 de diciembre 11:07 file03
Si desea cambiar su valor umask de forma permanente, agregue un comando umask al archivo .bashrc
en su directorio de inicio (cerca del final de ese archivo). La próxima vez que abra un shell, su umask se
establecerá en el valor que elija.
Cambiar la propiedad de los archivos
Como usuario normal, no puede cambiar la propiedad de los archivos o directorios para que pertenezcan a
otro usuario. Puede cambiar la propiedad como usuario raíz. Por ejemplo, suponga que creó un archivo llamado
memo.txt en el directorio de inicio del usuario joe mientras era usuario raíz.
Así es como podrías cambiarlo para que sea propiedad de Joe:
# chown joe /home/joe/memo.txt # ls l /
home/joe/memo.txt rwrr. 1 joe raíz 0 19
de diciembre 11:23 /home/joe/memo.txt
Observe que el comando chown cambió el usuario a joe pero dejó el grupo como raíz. Para cambiar tanto el
usuario como el grupo a joe, puede ingresar lo siguiente en su lugar:
# chown joe:joe /home/joe/memo.txt # ls l /home/
joe/memo.txt rwrr. 1 joe joe 0 19 de diciembre
11:23 /home/joe/memo.txt
El comando chown también se puede usar de forma recursiva. El uso de la opción recursiva (R) es útil si
necesita cambiar una estructura de directorio completa para que sea propiedad de un usuario en particular. Por
ejemplo, si insertó una unidad USB, que está montada en el directorio /media/myusb, y desea otorgar la
propiedad total del contenido de esa unidad al usuario joe, puede ingresar lo siguiente:
# chown R joe:joe /media/myusb
4
Mover, copiar y eliminar archivos
Los comandos para mover, copiar y eliminar archivos son bastante sencillos. Para cambiar la ubicación de
un archivo, use el comando mv. Para copiar un archivo de una ubicación a otra, use el comando cp. Para
eliminar un archivo, use el comando rm. Estos comandos se pueden usar para actuar sobre archivos y
directorios individuales o recursivamente para actuar sobre muchos archivos y directorios a la vez. Aquí hay
unos ejemplos:
$ mv abc def $
mv abc ~ $ mv /
home/joe/mymemos/ /home/joe/Documentos/
El primer comando mv mueve el archivo abc al archivo def en el mismo directorio (esencialmente
renombrándolo), mientras que el segundo comando mv mueve el archivo abc a su directorio de inicio
109
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
(~). El siguiente comando mv mueve el directorio mymemos (y todo su contenido) al directorio /home/
joe/Documents.
De forma predeterminada, el comando mv sobrescribe cualquier archivo existente si existe el
archivo al que se está moviendo. Sin embargo, muchos sistemas Linux alias el comando mv para que
'
mostrar
use la opción i (lo que hace que mv le pregunte antes de sobrescribir los archivos existentes). a
Aquí
verifique si eso es cierto en su sistema:
$ alias mv
alias mv='mv i'
Estos son algunos ejemplos del uso del comando cp para copiar archivos de una ubicación a
otra:
$ cp abc def $ cp
abc ~ $ cp r /usr/
share/doc/bashcompletion* /tmp/a/ $ cp ra /usr/share/doc/bash
completion* /tmp/b/
El primer comando de copia (cp) copia abc al nuevo nombre def en el mismo directorio, mientras
que el segundo copia abc a su directorio de inicio (~), manteniendo el nombre abc. Las dos copias
recursivas (r) copian el directorio bashcompletion y todos los archivos que contiene, primero en los
nuevos directorios /tmp/a/ y /tmp/b/. Si ejecuta ls l en esos dos directorios, verá que para ejecutar el
comando cp con la opción de archivo (a), la copia mantiene las marcas de fecha/hora y los permisos. Sin
la a, se usan las marcas de fecha/hora actuales y los permisos están determinados por su umask.
Por lo general, el comando cp también tiene un alias con la opción i para evitar que sobrescriba
archivos sin darse cuenta.
Al igual que con los comandos cp y mv, rm también suele tener un alias para incluir la opción i. Esto
puede evitar el daño que puede provenir de una opción de eliminación recursiva (r) inadvertida.
Estos son algunos ejemplos del comando rm:
$ rm abc $
rm *
El primer comando remove elimina el archivo abc; el segundo elimina todos los archivos en el directorio
actual (excepto que no elimina directorios y/o
eliminar
cualquier
un
ad
rchivo
irectorio,
que dcebe
omience
usar lca
on
opción
un punto).
recursiva
Si desea
(r)
para rm o, para un directorio vacío, puede usar el comando rmdir. Considere los siguientes ejemplos:
$ rmdir /inicio/joe/nada/ $ rm r /inicio/
joe/bigdir/ $ rm rf /inicio/joe/hugedir/
El comando rmdir en el código anterior solo elimina el directorio (nada) si está vacío. El ejemplo de rm
r elimina el directorio bigdir y todo su contenido (archivos y varios niveles de subdirectorios), pero le
avisa antes de que se elimine cada uno. Cuando agrega la opción forzada (f), el directorio hugedir y todo
su contenido se eliminan inmediatamente, sin preguntar.
110
Machine Translated by Google
Capítulo 4: Moverse por el sistema de archivos
PRECAUCIÓN
Cuando anula la opción i en los comandos mv y rm, corre
el riesgo
comodines de eliminar
(como algunos
* ) y no i hace q(o
mluchos)
ue archivos
os errores con
sean a ún mis ,
ás pcrobables.
p , take. EDl icho
uso dee
sto, a
veces no se molesta en revisar cada archivo que elimina. Tienes otras opciones de la siguiente manera: no quiero
■ Como se indicó con la opción f, puede obligar a rm a eliminar sin preguntar. Una alternativa es ejecutar rm ,
cp , o mv con una barra invertida delante ( \rm bigdir ). La barra invertida hace que cualquier comando se ejecute una
enlace.
■ Otra alternativa con mv es usar la opción b. Con B , si existe un archivo con el mismo nombre en el destino
país, se realiza una copia de seguridad del archivo anterior antes de mover allí el archivo nuevo.
Resumen
Los comandos para moverse por el sistema de archivos, copiar archivos, mover archivos y eliminar
archivos se encuentran entre los comandos más básicos que necesita para trabajar desde el shell. Este
capítulo cubre muchos comandos para moverse y manipular archivos, así como comandos para cambiar
la propiedad y el permiso.
El siguiente capítulo describe los comandos para editar y buscar archivos. Estos comandos incluyen los
editores de texto vim/vi, el comando find y el comando grep.
Ejercicios
Utilice estos ejercicios para poner a prueba su conocimiento de formas eficientes de moverse por el
sistema de archivos de Linux y trabajar con archivos y directorios. Cuando sea posible, intente usar
atajos para escribir lo menos posible para obtener los resultados deseados. Estas tareas asumen que
está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también
funcionan en otros sistemas Linux). Si está atascado, las soluciones a las tareas se muestran en el
Apéndice B (aunque en Linux, a menudo hay varias formas de completar una tarea).
4
1. Cree un directorio en su directorio de inicio llamado proyectos. en los proyectos
directorio, cree nueve archivos vacíos que se llamen casa1, casa2, casa3, y así sucesivamente
hasta casa9. Suponiendo que hay muchos otros archivos en ese directorio, cree un solo
argumento para ls que enumere solo esos nueve archivos.
2. Cree la ruta del directorio $HOME/projects/houses/doors/. Cree los siguientes archivos vacíos
dentro de esta ruta de directorio (intente usar rutas absolutas y relativas desde su directorio de
inicio):
$HOME/projects/houses/bungalow.txt $HOME/
projects/houses/doors/bifold.txt $HOME/projects/
outdoors/vegetation/landscape.txt
111
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
3. Copie los archivos house1 y house5 en el directorio $HOME/projects/houses/.
4. Copie recursivamente el directorio /usr/share/doc/initscripts* al directorio $HOME/
projects/. Mantenga las marcas de fecha/hora actuales y los permisos.
5. Enumere recursivamente el contenido del directorio $HOME/projects/. Pipe la salida
al comando less para que pueda pasar página a través de la salida.
6. Elimine los archivos house6, house7 y house8 sin que se le solicite.
7. Mueva house3 y house4 al directorio $HOME/projects/houses/doors.
8. Elimine el directorio $HOME/projects/houses/doors y su contenido.
9. Cambie los permisos en el archivo $HOME/projects/house2 para que pueda ser leído
y escrito por el usuario propietario del archivo, solo leído por el grupo y sin permiso
para otros.
10. Cambie recursivamente los permisos del directorio $HOME/projects/ para que
nadie tiene permiso de escritura para ningún archivo o directorio debajo de ese punto en el sistema
de archivos.
112
Machine Translated by Google
CAPÍTULO S
Trabajar con archivos de texto
EN ESTE CAPÍTULO
Usando vim y vi para editar archivos de texto
Buscando archivos
Buscando en archivos
gestionados en el sistema en archivos de texto sin formato. Por lo tanto, era fundamental que los usuarios supieran
Cuando cómo
se creó
ehl erramientas
usar sistema UNIX,
para beuscar
n el qyue se bdasaba
dentro Linux,
e archivos la m
de texto ayor
sin parte
y pdoder
formato e la
ciambiar
nformación se esos
y configurar
archivos.
Hoy en día, la configuración de los sistemas Linux aún se puede realizar mediante la edición de archivos de texto sin formato. Ya sea
que esté modificando archivos en el directorio /etc para configurar un servicio local o editando archivos de inventario de Ansible para
configurar conjuntos de computadoras host, los archivos de texto sin formato todavía se usan comúnmente para esas tareas.
Antes de que pueda convertirse en un administrador de sistemas completo, debe poder utilizar un editor de texto sin formato. El
hecho de que la mayoría de los servidores Linux profesionales ni siquiera tengan
una interfaz
necesario editar glos
ráfica
disponible
archivos hace que sea
de configuración de texto
sin formato con un editor de texto no gráfico.
Una vez que sepa cómo editar archivos de texto, es posible que aún le resulte difícil averiguar dónde se encuentran los archivos que
necesita editar. Con comandos como buscar, puede buscar archivos en función de varios atributos (nombre de archivo, tamaño, fecha
de modificación y propiedad, por nombrar algunos). Con el comando grep, puede buscar dentro de los archivos de texto para
encontrar términos de búsqueda específicos.
Edición de archivos con vim y vi
'
Él Es casi imposible usar Linux durante un período de tiempo sin necesidad de un editor de texto porque, como se señaló
anteriormente, la mayoría de los archivos de configuración de Linux son archivos de texto sin formato que casi con certeza
necesitará cambiar manualmente en algún momento.
Si está utilizando un escritorio GNOME, puede ejecutar gedit (escriba gedit en el cuadro de búsqueda y
presione Entrar, o seleccione Aplicaciones Accesorios gedit), que es bastante intuitivo para editar texto.
113
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
También puede ejecutar un editor de texto simple llamado nano desde el shell. Sin embargo, la mayoría de los
usuarios de shell de Linux usan el comando vi o emacs para editar archivos de texto.
La ventaja de vi o emacs sobre un editor gráfico es que puede usar el comando desde cualquier shell, terminal
de caracteres o conexión basada en caracteres a través de una red (usando telnet o ssh, por ejemplo), no se
requiere una interfaz gráfica. Cada uno de ellos también contiene toneladas de funciones, por lo que puede seguir
creciendo con ellos.
Las siguientes secciones brindan un breve tutorial sobre el editor de texto vi, que puede usar para editar
manualmente un archivo de texto desde cualquier shell. También describe las versiones mejoradas de vi
llamadas vim. (Si vi no le conviene,
más
coonsulte
pciones).
la barra lateral "Exploración de otros editores de texto" para obtener
El editor vi es difícil de aprender al principio, pero después de aprenderlo, nunca tendrá que usar un mouse o una
tecla de función: puede editar y moverse rápida y eficientemente dentro de los archivos simplemente usando el teclado.
Explorando otros editores de texto
Hay docenas de editores de texto disponibles para usar con Linux. Algunas alternativas pueden estar en su distribución de
Linux. Puede probarlos si considera que vi es demasiado exigente. Estas son algunas de las opciones:
nano: este popular editor de texto optimizado se usa con muchos sistemas Linux de arranque y otros entornos Linux de
espacio limitado. Por ejemplo, nano está disponible para editar archivos de texto durante un proceso de instalación
de Gentoo Linux.
gedit: el editor de texto de GNOME se ejecuta en el escritorio. jed:
este editor orientado a la pantalla fue hecho para programadores. Usando colores, jed puede resaltar
código que cree para que pueda leer fácilmente el código y detectar errores de sintaxis. Use la tecla Alt para
seleccionar menús para manipular su texto.
joe: El editor joe es similar a muchos editores de texto para PC. Usa las teclas de control y flechas para moverte
alrededor. Presione Ctrl+C para salir sin guardar o Ctrl+X para guardar y salir.
kate: Este atractivo editor viene en el paquete kdebase. Tiene muchas campanas y silbatos, como resaltado para
diferentes tipos de lenguajes de programación y controles para administrar el ajuste de línea.
kedit: este editor de texto basado en GUI viene con el escritorio KDE. mcedit: en
este editor, las teclas de función lo ayudan a moverse, guardar, copiar, mover y eliminar
texto. Al igual que jed y joe, mcedit está orientado a la pantalla. Viene en el paquete mc en RHEL y Fedora.
'
nedit: Este es un excelente paquete de editor de s. Necesitas instalar el nedit opcional
programador para obtener este editor.
Si usa ssh para iniciar sesión en otras computadoras Linux en su red, puede usar cualquier editor de texto disponible para
editar archivos. Si usa ssh X para conectarse al sistema remoto, aparece un editor basado en GUI en su pantalla local.
Cuando no hay una GUI disponible, necesita un editor de texto que se ejecute en el shell, como vi, jed o joe.
114
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
Comenzar con vi La
mayoría de las veces, inicia vi para abrir un archivo en particular. Por ejemplo, para abrir un archivo
llamado /tmp/ test, ingrese el siguiente comando:
$ nosotros /tmp/prueba
Si se trata de un archivo nuevo, debería ver algo similar a lo siguiente:
□
~
~
~
~
~
"/tmp/prueba" [Nuevo archivo]
Un cuadro parpadeante en la parte superior representa dónde se encuentra el cursor. El resultado final lo
mantiene informado sobre lo que está sucediendo con su edición (aquí, acaba de abrir un archivo nuevo).
En el medio, hay tildes (~) como relleno porque todavía no hay texto en el archivo. Ahora aquí, la parte s
intimidante: no hay sugerencias, menús o íconos que le digan qué hacer. Para empeorar las cosas, algunas
'
personas pueden quejarse de que
Simplemente cLomience
inux no
ae e
s amigable).
scribir.
Si lo hace, es probable que la computadora le emita un pitido. (Y
En primer lugar, debe conocer los dos modos de funcionamiento principales: comando y entrada. El editor vi
siempre se inicia en modo comando. Antes de que pueda agregar o cambiar texto en el archivo, debe escribir un
comando (una o dos letras, a veces precedidas por un número opcional) para decirle a vi lo que desea hacer. El
uso de mayúsculas y minúsculas es importante, ¡así que use mayúsculas y minúsculas exactamente como se
muestra en los ejemplos!
NOTA
En Red Hat Enterprise Linux, Fedora y otras distribuciones de Linux, para los usuarios regulares, el comando vi
tiene un alias para ejecutar vim. Si escribe alias vi , debería ver alias vi= ' vim
. L'a primera diferencia obvia entre vi y vim es
que cualquier tipo de archivo de texto conocido, como HTML, código C o un archivo de configuración común, aparece en color.
Los colores indican la estructura del archivo. Otras características de vim que no están en vi incluyen características como visual
resaltado y modo de pantalla dividida. De forma predeterminada, el usuario root no tiene un alias de vi para vim. Si vim no está en su
sistema, intente instalar el paquete mejorado de vim.
Adición de
texto Para acceder al modo de entrada, escriba una letra de comando de entrada. Para comenzar, escriba
cualquiera de las siguientes letras. Cuando termine de ingresar texto, presione la tecla Esc (a veces dos veces)
para regresar al modo de comando. ¡Recuerda la tecla Esc!
5
a: El comando agregar . Con este comando, puede ingresar texto que comienza a la derecha de
el cursor
R: El comando agregar al final . Con este comando, puede ingresar texto comenzando al final de la
línea actual.
115
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
i: El comando de inserción . Con este comando, puede ingresar texto que comience a la izquierda
del cursor
I: La inserción al comienzo del comando. Con este comando, puede ingresar texto que comience al principio
de la línea actual. o: El comando abrir debajo . Este comando abre una línea debajo de la línea actual y
lo pone en modo de inserción.
O: El comando abierto anterior . Este comando abre una línea encima de la línea actual y lo pone en
modo de inserción.
CONSEJO
Cuando está en el modo de inserción, INSERTAR aparece en la parte inferior de la pantalla.
Escriba algunas palabras y presione Entrar. Repita eso varias veces hasta que tenga algunas líneas de texto.
'
Cuando tenga un archivo
volvió caon
terminar
algo de
dte
exto,
escribir,
intente
presione
moverse
Esc
en
para
su tvexto
olver
con
al m
las
odo
teclas
de co
omando.
letras que
ahora
se que tu
describen en la siguiente sección.
CONSEJO ¡Recuerde la tecla Esc! Siempre te vuelve a colocar en el modo de comando. Recuerda que en ocasiones debes pulsar Esc dos veces. Por ejemplo, si escribe dos puntos ( : )
para pasar al modo ex, debe presionar Esc dos veces para volver al modo comando.
Moverse por el texto Para
moverse por el texto, puede utilizar las flechas arriba, abajo, derecha e izquierda. Sin embargo, muchas de las
teclas para moverse están al alcance de la mano cuando están en posición de escritura:
Teclas de flecha: Mueva el cursor hacia arriba, abajo, izquierda o derecha en el archivo, un carácter a la vez.
Para moverse hacia la izquierda y hacia la derecha, también puede usar la tecla Retroceso y la barra espaciadora, respectivamente.
Si prefiere mantener los dedos sobre el teclado, mueva el cursor con h (izquierda), l (derecha), j (abajo)
o k (arriba).
w: Mueve el cursor al principio de la siguiente palabra (delimitada por espacios, tabulaciones o
puntuación).
W: Mueve el cursor al principio de la siguiente palabra (delimitada por espacios o tabuladores). b: Mueve
el cursor al principio de la palabra anterior (delimitada por espacios, tabulaciones,
o puntuación).
B: Mueve el cursor al principio de la palabra anterior (delimitada por espacios o tabuladores).
0 (cero): Mueve el cursor al principio de la línea actual.
$: Mueve el cursor al final de la línea actual.
H: Mueve el cursor a la esquina superior izquierda de la pantalla (primera línea en la pantalla).
116
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
M: Mueve el cursor al primer carácter de la línea central en la pantalla.
L: Mueve el cursor a la esquina inferior izquierda de la pantalla (última línea de la pantalla).
Eliminación, copia y cambio de texto La única
otra edición que necesita saber es cómo eliminar, copiar o cambiar texto. Los comandos x, d, y y c se pueden
usar para borrar y cambiar texto. Estos se pueden usar junto con las teclas de movimiento (flechas, PgUp, PgDn,
letras y teclas especiales) y números para indicar exactamente lo que está eliminando, copiando o cambiando.
Considere los siguientes ejemplos:
x: Elimina el carácter debajo del cursor.
X: Elimina el carácter directamente antes del cursor.
d<?>: Elimina algo de texto.
c<?>: Cambia algo de texto. y<?
>: Extrae (copia) algún texto.
El <?> después de cada letra en la lista anterior identifica el lugar donde puede usar un comando de
movimiento para elegir lo que está eliminando, cambiando o tirando. Por ejemplo:
dw: Elimina (d) una palabra (w) después de la posición actual del cursor.
db: Elimina (d) una palabra (b) antes de la posición actual del cursor. dd:
Borra (d) toda la línea actual (d). c$: cambia (c) los caracteres (en realidad
los borra) desde el carácter actual hasta el final de la línea actual ($) y pasa al modo de entrada.
c0: Cambia (c) (nuevamente, borra) caracteres del carácter anterior al principio
de la línea actual (0) y pasa al modo de entrada. cl: Borra (c)
la letra actual (l) y pasa al modo de entrada. cc: Borra (c) la línea (c) y pasa al
modo de entrada. yy: Copia (y) la línea actual (y) en el búfer. y): Copia (y) la
oración actual ( ) ), a la derecha del cursor, en el búfer. y}: Copia (y) el párrafo
actual ( } ), a la derecha del cursor, en el búfer.
Cualquiera de los comandos que se acaban de mostrar puede modificarse aún más usando números, como puede
ver en los siguientes ejemplos:
3dd: Elimina (d) tres (3) líneas (d), comenzando en la línea actual. 3dw: Elimina (d)
las siguientes tres (3) palabras (w). 5cl: Cambia (c) las siguientes cinco (5) letras (l)
(es decir, quita las letras e ingresa
modo de
5
entrada). 12j: Mueve hacia abajo (j) 12
líneas (12). 5cw: Borra (c) las siguientes cinco (5) palabras (w) y pasa al modo de
entrada. 4y): Copia (y) las siguientes cuatro (4) oraciones ( ) ).
117
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Pegar (poner) texto
Después de que el texto se haya copiado en el búfer (eliminándolo, cambiándolo o tirándolo), puede volver
a colocar ese texto en su archivo usando la letra p o P. Con ambos comandos, el texto almacenado más
recientemente en el búfer se coloca en el archivo de diferentes maneras.
P: Coloca el texto copiado a la izquierda del cursor si el texto consta de letras o palabras; coloca el texto
copiado encima de la línea actual si el texto copiado contiene líneas de texto.
p: coloca el texto almacenado en el búfer a la derecha del cursor si el texto consta de letras o palabras;
coloca el texto almacenado en el búfer debajo de la línea actual si el texto almacenado en el búfer
contiene líneas de texto.
Repetir comandos
Después de eliminar, cambiar o pegar texto, puede repetir esa acción escribiendo un punto (.).
Por ejemplo, con el cursor al comienzo del nombre Joe, escribe cw y luego escribe Jim para cambiar Joe a Jim.
Busque la siguiente aparición de Joe en el archivo, coloque el cursor al comienzo de ese nombre y presione un
punto. La palabra cambia a Jim y puede buscar la siguiente aparición. Puede recorrer un archivo de esta manera,
presionando n para ir a la siguiente aparición y un punto (.) para cambiar la palabra.
Saliendo de vi
Para terminar, use los siguientes comandos para guardar o salir del archivo:
ZZ: Guarda los cambios actuales en el archivo y sale de vi. :w: Guarda el
archivo actual, pero puede continuar editándolo.
:wq: Funciona igual que ZZ.
:q: Sale del archivo actual. Esto funciona solo si no tiene ningún cambio sin guardar.
:q!: Sale del archivo actual y no guarda los cambios que acaba de hacer en el archivo.
CONSEJO
'
Si Realmente he destrozado el archivo por error, el :q! comando es la mejor manera de salir y abandonar sus cambios. El
archiva vuelve a la versión modificada más recientemente. Entonces, si acaba de guardar con :w , está atascado con los
cambios hasta ese momento. Sin embargo, a pesar de haber guardado el archivo, puede escribir u para revertir los cambios
(hasta el comienzo de la sesión de edición, si lo desea) y luego guardar de nuevo.
Ha aprendido algunos comandos de edición de vi. Describo más comandos en las siguientes secciones. Primero,
sin embargo, considere los siguientes consejos para suavizar sus primeras pruebas con vi:
Esc: Recuerda que Esc te devuelve al modo comando. (He visto a personas presionar todas las teclas del
teclado tratando de salir de un archivo). Esc seguido de ZZ lo saca del modo de comando, guarda el
archivo y sale.
u: Presione u para deshacer el cambio anterior que realizó. Continúe presionando u para deshacer el
cambiar antes de eso y el anterior a eso.
118
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
Ctrl+R: si decide que no desea deshacer el comando de deshacer anterior, use Ctrl+R para Rehacer.
Esencialmente, este comando deshace su deshacer.
Bloqueo de mayúsculas: cuidado con pulsar Bloq Mayús por error. Todo lo que escribe en vi tiene un
significado diferente cuando las letras están en mayúscula. No recibe una advertencia
escribiendo
de que
en
está
mayúsculas; las cosas empiezan a actuar raro.
:!command: Puede ejecutar un comando de shell mientras está en vi usando :! seguido de un nombre
de comando de shell. Por ejemplo, escriba :!date para ver la fecha y la hora actuales, escriba :!pwd
para ver cuál es su directorio actual o escriba :!jobs para ver si tiene algún trabajo ejecutándose en
segundo plano. Cuando se complete el comando, presione Entrar y volverá a editar el archivo.
Incluso podría usar esta técnica para iniciar un shell (:!bash) desde vi, ejecutar algunos comandos
desde ese shell y luego escribir exit para volver a vi. (Recomiendo guardar antes de escapar al shell,
en caso de que olvide volver a vi).
Ctrl+g: si olvida lo que está editando, al presionar estas teclas se muestra el nombre del archivo que está
editando y la línea actual en la que se encuentra en la parte inferior de la pantalla. También muestra
el número total de líneas en el archivo, el porcentaje de lo avanzado que está en el archivo y el número
de columna en el que se encuentra el cursor. Esto solo te ayuda a orientarte después de ti.
'
me detuve a tomar una taza de café a las 3 am
Saltar por el archivo Además de los pocos
comandos de movimiento descritos anteriormente, existen otras formas de moverse por un archivo vi.
'
Para probar esto, abra un archivo grande que pueda copiar /var/log/messages a /tmp
No y daemasiado.
dañe brirlo en vi).
(Intentar
Aquí hay algunos comandos de movimiento que puede usar:
Ctrl+f: Páginas adelante una página a la vez.
Ctrl+b: retrocede una página a la vez.
Ctrl+d: Páginas adelante media página a la vez.
Ctrl+u: Retrocede media página a la vez.
G: Va a la última línea del archivo.
1G: Va a la primera línea del archivo.
35G: Va a cualquier número de línea (35, en este caso).
Búsqueda de texto Para
buscar la aparición siguiente o anterior de texto en el archivo, utilice el carácter de barra inclinada (/) o el
signo de interrogación (?). Siga la barra inclinada o el signo de interrogación con un patrón (cadena de texto)
para buscar hacia adelante o hacia atrás, respectivamente, ese patrón. Dentro de la búsqueda, también puede
utilizar metacaracteres. Aquí hay unos ejemplos:
5
/hola: busca hacia delante la palabra hola. ?adiós: busca
hacia atrás la palabra adiós.
119
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
/The.*foot: busca hacia adelante una línea que contenga la palabra The y también, después de eso, en
algún punto, la palabra foot.
?[pP]rint: busca hacia atrás para imprimir o Imprimir. Recuerde que las mayúsculas y minúsculas importan
en Linux, así que use corchetes para buscar palabras que puedan tener mayúsculas diferentes.
Después de haber ingresado un término de búsqueda, simplemente escriba n o N para buscar nuevamente en la
misma dirección (n) o en la dirección opuesta (N) para el término.
Uso del modo ex El
editor vi se basó originalmente en el editor ex, que no le permitía trabajar en modo
de pantalla completa. Sin
embargo, le permitía ejecutar comandos que le permitían encontrar y cambiar texto en una o más líneas a la
vez. Cuando escribe dos puntos y el cursor va a la parte inferior de la pantalla, está esencialmente en modo ex.
Los siguientes son ejemplos de algunos de esos comandos ex para buscar y cambiar texto. (Elegí las palabras
Local y Remoto para buscar, pero puede usar cualquier palabra apropiada).
:g/Local: busca la palabra Local e imprime todas las apariciones de esa
línea del archivo. (Si hay más de una pantalla completa, la salida se canaliza al comando more).
:s/Local/Remote: Sustituye a Remote por la primera aparición de la palabra Local
en la línea actual.
:g/Local/s//Remoto: Sustituye la primera aparición de la palabra Local en cada línea del archivo con la
palabra Remoto.
:g/Local/s//Remoto/g: Sustituye cada aparición de la palabra Local con la
palabra Remote en todo el archivo.
:g/Local/s//Remote/gp: Sustituye cada aparición de la palabra Local con la palabra Remote en todo el archivo
y luego imprime cada línea para que pueda ver los cambios (transmitiéndola menos si la salida llena más
de una página).
Más información sobre vi y vim Para obtener más
información sobre el editor vi, intente escribir vimtutor. El comando vimtutor abre un tutorial en el editor de vim que lo
guía a través de los comandos y funciones comunes que puede usar en vim. Para usar vimtutor, instale el paquete
vimenhanced.
Búsqueda de archivos
Incluso una instalación básica de Linux puede tener miles de archivos instalados. Para ayudarlo a encontrar
archivos en su sistema, puede usar comandos como localizar (para encontrar comandos por nombre), buscar (para
encontrar archivos basados en muchos atributos diferentes) y grep (para buscar dentro de archivos de texto).
archivos para buscar líneas en archivos que contienen texto de búsqueda).
120
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
Uso de la localización para buscar archivos por nombre
En la mayoría de los sistemas Linux (incluidos Fedora y RHEL), el comando updatedb se ejecuta una vez al día
para recopilar los nombres de los archivos de todo el sistema Linux en una base de datos. Al ejecutar el comando
de localización, puede buscar en esa base de datos para encontrar la ubicación de los archivos almacenados en ella.
Aquí hay algunas cosas que debe saber sobre la búsqueda de archivos usando el comando de
localización:
■ Hay ventajas y desventajas en el uso de la localización para encontrar nombres de archivo en lugar del
comando de búsqueda. Un comando de localización encuentra archivos más rápido porque busca en una
base de datos en lugar de tener que buscar en todo el sistema de archivos en vivo. Una desventaja es que
el comando de localización no puede encontrar ningún archivo agregado al sistema desde la última vez que
se actualizó la base de datos. ■ No todos los archivos de su sistema de archivos se almacenan en la base
de datos. El contenido del archivo /etc/updatedb.conf limita qué nombres de archivo se recopilan mediante la
eliminación de tipos de montaje seleccionados, tipos de sistemas de archivos, tipos de archivos y puntos de
montaje. Por ejemplo, los nombres de archivo no se obtienen de sistemas de archivos montados de forma
remota (cifs, nfs, etc.) o de CD o DVD montados localmente (iso9660). Las rutas que contienen archivos
temporales (/tmp) y archivos de spool (/var/spool/cups) también se eliminan. Puede agregar elementos para
podar (o eliminar algunos elementos que no desea podar) la base de datos de localización según sus
necesidades. En RHEL 8, el archivo updatedb.conf contiene lo siguiente:
PRUNE_BIND_MOUNTS = "sí"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs
cpuset debugfs devpts ecryptfs exofs fuse fuse .sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs
iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_ pipefs securityfs
selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs ceph fuse.ceph"
PRUNENAMES = ".git .hg .svn .bzr .archids {arch} CVS"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ ccache /var/lib/yum/
yumdb /var/lib/dnf/yumdb /var/spool/cups /var/ spool/ calamar /var/tmp /var/lib/ceph"
Como usuario habitual, no puede ver ningún archivo de la base de datos de localización que normalmente no puede
ver en el sistema de archivos. Por ejemplo, si no puede escribir ls para ver los archivos en el directorio /root, no podrá
ubicar los archivos almacenados en ese directorio.
■ Cuando busca una cadena, la cadena puede aparecer en cualquier lugar de la ruta de un archivo. Por
ejemplo, si busca passwd, puede encontrar /etc/passwd, /usr/bin/passwd, /home/chris/passwd/pwdfiles.txt
y muchos otros archivos con passwd en la ruta.
' 5
■ Si agrega archivos a su sistema después de que se ejecuta la actualización, puede t localizar esos archivos
hasta que updatedb se ejecute de nuevo (probablemente esa noche). Para que la base de datos
contenga todos los archivos hasta el momento actual, simplemente puede ejecutar updatedb desde el
shell como root.
121
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Estos son algunos ejemplos del uso del comando de localización para buscar archivos:
$ localizar .bashrc /etc/
skel/.bashrc /home/
cnegus/.bashrc #
localizar .bashrc /etc/
skel/.bashrc /home/
bill/.bashrc /home/joe/.bashrc /
root/.bashrc
Cuando se ejecuta como un usuario normal, la ubicación solo encuentra .bashrc en /etc/skel y en el directorio de inicio del
'
usuario. Ejecutar como root, el mismo comando localiza los archivos .bashrc en el directorio de todos. está en casa
$ localizar dir_color /usr/
share/man/man5/dir_colors.5.gz
...
$ localizar i dir_color /etc/
DIR_COLORS /etc/
DIR_COLORS.256color /etc/
DIR_COLORS.lightbgcolor /usr/share/
man/man5/dir_colors.5.gz
Al usar localizar i, los nombres de los archivos se encuentran independientemente de las mayúsculas y minúsculas.
Entonces, en el ejemplo anterior, DIR_COLORS se encontró con i mientras que no se encontró sin la opción i.
$ localizar servicios /etc/
services /usr/share/
services/bmp.kmgio /usr/share/services/
data.kmgio
A diferencia del comando de búsqueda, que usa la opción name para buscar nombres de archivos, el comando de
localización localiza la cadena que ingresa si existe en alguna parte de la ruta del archivo. En este ede
jemplo,
servicios
la búsqueda
con el
comando de localización encuentra archivos y directorios que contienen la cadena de texto de servicios.
Búsqueda de archivos con fi nd El comando find
es el mejor para buscar archivos en su sistema de archivos en función de una variedad de atributos. Una vez que se encuentran
los archivos, también puede actuar sobre esos archivos (usando la opción exec o okay) ejecutando los comandos que desee
en ellos.
Cuando ejecuta find, busca en su sistema de archivos en vivo, lo que hace que se ejecute más lentamente que localizar,
pero le brinda una vista actualizada de los archivos en su sistema Linux.
Sin embargo, también puede indicarle a find que comience en un punto particular del sistema de archivos para que la
búsqueda sea más rápida al limitar el área del sistema de archivos que se está buscando.
122
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
Casi cualquier atributo de archivo que se le ocurra se puede utilizar como opción de búsqueda. Puede buscar
nombres de archivo, propiedad, permiso, tamaño, horas de modificación y otros atributos.
Incluso puede utilizar combinaciones de atributos. Estos son algunos ejemplos básicos del uso del comando de
búsqueda:
$ buscar
$ buscar /etc
# buscar /etc
$ buscar $HOME ls
Ejecutado en una línea por sí mismo, el comando de búsqueda encuentra todos los archivos y directorios debajo
del directorio actual. Si desea buscar desde un punto particular en el árbol de directorios, simplemente agregue el
nombre del directorio que desea buscar (como /etc). Como usuario normal, find no le otorga un permiso especial
para buscar archivos que tengan permisos que los hagan legibles solo por el usuario raíz. Entonces, find produce
un montón de mensajes de error. Ejecutar como usuario raíz, buscar /etc encuentra todos los archivos en /etc.
Una opción especial para el comando de búsqueda es ls. Se imprime una lista larga (propiedad, permiso, tamaño,
etc.) con cada archivo cuando agrega ls al comando de búsqueda (similar a la salida del comando ls l). Esta
opción lo ayuda en ejemplos posteriores cuando desee verificar que ha encontrado archivos que contienen la
propiedad, el tamaño, las horas de modificación u otros atributos que está tratando de encontrar.
NOTA
Si, como usuario normal, está buscando en un área del sistema de archivos donde no tiene permiso completo para
acceder a todos los archivos que contiene (como el directorio /etc), es posible que reciba muchos mensajes de error.
cuando buscas con find . Para deshacerse de esos mensajes, dirija los errores estándar a /dev/null . Para hacer eso,
agregue lo siguiente al final de la línea de comando: 2> /dev/null . El 2> redirige el error estándar a la siguiente opción (en
, donde la salida se descarta).
este caso /dev/null
Búsqueda de archivos por
nombre Para buscar archivos por nombre, puede utilizar las opciones name y iname. La búsqueda se realiza
por nombre base del archivo; los nombres de los directorios no se buscan de forma predeterminada. Para que la
búsqueda sea más fl exible, puede utilizar caracteres de coincidencia de archivos, como asteriscos (*) y signos de
interrogación (?), como en los siguientes ejemplos:
# buscar /etc name passwd /etc/
pam.d/passwd /etc/passwd #
buscar /etc iname '*passwd*' /
etc/pam.d/passwd /etc/passwd /etc/
passwd.OLD / etc/passwd /etc/
MYPASSWD /etc/security/opasswd 5
123
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Usando la opción name y sin asteriscos, el primer ejemplo de arriba lista cualquier archivo en el directorio /
etc que se llame passwd exactamente. Al usar iname en su lugar, puede hacer coincidir cualquier
combinación de mayúsculas y minúsculas. Usando asteriscos, puede hacer coincidir cualquier nombre de
archivo que incluya la palabra contraseña.
Búsqueda de archivos
por tamaño Si su disco se está llenando y desea averiguar dónde se encuentran sus archivos más
grandes, puede buscar en su sistema por tamaño de archivo. La opción size le permite buscar archivos
que sean exactamente, más pequeños o más grandes que un tamaño seleccionado, como puede ver en
los siguientes ejemplos:
$ find /usr/share/ size +10M $ find /
mostlybig size 1M $ find /bigdata size
+500M size 5G exec du sh {} \; 4.1G /bigdata/images/rhel6.img 606M /bigdata/
Fedora16i686LiveDesktop.iso 560M /bigdata/dance2.avi
El primer ejemplo del código anterior encuentra archivos de más de 10 MB. El segundo encuentra archivos
'
de menos de 1 MB. En el tercer ejemplo, tengo 5GB.
bE
Estoy sto incluye
uscando un ejemplo
archivos de la oepción
que tengan ntre 500
exec
(que
MB y
describo más adelante) para ejecutar el comando du en cada archivo para ver su tamaño.
Búsqueda de archivos
por usuario Puede buscar un propietario (usuario) o grupo (grupo) en particular cuando intenta
encontrar archivos. Al usar not y or, puede refinar su búsqueda de archivos asociados con usuarios y
grupos específi cos, como puede ver en los siguientes ejemplos:
$ find /home user chris ls 131077 4 rw
rr 1 chris chris 379 29 de junio de 2014 ./.bashrc # find /home \( user chris or
user joe \) ls 131077
4 rwrr 1 chris chris 379 29 de junio de 2014 ./.bashrc 4 rwrr 1
181022 joe joe # find /etc group ntp ls 4 drwxrwsrx
379 135
rdaíz
e junio de 2014 ./.bashrc
131438 ntp 4096 9 de marzo 22:16 /etc/ntp # find /
var/spool not user root ls
262100 rwrw 1 rpc 0 rwrw 1 joe puede 0 27 de enero de 2014 /var/spool/mail/rpc 0
278504 puede 0 3 de abril de 2014 /var/spool/mail/joe 0 rw
rw
261230 277373 1 correo
2848 de f1actura
rwrw chris mail 8284 15 de marzo
0 18
de
de
2014 /var/spool/mail/chris
diciembre 14:17 /var/spool/mail/bill
El primer ejemplo genera una lista larga de todos los archivos del directorio /home que son propiedad del
usuario chris. La siguiente lista de archivos propiedad de chris o joe. El comando de búsqueda de /etc
muestra todos los archivos que tienen ntp como su asignación de grupo principal. El último ejemplo muestra
todos los archivos en /var/spool que no son propiedad de root. Puede ver los archivos que pertenecen a
otros usuarios en la salida de muestra.
124
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
Búsqueda de archivos con
permiso La búsqueda de archivos con permiso es una forma excelente de descubrir problemas de seguridad
en su sistema o descubrir problemas de acceso. Así como cambió los permisos en archivos usando números o letras
(con el comando chmod), también puede encontrar archivos basados en permisos de números o letras junto con las
opciones perm. (Consulte el Capítulo 4, “Moverse por el sistema de archivos”, para
con
vcer
hmod
cómo
para
usar
reflejar
números
los p
y
ermisos
letras
de archivo).
Si usa números para obtener permisos, como hago a continuación, recuerde que los tres números
representan permisos para el usuario, el grupo y otros. Cada uno de esos tres números varía desde
ningún permiso (0) hasta permiso completo de lectura/escritura/ejecución (7) al agregar los bits de lectura
(4), escritura (2) y ejecución (1) juntos. Con un guión () delante del número, los tres bits indicados deben
coincidir; con una barra diagonal (/) delante, cualquiera de los números puede coincidir para que la búsqueda
encuentre un archivo. Los números completos y exactos deben coincidir si no se usa un guión ni una barra
inclinada.
Considere los siguientes ejemplos:
$ buscar /usr/bin perm 755 ls
788884 28 rwxrxrx 1 raíz raíz 28176 Mar 10 2014 /bin/echo
$ encontrar /inicio/chris/ perm 222 tipo d ls 144503
4 drwxrwxrwx 8 chris chris 4096 Jun 23 2014 /home/chris/OPENDIR
Al buscar perm 755, todos los archivos o directorios con exactamente el permiso rwxrxrx coinciden. Al
usar perm 222, solo se comparan los archivos que tienen permiso de escritura para el usuario, el grupo y
otros. Tenga en cuenta que, en este caso, se agrega type d para que coincida solo con los directorios.
$ find /myreadonly perm /222 type f 0 rwrwr 1 chris
685035 chris 0 30 de diciembre 16:34 /solomilectura/abc
$ encontrar . perm 002 tipo f ls 266230 0
rwrwrw 1 chris chris 0 30 de diciembre 16:28 ./LINUX_BIBLE/abc
Usando perm /222, puede encontrar cualquier archivo (type f) que tenga permiso de escritura activado
para el usuario, grupo u otro. Puede hacerlo para asegurarse de que todos los archivos sean de solo
lectura en una parte particular del sistema de archivos (en este caso, debajo del directorio /myreadonly). El
último ejemplo, perm /002, es muy útil para buscar archivos que tengan permisos de escritura abiertos para
"otros", independientemente de cómo estén configurados los otros bits de permiso.
Búsqueda de archivos por fecha y
hora Las marcas de fecha y hora se almacenan para cada archivo cuando se crea, cuando se accede a él, cuando
se modifica su contenido o cuando se cambian sus metadatos. Los metadatos incluyen el propietario, el grupo, la
marca de tiempo, el tamaño del archivo, los permisos y otra información almacenada en el inodo
posible
del archivo.
que desee
Es
5
buscar datos de archivos o cambios en los metadatos por cualquiera de los siguientes motivos:
'
■ Acaba de cambiar el contenido de un archivo de configuración y puede no recuerdo
cuál. Entonces, busca /etc para ver qué ha cambiado en los últimos 10 minutos:
$ buscar /etc/ mmin 10
125
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
■ Sospecha que alguien hackeó su sistema hace tres días. Entonces, buscas en
sistema para ver si se ha cambiado la propiedad o los permisos de algún comando en los últimos tres días:
$ find /bin /usr/bin /sbin /usr/sbin ctime 3
■ Quiere encontrar archivos en su servidor FTP (/var/ftp) y servidor web (/var/www)
a los que no se ha accedido en más de 300 días para que pueda ver si es necesario eliminar
alguno:
$ buscar /var/ftp /var/www atime +300
Como puede deducir de los ejemplos, puede buscar cambios de contenido o metadatos durante una cierta
cantidad de días o minutos. Las opciones de tiempo (atime, ctime y mtime) le permiten buscar en función
de la cantidad de días desde que se accedió a cada archivo, se modificó o se modificaron sus metadatos.
Las opciones mínimas (amin, cmin y mmin) hacen lo mismo en minutos.
Los números que proporciona como argumentos para las opciones min y time están precedidos por
un guión (para indicar una hora desde la hora actual hasta esa cantidad de minutos o días atrás) o un signo
más (para indicar la hora desde la cantidad de minutos o días atrás y mas viejo). Sin guión ni signo más, se
hace coincidir el número exacto.
■ Hay un directorio compartido llamado /var/allusers. Esta línea de comando le permite
encontrar archivos que son propiedad de joe o chris.
$ buscar /var/todos los usuarios \( usuario joe o usuario chris \) ls 679967
0 rwrr 1 chris chris 0 31 dic 12:57
/var/alluses/myjoe
679977 1812 rwrr 1 joe joe 4379 31 de diciembre 13:09 /var/allusers/dict.dat
■ Esta línea de comando busca archivos que pertenecen al usuario joe, pero solo aquellos que no están
asignados al grupo joe: $ find /var/allusers/ user joe not group joe ls 679972 0 rwr r 1 joe sales
0 31 de diciembre 13:02 /var/allusers/one
126
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
■ También puede agregar múltiples requisitos en sus búsquedas. Aquí, un archivo debe ser
propiedad del usuario joe y también debe tener más de 1 MB de tamaño:
$ find /var/allusers/ user joe and size +1M ls 679977 1812 rwrr 1 joe root
1854379 31 de diciembre 13:09 /var/allusers/dict.dat
Búsqueda de archivos y ejecución de
comandos Una de las características más potentes del comando de búsqueda es la capacidad de
ejecutar comandos en cualquier archivo que encuentre. Con la opción exec, el comando que usa
se ejecuta en cada archivo encontrado, sin detenerse a preguntar
detiene
si está
en
bien.
cada
La
archivo
opción
coincidente
ok se
y le pregunta si desea ejecutar el comando en él.
La ventaja de usar ok es que, si está haciendo algo destructivo, puede asegurarse de aprobar cada archivo individualmente
antes de ejecutar el comando en él. La sintaxis para usar exec y ok es la misma: $ find [options] exec command {} \; $
buscar [opciones] ok comando {} \;
Con exec o ok, ejecuta find con las opciones que desee para encontrar los archivos que está
buscando. Luego ingresa la opción exec o ok seguida del comando que desea ejecutar en cada
archivo. El conjunto de llaves indica en qué parte de la línea de comando se debe leer cada archivo
que se encuentre. Cada archivo se puede incluir en la línea de comandos varias veces si lo desea.
Para finalizar la línea, debe agregar una barra invertida y un punto y coma (\;). Aquí hay unos
ejemplos:
■ Este comando encuentra cualquier archivo llamado passwd en el directorio /etc e incluye
ese nombre en la salida de un comando de eco:
$ find /etc iname passwd exec echo "Encontré {}" \; Encontré /etc/pam.d/passwd
Encontré /etc/passwd
■ El siguiente comando busca todos los archivos del directorio /usr/share que tengan más de 5
MB de tamaño. Luego enumera el tamaño de cada archivo con el comando du.
La salida de find se ordena por tamaño, de mayor a menor. Con exec ingresado, todas las entradas
encontradas se procesan, sin preguntar: $ find /usr/share size +5M exec du {} \; | sort nr 116932 /usr/share/
icons/HighContrast/icontheme.cache 69048 /usr/share/icons/gnome/icontheme.cache 20564 /
usr/share/fonts/cjkuniuming/uming.ttc
■ La opción ok le permite elegir, uno a la vez, si cada archivo encontrado es
actuará según el comando que ingrese. Por ejemplo, desea buscar todos los archivos que
pertenecen a joe en el directorio /var/allusers (y sus subdirectorios) y moverlos al directorio / 5
tmp/joe:
# find /var/allusers/ user joe ok mv {} /tmp/joe/ \; ... /var/todoslosusuarios/dict.dat > ? y ... /
< mv var/todoslosusuarios/cinco > ? y
< mv
127
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Observe en el código anterior que se le solicita cada archivo que se encuentra antes de moverlo al directorio /tmp/joe.
Simplemente escriba y y presione Entrar en cada línea para mover el archivo, o simplemente presione Entrar para omitirlo.
Para obtener más información sobre el comando de búsqueda, ingrese man find.
Búsqueda en archivos con grep Si desea buscar
archivos que contengan un determinado término de búsqueda, puede utilizar el comando grep. Con grep, puede buscar un
solo archivo o buscar una estructura de directorio completa de archivos recursivamente.
Cuando busca, puede hacer que cada línea que contenga el término se imprima en su pantalla (salida estándar) o simplemente
enumere los nombres de los archivos que contienen el término de búsqueda. De forma predeterminada, grep busca texto
distinguiendo entre mayúsculas y minúsculas, aunque también puede realizar búsquedas sin distinguir entre mayúsculas y minúsculas.
En lugar de solo buscar archivos, también puede usar grep para buscar resultados estándar. Entonces, si un comando
genera mucho texto y desea encontrar solo líneas que contengan cierto texto, puede usar grep para filtrar solo lo que desee.
Estos son algunos ejemplos de líneas de comando grep utilizadas para buscar cadenas de texto en uno o más
archivos:
$ grep escritorio /etc/servicios escritorio
dna 2763/tcp escritoriodna 2763/udp # ADN de escritorio
# ADN de escritorio
$ grep i escritorio /etc/servicios scodtmgr
617/tcp 617/udp scodtmgr airsync 2175/tcp # Servidor de administración de escritorio SCO
# Servidor de administración de escritorio SCO
# Protocolo AirSync de escritorio de Microsoft
...
En el primer ejemplo, un grep para la palabra escritorio en el archivo /etc/services mostró dos líneas. Buscando de nuevo,
utilizando i para distinguir entre mayúsculas y minúsculas (como en el segundo ejemplo), se produjeron 29 líneas de texto.
Para buscar líneas que no contengan una cadena de texto seleccionada, use la opción v. En el siguiente ejemplo, se
muestran todas las líneas del archivo /etc/services excepto aquellas que contienen el texto tcp (sin distinción entre mayúsculas y
minúsculas):
$ grep vi tcp /etc/servicios
Para realizar búsquedas recursivas, utilice la opción r y un directorio como argumento. El siguiente ejemplo incluye la opción
l, que solo enumera los archivos que incluyen el texto de búsqueda, sin mostrar las líneas de texto reales. Esa búsqueda
muestra archivos que contienen el texto peerdns (sin distinción entre mayúsculas y minúsculas).
$ grep rli peerdns /usr/share/doc/ /usr/share/doc/
dnsmasq2.66/setup.html /usr/share/doc/
initscripts9.49.17/sysconfig.txt
...
128
Machine Translated by Google
Capítulo 5: Trabajar con archivos de texto
El siguiente ejemplo busca recursivamente el directorio /etc/sysconfig para el término root.
Enumera cada línea en cada archivo debajo del directorio que contiene ese texto. Para que sea más fácil
resaltar la raíz del término en cada línea, se agrega la opción color. De forma predeterminada, el término
coincidente aparece en rojo.
$ grep ri color raíz /etc/sysconfig/
Para buscar un término en la salida de un comando, puede canalizar la salida al comando grep. En
este ejemplo, sé que las direcciones IP se enumeran en las líneas de salida del comando ip que incluyen la
cadena inet, por lo que uso grep para mostrar solo esas líneas:
$ Mostrar dirección IP | grep inet inet
127.0.0.1/8 alcance host lo inet
192.168.1.231/24 brd 192.168.1.255 alcance global wlan0
Resumen
Ser capaz de trabajar con archivos de texto sin formato es una habilidad crítica para usar Linux. Debido a que
tantos archivos de configuración y archivos de documentos están en formato de texto sin formato, debe
dominar un editor de texto para usar Linux de manera efectiva. Encontrar nombres de archivo y contenido en
archivos también son habilidades críticas. En este capítulo, aprendió a usar los comandos de localización y
búsqueda para buscar archivos y grep para buscar archivos.
El próximo capítulo cubre una variedad de formas de trabajar con procesos. Allí, aprenderá cómo ver qué
procesos se están ejecutando, ejecutar procesos en primer plano y en segundo plano y cambiar procesos
(enviar señales).
Ejercicios
Utilice estos ejercicios para probar su conocimiento sobre el uso del editor de texto vi (o vim), los comandos
para encontrar archivos (ubicar y buscar) y los comandos para buscar archivos (grep). Estas tareas asumen
que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionan
en otros sistemas Linux). Si está atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque
en Linux, a menudo hay varias formas de completar una tarea).
1. Copie el archivo /etc/services en el directorio /tmp. Abre /tmp/ser
vices file en vim y busque el término WorldWideWeb. Cambie eso para leer World Wide Web.
2. Busque el siguiente párrafo en su archivo /tmp/services (si no está allí, elija un párrafo
diferente) y muévalo al final de ese archivo.
# Tenga en cuenta que actualmente la política de la IANA es asignar un único número
de puerto bien conocido # para TCP y UDP; por lo tanto, la mayoría de las entradas 5
aquí tienen dos entradas # incluso si el protocolo no admite operaciones UDP.
# Actualizado desde RFC 1700, "Números asignados" (octubre de 1994). No se
incluyen todos los # puertos , solo los más comunes.
129
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
3. Con el modo ex, busque todas las apariciones del término tcp (sensible a mayúsculas y minúsculas) en
su archivo /tmp/services y cámbielo a LO QUE SEA.
4. Como usuario normal, busque en el directorio /etc cada archivo llamado passwd. redirigir
mensajes de error de su búsqueda a /dev/null.
5. Cree un directorio en su directorio de inicio llamado PRUEBA. Cree archivos en ese directorio llamados uno,
dos y tres que tengan permisos completos de lectura/escritura/ejecución para todos (usuario, grupo y otros).
Cree un comando de búsqueda para encontrar esos archivos y cualquier otro archivo que tenga permiso de
escritura abierto para ″otros″ desde su directorio de inicio y más abajo.
6. Busque archivos en el directorio /usr/share/doc que no hayan sido modificados en
más de 300 días.
7. Cree un directorio /tmp/FILES. Busque todos los archivos en el directorio /usr/share que tengan más de 5
MB y menos de 10 MB y cópielos en el directorio /tmp/FILES.
8. Busque todos los archivos en el directorio /tmp/FILES y haga una copia de seguridad de cada archivo en el
mismo directorio. Utilice el nombre existente de
cada
aarchivo
cada rchivo
dye
scimplemente agregue .mybackup para crear
opia de seguridad.
9. Instale el paquete kerneldoc en Fedora o Red Hat Enterprise Linux. Usando
grep, busque dentro de los archivos contenidos en el directorio /usr/share/doc/kerneldoc* el
término e1000 (sin distinción entre mayúsculas y minúsculas) y enumere los nombres de los archivos
que contienen ese término.
10. Busque el término e1000 nuevamente en la misma ubicación, pero esta vez enumere cada línea
que contiene el término y resalte el término en color.
130
Machine Translated by Google
CAPÍTULO S
Gestión de procesos en ejecución
EN ESTE CAPÍTULO
Visualización de procesos
Procesos en ejecución en primer plano y en segundo plano
Procesos de matanza y renicing.
significa que muchos programas pueden estar ejecutándose al mismo tiempo. Una instancia de un programa en
Además de
ejecución ser
se un sistema
denomina operativo
proceso . multiusuario,
Linux proporciona Linux epara
herramientas s un sistema
listar multitarea.
procesos multitarea
en ejecución,
sistema de monitoreo
uso y detener (o eliminar) procesos cuando sea necesario.
Desde un shell, puede iniciar procesos y luego pausarlos, detenerlos o eliminarlos. También
puede ponerlos en segundo plano y traerlos al primer plano. Este capítulo describe herramientas
como ps, top, kill, jobs y otros comandos para enumerar y administrar procesos.
Procesos de comprensión
Un proceso es una instancia en ejecución de un comando. Por ejemplo, puede haber un comando vi en el sistema.
Pero si vi está siendo ejecutado actualmente por 15 usuarios diferentes, ese comando está representado por 15
procesos en ejecución diferentes.
Un proceso se identifica en el sistema mediante lo que se conoce como ID de proceso (PID). Ese PID es único para el
sistema actual. En otras palabras, ningún otro proceso puede usar ese número como su ID de proceso mientras ese
primer proceso aún se está ejecutando. Sin embargo, una vez finalizado un proceso, otro proceso puede reutilizar ese número.
Junto con un número de ID de proceso, otros atributos están asociados con un proceso. Cada proceso, cuando se
ejecuta, está asociado con una cuenta de usuario particular y una cuenta de grupo. Esa información de la cuenta ayuda
a determinar a qué recursos del sistema puede acceder el proceso. Por ejemplo, un proceso que se ejecuta como usuario
raíz tiene mucho más acceso a los archivos y recursos del sistema que un proceso que se ejecuta como un usuario normal.
La capacidad de administrar procesos en su sistema es fundamental para un administrador de sistemas Linux. Algunas
'
rendimiento
procesos de sEu
veces, los procesos fuera de control pueden estar acabando con los ncontrar y tratar
sistema, según atributos como la
memoria y el uso de la CPU, que se tratan en este capítulo.
131
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
NOTA
Los comandos que muestran información sobre los procesos en ejecución obtienen la mayor parte de esa información de los datos sin
procesar almacenados en el sistema de archivos /proc. Cada proceso almacena su información en un subdirectorio
nombre
de /proc ,
del ID dqe
ue
proceso
lleva el
de
ese proceso. Puede ver algunos de esos datos sin procesar mostrando el contenido de los archivos en uno de esos directorios (usando los
comandos cat o less).
Procesos de listado
Desde la línea de comandos, el comando ps es el comando más antiguo y común para enumerar los procesos
que se ejecutan actualmente en su sistema. La versión de Linux de ps contiene una variedad de opciones de
los antiguos sistemas UNIX y BSD, algunas de las cuales están en conflicto y se implementan de manera no
estándar. Consulte la página de manual de ps para obtener descripciones de esas diferentes opciones.
El comando superior proporciona un enfoque más orientado a la pantalla para enumerar los procesos y
también se puede utilizar para cambiar el estado de los procesos. Si está usando el escritorio GNOME, puede
usar la herramienta System Monitor ( gnomesystemmonitor) para proporcionar un medio gráfico para trabajar
con procesos. Estos comandos se describen en las siguientes secciones.
Listado de procesos con ps La utilidad
más común para verificar los procesos en ejecución es el comando ps. Úselo para ver qué programas se
están ejecutando, los recursos que están utilizando y quién los está ejecutando. El siguiente es un ejemplo
del comando ps:
$ p.d.
PID DE USUARIO %CPU %MEM RESP RSS TTY COMANDO DE TIEMPO DE INICIO STAT
jake 2147 0.0 0.7 1836 1020 tty1 S+ jake 2310 0.0 0.7 2592 912 tty1 14:50 0:00 bash
R+ 18:22 0:00 p.d.
En este ejemplo, la opción u (equivalente a u) solicita que se muestren los nombres de usuario, así
como otra información, como la hora en que comenzó el proceso y el uso de memoria y CPU para los
procesos asociados con el usuario actual. Los procesos que se muestran están asociados con el terminal
actual (tty1). El concepto de terminal proviene de los viejos tiempos cuando las personas trabajaban
exclusivamente desde terminales de personajes, por lo que una terminal normalmente representaba a una
sola persona en una sola pantalla. Hoy en día, puede tener muchas "terminales" en una pantalla abriendo
múltiples terminales virtuales o ventanas de Terminal en el escritorio.
En esta sesión de shell, no sucede mucho. El primer proceso muestra que el usuario llamado jake abrió un
shell bash después de iniciar sesión. El siguiente proceso muestra que jake ejecutó el comando ps u. El
dispositivo terminal tty1 se está utilizando para la sesión de inicio de sesión. La columna STAT representa
el estado del proceso, donde R indica un proceso actualmente en ejecución y S representa un proceso
inactivo.
132
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
NOTA
Varios otros valores pueden aparecer bajo la columna STAT. Por ejemplo, un signo más (+) indica que el proceso está
asociado con las operaciones en primer plano.
6
La columna USUARIO muestra el nombre del usuario que inició el proceso. Cada proceso está representado
por un número de ID único denominado ID de proceso o PID. Puede usar el PID si alguna vez necesita eliminar un
proceso fuera de control o enviar otro tipo de señal a un proceso. Las columnas %CPU y %MEM muestran los
porcentajes del procesador y la memoria de acceso aleatorio, respectivamente, que consume el proceso.
VSZ (tamaño del conjunto virtual) muestra el tamaño del proceso de imagen (en kilobytes) y RSS (tamaño del
conjunto residente) muestra el tamaño del programa en la memoria. Los tamaños de VSZ y RSS pueden ser
diferentes porque VSZ es la cantidad de memoria asignada para el proceso, mientras que RSS es la cantidad que
realmente se usa. La memoria RSS representa la memoria física que no se puede intercambiar.
START muestra la hora en que comenzó a ejecutarse el proceso y TIME muestra el tiempo acumulado del
sistema utilizado. (Muchos comandos consumen muy poco tiempo de CPU, como se refleja en 0:00 para procesos
que ni siquiera han usado un segundo completo de tiempo de CPU).
Muchos procesos que se ejecutan en una computadora no están asociados con una terminal. Un sistema Linux normal
tiene muchos procesos ejecutándose en segundo plano. Los procesos del sistema en segundo plano realizan tareas
como registrar la actividad del sistema o escuchar los datos que llegan de la red. A menudo se inician cuando Linux
se inicia y se ejecutan continuamente hasta que el sistema se apaga. Del mismo modo, iniciar sesión en un escritorio
de Linux hace que se inicien muchos procesos en segundo plano, como procesos para administrar audio, paneles de
escritorio, autenticación y otras funciones de escritorio.
Para recorrer todos los procesos que se ejecutan en su sistema Linux para el usuario actual, agregue la canalización (|)
y el comando less a ps ux:
$ pd ux | menos
Para recorrer todos los procesos que se ejecutan para todos los usuarios en su sistema, use el comando ps
aux de la siguiente manera:
$ p.d. auxiliar | menos
Una tubería (ubicada arriba del carácter de barra invertida en el teclado) le permite dirigir la salida de un comando
para que sea la entrada del siguiente comando. En este ejemplo, la salida del comando ps (una lista de procesos) se
dirige al comando less, que le permite navegar a través de esa información. Use la barra espaciadora para pasar las
páginas y escriba q para finalizar la lista. También puede usar las teclas de flecha para mover una línea a la vez a
través de la salida.
El comando ps se puede personalizar para mostrar columnas seleccionadas de información y ordenar la
información por una de esas columnas. Usando la opción o, puede usar palabras clave para indicar las columnas
que desea enumerar con ps. Por ejemplo, el siguiente ejemplo enumera cada
133
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
proceso en ejecución (e) y luego sigue la opción o con cada columna de información que quiero mostrar,
incluida la ID del proceso (pid), el nombre de usuario (usuario), la ID del usuario (uid), el nombre del grupo
(grupo), la ID del grupo (gid), memoria virtual asignada (vsz), memoria residente utilizada (rss) y la línea
de comando completa que se ejecutó (comm). De forma predeterminada, la salida se ordena por número de
ID de proceso.
$ ps eo pid,usuario,uid,grupo,gid,vsz,rss,comm | menos
USUARIO PID GRUPO UID G.I.D. COMANDO VSZ RSS
1 raíz 0 raíz 0 187660 13296 sistemad 0
2 raíz 0 raíz 0 0 hilos
Si desea ordenar por una columna específi ca, puede usar la opción sort=. Por ejemplo, para ver qué procesos
utilizan más memoria, ordeno por el campo vsz. Eso ordena desde el uso de memoria más bajo hasta el más
alto. Como quiero ver primero los más altos, pongo un guión delante de esa opción para ordenar (sort=vsz).
$ ps eo pid,usuario,grupo,gid,vsz,rss,comm sort=vsz | cabeza
USUARIO PID GRUPO G.I.D. COMANDO VSZ RSS
2366 cristian cris 1000 3720060 317060 caparazón de gnomo
1580 gdm gdm 42 3524304 205796 caparazón de gnomo
3030 cris 3233 chris 1000 2456968 248340 Firefox
cris chris 1000 2314388 316252 Contenido web
Consulte la página man de ps para obtener información sobre otras columnas de información que puede
mostrar y ordenar.
Listado y cambio de procesos con top El comando top proporciona
un medio orientado a la pantalla para mostrar los procesos que se ejecutan en su sistema. Con top, el
valor predeterminado es mostrar los procesos según la cantidad de tiempo de CPU que consumen
actualmente. Sin embargo, también puede ordenar por otras columnas. Después de identificar un proceso
que se está comportando mal, también puede usar top para matar (finalizar por completo) o renovar (volver
a priorizar) ese proceso.
Si desea poder eliminar o modificar cualquier proceso, debe ejecutar top como usuario raíz.
Si solo desea mostrar procesos y posiblemente matar o cambiar sus propios procesos, puede hacerlo
como un usuario normal. La Figura 6.1 muestra un ejemplo de la ventana superior.
La información general sobre su sistema aparece en la parte superior de la salida superior, seguida de
información sobre cada proceso en ejecución (o al menos tantos como quepan en su pantalla). En la parte
superior, puede ver cuánto tiempo ha estado activo el sistema, cuántos usuarios están actualmente conectados
al sistema y cuánta demanda ha habido en el sistema durante los últimos 1, 5 y 10 minutos.
Otra información general incluye cuántos procesos (tareas) se están ejecutando actualmente, cuánta
CPU se está utilizando y cuánta RAM e intercambio están disponibles y se están utilizando.
134
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
FIGURA 6.1
Visualización de procesos en ejecución con la parte superior
A continuación de la información general hay listas de cada proceso, ordenadas por el porcentaje de CPU que utiliza
cada proceso. Toda esta información se vuelve a mostrar cada 5 segundos, de forma predeterminada.
La siguiente lista incluye acciones que puede realizar con top para mostrar información de diferentes formas y
modificar los procesos en ejecución:
■ Presione h para ver las opciones de ayuda y luego presione cualquier tecla para volver a la pantalla
superior. ■ Presione M para ordenar por uso de memoria en lugar de CPU y luego presione P para volver a ordenar
ing por CPU.
■ Presione el número 1 para mostrar el uso de CPU de todas sus CPU si tiene más
de una CPU en su sistema. ■ Presione
R para invertir la ordenación de su salida. ■
Presione ue ingrese un nombre de usuario para mostrar los procesos solo para un usuario en particular.
Una práctica común es usar top para encontrar procesos que están consumiendo demasiada memoria o poder de
procesamiento y luego actuar sobre esos procesos de alguna manera. Un proceso que consume demasiada CPU se
puede modificar para darle menos prioridad a los procesadores. Un proceso que consume demasiada memoria puede
ser eliminado. Con la ejecución superior, aquí se explica cómo renovar o eliminar un proceso:
Renovación de un proceso Anote el ID del proceso que desea renovar y presione r.
Cuando aparezca el mensaje PID para renovar, escriba el ID del proceso que desea renovar. Cuando se le
solicite el valor de Renice PID, escriba un número de 20 a 19. (Consulte "Configuración de la prioridad del
procesador con nice y renice" más adelante en este capítulo para obtener información sobre los significados
de los diferentes valores de renice).
Eliminación de un proceso Anote el ID del proceso que desea eliminar y presione k.
Escriba 15 para terminar limpiamente o 9 para acabar con el proceso por completo. (Consulte
"Eliminación de procesos con kill y killall" más adelante en este capítulo para obtener más información
sobre el uso de diferentes señales que puede enviar a los procesos).
135
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Listado de procesos con System Monitor Si tiene el escritorio
GNOME disponible en su sistema Linux, System Monitor (gnomesystemmonitor) está disponible para
proporcionar una forma más gráfica de mostrar los procesos en su sistema. Los procesos se ordenan
haciendo clic en las columnas. Puede hacer clic con el botón derecho en los procesos para detenerlos,
eliminarlos o renovarlos.
Para iniciar System Monitor desde el escritorio de GNOME, presione la tecla de Windows y luego escriba System Monitor y
presione Enter. Luego seleccione la pestaña Procesos. La Figura 6.2 muestra un ejemplo de la ventana Monitor del sistema, mostrando
los procesos para el usuario actual en orden por uso de memoria.
FIGURA 6.2
Utilice la ventana Monitor del sistema para ver y cambiar los procesos en ejecución.
De manera predeterminada, solo se muestran los procesos en ejecución asociados con su cuenta de usuario. Esos procesos se
enumeran alfabéticamente al principio. Puede cambiar los procesos haciendo clic en cualquiera de los encabezados de campo (hacia
adelante y hacia atrás). Por ejemplo, haga clic en el encabezado %CPU para ver qué procesos consumen la mayor potencia de
procesamiento. Haga clic en el encabezado Memoria para ver qué procesos consumen más memoria.
Puede cambiar sus procesos de varias maneras haciendo clic con el botón derecho en el nombre de un proceso y seleccionándolo del
menú que aparece (consulte la Figura 6.3 para ver un ejemplo).
Estas son algunas de las cosas que puede hacer en un proceso desde el menú en el que hizo clic:
Detener: pausa el proceso para que no se produzca ningún procesamiento hasta que seleccione Continuar proceso.
(Esto es lo mismo que presionar Ctrl+Z en un proceso desde el shell).
Continuar: continúa ejecutando un proceso en pausa.
Terminar: Envía una señal Terminar (15) a un proceso. En la mayoría de los casos, esto termina el pro
cesa limpiamente.
Kill: Envía una señal Kill (9) a un proceso. Esto debería eliminar un proceso de inmediato, independientemente de si se puede
hacer de forma limpia.
136
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
FIGURA 6.3
Renueve, elimine o pause un proceso desde la ventana del Monitor del sistema.
Cambiar prioridad: presenta una lista de prioridades de muy baja a muy alta. Seleccione Personalizado para
ver una barra deslizante desde la que puede modificar un proceso. La prioridad normal es 0. Para obtener
una mejor prioridad del procesador, use un número negativo de 1 a 20. Para tener una prioridad de
procesador más baja, use un número positivo (0 a 19). Solo el usuario root puede asignar prioridades
negativas, por lo que cuando se le solicite, debe proporcionar la contraseña de root para establecer un
valor agradable negativo.
Mapas de memoria: le permite ver el mapa de memoria del sistema para ver qué bibliotecas y otros
componentes se mantienen en la memoria para el proceso.
Abrir archivos: le permite ver qué archivos están actualmente abiertos por el proceso.
Propiedades: le permite ver otras configuraciones asociadas con el proceso (como el contexto de
seguridad, el uso de memoria y los porcentajes de uso de CPU).
Puede mostrar procesos en ejecución asociados con usuarios que no sean usted mismo. Para hacer eso,
resalte cualquier proceso en la pantalla (simplemente haga clic en él). Luego, desde el botón de menú (el
botón con tres barras), seleccione Todos los procesos. Puede modificar procesos que no le pertenecen
es el usuario
solo si
root o si puede proporcionar la contraseña de root cuando se le solicite después de intentar cambiar un
'
proceso. A veces, ganaste interfaz. Para cambiar procesos
t tener
sin
el
ulna
ujo
interfaz
de trabajar
gráfica,
con puuede
na gráfica
usar un conjunto de
comandos y pulsaciones de teclas para cambiar, pausar o eliminar procesos en ejecución. Algunos de ellos
se describen a continuación.
Gestión de procesos en segundo plano y en primer plano
Si está utilizando Linux a través de una red o desde una terminal tonta (un monitor que solo permite la
entrada de texto sin soporte de GUI), su shell puede ser todo lo que tiene. Puede que estés acostumbrado a un
137
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
entorno gráfico en el que tiene muchos programas activos al mismo tiempo para que pueda cambiar entre ellos
según sea necesario. Esta cosa del caparazón puede parecer bastante limitada.
Aunque bash shell no incluye una GUI
para ejecutar muchos programas a la vez, le permite mover programas
activos entre el fondo y el primer plano. De esta manera, puede tener muchas cosas en ejecución y elegir
selectivamente la que desea tratar en este momento.
Puede colocar un programa activo en segundo plano de varias formas. Una es agregar un amperio (&) al final de
una línea de comando cuando ejecuta el comando por primera vez. También puede usar el comando at para
ejecutar comandos de tal manera que no estén conectados al shell.
Para detener un comando en ejecución y ponerlo en segundo plano, presione Ctrl+Z. Después de detener el
comando, puede volver a ponerlo en primer plano para ejecutarlo (el comando fg) o iniciarlo en segundo plano (el
comando bg). Tenga en cuenta que cualquier comando que se ejecute en segundo plano puede arrojar resultados
durante los comandos que ejecute posteriormente desde ese shell. Por ejemplo, si aparece la salida de un comando
que se ejecuta en segundo plano durante una sesión vi, simplemente presione Ctrl+L para volver a dibujar la
pantalla y deshacerse de la salida.
CONSEJO
Para evitar que aparezca la salida, debe hacer que cualquier proceso que se ejecute en segundo plano envíe su salida a un archivo
o a un valor nulo (agregue 2> /dev/null al final de la línea de comando).
Inicio de procesos en segundo plano Si tiene
programas que desea ejecutar mientras continúa trabajando en el shell, puede colocarlos en segundo plano. Para
colocar un programa en segundo plano en el momento en que lo ejecuta, escriba un ampersand (&) al final de la
línea de comando, así:
$ buscar /usr > /tmp/allusrfiles & [3] 15971
Este comando de ejemplo encuentra todos los archivos en su sistema Linux (a partir de /usr), imprime esos
nombres de archivo y coloca esos nombres en el archivo /tmp/allusrfiles. El ampersand (&) ejecuta esa línea de
comando en segundo plano. Observe que el número de trabajo, [3], y el número de identificación del proceso,
15971, se muestran cuando se inicia el comando. Para verificar qué comandos tiene ejecutándose en segundo
plano, use el comando de trabajos, de la siguiente manera:
$ empleos
[1] Detenido (salida tty) vi /tmp/myfile find /usr print > /tmp/
[2] Corriendo allusrfiles &
[3] Ejecutar nroff man /usr/man2/* >/tmp/man2 & nroff man /usr/man3/* >/tmp/
[4] Corriendo man3 &
[5]+ Detenido nroff man /usr/man4/* >/tmp/man4
El primer trabajo muestra un comando de edición de texto (vi) que coloqué en segundo plano y detuve
presionando Ctrl+Z mientras estaba editando. El trabajo 2 muestra el comando de búsqueda que acabo de ejecutar.
138
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
Los trabajos 3 y 4 muestran los comandos nroff que se ejecutan actualmente en segundo plano. El trabajo 5 se había estado
ejecutando en el shell (primer plano) hasta que decidí que se estaban ejecutando demasiados procesos y presioné Ctrl+Z
para detener el trabajo 5 hasta que se completaron algunos procesos.
El signo más (+) junto al número 5 muestra que se colocó más recientemente en segundo plano. El signo menos
() junto al número 4 muestra que se colocó en segundo plano justo antes del trabajo en segundo plano más
6
reciente. Debido a que el trabajo 1 requiere una entrada de terminal, no puede ejecutarse en segundo plano. Como
resultado, se detiene hasta que vuelve a aparecer en primer plano.
SUGERENCIA Para ver el ID de proceso del trabajo en segundo plano, agregue la opción l (la letra L minúscula) al comando de trabajos.
Si escribe ps, puede usar la ID del proceso para averiguar qué comando es para un trabajo en segundo plano en particular.
Uso de comandos de primer plano y de fondo
Continuando con el ejemplo, puede traer cualquiera de los comandos en la lista de trabajos al primer plano. Por ejemplo,
para editar myfile nuevamente, ingrese lo siguiente:
$ para %1
Como resultado, el comando vi se abre nuevamente. Todo el texto está tal como estaba cuando detuvo el trabajo
vi.
PRECAUCIÓN Antes de poner un procesador de texto, un procesador de textos o un programa similar en segundo plano, asegúrese de
guardar
su archivo. Es fácil olvidar que tiene un programa en segundo plano y perderá sus datos si cierra sesión o si la computadora se
reinicia.
Para hacer referencia a un trabajo en segundo plano (para cancelarlo o ponerlo en primer plano), utilice un signo de porcentaje
(%) seguido del número de trabajo. También puede usar lo siguiente para hacer referencia a un trabajo en segundo plano:
%
Hace referencia al comando más reciente puesto en segundo plano (indicado por el signo más
cuando escribe el comando de trabajos). Esta acción trae el comando al primer plano.
%cadena Hace referencia a un trabajo en el que el comando comienza con una cadena particular de caracteres.
La cadena debe ser inequívoca. (En otras palabras, escribir %vi cuando hay dos comandos vi en
segundo plano genera un mensaje de error).
%?cadena Hace referencia a un trabajo en el que la línea de comando contiene una cadena en cualquier punto. La
cadena debe ser inequívoca o la coincidencia falla.
% Se refiere al trabajo que se detuvo antes del que se detuvo más recientemente.
139
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Si se detiene un comando, puede volver a ejecutarlo en segundo plano con el comando bg. Por ejemplo, consulte el trabajo 5
de la lista de trabajos en un ejemplo anterior:
[5]+ Detenido nroff man /usr/man4/* >/tmp/man4
Introduzca la siguiente:
$ volumen %5
Después de eso, el trabajo se ejecuta en segundo plano. Su entrada de trabajos aparece de la siguiente manera:
[5] Ejecutando nroff man /usr/man4/* >/tmp/man4 &
Procesos de matanza y renicing
Así como puede cambiar el comportamiento de un proceso usando herramientas gráficas como System Monitor (descrito
anteriormente en este capítulo), también puede usar herramientas de línea de comandos para matar un proceso o cambiar su
prioridad de CPU. El comando de eliminación puede enviar una señal de eliminación a cualquier proceso para finalizarlo, suponiendo
que tenga permiso para hacerlo. También puede enviar diferentes señales a un proceso para cambiar su comportamiento. Los
comandos nice y renice se pueden usar para establecer o cambiar la prioridad del procesador de un proceso.
Eliminación de procesos con kill y killall Aunque normalmente se usan
para finalizar un proceso en ejecución, los comandos kill y killall en realidad se pueden usar para enviar cualquier señal válida
a un proceso en ejecución. Además de indicarle a un proceso que finalice, una señal puede indicarle a un proceso que vuelva a leer
los archivos de configuración, pause (detenga) o continúe después de haber sido pausado, solo por nombrar algunas posibilidades.
Las señales se representan tanto con números como con nombres. Las señales que puede enviar con mayor frecuencia
desde un comando incluyen SIGKILL (9), SIGTERM (15) y SIGHUP (1). La señal predeterminada es SIGTERM, que intenta
terminar un proceso limpiamente. Para matar un proceso inmediatamente, puede usar SIGKILL. La señal SIGHUP puede,
según el programa, decirle a un proceso que vuelva a leer sus archivos de configuración. SIGSTOP pausa un proceso, mientras
que SIGCONT continúa un proceso detenido.
Diferentes procesos responden a diferentes señales. Sin embargo, los procesos no pueden bloquear las señales SIGKILL y SIG
STOP. La Tabla 6.1 muestra ejemplos de algunas señales (ingrese la señal man 7 para leer sobre otras señales disponibles).
Tenga en cuenta que hay múltiples números de señal posibles para SIGCONT y SIGSTOP porque se usan diferentes números en
diferentes arquitecturas de computadora. Para la mayoría de las arquitecturas x86 y Power, use el valor medio. El primer valor
suele funcionar para Alpha y SPARC, mientras que el último es para la arquitectura MIPS.
Uso de kill para señalar procesos por
PID Usando comandos como ps y top, puede encontrar procesos a los que desea enviar una
señal. Luego, puede usar la ID de proceso de ese proceso como una opción para el comando de
eliminación, junto con la señal que desea enviar.
140
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
TABLA 6.1 Señales disponibles en Linux
Número de señal Descripción
SUSCRÍBETE 1 Cuelgue detectado en el terminal de control o muerte del proceso de control.
6
SEÑAL 2 Interrumpir desde el teclado.
SEGUIR 3 Salir desde el teclado.
SIGABRT 6 Cancelar la señal de abortar (3).
SIGKILL 9 Matar señal.
TÉRMINO 15 Señal de terminación.
SIGCONT 19,18,25 Continuar si está parado.
SIGSTOP 17,19,23 Detener proceso.
Por ejemplo, ejecuta el comando top y ve que el proceso bigcommand está consumiendo la mayor parte de su
poder de procesamiento:
Aquí, el proceso de bigcommand consume el 99,9 por ciento de la CPU. Decides que quieres matarlo para que otros
procesos tengan una oportunidad en la CPU. Si usa el ID de proceso del proceso bigcommand en ejecución, estos
son algunos ejemplos del comando kill que puede usar para matar ese proceso:
$ matar 10432 $
matar 15 10432 $ matar
SIGKILL 10432
La señal predeterminada enviada por kill es 15 (SIGTERM), por lo que los primeros dos ejemplos tienen exactamente
los mismos resultados. En ocasiones, un SIGTERM no elimina un proceso, por lo que es posible que necesite un
SIGKILL para eliminarlo. En lugar de SIGKILL, puede usar 9 para obtener el mismo resultado.
Otra señal útil es SIGHUP. Si, por ejemplo, algo en su escritorio GNOME estuviera dañado, podría enviar al gnome
shell una señal SIGHUP para volver a leer sus archivos de configuración y reiniciar el escritorio. Si el ID de proceso
para gnomeshell fuera 1833, hay dos formas de enviarle una señal SIGHUP:
# kill 1 1833 # killall
HUP gnomeshell
Uso de killall para señalar procesos por
nombre Con el comando killall, puede señalar procesos por nombre en lugar de por ID de
desea aprovechar es que nproceso.
o mata. LEa
l td tesventaja
iene que bpuscar
otencial
el IeD
s dqe
ue
proceso
puede e
dliminar
el proceso
más
que
procesos de los que desea si no tiene cuidado. (Por ejemplo, escribir killall bash puede matar
un montón de proyectiles que no pretendes matar). t
141
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Al igual que el comando kill, killall usa SIGTERM (señal 15) si no ingresa explícitamente un número de señal.
Además, al igual que con kill, puede enviar cualquier señal que desee al proceso que nombre con killall. Por
ejemplo, si ve un proceso llamado testme ejecutándose en su sistema y desea eliminarlo, simplemente puede
ingresar lo siguiente:
$ killall 9 prueba
El comando killall puede ser particularmente útil si desea eliminar un montón de comandos con el mismo nombre.
Establecer la prioridad del procesador con nice y renice Cuando el kernel de
Linux intenta decidir qué procesos en ejecución tienen acceso a las CPU de su sistema, una de las cosas que
tiene en cuenta es el valor de nice establecido en el proceso.
Cada proceso que se ejecuta en su sistema tiene un valor agradable entre 20 y 19. De forma predeterminada, el valor
agradable se establece en 0. Aquí hay algunos datos sobre los valores agradables:
■ Cuanto más bajo sea el valor de Niza, más acceso tendrá el proceso a las CPU. En otras palabras,
cuanto mejor es un proceso, menos atención de la CPU recibe. Por lo tanto, un valor agradable de
20 recibe más atención que un proceso con un valor agradable de 19.
■ Un usuario regular puede establecer valores agradables solo de 0 a 19. No se permiten valores negativos.
'
Entonces, un usuario normal t pedir un valor que preste más atención a un proceso que la mayoría
puede obtener procesos por
defecto. ■ Un usuario habitual puede establecer el valor agradable más alto, no más bajo. Entonces, por ejemplo, si un usuario
establece el valor agradable en un proceso en 10 y luego quiere volver a establecerlo en 5, esa acción
fallará. Asimismo, cualquier intento de establecer un valor negativo fallará. ■ Un usuario normal puede
establecer el valor agradable solo en los propios procesos del usuario. ■ El usuario raíz puede establecer el
valor agradable en cualquier proceso en cualquier valor válido, hacia arriba o hacia abajo.
Puede usar el comando agradable para ejecutar un comando con un valor agradable particular. Cuando se
está ejecutando un proceso, puede cambiar el valor agradable mediante el comando renice, junto con el ID de
proceso del proceso, como en el siguiente ejemplo:
# agradable n +5 actualizadob &
El comando updatedb se utiliza para generar la base de datos de localización de forma manual mediante la
recopilación de nombres de archivos en todo el sistema de archivos. En este caso, solo quería que updatedb
se ejecutara en segundo plano (&) y no interrumpiera el trabajo realizado por otros procesos en el sistema.
Ejecuté el comando superior para asegurarme de que el valor agradable se configuró correctamente:
Observe que en la columna NI, el valor agradable se establece en 5. Debido a que el comando se ejecutó
como usuario raíz, el usuario raíz puede reducir el valor agradable más tarde mediante el comando renice.
'
(Recuerde que un usuario regular puede No reduzca el valor agradable ni lo establezca en un número negativo.)
'
Aquí Así es como cambiaría el valor agradable para el comando updatedb simplemente ejecute a 5:
# renice n 5 20284
142
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
Si ejecutó el comando top nuevamente, es posible que observe que el comando updatedb ahora está en la parte superior o
cerca de la parte superior de la lista de procesos que consumen tiempo de CPU porque le dio prioridad para obtener más
atención de la CPU.
6
Limitando Procesos con cgroups
Puede usar una función como "agradable" para dar a un solo proceso más o menos acceso al tiempo de CPU.
Sin embargo, establecer el valor agradable para un proceso no se aplica a los procesos secundarios que un proceso podría
iniciar ni a ningún otro proceso relacionado que forme parte de un servicio más grande. En otras palabras, "agradable" no
limita la cantidad total de recursos que un usuario o aplicación en particular puede consumir de un sistema Linux.
A medida que se arraigue la computación en la nube, muchos sistemas Linux se utilizarán más como hipervisores que como
computadoras de propósito general. Su memoria, poder de procesamiento y acceso al almacenamiento se convertirán en
mercancías para ser compartidas por muchos usuarios. En ese modelo, se necesita hacer más para controlar la cantidad de
recursos del sistema a los que tiene acceso un usuario, aplicación, contenedor o máquina virtual en particular que se ejecuta
en un sistema Linux.
Ahí es donde entran los cgroups .
Los Cgroups se pueden utilizar para identificar un proceso como una tarea, perteneciente a un grupo de control particular.
Las tareas se pueden configurar en una jerarquía donde, por ejemplo, puede haber una tarea llamada daemons que
establece limitaciones predeterminadas para todos los procesos del servidor daemon, luego subtareas que pueden establecer
límites específi cos en un servidor web daemon (httpd) para el servicio FTP daemon (vsftpd).
Cuando una tarea inicia un proceso, otros procesos que inicia el proceso inicial (llamados procesos secundarios) heredan las
limitaciones establecidas para el proceso principal. Esas limitaciones podrían decir que todos los procesos en un grupo de
control solo tienen acceso a procesadores particulares y ciertos conjuntos de RAM. O es posible que solo permitan el acceso
a hasta el 30 por ciento de la potencia de procesamiento total de una máquina.
Los tipos de recursos que pueden ser limitados por cgroups incluyen los siguientes:
Almacenamiento (blkio): limita el acceso total de entrada y salida a dispositivos de almacenamiento (como discos duros).
discos, unidades USB, etc.).
Programación del procesador (cpu): asigna la cantidad de acceso que debe programarse un cgroup para la potencia
de procesamiento.
Contabilidad de procesos (cpuacct): informes sobre el uso de la CPU. Esta información se puede aprovechar para
cobrar a los clientes por la cantidad de potencia de procesamiento que utilizan.
Asignación de CPU (cpuset): en sistemas con múltiples núcleos de CPU, asigna una tarea a un conjunto particular
de procesadores y memoria asociada.
Acceso a dispositivos (dispositivos): permite que las tareas en un cgroup se abran o creen (mknod) seleccionadas
tipos de dispositivos.
Suspender/reanudar (congelador): suspende y reanuda las tareas del grupo.
143
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Uso de memoria (memoria): Limita el uso de memoria por tarea. También crea informes sobre los
recursos de memoria utilizados.
Ancho de banda de la red (net_cls): limita el acceso a la red a las tareas de cgroup seleccionadas. Esto se
hace etiquetando los paquetes de red para identificar la tarea de cgroup que originó el paquete y haciendo
que el controlador de tráfico de Linux supervise y restrinja los paquetes que provienen de cada cgroup.
Tráfico de red (net_prio): Establece las prioridades del tráfico de red procedente de los
cgroups y permite a los administradores cambiar estas prioridades sobre la marcha.
Espacios de nombres (ns): separa cgroups en espacios de nombres, por lo que los procesos en un cgroup
solo pueden ver los espacios de nombres asociados con el cgroup. Los espacios de nombres pueden
incluir tablas de proceso separadas, tablas de montaje e interfaces de red.
En su nivel más básico, la creación y administración de cgroups generalmente no es un trabajo para los nuevos
administradores de sistemas Linux. Puede involucrar la edición de archivos de configuración para crear sus propios
cgroups (/etc/cgconfig.conf) o establecer límites para usuarios o grupos particulares (/etc/cgrules .conf). O puede
usar el comando cgcreate para crear cgroups, lo que da como resultado que esos grupos se agreguen a la
jerarquía /sys/fs/cgroup. Configurar cgroups puede ser complicado y, si se hace incorrectamente, puede hacer que
su sistema no pueda arrancar.
La razón por la que menciono el concepto de cgroups aquí es para ayudarlo a comprender algunas de las
funciones subyacentes en Linux que se pueden usar para limitar y monitorear el uso de recursos. En el futuro,
probablemente se encontrará con estas características de los controladores que administran su infraestructura
en la nube. Podrá establecer reglas como "Permitir que las máquinas virtuales del departamento de marketing
consuman
hasta el 40 por ciento de la memoria disponible" o "Fijar la aplicación de la base de datos a una CPU y un conjunto
de memoria en particular".
Saber cómo Linux puede limitar y contener el uso de recursos por parte del conjunto de procesos asignados
a una tarea lo ayudará en última instancia a administrar mejor sus recursos informáticos. Si está interesado en
obtener más información sobre cgroups, puede consultar lo siguiente:
■ Guía de contenedores de Linux y administración de recursos de Red Hat Enterprise Linux:
https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/7/htmlsingle/
resource_management_guide/index _
■ Documentación del núcleo en cgroups: Consulte los archivos en /usr/share/doc/
directorio kerneldoc*/Documentation/cgroups después de instalar el paquete kernel doc.
Resumen
Incluso en un sistema Linux donde no hay mucha actividad, normalmente docenas o incluso cientos de procesos
se ejecutan en segundo plano. Usando las herramientas descritas en este capítulo, puede ver y administrar los
procesos que se ejecutan en su sistema.
144
Machine Translated by Google
Capítulo 6: Gestión de procesos en ejecución
La gestión de procesos incluye verlos de diferentes maneras, ejecutarlos en primer plano o en segundo plano, y
eliminarlos o mejorarlos. Las funciones más avanzadas para limitar el uso de recursos por parte de los procesos
seleccionados están disponibles mediante la función cgroups.
En el próximo capítulo, aprenderá cómo combinar comandos y funciones de programación en archivos que se pueden
ejecutar como scripts de shell.
6
Ejercicios
Utilice estos ejercicios para probar su conocimiento de la visualización de procesos en ejecución y luego cámbielos más
tarde eliminándolos o cambiando la prioridad del procesador (buen valor). Estas tareas asumen que está ejecutando un
sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionan en otros sistemas Linux). Si está
atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo puede usar varias
formas de completar una tarea).
1. Enumere todos los procesos que se ejecutan en su sistema, mostrando un conjunto completo de columnas.
Canalice esa salida al comando less para que pueda recorrer la lista de procesos.
2. Enumere todos los procesos que se ejecutan en el sistema y clasifíquelos por el nombre de
el usuario que ejecuta cada proceso.
3. Enumere todos los procesos que se ejecutan en el sistema y muestre las siguientes columnas de
información: ID del proceso, nombre de usuario, nombre del grupo, tamaño de la memoria virtual, tamaño de
la memoria residente y el comando.
4. Ejecute el comando superior para ver los procesos que se ejecutan en su sistema. regresa y
entre clasificar por uso de CPU y consumo de memoria.
5. Inicie el proceso gedit desde su escritorio. Asegúrese de ejecutarlo como el usuario con el que inició sesión.
Use la ventana del Monitor del sistema para eliminar ese proceso.
6. Vuelva a ejecutar el proceso gedit. Esta vez, usando el comando matar, envíe una señal
al proceso de gedit que hace que se detenga (detenga). Intente escribir algo de texto en la ventana de
gedit y asegúrese de que todavía no aparezca ningún texto.
7. Use el comando killall para decirle al comando gedit que hizo una pausa en el ejercicio anterior para
continuar trabajando. Asegúrese de que el texto que escribe después de pausar gedit ahora aparece en
la ventana.
8. Instale el comando xeyes (en Fedora, está en el paquete xorgx11apps). Ejecute el comando xeyes unas 20
veces en segundo plano para que aparezcan 20 ventanas xeyes en la pantalla. Mueva el mouse y observe
cómo los ojos miran el puntero del mouse. Cuando se haya divertido lo suficiente, elimine todos los procesos
de xeyes en un solo comando usando killall.
9. Como usuario habitual, ejecute el comando gedit para que comience con un buen valor de 5.
10. Usando el comando renice, cambie el valor agradable del comando gedit que acaba de comenzar a 7.
Use cualquier comando que desee para verificar que el valor agradable actual para el comando gedit
ahora está establecido en 7.
145
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Escritura de guión de shell simple
EN ESTE CAPÍTULO
Trabajar con scripts de shell
Hacer aritmética en scripts de shell
Ejecución de bucles y casos en scripts de shell
Creación de scripts de shell simples
y tu 'nunca haría ningún trabajo si escribiera todos los comandos que deben ejecutarse en su Linux
sistema cuando se inicia. Del mismo modo, podría trabajar de manera más eficiente si agrupara conjuntos de
comandos que ejecuta todo el tiempo. Los scripts de shell pueden manejar estas tareas.
Un script de shell es un grupo de comandos, funciones, variables o cualquier otra cosa que pueda usar desde un shell. Estos elementos
se escriben en un archivo de texto sin formato. Ese archivo se puede ejecutar como un comando.
Los sistemas Linux han usado tradicionalmente secuencias de comandos de shell de inicialización del sistema durante el inicio del sistema
para ejecutar los comandos necesarios para que los servicios funcionen. Puede crear sus propios scripts de shell para automatizar las
tareas que necesita realizar regularmente.
Durante décadas, la creación de scripts de shell fue la principal habilidad necesaria para unir conjuntos de tareas en sistemas UNIX y
Linux. A medida que las demandas de configuración de sistemas Linux crecieron más allá de las configuraciones de un solo sistema a
configuraciones de clúster automatizadas y complejas, surgieron métodos más estructurados. Estos métodos incluyen playbooks de
Ansible y archivos YAML de Kubernetes, que se describen más adelante en los capítulos relacionados con la nube. Dicho esto, escribir
scripts de shell sigue siendo el mejor paso siguiente desde la ejecución de comandos individuales hasta la creación de tareas repetibles
en sistemas Linux.
Este capítulo proporciona una descripción general rudimentaria del funcionamiento interno de los scripts de shell y cómo se pueden utilizar.
Aprenderá cómo se pueden aprovechar los scripts simples para una función de programación (como cron o at) para simplificar las tareas
administrativas o simplemente ejecutarlos según sea necesario.
Comprender los scripts de shell
¿Alguna vez ha tenido una tarea que necesitaba hacer una y otra vez que requería escribir mucho en la línea
de comandos? ¿Alguna vez te has dicho a ti mismo: "Vaya, desearía poder escribir un solo comando para hacer todo
'
esto"? Tal vez un script de shell es lo que usted volver después.
147
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Los scripts de shell son el equivalente de los archivos por lotes en Windows y pueden contener largas listas de
comandos, control de flujo complejo, evaluaciones aritméticas, variables definidas por el usuario, funciones definidas
por el usuario y pruebas de condiciones sofisticadas. Los scripts de shell son capaces de manejar todo, desde simples
comandos de una línea hasta algo tan complejo como iniciar un sistema Linux. Aunque hay docenas de shells
diferentes disponibles en Linux, el shell predeterminado para la mayoría de los sistemas Linux se llama bash, Bourne
Again SHell.
Ejecución y depuración de scripts de shell Una de las principales
ventajas de los scripts de shell es que se pueden abrir en cualquier editor de texto para ver lo que hacen. Una gran
desventaja es que los scripts de shell grandes o complejos a menudo se ejecutan más lentamente que los programas
compilados. Puede ejecutar un script de shell de dos formas básicas:
■ El nombre del archivo se usa como argumento para el shell (como en bash myscript). En este método, el
archivo no necesita ser ejecutable; solo contiene una lista de comandos de shell. El shell especificado en
la línea de comando se usa para interpretar los comandos en el archivo de script. Esto es más común para
tareas rápidas y sencillas.
■ El script de shell también puede tener el nombre del intérprete colocado en la primera línea del script
precedido por #! (como en #!/bin/bash) y tenga el bit de ejecución del archivo que contiene el conjunto de
secuencias de comandos (usando chmod +x nombre de archivo). Luego puede ejecutar su secuencia de
comandos como lo haría con cualquier otro programa en su camino simplemente escribiendo el nombre de
la secuencia de comandos en la línea de comando.
Cuando los scripts se ejecutan de cualquier manera, las opciones para el programa se pueden especificar en la
línea de comando. Todo lo que sigue al nombre de la secuencia de comandos se denomina argumento de la línea
de comandos.
Al igual que con la escritura de cualquier software, no hay sustituto para un diseño claro y reflexivo y muchos
comentarios. El signo de libra (#) precede a los comentarios y puede ocupar una línea completa o existir en la misma
línea después del código de secuencia de comandos. Es mejor implementar secuencias de comandos de shell más
complejas en etapas, asegurándose de que la lógica sea sólida en cada paso antes de continuar. Aquí hay algunos
consejos buenos y concisos para asegurarse de que las cosas funcionen como se esperaba durante las pruebas:
■ En algunos casos, puede colocar una declaración de eco al comienzo de las líneas dentro del cuerpo de
un bucle y rodear el comando con comillas. De esa forma, en lugar de ejecutar el código, puede ver lo que
se ejecutará sin realizar cambios permanentes.
■ Para lograr el mismo objetivo, puede colocar declaraciones de eco ficticias en todo el código. Si estas líneas
se imprimen, sabrá que se está tomando la rama lógica correcta. ■ Puede usar set x cerca del comienzo
de la secuencia de comandos para mostrar cada comando que se ejecuta o iniciar sus secuencias de comandos
usando
$ bash x mi script
■ Debido a que las secuencias de comandos útiles tienden a crecer con el tiempo, es extremadamente
importante mantener la capacidad de lectura del código a medida que avanza. Haz lo que puedas para
mantener la lógica de tu código limpia y fácil de seguir.
148
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
Comprensión de las variables de shell A menudo,
dentro de un script de shell, desea reutilizar ciertos elementos de información. Durante el curso del
procesamiento del script de shell, el nombre o número que representa esta información puede cambiar.
Para almacenar información utilizada por un script de shell de tal manera que pueda reutilizarse fácilmente,
puede establecer variables. Los nombres de variables dentro de los scripts de shell distinguen entre mayúsculas
y minúsculas y se pueden definir de la siguiente manera:
NOMBRE= valor
La primera parte de una variable es el nombre de la variable y la segunda parte es el valor establecido para
ese nombre. Asegúrese de que el NOMBRE y el valor toquen el signo igual, sin espacios.
Las variables se pueden asignar a partir de constantes, como texto, números y guiones bajos. Esto es útil
para inicializar valores o ahorrar mucho tecleo para constantes largas. Los siguientes ejemplos muestran
variables establecidas en una cadena de caracteres (CITY) y un valor numérico (PI): 7
CIUDAD="Springfield"
IP=3,14159265
Las variables pueden contener la salida de un comando o una secuencia de comandos. Puede lograr esto
precediendo el comando con un signo de dólar y un paréntesis de apertura, seguido de un paréntesis de cierre.
Por ejemplo, MYDATE=$(fecha) asigna la salida del comando de fecha a la variable MYDATE. Encerrar el
comando entre comillas invertidas (`) puede tener el mismo efecto. En este caso, el comando de fecha se
ejecuta cuando se establece la variable y no cada vez que se lee la variable.
Escapar de personajes especiales de caparazón
Tenga en cuenta que los caracteres como el signo de dólar ($), la tilde invertida (`), el asterisco (*), el signo de exclamación
(!) y otros tienen un significado especial para el caparazón, que verá a medida que avance en este capítulo.
En algunas ocasiones, desea que el shell use el significado especial de estos caracteres y otras veces no . Por ejemplo, si
escribiste
echo
$HOME) e$n
HOME, el shell
la pantalla pensaría que querías
(como /home/chris) mostrar
porque el unna
$ indica ombre de tu
variable dnirectorio
el ombre sdigue
e inicio
(almacenado
carácter. en la variable
a ese
Si quisiera mostrar literalmente $HOME, necesitaría escapar del $. Escribir echo '$HOME' o echo \$HOME mostraría
literalmente $HOME en la pantalla. Por lo tanto, si desea que el shell interprete un solo carácter literalmente, preceda una
barra invertida (\). Para que un conjunto completo de caracteres se interprete literalmente, rodee esos caracteres con
comillas simples (').
Usar comillas dobles es un poco más complicado. Rodee un conjunto de texto con comillas dobles si desea que todos los
caracteres, excepto algunos, se usen literalmente. Por ejemplo, con el texto entre comillas dobles, los signos de dólar ($),
las marcas de retroceso (`) y los signos de exclamación (!) se interpretan de forma especial, pero no así otros caracteres
(como un asterisco). Escriba estas tres líneas para ver la salida diferente (que se muestra a la derecha):
echo' $HOME *` date` ' $HOME * ̀date` echo ″
$HOME * ̀date`″ /home/chris * martes 21 de enero 16:56:52 EDT 2020 echo $HOME *
`date` /home/chris archivo1 archivo2 martes 21 de enero 16:56:52 EDT 2020
149
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
El uso de variables es una excelente manera de obtener información que puede cambiar de
una computadora a otra o de un día a otro. El siguiente ejemplo establece la salida del comando
uname n en la variable MACHINE. Luego uso paréntesis para establecer NUM_FILES en la
cantidad de archivos en el directorio actual mediante la canalización (|) de la salida del comando ls al
comando de conteo de palabras ( wc l):
MÁQUINA=`uname n`
NUM_FILES=$(/bin/ls|wcl)
Las variables también pueden contener el valor de otras variables. Esto es útil cuando tiene que
conservar un valor que cambiará para poder usarlo más adelante en el script. Aquí, BALANCE se
establece en el valor de la variable CurBalance:
SALDO="$SaldoActual"
NOTA
Al asignar variables, use solo el nombre de la variable (por ejemplo, SALDO). Cuando hace referencia a una variable,
lo que significa que desea el valor de la variable, preceda un signo de dólar (como en $CurBalance). El resultado de
esto último es que obtiene el valor de la variable, no el nombre de la variable en sí.
Parámetros posicionales especiales del
shell Hay variables especiales que el shell asigna para usted. Un conjunto de variables de uso
común se denomina parámetros posicionales o argumentos de línea de comandos, y se hace
referencia a ellos como $0, $1, $2, $3. . .$n. $0 es especial y se le asigna el nombre utilizado para
invocar su script; a los demás se les asignan los valores de los parámetros pasados en la línea de
comando en el orden en que aparecieron.
llamado
Por
meyscript
jemplo,
que
supongamos
contiene lo qsue
iguiente:
tiene un script de shell
#!/bin/bash # Script
para repetir los argumentos de la línea de comandos echo "El primer
argumento es $1, el segundo es $2". echo "El comando en sí se llama $0". echo "Hay $#
parámetros en su línea de comando" echo "Aquí están todos los argumentos: $@"
Suponiendo que el script es ejecutable y está ubicado en un directorio en su $PATH, lo siguiente
muestra lo que sucedería si ejecutara ese comando con foo y bar como argumentos:
$ chmod 755 /home/chris/bin/myscript $ myscript foo bar El primer
argumento es foo, el segundo es bar.
El comando en sí se llama /home/chris/bin/myscript.
Hay 2 parámetros en su línea de comando Aquí están todos los argumentos:
foo bar
150
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
Como puede ver, el parámetro posicional $0 es la ruta completa o la ruta relativa a myscript, $1 es foo y $2
es bar.
Otra variable, $#, le dice cuántos parámetros se le dieron a su secuencia de comandos. En el ejemplo, $# sería
2. La variable $@ contiene todos los argumentos ingresados en la línea de comando.
Otra variable de shell especial particularmente útil es $?, que recibe el estado de salida del último comando
ejecutado. Por lo general, un valor de cero significa que el comando salió correctamente y cualquier valor que
no sea cero indica algún tipo de error. Para obtener una lista completa de variables de shell especiales, consulte
la página de manual de bash.
Lectura de parámetros Con
el comando de lectura, puede solicitar información al usuario y almacenar esa información para usarla más
'
adelante en su secuencia de comandos. Aquí Este es un ejemplo de un script que usa el comando de lectura:
#!/bin/bash read
7
p "Escriba un adjetivo, un sustantivo y un verbo (tiempo pasado): " adj1 sustantivo1 verbo1 echo
"Suspiró y $verbo1 al elixir. Luego se comió $adj1 $sustantivo1".
En este script, después de que el script solicite un adjetivo, un sustantivo y un verbo, se espera que
el usuario ingrese palabras que luego se asignan a las variables adj1, noun1 y verb1. Esas tres
variables se incluyen luego en una oración tonta, que se muestra en la pantalla. Si el script se llamara
sillyscript, aquí hay un ejemplo de cómo podría ejecutarse:
$ chmod 755 /home/chris/bin/sillyscript $ sillyscript Escriba
un adjetivo, sustantivo y verbo (tiempo pasado): peludo
fútbol bailó Suspiró y bailó con el elixir. Luego se comió la pelota de fútbol peluda.
Expansión de parámetros en bash
Como se mencionó anteriormente, si desea conocer el valor de una variable, debe precederlo con un $ (por
ejemplo, $CIUDAD). En realidad, esto es solo una abreviatura de la notación ${CIUDAD}; Las llaves se utilizan
cuando el valor del parámetro debe colocarse junto a otro texto sin espacios.
Bash tiene reglas especiales que le permiten expandir el valor de una variable de diferentes maneras.
Entrar en todas las reglas es probablemente excesivo para una introducción rápida a los scripts de shell,
'
pero la siguiente lista presenta algunas construcciones comunes que encontrará
Es eue
probable q n svu
sistema
ea Linux.
en scripts
de bash que
${var:value}: si la variable no está configurada o está vacía, expanda esto a valor. $
{var#pattern}: corte la coincidencia más corta para el patrón desde el frente del valor de var. $
{var##pattern}: corte la coincidencia más larga para el patrón desde el frente del valor de var. $
{var%pattern}: corte la coincidencia más corta para el patrón desde el final del valor de var. ${var%
%pattern}: corte la coincidencia más larga para el patrón desde el final del valor de var.
151
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
Intente escribir los siguientes comandos desde un shell para probar cómo funciona la expansión de parámetros:
$ ESTO="Ejemplo"
$ ESTO=${ESTO:"No establecido"}
$ ESO=${ESO:"No establecido"} $
echo $ESTO
Ejemplo $
echo $ESO
no establecido
En los ejemplos aquí, la variable THIS se establece inicialmente en la palabra Ejemplo. En las siguientes dos
líneas, las variables ESTO y AQUELLO se establecen en sus valores actuales o en No establecido, si no están
establecidos actualmente. Tenga en cuenta que debido a que acabo de configurar ESTO en la cadena Ejemplo,
cuando hago eco del valor de ESTO aparece como Ejemplo. Sin embargo, debido a que ESO no se configuró,
aparece como No configurado.
NOTA
En el resto de esta sección, muestro cómo pueden aparecer las variables y los comandos en un script de shell. Sin embargo, para probar
cualquiera de esos ejemplos, simplemente puede escribirlos en un shell, como se muestra en el ejemplo anterior.
En el siguiente ejemplo, MI NOMBRE DE ARCHIVO se establece en /home/digby/myfile.txt. A continuación, la
variable ARCHIVO se establece en myfile.txt y DIR se establece en /home/digby. En la variable NAME, el
nombre del archivo se reduce simplemente a myfile; luego, en la variable EXTENSION, la extensión del archivo se
establece en txt. (Para probarlos, puede escribirlos en un indicador de shell como en el ejemplo anterior y hacer
eco del valor de cada variable para ver cómo se establece). Escriba el código de la izquierda. El material del lado
derecho describe la acción.
MYFILENAME=/home/digby/myfile.txt: establece el valor de MYFILENAME FILE=$
{MYFILENAME##*/}: FILE se convierte en myfile.txt DIR=${MYFILENAME%/*}: DIR se convierte
en /home/digby NAME= ${FILE%.*}: NOMBRE se convierte en myfile EXTENSION=${FILE##*.}:
EXTENSION se convierte en txt
Realizar aritmética en scripts de shell Bash usa variables sin
tipo, lo que significa que normalmente trata las variables como cadenas de texto, pero puede cambiarlas sobre la
marcha si así lo desea.
Bash usa variables sin tipo, lo que significa que no es necesario que especifique si una variable es texto o
números. Normalmente trata las variables como cadenas de texto, por lo que, a menos que indique lo contrario
con declare, sus variables son solo un montón de letras para golpear. Sin embargo, cuando comienzas a intentar
hacer aritmética con ellos, bash los convierte en números enteros si puede. Esto hace posible hacer algunas
operaciones aritméticas bastante complejas en bash.
La aritmética de enteros se puede realizar utilizando el comando let incorporado o mediante los comandos
externos expr o bc. Después de establecer el valor de la variable BIGNUM en 1024, el
152
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
los tres comandos que siguen almacenarían el valor 64 en la variable RESULTADO. El comando bc es
una aplicación de calculadora que está disponible en la mayoría de las distribuciones de Linux. El último
comando obtiene un número aleatorio entre 0 y 10 y le devuelve los resultados.
GRANNÚM=1024
deje RESULTADO = $ BIGNUM / 16
RESULTADO=`expr $BIGNUM / 16`
RESULTADO=`echo "$BIGNUM / 16" | bc` let
foo=$ALEATORIO; eco $foo
Otra forma de hacer crecer una variable de manera incremental es usar la notación $(()) con ++I
agregado para incrementar el valor de I. Intente escribir lo siguiente:
$ I=0 $
echo "El valor de I después del incremento es $((++I))"
El valor de I después del incremento es 1 7
$ echo "El valor de I antes y después del incremento es $((I++)) y $I"
El valor de I antes y después del incremento es 1 y 2
Repita cualquiera de esos comandos para continuar incrementando el valor de $I.
NOTA
Aunque la mayoría de los elementos de los scripts de shell tienen una forma relativamente libre (donde los espacios en blanco, como los
espacios o las tabulaciones, son insignificantes), tanto let como expr son particulares en cuanto al espaciado. El comando let insiste en
que no haya espacios entre cada operando y el operador matemático, mientras que la sintaxis del comando expr requiere espacios en
blanco entre cada operando y su operador. En contraste con esos, bc no
es
de quisquilloso
porque hcace
usar on laos espacios,
de pero
ritmética pfuede
unto ser más complicado
lotante.
Para ver una lista completa de los tipos de aritmética que puede realizar con el comando let, escriba
help let en el indicador de bash.
Uso de construcciones de programación en scripts de shell Una de las
características que hace que los scripts de shell sean tan poderosos es que su implementación de
construcciones de ejecución condicional y en bucle es similar a las que se encuentran en lenguajes de
programación y secuencias de comandos más complejos. Puede utilizar varios tipos diferentes de bucles,
según sus necesidades.
El si. . declaraciones .then″
La construcción de programación más utilizada es la ejecución condicional, o la sentencia if. Se utiliza
para realizar acciones solo bajo ciertas condiciones. Hay varias variaciones de sentencias if para probar
varios tipos de condiciones.
El primer ejemplo if...then prueba si VARIABLE se establece en el número 1. Si es así, entonces se usa
el comando echo para decir que se establece en 1. La declaración fi indica que la declaración if está
completa, y el procesamiento puede continuar.
153
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
VARIABLE=1 si
[ $VARIABLE eq 1 ] ; luego echo "La variable
es 1" fi
En lugar de usar eq, puede usar el signo igual (=), como se muestra en el siguiente ejemplo.
El = funciona mejor para comparar valores de cadena, mientras que eq suele ser mejor para comparar
números. Usando la instrucción else, se pueden repetir diferentes palabras si no se cumple el criterio de la
instrucción if ($STRING =d ″obles.
comillas Friday″). Tenga en cuenta que es una buena práctica poner cadenas entre
STRING="Viernes" if
[ $STRING = "Viernes" ] echo ; entonces
"WhooHoo. Friday". demás
echo "¿Llegará el viernes?" fi
También puede invertir las pruebas con un signo de exclamación (!). En el siguiente ejemplo, si
STRING no es lunes, se repite ″Al menos no es lunes″.
STRING="VIERNES"
si [ "$CADENA" != "Lunes" ] ; luego
echo "Al menos no es lunes"
ser
En el siguiente ejemplo, elif (que significa "else if") se usa para probar una condición adicional (por ejemplo,
si el nombre de archivo es un archivo o un directorio).
filename="$HOME" if [ f
"$filename" ] ; luego
echo "$filename es un archivo normal" elif [ d
"$filename" ] ; luego echo "$filename es un directorio"
demás
echo "No tengo idea de qué es $filename"
ser
Como puede ver en los ejemplos anteriores, la condición que está probando se coloca entre
corchetes [ ]. Cuando se evalúa una expresión de prueba, devuelve un valor de 0, lo que significa que es
verdadera, o un 1, lo que significa que es falsa. Observe que las líneas de eco están sangradas. La sangría
es opcional y solo se hace para que el guión sea más legible.
'
La tabla 7.1 enumera las condiciones que se pueden probar y es una referencia bastante útil. (Si se estás en un
da prisa, puede escribir prueba de ayuda en la línea de comando para obtener la misma información).
154
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
TABLA 7.1 Operadores para expresiones de prueba
Operador ¿Qué se está probando?
un archivo ¿Existe el archivo? (igual que e)
b archivo ¿Es el archivo un dispositivo especial de bloque?
c archivo ¿El carácter del archivo es especial (por ejemplo, un dispositivo de carácter)? Se utiliza para
identificar líneas serie y dispositivos terminales.
d archivo ¿Es el archivo un directorio?
e archivos ¿Existe el archivo? (igual que a)
f archivo ¿Existe el archivo y es un archivo normal (por ejemplo, no un archivo de directorio, socket, tubería,
enlace o dispositivo)?
g archivo ¿El archivo tiene establecido el bit de identificación de grupo (SGID)?
7
h archivo ¿El archivo es un enlace simbólico? (igual que L)
k archivo ¿El archivo tiene configurado el sticky bit?
L archivo ¿El archivo es un enlace simbólico?
n cadena ¿Es la longitud de la cadena mayor que 0 bytes?
O archivo ¿Eres dueño del archivo?
p archivo ¿El archivo es una canalización con nombre?
r archivo ¿Puede usted leer el archivo?
s archivo ¿Existe el archivo y tiene más de 0 bytes?
S archivo ¿Existe el archivo y es un socket?
t fd ¿Está conectado el descriptor de archivo a un terminal?
u archivo ¿El archivo tiene establecido el bit de identificación de usuario (SUID)?
w archivo ¿Es el archivo escribible por usted?
x archivo ¿El archivo es ejecutable por usted?
cadena z ¿La longitud de la cadena es 0 (cero) bytes? expr1 a
expr2 ¿Son verdaderas la primera y la segunda expresión? expr1 o expr2 ¿Alguna de las dos expresiones es
verdadera? file1 nt file2 ¿Es el primer archivo más nuevo que el segundo archivo (utilizando la marca de tiempo de
modificación)? file1 ot file2 ¿El primer archivo es más antiguo que el segundo archivo (usando la marca de tiempo de
modificación)?
file1 ef file2 ¿Los dos archivos están asociados por un enlace (un enlace físico o un enlace simbólico)?
var1 = var2 ¿La primera variable es igual a la segunda variable?
var1 eq var2 ¿La primera variable es igual a la segunda variable?
var1 ge var2 ¿La primera variable es mayor o igual que la segunda variable?
continúa
155
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
TABLA 7.1 (continuación)
Operador ¿Qué se está probando?
var1 gt var2 ¿Es la primera variable mayor que la segunda variable?
var1 la var2 ¿Es la primera variable menor o igual que la segunda variable?
var1 lt var2 ¿Es la primera variable menor que la segunda variable?
var1 != var2 ¿La primera variable no es igual a la segunda variable?
var1 no var2 ¿La primera variable no es igual a la segunda variable?
También hay un método abreviado especial para realizar pruebas que puede ser útil para acciones
simples de un solo comando. En el siguiente ejemplo, las dos tuberías (||) indican que si el
directorio que se está probando no existe (d dirname), cree el directorio (mkdir $dirname):
# [ prueba ] || acción
# Ejecutar un solo comando simple si la prueba es falsa dirname="/tmp/
testdir" [ d "$dirname" ] || mkdir "$dirname"
En lugar de tuberías, puede usar dos símbolos de unión para probar si algo es cierto. En el
siguiente ejemplo, se prueba un comando para ver si incluye al menos tres argumentos de la
línea de comandos:
# [ prueba ] && {acción}
# Realizar una sola acción simple si la prueba es verdadera [ $# ge
3 ] && echo "Hay al menos 3 argumentos de línea de comando".
Puede combinar && y || operadores para hacer un rápido, de una línea si... entonces... si no.
El siguiente ejemplo prueba que el directorio representado por $dirname ya existe. Si es así, un
mensaje dice que el directorio ya existe. Si no es así, la declaración crea el directorio:
# dirname=midirectorio [ e
$dirname ] && echo $dirname ya existe || mkdir $nombredir
El comando del caso
Otra construcción de uso frecuente es el comando case. Similar a una declaración de cambio en los
lenguajes de programación, esto puede tomar el lugar de varias declaraciones if anidadas. La
siguiente es la forma general del enunciado del caso:
caso "VAR" en
Resultado1)
{ cuerpo };;
Resultado2)
{ cuerpo };;
156
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
*)
{ cuerpo } ;;
esac
Entre otras cosas, puede usar el comando case para ayudar con sus copias de seguridad. La
siguiente declaración de caso comprueba las tres primeras letras del día actual (caso ' fecha +%a
'in). Luego, según el día, se configura un directorio de copia de seguridad (BACKUP) y una unidad
de cinta (TAPE) específicos.
# Nuestro VAR no tiene que ser una variable, # también puede ser
la salida de un comando
# Realizar acción basada en el día de la semana caso ̀fecha +
%a` en
"Mi")
BACKUP=/inicio/miproyecto/datos0
CINTA=/dev/rft0
7
# Tenga en cuenta el uso del punto y coma doble para finalizar cada opción
;;
# Tenga en cuenta el uso de "|" para significar "o"
"martes" | "Recolectar")
BACKUP=/inicio/miproyecto/datos1
CINTA=/dev/rft1
;;
"mié" | "Vie")
BACKUP=/inicio/miproyecto/datos2
CINTA=/dev/rft2
;;
# No haga copias de seguridad los fines de semana.
*)
RESPALDO="ninguno"
CINTA=/dev/null
;;
esac
El asterisco (*) se usa como un cajón de sastre, similar a la palabra clave predeterminada en el
lenguaje de programación C. En este ejemplo, si ninguna de las otras entradas coincide en el ciclo,
el asterisco coincide y el valor de BACKUP se vuelve ninguno. Tenga en cuenta el uso de esac, o
caso escrito al revés, para finalizar la declaración del caso.
El ″para. . Bucle .do″
Los bucles se utilizan para realizar acciones una y otra vez hasta que se cumple una condición o
hasta que se procesan todos los datos. Uno de los bucles más utilizados es el bucle for...do. Itera a
través de una lista de valores, ejecutando el cuerpo del bucle para cada elemento de la lista.
La sintaxis y algunos ejemplos se presentan aquí:
para VAR en LISTA hacer
{cuerpo}
hecho
157
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
El ciclo for asigna los valores en LIST a VAR uno a la vez. Luego, para cada valor, se ejecuta el
cuerpo entre llaves entre do y done. VAR puede ser cualquier nombre de variable y LIST puede estar
compuesto de casi cualquier lista de valores o cualquier cosa que genere una lista.
para NÚMERO en 0 1 2 3 4 5 6 7 8 9
hacer
echo El número es $NUMBER hecho
para ARCHIVO en ̀/bin/ls` hacer
echo $ARCHIVO
hecho
También puedes escribirlo de esta manera, que es algo más limpio:
para NOMBRE en John Paul Ringo George; do echo $NAME es mi
Beatle favorito
hecho
Cada elemento de la LISTA está separado del siguiente por un espacio en blanco. Esto puede causar problemas
'
si hace no tenga
líneas, cuidado
cada porque aplgunos
una separada comandos,
or un espacio como
Lla
en blanco. s cadena
l, generan
mfinaliza
done últiples ciampos
la por for.
nstrucción
'
Si usted Como programador de C empedernido, bash le permite usar la sintaxis de C para controlar sus bucles:
LÍMITE=10
# ¡Doble paréntesis y sin $ en LIMIT aunque sea una variable! para ((a=1; a <= LIMIT ; a++)) ; haz echo "$a" hecho
El ″mientras. . .do″ y ″hasta. . Bucles .do″ Otras
dos posibles construcciones de bucles son el bucle while...do y el bucle till...do.
La estructura de cada uno se presenta aquí:
mientras que la condición hasta la condición
hacer hacer
{ cuerpo } { cuerpo }
hecho hecho
La instrucción while se ejecuta mientras la condición es verdadera. La declaración hasta se ejecuta hasta
que la condición sea verdadera; en otras palabras, mientras la condición sea falsa.
Aquí hay un ejemplo de un bucle while que genera el número 0123456789:
N=0
while [ $N lt 10 ] echo n $N let ; hacer
N=$N+1 hecho
158
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
Otra forma de generar el número 0123456789 es usar un ciclo hasta de la siguiente manera:
N=0
hasta que [ $N eq 10 ] echo ; hacer
n $N sea N=$N+1
hecho
Probar algunos programas útiles de manipulación de texto Bash es excelente
y tiene muchos comandos integrados, pero generalmente necesita ayuda para hacer algo realmente útil.
Algunos de los programas útiles más comunes que verá que se utilizan son grep, que
cut, ctr,
on
awk
todas
y sed.
las A
ml
ejores
igual
herramientas de UNIX, la mayoría de estos programas están diseñados para funcionar con entrada estándar
y salida estándar, por lo que puede usarlos fácilmente con tuberías y scripts de shell.
7
El analizador general de expresiones regulares
El nombre general regular expression print (grep) suena intimidante, pero grep es solo una forma de
encontrar patrones en archivos o texto. Piense en ello como una herramienta de búsqueda útil. Adquirir
experiencia con las expresiones regulares es todo un desafío, pero después de dominarlas, puede lograr
muchas cosas útiles solo con las formas más simples.
Por ejemplo, puede mostrar una lista de todas las cuentas de usuario regulares usando grep para buscar todas
las líneas que contienen el texto /home en el archivo /etc/passwd de la siguiente manera:
$ grep /inicio /etc/contraseña
O puede encontrar todas las variables de entorno que comienzan con HO usando el siguiente
comando:
$ env | agarró ^HO
NOTA
^ ^
El , escribas lo qComúnmente
en el código anterior es el carácter de intercalación real ue veré un retroceso, ^H. No
^
, H , y O (la letra mayúscula) para ver qué elementos comienzan con los caracteres en mayúscula HO.
Para encontrar una lista de opciones para usar con el comando grep, escriba man grep.
Eliminar secciones de líneas de texto (cortar)
El comando cortar puede extraer campos de una línea de texto o de archivos. Es muy útil para analizar
archivos de configuración del sistema en fragmentos fáciles de digerir. Puede especificar el separador de
campos que desea usar y los campos que desea, o puede dividir una línea según los bytes.
El siguiente ejemplo enumera todos los directorios de inicio de los usuarios en su sistema. Esta línea
de comando grep canaliza una lista de usuarios regulares del archivo /etc/passwd y muestra el sexto
campo (f6) delimitado por dos puntos (d ' :' ). El guión al final le dice a cut que lea desde la entrada
estándar (desde la tubería).
159
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
$ grep /inicio /etc/contraseña | cortar d':' f6 /inicio/chris /inicio/
joe
Traducir o eliminar caracteres (tr)
El comando tr es un traductor basado en caracteres que se puede usar para reemplazar un carácter o conjunto de
caracteres por otro o para eliminar un carácter de una línea de texto.
El siguiente ejemplo traduce todas las letras mayúsculas a minúsculas y muestra las palabras mezcladas en
mayúsculas y minúsculas como resultado:
$ FOO="MEZCLA DE MAYÚSCULAS Y
MINÚSCULAS" $ echo $FOO | tr [AZ] [az] mezcla
de mayúsculas y minúsculas
En el siguiente ejemplo, el comando tr se usa en una lista de nombres de archivo para cambiar el nombre de
cualquier archivo en esa lista para que cualquier tabulación o espacio (como lo indica la opción [: en blanco:])
contenido en un nombre de archivo se traduzca a guiones bajos Intente ejecutar el siguiente código en un
directorio de prueba:
para archivo en * ; hacer
f=`echo $archivo | tr [:en blanco:] [_]` || mv i
"$archivo" "$f" [ "$archivo" = "$f" ]
hecho
El editor de secuencias (sed)
El comando sed es un editor programable simple, por lo que solo puede realizar ediciones simples, como eliminar
líneas que tienen texto que coincide con un patrón determinado, reemplazar un patrón de caracteres con otro, etc.
Para tener una mejor idea de cómo funcionan los scripts sed, no hay sustituto para la documentación en
aquí
línea,
hay
pero
algunos ejemplos de usos comunes.
Puede usar el comando sed esencialmente para hacer lo que hice antes con el ejemplo de grep: buscar en el
archivo /etc/passwd la palabra home. Aquí, el comando sed busca en todo el archivo /etc/passwd, busca la palabra
home e imprime cualquier línea que contenga la palabra home:
$ sed n '/inicio/p' /etc/contraseña
chris:x:1000:1000:Chris Negus:/inicio/chris:/bin/bash joe:x:1001:1001:Joe
Smith:/inicio/joe: /bin/bash
En el siguiente ejemplo, sed busca el archivo somefile.txt y reemplaza cada instancia de la cadena Mac con Linux.
Tenga en cuenta que se necesita la letra g al final del comando de sustitución para que todas las apariciones de
Mac en cada línea se cambien a Linux.
(De lo contrario, solo se cambia la primera instancia de Mac en cada línea). La salida se envía al archivo fixed_file.txt.
La salida de sed va a stdout, por lo que este comando redirige la salida a un archivo para su custodia.
$ sed 's/Mac/Linux/g' algúnarchivo.txt > archivo_fijo.txt
160
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
Puedes obtener el mismo resultado usando una tubería:
$ cat algunarchivo.txt | sed 's/Mac/Linux/g' > archivo_fijo.txt
Al buscar un patrón y reemplazarlo con un patrón nulo, elimina el patrón original. Este ejemplo busca el
contenido del archivo somefile.txt y reemplaza los espacios en blanco adicionales al final de cada línea (s/ *$)
con nada (//). Los resultados van al archivo fixed_file.txt.
$ cat algunarchivo.txt | sed 's/ *$//' > archivo_fijo.txt
Uso de scripts de shell simples A veces,
los scripts más simples pueden ser los más útiles. Si escribe la misma secuencia de comandos repetidamente,
tiene sentido almacenar esos comandos (¡una vez!) en un archivo. Las siguientes secciones ofrecen un par de
scripts de shell simples pero útiles. 7
Lista de teléfonos
'
Esta idea se ha transmitido de generación en generación a través de los viejos hacks de UNIX. s
Realmente es bastante simple, pero emplea varios de los conceptos que acabamos de presentar.
#!/bin/bash # (@)/
ph # Una lista de
teléfonos muy simple # Escriba "ph new name
number" para agregar a la lista, o # simplemente escriba "ph name" para obtener un
número de teléfono
LISTA DE TELÉFONOS=~/.phonelist.txt
# Si no hay parámetros de línea de comando ($#), # hay un problema,
así que pregunte de qué están hablando. si [ $# lt 1 ]
; luego
echo "¿De quién era el número de teléfono que querías?"
salida 1
ser
# ¿Desea agregar un nuevo número de teléfono? si [$1 = "nuevo"];
luego cambiar
echo $* >> $PHONELIST echo $*
agregado a la base de datos exit 0 fi
# No. ¿Pero el archivo tiene algo en él todavía?
# Esta podría ser la primera vez que lo usamos, después de todo. si [ ! s
$LISTATELEFÓNICA];
exit 1 luego echo "¡No hay nombres en la lista de teléfonos todavía!"
161
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
else
grep i q "$*" $PHONELIST # Busque silenciosamente el archivo si [ $? ne 0]; luego #
¿Encontramos algo? echo "exit
Lo s1iento, ese nombre no fue encontrado en la lista de teléfonos"
demás
grep i "$*" $ LISTA DE TELÉFONOS
fi
fi
salida 0
Entonces, si creó el archivo de la lista de teléfonos como ph en su directorio actual, puede escribir lo siguiente desde el
shell para probar su script ph:
$ chmod 755 ph $ ./ph
nuevo "Mary Jones" 6085551212 Mary Jones 6085551212
agregado a la base de datos $ ./ph Mary Mary Jones 6085551212
El comando chmod hace que el script ph sea ejecutable. El comando ./ph ejecuta el comando ph desde el
directorio actual con la nueva opción. Esto agrega a Mary Jones como nombre y 6085551212 como número de
teléfono a la base de datos ($HOME/.phonelist.txt).
El siguiente comando ph busca en la base de datos el nombre Mary y muestra la entrada telefónica de Mary. Si el
script funciona, agréguelo a un directorio en su ruta (como $HOME/bin).
Script de copia
de seguridad Debido a que nada funciona para siempre y ocurren errores, las copias de seguridad son solo una
realidad cuando se trata de datos informáticos. Este sencillo script realiza una copia de seguridad de todos los datos
en los directorios de inicio de todos los usuarios en su sistema Fedora o RHEL.
#!/bin/bash # (@)/
my_backup # Un script
de copia de seguridad muy simple #
# Cambie el dispositivo TAPE para que coincida con su sistema.
# Verifique /var/log/messages para determinar su dispositivo de cinta.
CINTA=/dev/rft0
# Rebobinar el dispositivo de cinta $TAPE mt
$TAPE rew # Obtener una lista de directorios de
inicio HOMES=`grep /home /etc/passwd | cut f6 d':'`
# Copia de seguridad de los datos en esos directorios tar cvf $TAPE $HOMES
# Rebobinar y expulsar la cinta. mt $TAPE rebobinado
162
Machine Translated by Google
Capítulo 7: Escritura de scripts de Shell simples
Resumen
Escribir scripts de shell le brinda la oportunidad de automatizar muchas de las tareas más comunes de
administración del sistema. Este capítulo cubrió los comandos y funciones comunes que puede usar en secuencias
de comandos con el shell bash. También proporcionó algunos ejemplos concretos de scripts para realizar copias de
seguridad y otros procedimientos.
En el próximo capítulo, pasará de aprender acerca de las características del usuario a examinar los temas de
administración del sistema. El Capítulo 8, "Aprendizaje
en dee
l ula
suario
administración
root, así como
del sistema",
también cubre
ómo cuómo
sar ccomandos
onvertirse
administrativos, monitorear archivos de registro y trabajar con archivos de configuración.
Ejercicios 7
Utilice estos ejercicios para poner a prueba su conocimiento de la escritura de scripts de shell sencillos. Estas
tareas suponen que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también
funcionan en otros sistemas Linux). Si está atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque
en Linux, a menudo hay varias formas de completar una tarea).
1. Cree un script en su directorio $HOME/bin llamado myownscript. cuando el guion
se ejecuta, debería generar información que aparece de la siguiente manera:
Hoy es sábado 4 de enero a las 15:45:04 EST de 2020.
Está en /home/joe y su host es abc.example.com.
Por supuesto, debe leer su fecha/hora actual, el directorio de trabajo actual y el nombre de host. Además,
incluya comentarios sobre lo que hace el script e indique que el script debe ejecutarse con el shell /bin/
bash.
2. Cree un script que lea tres parámetros posicionales desde la línea de comando, asigne esos parámetros a
variables llamadas UNO, DOS y TRES, respectivamente, y genere esa información en el siguiente formato:
Hay parámetros X que incluyen Y.
El primero es A, el segundo es B, el tercero es C.
Reemplace X con el número de parámetros e Y con todos los parámetros ingresados. Luego reemplace A
con el contenido de la variable UNO, B con la variable DOS y C con la variable TRES.
3. Cree un script que solicite a los usuarios el nombre de la calle y el pueblo donde crecieron. Asigne la ciudad
y la calle a las variables llamadas mytown y mystreet, y envíelas con una oración que se lea como se
muestra a continuación (por supuesto, $mystreet y $mytown aparecerán con la ciudad y la calle reales que
ingresa el usuario):
La calle en la que crecí era $ mystreet y el pueblo era
$ mi ciudad
163
Machine Translated by Google
Parte II: Convertirse en un usuario avanzado de Linux
4. Cree un script llamado myos que le pregunte al usuario: "¿Cuál es su sistema operativo
favorito?" Muestra una oración insultante si el usuario escribe "Windows" o "Mac".
Responda “¡Gran elección!” si el usuario escribe "Linux". Para cualquier otra cosa, diga "¿Es < lo
que está escrito> un sistema operativo?"
5. Cree un guión que incluya las palabras alce, vaca, ganso y siembre a través de un
en bucle. Haga que cada una de esas palabras se agregue al final de la línea “Tengo un. . . .”
164
Machine Translated by Google
rt
convertirse en un li
Administrador
EN ESTA PARTE
Capítulo 8
Administración del sistema de aprendizaje
Capítulo 9
Instalación de Linux
Capítulo 10
Obtener y administrar software
Capítulo 11
Gestión de cuentas de usuario
Capítulo 12
Administración de discos y sistemas de archivos
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Administrador del sistema de aprendizaje
EN ESTE CAPÍTULO
Haciendo administración gráfica
Usando el inicio de sesión raíz
Comprender los comandos administrativos, los archivos de configuración y los archivos de registro
Trabajar con dispositivos y sistemas de archivos
L
inux, al igual que otros sistemas basados en UNIX, fue diseñado para ser utilizado por más de una persona a la vez.
Las funciones multiusuario permiten que muchas personas tengan cuentas en un solo sistema Linux con su
datos mantenidos a salvo de otros. La multitarea permite que muchas personas ejecuten muchos programas en el
computadora al mismo tiempo, con cada persona capaz de ejecutar más de un programa. Las aplicaciones y los
protocolos de red sofisticados hacen posible que un sistema Linux amplíe sus capacidades a los usuarios de la red y
las computadoras de todo el mundo. La persona asignada para administrar todo un sistema Linux Incluso si usted es la
'
única persona que ussa
s recursos e du n sistema
enomina Linux, la administración
administrador del sistema. del sistema aún está configurada para estar separada del
uso de otras computadoras. Para realizar la mayoría de las tareas administrativas, debe iniciar sesión como usuario
root (también llamado superusuario) u obtener permiso de root temporalmente (generalmente usando el comando
sudo). Los usuarios regulares que no tienen permisos de root no pueden cambiar, o en algunos casos ni siquiera
pueden ver, parte de la información de configuración
como las contraseñas
de un sistema
almacenadas,
Linux. En epstán
articular,
protegidas
las funciones
de la vista
de sgeguridad,
eneral.
Debido a que la administración del sistema Linux es un tema tan extenso, este capítulo se enfoca en los principios
generales de la administración del sistema Linux. En particular, examina algunas de las herramientas básicas que
necesita para administrar un sistema Linux para un escritorio personal o en un servidor pequeño. Más allá de lo
básico, este capítulo también le enseña cómo trabajar con sistemas de archivos y monitorear la configuración y el
rendimiento de su sistema Linux.
Descripción de la administración del sistema
Separar la función de administrador del sistema de la de otros usuarios tiene varios efectos. Para un sistema que
tiene muchas personas usándolo, limitar quién puede administrarlo le permite mantenerlo más
167
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
seguro. Una función administrativa separada también evita que otros dañen su sistema de manera casual
cuando solo lo están usando para escribir un documento o navegar por Internet.
Si usted es el administrador del sistema de un sistema Linux, generalmente inicia sesión como una cuenta de
usuario normal y luego solicita privilegios administrativos cuando los necesita. Esto se hace a menudo con uno de
los siguientes:
Comando su: a menudo, su se usa para abrir un shell como usuario root. Después de que la cáscara está abierta,
el administrador puede ejecutar varios comandos y luego salir para volver a un shell como usuario normal.
comando sudo: con sudo, un usuario normal recibe privilegios de root, pero solo cuando
ese usuario ejecuta el comando sudo para ejecutar otro comando. Después de ejecutar ese comando con
sudo, el usuario regresa inmediatamente a un shell y vuelve a actuar como el usuario normal. Ubuntu y
Fedora asignan por defecto el privilegio sudo a la primera cuenta de usuario cuando se instalan esos
sistemas. Esto no se hace de forma predeterminada en RHEL, aunque durante la instalación de RHEL,
puede elegir que su primer usuario tenga privilegios de sudo si lo desea.
Administración basada en el navegador de Cockpit: RHEL, Fedora y otras distribuciones de Linux se han
comprometido con Cockpit como su función principal de administración del sistema basada en el navegador.
'
Con Cockpit habilitado, puede monitorear y cambiar las actividades, el almacenamiento, las redes,
es general
las
cuentas, los servicios y otras características de su sistema.
Ventanas gráficas: antes de que Cockpit estuviera ampliamente disponible, RHEL, Fedora y otras
distribuciones de Linux ofrecían herramientas de administración gráfica individuales que se iniciaban
mediante comandos que comenzaban con systemconfig*. Aunque la mayoría de estas herramientas de
administración no se ofrecen en la versión más reciente de RHEL y Fedora, se mencionan aquí porque
todavía están disponibles en versiones anteriores de Linux.
Las tareas que solo puede realizar el usuario raíz tienden a ser aquellas que afectan al sistema en su totalidad o
afectan la seguridad o el estado del sistema. La siguiente es una lista de características comunes que se espera que
administre un administrador del sistema:
Sistemas de archivos: cuando instala Linux por primera vez, la estructura de directorios se configura para
que el sistema sea utilizable. Sin embargo, si los usuarios desean agregar más almacenamiento o cambiar
el diseño del sistema de archivos fuera de su directorio de inicio, necesitan privilegios administrativos para
hacerlo. Además, el usuario raíz tiene permiso para acceder a archivos propiedad de cualquier usuario.
'
s fi les—a
Como resultado, el usuario raíz puede copiar, mover o cambiar cualquier otro privilegio de usuario
necesario para realizar copias de seguridad del sistema de archivos para su custodia.
Instalación de software: debido a que el software malicioso puede dañar su sistema o hacerlo inseguro,
necesita privilegios de root para instalar el software de modo que esté disponible para todos los usuarios
de su sistema. Los usuarios habituales aún pueden instalar algún software en sus propios directorios y
pueden enumerar información sobre el software del sistema instalado.
Cuentas de usuario: solo el usuario raíz puede agregar y eliminar cuentas de usuario y
cuentas de grupo.
168
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
Interfaces de red: en el pasado, el usuario raíz tenía que configurar las interfaces de red e iniciar y detener
esas interfaces. Ahora, muchos escritorios Linux permiten a los usuarios regulares iniciar y detener
las interfaces de red desde su escritorio usando Network Manager. Esto es particularmente cierto para
las interfaces de red inalámbrica, que pueden ir y venir según la ubicación a medida que mueve su
computadora portátil o dispositivo de mano con Linux.
Servidores: la configuración de servidores web, servidores de archivos, servidores de nombres de
dominio, servidores de correo y docenas de otros servidores requiere privilegios de raíz, al igual que
iniciar y detener esos servicios. Los usuarios no root pueden agregar contenido, como páginas web,
a los servidores si configura su sistema para permitirlo. Los servicios a menudo se ejecutan como
cuentas de usuario administrativas especiales, como apache (para el servicio httpd) y rpc (para el
'
servicio rpcbind). Entonces, si alguien descifra un servicio, puede hacerlo con otros
obtener servicios
privilegios o para
de root
recursos del sistema.
Funciones de seguridad: la configuración de funciones de seguridad, como firewalls y listas de acceso
de usuarios, generalmente se realiza con privilegios de root. También depende del usuario raíz
monitorear cómo se utilizan los servicios y asegurarse de que los recursos del servidor no se agoten
o abusen.
La forma más sencilla de comenzar la administración del sistema es utilizar algunas herramientas de administración
gráfica.
Uso de herramientas de administración gráfica 8
La mayor parte de la administración del sistema para los primeros sistemas Linux se realizaba desde la línea de comandos.
Sin embargo, a medida que Linux se hizo más popular, comenzaron a ofrecerse interfaces gráficas y de línea
de comandos para las tareas administrativas más comunes de Linux.
Las siguientes secciones describen algunos de los tipos de interfaces de apuntar y hacer clic que están
disponibles para realizar la administración del sistema en Linux.
Uso de la administración basada en navegador de Cockpit Cockpit es la
mejor herramienta de administración de sistemas Linux basada en navegador que he visto. Reúne una gama
de actividades administrativas de Linux en una sola interfaz y aprovecha un conjunto diverso de API de Linux
utilizando cockpitbridge. Sin embargo, como alguien que administra Linux, solo necesita saber que obtendrá
una forma consistente y estable de administrar sus sistemas con Cockpit.
Comenzar con Cockpit es tan simple como habilitar el socket de la cabina y apuntar un navegador web al
servicio de Cockpit. Debido al diseño del complemento de Cockpit, se crean
tiempo nuevas
que
puede haerramientas
gregar a su tsodo el
istema.
'
Interfaz de cabina.
Si está comenzando con los últimos sistemas RHEL o Fedora, realizar el siguiente procedimiento le permite
habilitar y comenzar a usar Cockpit en su sistema.
169
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
NOTA
No se requiere configuración para iniciar este procedimiento. Sin embargo, puede configurar Cockpit para que utilice su propio certificado
OpenSSL en lugar del certificado autofirmado que se utiliza de forma predeterminada. Esto le permite evitar tener que aceptar el
certificado autofirmado no verificado cuando abre la interfaz de Cockpit desde su navegador.
1. Si Cockpit aún no está instalado, haga lo siguiente:
# dnf instalar cabina
2. Inicie sesión como usuario raíz y habilite el socket de Cockpit: #
systemctl enable now cockpit.socket Enlace simbólico creado /
etc/systemd/system/sockets.target.wants/
cabina.socket
→ /usr/lib/systemd/system/cockpit.socket.
3. Abra su navegador web en el puerto 9090 en el sistema donde acaba de habilitar Cockpit.
Puede utilizar el nombre de host o la dirección IP. El puerto 9090 está configurado para https de
forma predeterminada, aunque puede reconfigurarlo si desea usar http. Estos son ejemplos de
direcciones para escribir en la barra de direcciones de su navegador:
https://host1.ejemplo.com:9090/ https://
192.168.122.114:9090/
4. Suponiendo que no reemplazó el certificado autofirmado de Cockpit, se le advierte que la conexión no es segura.
Para aceptarlo de todos modos, y dependiendo de su navegador, debe seleccionar Avanzado y aceptar una
excepción para permitir que el navegador use el servicio Cockpit.
5. Introduzca su nombre de usuario y contraseña. Use el usuario root o un usuario con sudo privi
leges si desea cambiar la configuración de su sistema. Un usuario regular puede ver pero no cambiar
la mayoría de las configuraciones. La Figura 8.1 muestra un ejemplo de esta ventana.
6. Comience a usar Cockpit. El panel de control de la cabina contiene un buen conjunto de características de
predeterminado (puede agregar más más tarde) en los sistemas RHEL y Fedora. La Figura 8.2 muestra
un ejemplo del área Sistema del panel de control de Cockpit:
Inmediatamente después de iniciar sesión en Cockpit, comienza a ver la actividad del sistema relacionada con
el uso de la CPU, la memoria y el intercambio, la entrada/salida del disco y el tráfico de red. Las selecciones en
el panel de navegación izquierdo le permiten comenzar a trabajar con registros, almacenamiento, redes, cuentas
de usuarios y grupos, servicios y muchas otras funciones en su sistema.
A medida que avance en el resto de este libro, verá descripciones de cómo usar las diferentes funciones de
Cockpit en la sección correspondiente. Para profundizar en cualquiera de los temas que encuentre con Cockpit,
recomiendo visitar el sitio web del proyecto Cockpit: https://cockpitproject.org.
170
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
FIGURA 8.1
Iniciar sesión en la cabina
FIGURA 8.2
Vea la actividad del sistema y otros temas desde el panel de control de Cockpit.
8
Uso de las herramientas systemconfi g*
En los sistemas Fedora y RHEL antes del lanzamiento de Cockpit, un conjunto de herramientas
gráficas estaba disponible desde el submenú Administración del menú Sistema (GNOME 2), desde el
171
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Pantalla de actividades (GNOME 3), o desde la línea de comandos. En estos sistemas Fedora y RHEL más
antiguos, podía operar estas herramientas desde la línea de comandos ejecutando un conjunto de comandos
que comenzaban con la cadena systemconfig* (como systemconfignetwork).
Estas herramientas de configuración del sistema * requieren permiso de root. Si ha iniciado sesión como
usuario normal, debe ingresar la contraseña raíz antes de que se abra la ventana de la aplicación de la interfaz
gráfica de usuario (GUI) o, en algunos casos, cuando solicite realizar alguna actividad especial.
La siguiente lista describe muchas de las herramientas gráficas disponibles en los sistemas anteriores de Fedora
o RHEL. (Algunos solo estaban en Fedora y muchos no están instalados de manera predeterminada). El comando
que ejecutaría para obtener la función se muestra entre paréntesis (a menudo, es el mismo que el nombre del
paquete). Las siguientes herramientas gráficas estaban disponibles en Fedora:
Sistema de nombres de dominio (systemconfigbind): crea y configura zonas si tu computadora está
actuando como un servidor DNS.
HTTP (systemconfighttpd): Configura tu computadora como un servidor web Apache.
NFS (systemconfignfs): configure directorios de su sistema para compartirlos con
otras computadoras en su red usando el servicio NFS.
Contraseña raíz (systemconfigrootpassword): cambia la contraseña raíz.
Samba NFS (systemconfigsamba): Configure el uso compartido de archivos de Windows (SMB). (A
configurar otras funciones de Samba, puede usar la ventana SWAT).
Las siguientes herramientas gráficas estaban disponibles en los sistemas Fedora y RHEL antes de RHEL
8:
Servicios ( systemconfigservices): Muestra y cambia qué servicios son
ejecutándose en su sistema Fedora en diferentes niveles de ejecución desde la ventana de
configuración del servicio.
Autenticación (systemconfigauthentication): cambie la forma en que los usuarios se autentican en su
sistema. Por lo general, se seleccionan contraseñas ocultas y contraseñas MD5.
Sin embargo, si su red es compatible con la autenticación LDAP, Kerberos, SMB, NIS o Hesiod, puede
optar por utilizar cualquiera de esos tipos de autenticación.
Fecha y hora (systemconfigdate): establezca la fecha y la hora o elija tener un NTP
El servidor mantiene la hora del sistema sincronizada.
Cortafuegos (systemconfigfirewall): Configure su cortafuegos para permitir o denegar
servicios a las computadoras de la red.
Idioma (systemconfiglanguage): Seleccione el idioma predeterminado utilizado para
el sistema.
Impresión (systemconfigprinter): Configura impresoras locales y de red.
Gestión de SELinux ( systemconfigselinux): Establezca los modos de cumplimiento de SELinux y
política predeterminada.
Usuarios y grupos ( systemconfigusers): agregar, mostrar y cambiar usuarios y grupos
cuentas para su sistema Fedora.
172
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
Otras utilidades administrativas estaban disponibles desde el menú Aplicaciones en el panel superior.
Seleccione el submenú Herramientas del sistema (en GNOME 2) o vaya a la pantalla Actividades (en GNOME 3) para
elegir algunas de las siguientes herramientas (si están instaladas):
Editor de configuración (gconfeditor): edite directamente la configuración de GNOME
base de datos de información.
Analizador de uso de disco (gnomeutils): muestra información detallada sobre sus discos duros y dispositivos
de almacenamiento extraíbles.
Utilidad de disco (gnomedisks): Administre particiones de disco y agregue sistemas de archivos (paquete
de utilidad de disco gnome).
Kickstart ( systemconfigkickstart): Cree un archivo de configuración de kickstart que se puede usar para
instalar múltiples sistemas Linux sin la interacción del usuario.
Las descripciones de ediciones anteriores de este libro de la mayoría de estas herramientas han sido reemplazadas
por procedimientos que usan Cockpit en su lugar.
Uso de otras herramientas de administración basadas en navegador
Para simplificar la gestión de muchos proyectos de código abierto de calidad empresarial, esos proyectos han
comenzado a ofrecer herramientas de gestión gráfica basadas en navegador. En la mayoría de los casos, también se
ofrecen herramientas de línea de comandos para administrar estos proyectos.
Por ejemplo, si utiliza Red Hat Enterprise Linux, existen interfaces basadas en navegador para administrar los
siguientes proyectos: 8
Red Hat OpenShift: OpenShift, basado en el proyecto Kubernetes, ofrece una interfaz basada en navegador para
implementar y administrar un grupo de nodos de trabajadores y planos de control, así como funciones para
implementar y administrar contenedores en lo que se conoce como pods . Consulte el sitio de Red Hat
OpenShift en www.openshift.com o el sitio upstream de OKD en www.okd.io para obtener más detalles.
Red Hat Enterprise Linux OpenStack Platform (RHELOSP): el proyecto de plataforma como servicio OpenStack
le permite administrar su propia nube híbrida privada a través de su navegador. Esto incluye el panel de
OpenStack del proyecto OpenStack Horizon (http://horizondocs.openstack.org/horizon/latest). Esa interfaz le
permite iniciar y administrar máquinas virtuales y todos los recursos que las rodean: almacenamiento, redes,
autenticación, asignaciones de procesamiento, etc. Consulte el Capítulo 27, “Uso de Linux para computación
en la nube”, para obtener una descripción de cómo usar OpenStack Dashboard.
Red Hat Virtualization (RHV): con RHEV, el administrador de RHV proporciona la interfaz basada en
navegador para administrar máquinas virtuales, incluida la asignación de almacenamiento y acceso de
usuarios a los recursos. Muchos otros ejemplos de herramientas de administración gráfica basadas en
navegador están disponibles con proyectos de código abierto. Si es nuevo en Linux, puede ser más fácil
comenzar con estas interfaces. Sin embargo, tenga en cuenta que a menudo necesita usar herramientas de
línea de comandos si necesita solucionar problemas porque las herramientas gráficas suelen estar limitadas
en esa área.
173
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Uso de la cuenta de usuario raíz
Cada sistema Linux comienza con al menos una cuenta de usuario administrativo (el usuario raíz) y
posiblemente una o más cuentas de usuario regulares (con el nombre que elija o un nombre asignado por su
distribución de Linux). En la mayoría de los casos, inicia sesión como usuario normal y se convierte en el
usuario raíz para realizar una tarea administrativa.
El usuario root tiene el control completo del funcionamiento de su sistema Linux. Ese usuario puede abrir
cualquier archivo o ejecutar cualquier programa. El usuario raíz también instala paquetes de software y
agrega cuentas para otras personas que usan el sistema.
CONSEJO
Piense en el usuario root en Linux como similar al usuario Administrador en Windows.
Cuando instala por primera vez la mayoría de los sistemas Linux (aunque no todos los sistemas), agrega
una contraseña para el usuario root. Debe recordar y proteger esta contraseña; lo necesita para iniciar
sesión como root u obtener permiso de root mientras está conectado como otro usuario.
Para familiarizarse con la cuenta de usuario raíz, simplemente inicie sesión como usuario raíz.
Recomiendo probar esto desde una consola virtual. Para hacerlo, presione Ctrl+Alt+F3. Cuando vea la
solicitud de inicio de sesión, escriba raíz (presione Intro) e ingrese la contraseña. Se abre una sesión de
inicio de sesión para root. Cuando termine, escriba exit y luego presione Ctrl+Alt+F1 para volver al inicio de
sesión normal en el escritorio.
Una vez que haya iniciado sesión como root, el directorio de inicio para el usuario root suele ser /root.
El directorio de inicio y otra información asociada con la cuenta de usuario raíz se encuentran en el archivo /
'
etc/passwd. Aquí Así es como se ve la entrada raíz en el archivo /etc/passwd:
raíz:x:0:0:raíz:/raíz:/bin/bash
Esto muestra que para el usuario llamado root, la ID de usuario se establece en 0 (usuario raíz), la ID de
grupo se establece en 0 (grupo raíz), el directorio de inicio es /root y el shell para ese usuario es /bin/
intento. (Linux usa el archivo /etc/shadow para almacenar datos de contraseña encriptados, por lo que el
campo de contraseña aquí contiene una x). Puede cambiar el directorio de inicio o el shell usado editando los
valores en este archivo. Sin embargo, una mejor manera de cambiar estos valores es usar el comando mod
de usuario (consulte la sección "Modificación de usuarios con mod de usuario" en el Capítulo 11 para obtener
más información).
En este punto, cualquier comando que ejecute desde su shell se ejecuta con privilegios de root. Así que
ten cuidado. Tiene mucho más poder para cambiar (y dañar) el sistema que como usuario normal.
Nuevamente, escriba exit cuando haya terminado. Si está en una consola virtual y tiene una interfaz de
escritorio ejecutándose en otra consola, presione Ctrl+Alt+F1 para volver a la pantalla de inicio de sesión
gráfica si está utilizando un sistema de escritorio Linux.
174
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
NOTA
De forma predeterminada, la cuenta raíz no tiene una contraseña configurada en Ubuntu. Esto significa que, aunque la cuenta
existe, no puede iniciar sesión con ella ni usar su para convertirse en usuario root. Esto agrega un nivel adicional de seguridad
a Ubuntu y requiere que use sudo antes de cada comando que desee ejecutar como usuario raíz.
Convertirse en root desde el shell (comando su)
Aunque puede convertirse en superusuario iniciando sesión como root, a veces eso no es conveniente.
Por ejemplo, puede haber iniciado sesión en una cuenta de usuario regular y solo desea realizar un
cambio administrativo rápido en su sistema sin tener que cerrar sesión y volver a iniciarla. Es posible
que deba iniciar sesión a través de la red para realizar un cambio en un sistema Linux, pero descubre
que el sistema nLinux
o permite el acceso
seguros). Una sdolución
e usuarios
es ursar
oot e
dl
esde la red
comando s(u.
una
práctica
Desde común
cualquier para los
ventana ssistemas
o hell
de Terminal, simplemente puede escribir lo siguiente:
$ son
Contraseña: ******
#
Cuando se le solicite, escriba el usuario raíz 'contraseña de s. La solicitud para el usuario normal
($) cambia a la solicitud de superusuario (#). En este punto, tiene permiso completo para ejecutar
cualquier comando y usar cualquier archivo en el sistema. Sin embargo, una cosa que el comando su 8
'
no hace cuando se usa de esta manera es leer en el cmedio
omando de usuario
ambiente Como raíz
que sabe
resultado, que eescribir
puede stá un
disponible y obtener el mensaje Comando no encontrado. Para solucionar este problema, use el
comando su con la opción guión () en lugar de esto:
$ son
Contraseña: ******
#
Todavía necesita escribir la contraseña, pero después de eso, todo lo que sucede normalmente al
iniciar sesión para el usuario raíz sucede después de que se completa el comando su. El directorio de
' '
será root inicio de su directorio actual (probablemente /root), y cosas como el usuario rootRUTA
Se utilizan variables. Si se convierte en usuario root simplemente escribiendo su, en lugar de su , no '
t cambiar los directorios o el entorno de la sesión de inicio de sesión actual.
También puede usar el comando su para convertirse en un usuario que no sea root. Esto es útil para solucionar
un problema que experimenta un usuario en particular pero no otros en la computadora (como la imposibilidad
de imprimir o enviar correo electrónico). Por ejemplo, para tener los permisos de un usuario llamado jsmith,
debe escribir lo siguiente:
$ con jsmith
175
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Incluso si fuera usuario raíz antes de escribir este comando, después solo tendría los permisos para abrir archivos y
ejecutar programas que están disponibles para jsmith. Sin embargo, como usuario raíz, después de escribir el
comando su para convertirse en otro usuario, no necesita una contraseña para continuar. Si escribe ese comando
como un usuario normal, debe escribir la contraseña del nuevo usuario.
Cuando termine de usar los permisos de superusuario, regrese al shell anterior saliendo del shell actual. Haga esto
presionando Ctrl+D o escribiendo exit. Si usted es el administrador de una computadora a la que pueden acceder
varios usuarios, no deje un shell raíz abierto en la pantalla de otra persona a menos
libertad
que
dqe
uiera
hacer
darle
lo que
a eqsa
uiera
persona
con la
la
computadora.
Permitir el acceso administrativo a través de la GUI Como se mencionó
anteriormente, cuando ejecuta las herramientas de la GUI como un usuario normal (desde Fedora, Red Hat Enterprise
Linux o algunos otros sistemas Linux), se le solicita la contraseña de root antes de poder acceder a la herramienta. Al
ingresar la contraseña de root, se le otorga privilegio de root para esa tarea.
Para los sistemas Linux que usan el escritorio GNOME 2, después de ingresar la contraseña, aparece un ícono de
insignia amarilla en el panel superior, lo que indica que la autorización de root todavía está disponible para que otras
herramientas GUI se ejecuten desde esa sesión de escritorio. Para escritorios GNOME 3, debe ingresar la contraseña
raíz cada vez que inicie cualquiera de las herramientas de configuración del sistema.
Obtener acceso administrativo con sudo A determinados usuarios
también se les pueden otorgar permisos administrativos para tareas particulares o cualquier tarea escribiendo sudo
seguido del comando que desean ejecutar, sin que se les proporcione la contraseña de root. La instalación de sudoers
es la forma más común de proporcionar dicho privilegio.
Usando sudoers para cualquier usuario o grupo en el sistema, puede hacer lo siguiente:
■ Asignar privilegios de root para cualquier comando que ejecuten con sudo. ■
Asignar privilegios de root para un conjunto selecto de comandos. ■ Otorgue a los
usuarios privilegios de root sin decirles la contraseña de root porque solo
tienen que proporcionar su propia contraseña de usuario para obtener privilegios
de root. ■ Permita que los usuarios, si lo desea, ejecuten sudo sin ingresar ninguna contraseña. ■
Rastree qué usuarios han ejecutado comandos administrativos en su sistema. (Usando su, todo lo que sabe
es que alguien con la contraseña de root inició sesión, mientras que el comando sudo registra qué usuario
ejecuta un comando administrativo).
Con la función sudoers, otorgar privilegios de raíz completos o limitados a cualquier usuario simplemente implica
agregar el usuario a /etc/sudoers y definir qué privilegio desea que tenga ese usuario.
Luego, el usuario puede ejecutar cualquier comando que tenga el privilegio de usar precediendo ese comando con el
comando sudo.
'
Aquí es un ejemplo de cómo usar la función sudo para hacer que el usuario llamado joe tenga acceso completo
privilegio de root.
176
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
SUGERENCIA Si observa el archivo sudoers en Ubuntu, verá que el usuario inicial en el sistema ya tiene privilegios, de forma
predeterminada, para los miembros del grupo sudo. Para otorgar a cualquier otro usuario el mismo privilegio, simplemente puede agregar el
usuario adicional al grupo de administración cuando ejecuta visudo .
1. Como usuario raíz, edite el archivo /etc/sudoers ejecutando el comando visudo:
# /usr/sbin/visudo
De forma predeterminada, el archivo se abre en vi, a menos que su variable EDITOR esté
configurada en algún otro editor aceptable para visudo (por ejemplo, export EDITOR=gedit).
La razón para usar visudo es que el comando bloquea el archivo /etc/sudoers y realiza algunas
comprobaciones básicas del estado del archivo para asegurarse de que se haya editado
correctamente.
NOTA
Si está atascado aquí, intente ejecutar el comando vimtutor para obtener un tutorial rápido sobre el uso de vi y vim .
2. Agregue la siguiente línea para permitir que joe tenga todos los privilegios de raíz en la computadora:
Esta línea hace que joe proporcione una contraseña (su propia contraseña, no la contraseña
raíz) para poder usar los comandos administrativos. Para permitir que joe tenga ese privilegio sin
8
usar una contraseña, escriba la siguiente línea en su lugar: joe ALL=(ALL)
SIN CONTRASEÑA: TODOS
3. Guarde los cambios en el archivo /etc/sudoers (en vi, escriba Esc y luego :wq). El siguiente es
un ejemplo de una sesión del usuario joe después de que se le hayan asignado privilegios sudo:
[joe]$ sudo touch /mnt/testfile.txt Confiamos en que haya
recibido la conferencia habitual del administrador del sistema local. Por
lo general, se reduce a estas dos cosas:
#1) Respeta la privacidad de los demás.
#2) Piensa antes de escribir.
Contraseña: ********* [joe]$ ls
l /mnt/testfile.txt rwrr. 1 root root 0 7 de
enero 08:42 /mnt/testfile.txt [joe]$ rm /mnt/testfile.txt rm: no se puede eliminar '/mnt/
testfile.txt': Permiso denegado [joe]$ sudo rm /mnt/ archivo de texto.txt [joe]$
177
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
En esta sesión, el usuario joe ejecuta el comando sudo para crear un archivo (/mnt/textfile. txt) en un
directorio para el que no tiene permiso de escritura.
su cS
ontraseña
e le da una
(esta
advertencia
es la contraseña
y se le pdide
e joe,
que
npo
roporcione
la contraseña
de root).
Incluso después de que Joe haya ingresado la contraseña, aún debe usar el comando sudo para ejecutar los
comandos administrativos subsiguientes como root (el rm falla, pero el sudo rm tiene éxito). Tenga en cuenta
que no se le solicita una contraseña para el segundo sudo. Eso es porque después
de
con ingresar
éxito, su icngresar
puede ontraseña
tantos
comandos sudo como desee durante los próximos cinco minutos, en los sistemas RHEL y Fedora, sin tener que
ingresarla nuevamente. Para Ubuntu, esto se establece en cero, sin tiempo de espera. (Puede cambiar el valor
de tiempo de espera de cinco minutos a cualquier período de tiempo que desee configurando el valor
passwd_timeout en el archivo /etc/sudoers).
El ejemplo anterior otorga un privilegio administrativo simple de todo o nada a joe.
Sin embargo, el archivo /etc/sudoers le brinda una cantidad increíble de flexibilidad al permitir que
usuarios individuales y grupos usen aplicaciones individuales o grupos de aplicaciones. Consulte las
páginas del manual de sudoers y sudo para obtener información sobre cómo ajustar su instalación de sudo.
Exploración de comandos administrativos, configuración
Archivos y archivos de registro
Puede esperar encontrar muchos comandos, archivos de configuración y archivos de registro en los mismos
lugares del sistema de archivos, independientemente de la distribución de Linux que esté utilizando. Las
siguientes secciones le dan algunos consejos sobre dónde buscar estos importantes elementos.
NOTA
Si las herramientas administrativas GUI para Linux se han vuelto tan buenas, ¿por qué necesita conocer los archivos administrativos? Por
un lado, mientras que las herramientas GUI difieren entre las versiones de Linux, muchos archivos de configuración subyacentes son los
mismos. Entonces, si aprende a trabajar con ellos, puede trabajar con casi cualquier sistema Linux. Además, si una característica no funciona,
o si necesita hacer comandos
algo que no
o ecs
ambiar
compatible
el archivo
con lda
e
GcUI,
onfiguración
cuando solicita
directamente.
ayuda, los expertos de Linux casi siempre le dicen cómo ejecutar
Comandos administrativos Solo el usuario
root está destinado a usar muchos comandos administrativos. Cuando inicia sesión como root (o usa su
desde el shell para convertirse en root), su variable $PATH está configurada para incluir algunos directorios
que contienen comandos para el usuario root. En el pasado, estos han incluido lo siguiente:
/sbin: originalmente contenía los comandos necesarios para iniciar su sistema, incluidos los comandos
para verificar los sistemas de archivos (fsck) y activar los dispositivos de intercambio (swappon).
178
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
/usr/sbin: Originalmente contenía comandos para cosas como administrar usuarios
cuentas (como useradd) y procesos de comprobación que tienen archivos abiertos (como lsof). Los
comandos que se ejecutan como procesos daemon también se encuentran en este directorio. Los
procesos daemon son procesos que se ejecutan en segundo plano, a la espera de solicitudes de servicio,
como las de acceder a una impresora o una página web. (Busque los comandos que terminan en d, como
sshd, pppd y cupsd).
Para las últimas versiones de Ubuntu, RHEL y Fedora, todos los comandos administrativos de los dos directorios
se almacenan en el directorio /usr/sbin (que está vinculado simbólicamente desde /sbin). Además, solo /usr/sbin se
agrega a la RUTA del usuario raíz, así como a la RUTA de todos los usuarios regulares.
Algunos comandos administrativos están contenidos en directorios de usuarios normales (como /bin y /usr/bin).
Esto es especialmente cierto para los comandos que tienen algunas opciones disponibles para todos. Un ejemplo
es el comando /bin/mount, que cualquiera puede usar para enumerar los sistemas de archivos montados, pero solo
el root puede usar para montar sistemas de archivos. (Sin embargo, algunos equipos de escritorio están configurados
para permitir que los usuarios normales utilicen mount para montar CD, DVD u otros medios extraíbles).
NOTA
Consulte la sección ″Montaje de sistemas de archivos″ en el Capítulo 12 para obtener instrucciones sobre cómo montar un sistema de archivos.
Para encontrar comandos destinados principalmente al administrador del sistema, consulte las páginas del manual
de la sección 8 (normalmente en /usr/share/man/man8). Contienen descripciones y opciones para la mayoría de los
8
comandos administrativos de Linux. Si desea agregar comandos a su sistema, considere agregarlos a directorios
como /usr/local/bin o /usr/local/sbin. Algunas distribuciones de Linux agregan automáticamente esos directorios a su
PATH, generalmente antes de sus directorios estándar bin y sbin. De esa forma, los comandos instalados en esos
directorios no solo son accesibles, sino que también pueden anular los comandos del mismo nombre en otros
directorios. Algunas aplicaciones de terceros que no se incluyen con las distribuciones de Linux a veces se colocan
en el directorio /usr/local/bin, /opt/bin o /usr/local/sbin.
Archivos de configuración administrativa
Los archivos de configuración son otro pilar de la administración de Linux. Casi todo lo que configura para su
computadora en particular (cuentas de usuario, direcciones de red o preferencias de GUI) da como resultado que
la configuración se almacene en archivos de texto sin formato. Esto tiene algunas ventajas y algunas desventajas.
La ventaja de los archivos de texto sin formato es que
es fácil leerlos y cambiarlos. Cualquier editor de texto servirá.
La desventaja, sin embargo, es que mientras edita los archivos de configuración, tradicionalmente no se realiza
ninguna comprobación de errores. A veces, debe ejecutar el programa que lee estos archivos (como un demonio de
red o el escritorio X) para averiguar si configuró los archivos correctamente.
Mientras que algunos archivos de configuración usan estructuras estándar, como XML para almacenar
información, muchos no lo hacen. Por lo tanto, debe aprender las reglas de estructura específicas para cada configuración.
179
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
archivo. Una coma o una comilla en el lugar equivocado a veces puede hacer que una interfaz falle por completo.
Puede verificar de muchas maneras que la estructura de muchos archivos de configuración sea correcta.
Algunos paquetes de software ofrecen un comando para probar la cordura del archivo de configuración
vinculado a un paquete antes de iniciar un servicio. Por ejemplo, el comando testparm se usa con Samba para
verificar la cordura de su archivo smb.conf. Otras veces, el proceso del daemon que proporciona un servicio
ofrece una opción para verificar su archivo de configuración. Por ejemplo, ejecute httpd t para verificar la
configuración de su servidor web Apache antes de iniciar su servidor web.
NOTA
Algunos editores de texto, como el comando vim (no vi ), entienden la estructura de algunos tipos de archivos de configuración. Si
abre un archivo de configuración de este tipo en colores v,im.
observe que los dpiferentes
En particular, ellementos
uede ver ddel
as líneas e acrchivo
se muestran
omentarios en un ceolor
n diferentes
diferente al de los datos.
A lo largo de este libro, encontrará descripciones de los archivos de configuración que necesita para instalar
las diferentes características que conforman los sistemas Linux. Las dos ubicaciones principales de los
archivos de configuración son su directorio de inicio (donde se guardan sus archivos de configuración
personales) y el directorio /etc (que contiene los archivos de configuración de todo el sistema).
Las siguientes son descripciones de directorios (y subdirectorios) que contienen archivos de configuración
útiles. Las descripciones van seguidas de algunos archivos de configuración individuales en /etc que son de
particular interés. Ver el contenido de los archivos de configuración de Linux puede enseñarle mucho sobre la
administración de sistemas Linux.
$HOME: todos los usuarios almacenan en sus directorios de inicio información que indica cómo se
'
comportan sus cuentas de inicio de sesión. Muchos archivos de configuración se almacenan s
directamente en el directorio de inicio de cada usuario (como /home/joe) y comienzan con un (.),
punto
por lo
que no aparecen en el directorio de un usuario cuando usa un comando ls estándar ( necesita escribir ls
'
a para verlos). Del mismo modo, los archivos y directorios de puntos ganaron
no aparece ventanas
en la mayoría de forma
de los administradores de archivos
'
predeterminada. Hay archivos de puntos que defi ne el comportamiento de cada usuario, la apariencia concha,
del escritorio y las opciones utilizadas con su editor de texto. Incluso hay archivos como los de cada
'
usuario para iniciar sesión en sistemas remotos.
s (Para
directorio ver el nombre
$HOME/.ssh que cdonfigura
e su directorio
de inicio, escriba
los permisos
echo $HOME desde un shell).
/etc: Este directorio contiene la mayoría de los archivos básicos de configuración del sistema Linux.
/etc/cron*: Los directorios de este conjunto contienen archivos que defi ne cómo la utilidad crond
ejecuta aplicaciones en un horario diario (cron.daily), cada hora (cron.hourly), mensual (cron.month) o
semanal (cron.weekly).
/etc/cups: contiene archivos utilizados para configurar el servicio de impresión CUPS.
/etc/default: contiene archivos que establecen valores predeterminados para varias utilidades. Por ejemplo,
el archivo para el comando useradd defi ne el número de grupo predeterminado, el directorio de inicio,
la fecha de caducidad de la contraseña, el shell y el directorio esqueleto (/etc/skel) utilizados al crear
una nueva cuenta de usuario.
180
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
/etc/httpd: contiene una variedad de archivos utilizados para configurar el comportamiento de su servidor web
Apache (específicamente, el proceso del demonio httpd). (En Ubuntu y otros sistemas Linux, en su lugar se
utiliza /etc/apache o /etc/apache2.) /etc/mail: Contiene archivos que se utilizan para configurar su agente de
transporte de correo sendmail. /etc/postfix: contiene archivos de configuración para el agente de transporte de
correo postfix. /etc/ppp: contiene varios archivos de configuración que se utilizan para configurar el Protocolo
punto a punto (PPP) para que pueda hacer que su computadora se comunique con Internet. (PPP se usaba más
comúnmente cuando los módems de acceso telefónico eran populares). /etc/rc?.d: hay un directorio rc?.d
separado para cada estado de sistema válido: rc0.d (estado de apagado), rc1.d ( estado de usuario único),
rc2.d (estado multiusuario), rc3.d (estado multiusuario más red), rc4.d (estado definido por el usuario), rc5.d
(multiusuario, trabajo en red, más estado de inicio de sesión de GUI) y rc6.d (estado de reinicio). Estos
directorios se mantienen por compatibilidad con los antiguos servicios de inicio de UNIX SystemV.
/etc/security: Contiene archivos que establecen una variedad de condiciones de seguridad predeterminadas para
su computadora, básicamente defi niendo cómo se realiza la autenticación. Estos archivos son parte del
paquete pam (módulos de autenticación conectables). /etc/skel: todos los archivos contenidos en este
'
directorio se copian automáticamente en el directorio de inicio de un usuario cuando ese usuario se agrega al s
sistema. De forma predeterminada, la mayoría de estos archivos son archivos de punto (.), como .kde (un
directorio para configurar los valores predeterminados del escritorio de KDE) y .bashrc (para configurar los
valores predeterminados que se usan con el shell bash).
/etc/sysconfig: contiene archivos importantes de configuración del sistema que se crean
8
y mantenido por varios servicios (incluidos firewalld, samba y la mayoría de los servicios de trabajo en red).
Estos archivos son fundamentales para las distribuciones de Linux, como Fedora y RHEL, que utilizan
herramientas de administración de GUI pero no se utilizan en absoluto en otros sistemas Linux.
/etc/systemd: contiene archivos asociados con la función systemd, para administrar
el proceso de arranque y los servicios del sistema. En particular, cuando ejecuta los comandos systemctl
para habilitar y deshabilitar servicios, los archivos que lo hacen posible se almacenan en subdirectorios del
directorio del sistema /etc/systemd. /etc/xinetd.d: contiene un conjunto de archivos, cada uno de los cuales
define un servicio de red bajo demanda que el demonio xinetd escucha en un puerto en particular. Cuando el
proceso del demonio xinetd recibe una solicitud de un servicio, utiliza la información de estos archivos para
determinar qué procesos del demonio deben comenzar a manejar la solicitud.
Los siguientes son algunos archivos de configuración interesantes en /etc:
alias: pueden contener listas de distribución utilizadas por los servicios de correo de Linux. (Este archivo se
encuentra en /etc/mail en Ubuntu cuando instala el paquete sendmail.) bashrc: Establece los valores
predeterminados de todo el sistema para los usuarios de shell bash. (Esto puede llamarse bash. bashrc en
algunas distribuciones de Linux).
181
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
crontab: establece tiempos para ejecutar tareas automatizadas y variables asociadas con la función cron (como
SHELL y PATH asociados con cron). csh.cshrc (o cshrc): Establece los valores predeterminados de todo el
sistema para los usuarios de csh (C shell). exportaciones: Contiene una lista de directorios locales que están
disponibles para ser compartidos por
computadoras que utilizan el sistema de archivos de red (NFS).
fstab: identifica los dispositivos para medios de almacenamiento comunes (disco duro, DVD, CDROM,
y así sucesivamente) y las ubicaciones donde se montan en el sistema Linux. El comando mount lo utiliza
para elegir qué sistemas de archivos montar cuando el sistema se inicia por primera vez.
grupo: identifica los nombres de grupo y los ID de grupo (GID) que están defi nidos en el sistema.
Los permisos de grupo en Linux están defi nidos por el segundo de tres conjuntos de bits rwx (lectura,
escritura, ejecución) asociados con cada archivo y directorio.
gshadow: contiene contraseñas ocultas para grupos. host.conf:
utilizado por aplicaciones más antiguas para establecer las ubicaciones en las que los nombres de dominio
(por ejemplo, redhat.com) se buscan en redes TCP/IP (como Internet). De forma predeterminada, se busca
en el archivo de hosts locales y, a continuación, cualquier entrada del servidor de nombres en
resolv.conf.
hostname: contiene el nombre de host del sistema local (a partir de RHEL 7 y los sistemas Fedora y Ubuntu
más recientes). hosts: contiene direcciones IP y nombres de host a los que puede acceder desde su
computadora.
(Por lo general, este archivo se usa solo para almacenar nombres de computadoras en su LAN o pequeña
red privada).
inittab: en sistemas Linux anteriores, contenía información que defi ne qué pro
Los gramos se inician y se detienen cuando Linux arranca, se apaga o pasa a diferentes estados intermedios.
Este archivo de configuración fue el primero que se leyó cuando Linux inició el proceso de inicio. Este archivo
ya no se usa en los sistemas Linux que admiten systemd.
mtab: contiene una lista de sistemas de archivos que están montados actualmente.
mtools.conf: contiene la configuración utilizada por las herramientas de DOS en
Linux. named.conf: contiene la configuración de DNS si está ejecutando su propio servidor DNS (bind o
paquete bind9).
nsswitch.conf: contiene la configuración del cambio de servicio de nombres, para identificar de dónde proviene
la información crítica del sistema (cuentas de usuario, asignaciones de nombre de host a dirección, etc.)
(host local o mediante servicios de red).
ntp.conf: incluye la información necesaria para ejecutar el protocolo de tiempo de red (NTP). passwd:
almacena información de cuenta para todos los usuarios válidos en el sistema local. También
incluye otra información, como el directorio de inicio y el shell predeterminado. (Rara vez incluye las propias
contraseñas de los usuarios, que normalmente se almacenan en el archivo /etc/shadow).
182
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
printcap: Contiene definiciones para las impresoras confi guradas para su computadora. (Si el archivo printcap
no existe, busque la información de la impresora en el directorio /etc/cups).
perfil: establece el entorno de todo el sistema y los programas de inicio para todos los usuarios. Este archivo se lee
cuando el usuario inicia sesión.
protocolos: Establece números de protocolo y nombres para una variedad de servicios de Internet. rpc: Defi
ne nombres y números de llamadas a procedimientos remotos. services: Defi ne los nombres de los
servicios TCP/IP y UDP y sus asignaciones de puertos. shadow: Contiene contraseñas encriptadas para
usuarios que están definidos en el archivo passwd.
(Esto se considera una forma más segura de almacenar contraseñas que la contraseña cifrada original en el
archivo passwd. El archivo passwd debe ser de lectura pública, mientras que el archivo shadow puede ser
ilegible para todos menos para el usuario root).
shells: enumera los intérpretes de línea de comandos de shell (bash, sh, csh, etc.)
disponibles en el sistema, así como sus ubicaciones.
sudoers: establece comandos que pueden ejecutar los usuarios, que de otro modo no tendrían permiso para
ejecutar el comando, mediante el comando sudo. En particular, este archivo se utiliza para otorgar permisos
de root a usuarios seleccionados.
rsyslog.conf: defi ne qué mensajes de registro recopila rsyslogd
daemon y en qué archivos están almacenados. (Normalmente, los mensajes de registro se almacenan en
archivos contenidos en el directorio /var/log). 8
xinetd.conf: contiene información de configuración simple utilizada por xinetd
proceso de demonio. Este archivo apunta principalmente al directorio /etc/xinetd.d para obtener información
sobre servicios individuales.
Otro directorio, /etc/X11, incluye subdirectorios que contienen archivos de configuración de todo el sistema utilizados
por X y diferentes administradores de ventanas X disponibles para Linux. El xorg. archivo conf (configura su computadora
y monitor para que sea utilizable con X) y los directorios de configuración que contienen archivos usados por xdm y xinit
para iniciar X están aquí.
Los directorios relacionados con los administradores de ventanas contienen archivos que incluyen los valores
predeterminados que obtendrá un usuario si ese usuario inicia uno de estos administradores de ventanas en su
sistema. El administrador de ventanas twm puede tener archivos de configuración de todo el sistema en estos directorios.
Archivos de registro administrativo y diario systemd Una
de las cosas que Linux hace bien es realizar un seguimiento de sí mismo. Esto es algo bueno cuando se considera cuánto
está pasando en un sistema operativo complejo.
A veces, está tratando de hacer que una nueva instalación funcione y falla sin darle la razón más vaga. Otras veces,
desea monitorear su sistema para ver si las personas están tratando de acceder a su computadora ilegalmente. En
cualquiera de esos casos, desea poder consultar los mensajes provenientes del kernel y los servicios que se ejecutan
en el sistema.
183
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Para los sistemas Linux que no utilizan la función systemd, la utilidad principal para registrar errores y
depurar mensajes es el demonio rsyslogd. (Algunos sistemas Linux más antiguos usan demonios sys logd
y syslogd). Aunque aún puede usar rsyslogd con sistemas systemd, systemd tiene su propio método de
recopilación y visualización de mensajes llamado systemd journal (comando journalctl).
Uso de journalctl para ver el diario de systemd El
comando principal para ver mensajes del diario de systemd es el comando journalctl. El proceso de arranque,
el kernel y todos los servicios administrados por systemd dirigen sus mensajes de estado y error al diario de
systemd.
Usando el comando journalctl, puede mostrar mensajes de diario de muchas maneras diferentes. Aquí
hay unos ejemplos:
# diarioctl #
diarioctl listboots | head 2 93bdb6164...
Sáb 20200104 21:07:28 EST—Sáb 20200104 21:19:37 EST
1 7336cb823... Dom 20200105 10:38:27 EST—Lun 20200106 09:29:09 EST
0 eaebac25f... Sáb 20200118 14:11:41 EST—Sáb 20200118 16:03:37 EST
# diarioctl b 488e152a3e2b4f6bb86be366c55264e7 # diarioctl k
En estos ejemplos, el comando journalctl sin opciones le permite recorrer todos los mensajes en el diario
systemd. Para enumerar los ID de inicio para cada vez que se inició el sistema, utilice la opción –listboots.
Para ver los mensajes asociados con una instancia de inicio en particular, use la opción b con una de las
instancias de inicio. Para ver solo los mensajes del kernel, use la opción k. Aquí hay algunos ejemplos más:
# journalctl _SYSTEMD_UNIT=sshd.servicio #
journalctl PRIORIDAD=0 # journalctl a f
Use las opciones _SYSTEMD_UNIT= para mostrar mensajes para servicios específi cos (aquí, el servicio
sshd) o para cualquier otro archivo de unidad systemd (como otros servicios o montajes). Para ver los
mensajes asociados con un nivel de registro de syslog en particular, establezca PRIORITY= en un valor de 0 a 7.
En este caso, solo se muestran mensajes de emergencia (0). Para seguir los mensajes a medida que
llegan, use la opción f; para mostrar todos los campos, use la opción a.
Gestión de mensajes de registro con rsyslogd
La función rsyslogd y su predecesor syslogd recopilan mensajes de registro y los dirigen a archivos de registro
oa hosts de registro remotos. El registro se realiza de acuerdo con la información del archivo /etc/rsyslog.conf.
Los mensajes generalmente se dirigen a archivos de registro que generalmente están en el /
184
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
var/log, pero también se pueden dirigir a hosts de registro para mayor seguridad. Aquí hay algunos archivos de
registro comunes:
boot.log: contiene mensajes de arranque sobre los servicios a medida que se inician.
mensajes: contiene muchos mensajes informativos generales sobre el sistema. seguro: contiene
mensajes relacionados con la seguridad, como la actividad de inicio de sesión o cualquier otro acto que
autentique a los usuarios.
Consulte el Capítulo 13,
"Descripción de la administración del servidor", para obtener información sobre la
configuración de la función rsyslogd.
Uso de otras cuentas administrativas
No escucha mucho acerca de iniciar sesión con otras cuentas de usuario administrativas (además de root)
en sistemas Linux. Era una práctica bastante común en los sistemas UNIX tener varios inicios de sesión
administrativos diferentes que permitían dividir las tareas administrativas entre varios usuarios. Por ejemplo, las
personas que se sientan cerca de una impresora podrían tener permisos lp para mover trabajos de impresión a
'
otra impresora si supieran que una impresora está no estoy trabajando
En cualquier caso, los inicios de sesión administrativos están disponibles con Linux; sin embargo, iniciar sesión
directamente como esos usuarios está deshabilitado de forma predeterminada. Las cuentas se mantienen
principalmente para proporcionar la propiedad de los archivos y procesos asociados con servicios particulares.
Cuando los procesos daemon se ejecutan con inicios de sesión administrativos independientes, tener uno de esos 8
procesos descifrado no le da al cracker permiso de root ni la capacidad de acceder a otros procesos y archivos.
Considere los siguientes ejemplos:
lp: el usuario posee cosas como el archivo de registro de impresión /var/log/cups y varios
impresión de archivos de caché y spool. El directorio de inicio de lp es /var/spool/lpd.
apache: el usuario puede configurar archivos y directorios de contenido en un servidor web Apache.
Se utiliza principalmente para ejecutar los procesos del servidor web (httpd) en los sistemas
RHEL y Fedora, mientras que el usuario de wwwdata ejecuta el servicio Apache (apache2) en los
sistemas Ubuntu. avahi: el usuario ejecuta el proceso daemon avahi para proporcionar servicios
zeroconf en
Tu red.
chrony: el usuario ejecuta el demonio chronyd, que se utiliza para mantener comunicaciones precisas.
relojes de computadora.
postfix: el usuario posee varios directorios y archivos de cola del servidor de correo. El usuario ejecuta el
procesos daemon utilizados para proporcionar el servicio postfi x (maestro).
bin: el usuario posee muchos comandos en /bin en los sistemas UNIX tradicionales. Este no es el
caso en algunos sistemas Linux (como Ubuntu, Fedora y Gentoo) porque la raíz posee la mayoría de los
archivos ejecutables. El directorio de inicio de bin es /bin.
185
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
noticias: el usuario puede administrar los servicios de noticias de Internet, dependiendo de cómo
establezca el permiso para /var/spool/news y otros recursos relacionados con las noticias. El directorio
principal de noticias es /etc/news.
rpc: el usuario ejecuta el daemon de llamadas a procedimientos remotos (rpcbind), que se utiliza para
recibir llamadas de servicios en el sistema host. El servicio NFS utiliza el servicio RPC.
De forma predeterminada, los inicios de sesión administrativos de la lista anterior están deshabilitados. Deberá
cambiar el shell predeterminado de su configuración actual (generalmente /sbin/nologin o /bin/false) a un shell
real (generalmente /bin/bash) para poder iniciar sesión como estos usuarios. Sin embargo, como se mencionó
anteriormente, en realidad no están destinados a inicios de sesión interactivos.
Comprobación y configuración del hardware
En un mundo perfecto, después de instalar y arrancar Linux, todo su hardware se detecta y está disponible
para acceder. Aunque los sistemas Linux se han vuelto bastante buenos para detectar hardware, a veces debe
tomar medidas especiales para que el hardware de su computadora funcione. Además, el creciente uso de
dispositivos USB extraíbles (CD, DVD, unidades flash, cámaras digitales y discos duros extraíbles) ha hecho
que sea importante que Linux haga lo siguiente:
■ Administre eficientemente el hardware que va y viene ■ Mire
la misma pieza de hardware de diferentes maneras. (Por ejemplo, debe
ser capaz de ver una impresora como una máquina de fax, un escáner y un dispositivo de almacenamiento, así como
una impresora).
Las características del kernel de Linux agregadas en los últimos años han hecho posible cambiar
drásticamente la forma en que se detectan y administran los dispositivos de hardware. El subsistema Udev
nombra y crea dispositivos dinámicamente a medida que el hardware va y viene.
'
Si esto suena confuso, no se preocupe. Es más Está diseñado para hacer que su vida como usuario de Linux sea mucho más
fácil. El resultado de las funciones integradas en el kernel es que el manejo de dispositivos en Linux se
ha vuelto más automático y flexible:
Más automático Para el hardware más común, cuando un dispositivo de hardware se conecta o
desconecta, se detecta e identifica automáticamente. Se agregan interfaces para acceder al hardware
para que sea accesible para Linux. Luego, el hecho de que el hardware está presente (o eliminado) se
pasa al nivel de usuario, donde las aplicaciones que escuchan cambios en el hardware están listas
para montar el hardware y/o iniciar una aplicación (como un visor de imágenes o un reproductor de
música).
Más fl exible Si no le gusta lo que sucede automáticamente cuando se conecta o desconecta un
elemento de hardware, puede cambiarlo. Por ejemplo, las funciones integradas en los escritorios
GNOME y KDE le permiten elegir qué sucede cuando se inserta un CD de música o un DVD de datos,
o cuando se conecta una cámara digital. Si prefiere que se inicie un programa diferente para manejarlo,
puede hacer ese cambio fácilmente.
186
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
Las siguientes secciones cubren varios temas relacionados con hacer que su hardware funcione correctamente
en Linux. Primero, describe cómo verificar la información sobre los componentes de hardware de su sistema.
Luego cubre cómo configurar Linux para manejar medios removibles.
Finalmente, describe cómo usar herramientas para cargar y trabajar manualmente con controladores para
hardware que no se detecta y carga correctamente.
Comprobación de su hardware Cuando
su sistema arranca, el núcleo detecta su hardware y carga los controladores que permiten que Linux
funcione con ese hardware. Debido a que los mensajes sobre la detección de hardware se desplazan
rápidamente fuera de la pantalla cuando arranca, para ver los posibles mensajes de problemas, debe volver
a mostrar esos mensajes después de que se inicie el sistema.
Hay algunas formas de ver los mensajes de arranque del kernel después de que aparece Linux. Cualquier
usuario puede ejecutar el comando dmesg para ver qué hardware se detectó y qué controladores cargó el
kernel en el momento del arranque. A medida que el kernel genera nuevos mensajes, esos mensajes también
están disponibles para el comando dmesg.
Una segunda forma de ver los mensajes de inicio es el comando journalctl para mostrar los mensajes
asociados con una instancia de inicio en particular (como se mostró anteriormente en este capítulo).
NOTA
Una vez que su sistema está funcionando, muchos mensajes del kernel se envían al archivo /var/log/messages. Entonces,
por ejemplo, si desea ver qué sucede cuando conecta una unidad USB, puede escribir tail f /var/log/messages y ver 8
cómo se crean los dispositivos y los puntos de montaje. Del mismo modo, puede usar el comando journalctl f para seguir
los mensajes a medida que ingresan al diario systemd.
El siguiente es un ejemplo de algunos resultados del comando dmesg que se recortaron para mostrar
información interesante:
$ mensaje | menos
[ 0.000000] Linux versión 5.0.9301.fc30.x86_64
(mockbuild@bkernel04.phx2.fedoraproject.org) (gcc versión 9.0.1
20190312
(Red Hat 9.0.10.10) (GCC)) #1 SMP martes 23 de abril 23:57:35 UTC 2019
[ 0.000000] Línea de comando:
BOOT_IMAGE=(hd0,msdos1)/vmlinuz5.0.9301.fc30.x86_64 root=/dev/mapper/
fedora_localhostliveroot ro resume=/dev/mapper/fedora_localhostlive intercambiar
rd.lvm.lv=fedora_localhostlive/root rd.lvm.lv=fedora_localhostlive/swap rhgb tranquilo
...
S31B1102 DISCO USB 1100 PQ: 0 ANSI: 0 CCS
[79.177466] sd 9:0:0:0: scsi adjunto genérico sg2 tipo 0
187
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
[79.177854] sd 9:0:0:0: [sdb]
8343552 Bloques lógicos de 512 bytes: (4,27 GB/3,97 GiB) [79.178593] sd 9:0:0:0: [sdb]
Write Protect está desactivado
A partir de este resultado, primero verá la versión del kernel de Linux, seguida de las opciones de la línea de
comandos del kernel. Las últimas líneas reflejan una unidad USB de 4GB conectada a la computadora.
Si algo sale mal al detectar su hardware o al cargar los controladores, puede consultar esta
información para ver el nombre y el número de modelo del hardware que buscar
no funciona. Luego
o puede
en foros
documentación de Linux para tratar de resolver el problema. Una vez que su sistema está en
funcionamiento, algunos otros comandos le permiten ver información detallada sobre su computadora
'
conectada hardware
a ellos. Aquí
El comando lspci enumera los buses PCI en su computadora y dispositivos
'sa fragmento de salida:
$ lspci
00:00.0 Puente de host: Intel Corporation
5000X Chipset Memory ControllerHub 00:02.0 Puente PCI:
Intel Corporation 5000 Series Chipset
Puerto PCI Express x4 2
00:1b.0 Dispositivo de audio: Intel Corporation 631xESB/632xESB
Controlador de audio de alta definición (rev. 09) 00:1d.0 Controlador
USB: Intel Corporation 631xESB/632xESB/3100
Conjunto de chips UHCI USBController#1 (rev 09)
07:00.0 Controlador compatible con VGA: nVidia Corporation NV44 0c:02.0 Controlador Ethernet: Intel
Corporation 82541PI Controlador Gigabit Ethernet (rev. 05)
El puente host conecta el bus local a los demás componentes del puente PCI. Reduje la salida
para mostrar información sobre los diferentes dispositivos en el sistema que manejan varias
funciones: sonido (dispositivo de audio), unidades flash y otros dispositivos USB (controlador
USB), la pantalla de video (controlador compatible con VGA) y red cableada tarjetas (controlador de
red Ether). Si tiene problemas para que alguno de estos dispositivos funcione, anotar los nombres y
números de modelo le da algo a Google.
Para obtener una salida más detallada de lspci, agregue una o más opciones v. Por ejemplo, al
usar lspci vvv, recibí información sobre mi controlador Ethernet, incluida la latencia, las capacidades
del controlador y el controlador de Linux (e1000) que se usa para el dispositivo.
Si está específicamente interesado en dispositivos USB, pruebe el comando lsusb. De forma
'
predeterminada, lsusb enumera información sobre la computadora conectada
s concentradores a cla
USB junto ccomputadora
on ualquier dispositivo USB con
'
puertos USB:
$ lsusb Bus
001 Dispositivo 001: ID 1d6b:0002 Concentrador raíz Linux Foundation 2.0 Bus 002 Dispositivo 001: ID
1d6b:0001 Concentrador raíz Linux Foundation 1.1
Bus 003 Dispositivo 001: ID 1d6b:0001 Concentrador raíz Linux Foundation 1.1 Bus 004 Dispositivo 001: ID
1d6b:0001 Concentrador raíz Linux Foundation 1.1
Bus 005 Dispositivo 001: ID 1d6b:0001 Concentrador raíz Linux Foundation 1.1 Bus 002 Dispositivo 002: ID
413c:2105 Dell Computer Corp.
Teclado modelo L100
188
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
Bus 002 Dispositivo 004: ID 413c:3012 Dell Computer Corp.
Ratón con rueda óptica Bus 001
Dispositivo 005: ID 090c:1000 Silicon Motion, Inc. Taiwán 64 MB QDI U2 DISK
En el resultado anterior, puede ver el modelo de un teclado, un mouse y una unidad flash USB
conectados a la computadora. Al igual que con lspci, puede agregar una o más opciones v para ver
más detalles.
Para ver detalles sobre su procesador, ejecute el comando lscpu. Ese comando da información básica
'
sobre su computadora procesadores s.
$ lscpu
Arquitectura: x86_64
CPU en modo(s): 32 bits, 64 bits 4
CPU(s):
Lista de CPU(s) en línea: 03
Hilo(s) por núcleo: 1
Núcleo(s) por socket: 4
...
A partir del muestreo de salida de lscpu, puede ver que este es un sistema de 64 bits (x8664), puede
operar en modos de 32 o 64 bits y hay cuatro CPU.
Administración de hardware extraíble Los
sistemas Linux, como Red Hat Enterprise Linux, Fedora y otros, que admiten entornos de escritorio
8
GNOME completos, incluyen herramientas gráficas simples para configurar lo que sucede cuando conecta
dispositivos extraíbles populares a la computadora. Entonces, con un escritorio GNOME en ejecución,
simplemente conecte un dispositivo USB o inserte un CD o DVD, y aparecerá una ventana para tratar con
ese dispositivo.
Aunque diferentes entornos de escritorio comparten muchos de los mismos mecanismos subyacentes (en
particular, Udev) para detectar y nombrar hardware extraíble, ofrecen diferentes herramientas para
configurar cómo se montan o usan. Udev (utilizando el demonio udevd) crea y elimina dispositivos
(directorio /dev) a medida que se agrega y elimina hardware de la computadora.
Sin embargo, las configuraciones que son de interés para alguien que usa un sistema Linux de escritorio se pueden
configurar con herramientas de escritorio fáciles de usar.
El administrador de archivos Nautilus que se usa con el escritorio GNOME le permite defi nir lo que sucede
cuando conecta dispositivos extraíbles o inserta medios extraíbles en la computadora desde la ventana
Preferencias de administración de archivos. Las descripciones de esta sección se basan en GNOME 3.32
en Fedora 30.
Desde el escritorio de GNOME 3.32, seleccione Actividades y escriba Medios extraíbles. A continuación, seleccione la
entrada Configuración de medios extraíbles.
Los siguientes ajustes están disponibles en la ventana Medios extraíbles. Estas configuraciones se
relacionan con cómo se manejan los medios extraíbles cuando se insertan o conectan. En la mayoría de
los casos, se le pregunta cómo manejar un medio que está insertado o conectado.
189
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
CD de audio: cuando se inserta un CD de audio, puede elegir que se le pregunte qué hacer (predeterminado), no hacer
nada, abrir el contenido en una ventana de carpeta o seleccionar entre varios reproductores de CD de audio para
iniciar y reproducir el contenido. Rhythmbox (reproductor de música), Audio CD Extractor (grabadora de CD) y
Brasero (grabadora de CD) se encuentran entre las opciones que tiene para manejar un CD de audio insertado.
DVD de video: cuando se inserta un DVD de video comercial, se le preguntará qué hacer con ese DVD. Puede cambiar
ese valor predeterminado para iniciar Totem (videos), Brasero (grabadora de DVD) u otro reproductor multimedia
que haya instalado (como MPlayer).
Reproductor de música: cuando el medio insertado contiene archivos de audio, se le preguntará qué hacer. Puede
seleccionar que Rhythmbox o algún otro reproductor de música comience a reproducir los archivos seleccionando
ese reproductor en este cuadro.
Fotos: cuando los medios insertados (como una tarjeta de memoria de una cámara digital) contienen imágenes
digitales, se le preguntará qué hacer con esas imágenes. Puede seleccionar no hacer nada, o puede seleccionar
que las imágenes se abran en el visor de imágenes Shotwell (la aplicación predeterminada para ver imágenes en
el escritorio GNOME) u otro administrador de fotos instalado.
Software: cuando el medio insertado contiene software instalable, la ventana Software se abre de forma
predeterminada. Para cambiar ese comportamiento (preguntar qué hacer, no hacer nada o abrir el contenido
multimedia en una carpeta), puede seleccionar la casilla de esas opciones.
Otros medios: seleccione el cuadro Tipo debajo del encabezado Otros medios para seleccionar cómo se manejan
los medios de uso menos común. Por ejemplo, puede seleccionar qué acciones se toman para manejar DVD
de audio o discos Bluray, CD o DVD vírgenes. Puede seleccionar qué aplicaciones iniciar para discos de video Blu
ray, lectores de libros electrónicos y CD de imágenes.
Tenga en cuenta que las configuraciones descritas aquí solo están vigentes para el usuario que está conectado actualmente.
Si varios usuarios tienen cuentas de inicio de sesión, cada uno puede tener su propia forma de manejar los medios extraíbles.
NOTA
El reproductor de películas Totem no reproduce películas en DVD a menos que agregue software adicional para descifrar el DVD. Debe investigar
los problemas legales y otras opciones de reproducción de películas si desea reproducir películas en DVD comerciales desde Linux.
Las opciones para conectar unidades flash USB normales o discos duros no aparecen en esta ventana. Sin
embargo, si conecta una de esas unidades a su computadora, los dispositivos se crean automáticamente cuando los
conecta (llamados /dev/sda, /dev/sdb, etc.). Cualquier sistema de archivos que se encuentre en esos dispositivos se
monta automáticamente en /run/media/username, y se le preguntará si desea abrir una ventana de Nautilus para ver los
archivos en esos dispositivos.
Esto se hace automáticamente, por lo que no tiene que hacer ninguna configuración especial para que esto suceda.
Cuando haya terminado con una unidad USB, haga clic con el botón derecho en el nombre del dispositivo en la ventana
del administrador de archivos de Nautilus y seleccione Quitar unidad de forma segura. Esta acción desmonta la unidad y
190
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
elimina el punto de montaje en el directorio /run/media/username. Después de eso, puede desconectar
con seguridad la unidad USB de su computadora.
Trabajar con módulos cargables Si ha agregado
hardware a su computadora que no se detecta correctamente, es posible que deba cargar un módulo
manualmente para ese hardware. Linux viene con un conjunto de comandos para cargar, descargar y
obtener información sobre los módulos de hardware.
Los módulos del núcleo se instalan en los subdirectorios /lib/modules/. El nombre de cada subdirectorio
se basa en el número de versión del kernel. Por ejemplo, si el kernel fuera el directorio 64
_ 64, /lib/modules/5.3.8200.fc30.x86 _ 5.3.8200.fc30.x86
contendría controladores para ese núcleo. Los módulos en esos directorios se pueden cargar y descargar
según se necesiten.
Los comandos para enumerar, cargar, descargar y obtener información sobre los módulos están disponibles
en Linux. Las siguientes secciones describen cómo usar esos comandos.
Listado de módulos
cargados Para ver qué módulos están actualmente cargados en el núcleo en ejecución de su computadora,
use el comando lsmod. Considere el siguiente ejemplo:
#lsmod
Módulo Tamaño utilizado por
gordo 17411 1 8
gordo 65059 1 grasa
eso 23208 0
fusible de 65065 2 que
almacenamiento usb 91446 3
ipt_MASQUERADE 12880 3
xt_CHECKSUM 12549 1
nfsv3 39043 1
rpcsec_gss_krb5 31477 0
nfsv4 466956 0
dns_resolver 13096 1 nfsv4
nfs 233966 3 nfsv3, nfsv4
.
.
.
i2c_algo_bit 13257 1 nuevo
drm_kms_helper 58041 1 nuevo
ttm 80772 1 nuevo
drm 291361 7 ttm,drm_kms_helper,nouveau
ata_generic 12923 0
pata_acpi 13053 0
e1000 137260 0
i2c_core 55486 5 drm,i2c_i801,drm_kms_helper
191
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Este resultado muestra una variedad de módulos que se han cargado en un sistema Linux, incluido uno para una tarjeta de
interfaz de red (e1000).
Para encontrar información sobre cualquiera de los módulos cargados, use el comando modinfo. Por ejemplo, puede
ingresar lo siguiente:
# /sbin/modinfod e1000
Controlador de red Intel(R) PRO/1000
No todos los módulos tienen descripciones disponibles y, si no hay nada disponible, no se devuelven datos. En
este caso, sin embargo, el módulo e1000 se describe como un módulo de controlador de red Intel(R) PRO/1000.
También puede usar la opción a para ver el autor del módulo o n para ver el archivo de objeto que representa el módulo.
La información del autor suele tener la dirección de correo electrónico del creador del controlador, por lo que puede
ponerse en contacto con el autor si tiene problemas o preguntas al respecto.
Cargando módulos
Puede cargar cualquier módulo (como usuario root) que haya sido compilado e instalado (en un subdirectorio /lib/
modules) en su kernel en ejecución usando el comando modprobe.
Una razón común para cargar un módulo es usar una función temporalmente (como cargar un módulo para admitir un
sistema de archivos especial en algún medio extraíble al que desea acceder).
Otra razón para cargar un módulo es identificar ese módulo como uno que será utilizado por una pieza particular de
hardware que no se pudo detectar automáticamente.
Aquí hay un ejemplo del comando modprobe que se usa para cargar el módulo parport, que proporciona las funciones
principales para compartir puertos paralelos con múltiples dispositivos:
# puerto modprobe
Después de cargar parport, puede cargar el módulo parport_pc para defi nir los puertos de estilo PC disponibles a
través de la interfaz. El módulo parport_pc le permite defi nir opcionalmente las direcciones y los números de IRQ asociados
con cada dispositivo que comparte el puerto paralelo, como en el siguiente ejemplo:
# modprobe parport_pc io=0x3bc irq=auto
En este ejemplo, se identifica un dispositivo con una dirección de 0x3bc y se detecta automáticamente la IRQ del dispositivo.
El comando modprobe carga módulos temporalmente; desaparecen en el próximo reinicio.
Para agregar el módulo a su sistema de forma permanente, agregue la línea de comando modprobe a uno de los scripts de
inicio que se ejecutan en el momento del arranque.
Eliminación de módulos
Utilice el comando rmmod para eliminar un módulo de un kernel en ejecución. Por ejemplo, para quitar el módulo
parport _ pc del kernel actual, escriba lo siguiente:
# rmmod parport_pc
192
Machine Translated by Google
Capítulo 8: Administración del sistema de aprendizaje
Si no está ocupado actualmente, el módulo parport_pc se elimina del kernel en ejecución.
Si está ocupado, intente eliminar cualquier proceso que pueda estar usando el dispositivo. Luego ejecute
rmmod nuevamente. A veces, el módulo que está tratando de eliminar depende de otros módulos que
puedan estar cargados. Por ejemplo, el módulo usbcore no se puede descargar porque es un módulo
integrado:
# rmmod usbcore rmmod:
ERROR: El módulo usbcore está incorporado.
En lugar de usar rmmod para eliminar módulos, puede usar el comando modprobe r.
Con modprobe r, en lugar de simplemente eliminar el módulo que solicita, también puede eliminar los módulos
dependientes que no están siendo utilizados por otros módulos.
Resumen
Muchas características de Linux, especialmente aquellas que potencialmente pueden dañar el sistema o afectar
a otros usuarios, requieren que obtenga privilegios de root. Este capítulo describe diferentes formas de obtener
privilegios de root: inicio de sesión directo, comando su o comando sudo. También cubre algunas de las
responsabilidades clave de un administrador de sistemas y componentes (archivos de configuración,
herramientas basadas en navegador, etc.) que son fundamentales para el trabajo de un administrador
sistemas. de
El siguiente capítulo describe cómo instalar un sistema Linux. Los enfoques para instalar Linux que se cubren
en ese capítulo incluyen cómo instalar desde medios en vivo y desde medios de instalación.
8
Ejercicios
Utilice estos ejercicios para evaluar su conocimiento de la administración del sistema y para explorar
información sobre el hardware de su sistema. Estas tareas asumen que está ejecutando un sistema Fedora o
Red Hat Enterprise Linux (aunque algunas tareas también funcionan en otros sistemas Linux). Si está
atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo hay varias
formas de completar una tarea).
1. Desde un shell como usuario root (o usando sudo), habilite Cockpit ( cockpit.socket) usando el comando
systemctl.
2. Abra su navegador web en la interfaz Cockpit (9090) de su sistema.
3. Busque todos los archivos en el directorio /var/spool que sean propiedad de usuarios que no sean root
y muestre una lista larga de ellos.
4. Conviértase en usuario root usando el comando su . Para probar que tienes root privi
lege, cree un archivo vacío o de texto sin formato llamado /mnt/test.txt. Salga del shell cuando haya
terminado. Si está usando Ubuntu, primero debe configurar su contraseña de root (sudo passwd root).
193
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
5. Inicie sesión como usuario normal y conviértase en root usando su . Edite el /etc/sudo
ers para permitir que su cuenta de usuario normal tenga privilegios completos de root a través del
comando sudo.
6. Como usuario al que acaba de otorgar el privilegio sudoers, use el comando sudo para
cree un archivo llamado /mnt/test2.txt. Verifique que el archivo esté allí y sea propiedad del usuario raíz.
7. Ejecute el comando journalctl f y conecte una unidad USB a un puerto USB de su computadora.
Si no se monta automáticamente,
dispositivo móntelo en /mnt/test.
y retírelo, Eon
y continúe una segunda
bservando la stalida
erminal,
de jd esmonte
f.el
ournalctl
8. Ejecute un comando para ver qué dispositivos USB están conectados a su computadora.
9. Suponga que agregó una tarjeta de TV a su computadora, pero el módulo necesario para usarla (bttv)
no se detectó ni cargó correctamente. Cargue el módulo bttv usted mismo y luego observe si se
cargó. ¿Se cargaron otros módulos con él?
10. Retire el módulo bttv junto con cualquier otro módulo que se haya cargado con él.
Enumere sus módulos para asegurarse de que esto se haya hecho.
194
Machine Translated by Google
CAPÍTULO S
Instalación de Linux
EN ESTE CAPÍTULO
Elegir un método de instalación
Instalación de un sistema de arranque único o múltiple
Realizar una instalación de medios en vivo de Fedora
Instalación de Red Hat Enterprise Linux
Comprender las instalaciones basadas en la nube
Particionando el disco para la instalación
Comprender el cargador de arranque GRUB
I Instalar Linux se ha convertido en algo bastante fácil de hacer, si está comenzando con una computadora que
cumple con las especificaciones (disco duro, RAM, CPU, etc.) y no le importa borrar por completo su disco duro.
Con la computación en la nube y la virtualización, la instalación puede ser aún más sencilla. Le permite
omitir la instalación tradicional y activar o desactivar un sistema Linux en unos minutos al agregar metadatos a
imágenes preconstruidas.
Este capítulo comienza con una instalación simple en una computadora física desde Live media y
continúa con temas de instalación más complejos.
Para facilitarle el tema de la instalación de Linux, cubro tres formas diferentes de instalar Linux y lo guio
a través de cada proceso:
Instalación desde medios Live Un ISO de medios Live de Linux es una imagen única de solo lectura que
contiene todo lo que necesita para iniciar un sistema operativo Linux. Esa imagen se puede grabar en un
DVD o unidad USB y arrancar desde ese medio. Con Live media, puede ignorar totalmente su computadora,
'
está ejecutando edl
disco sistema
uro; Live Linux,
de hecho, algunos
puede ISO
ejecutar de Live
medios en m edia
vivo le
en upn
ermiten
iniciar
sistema una dauro.
sin disco plicación
que
Después
instala permanentemente el contenido del medio Live en su disco duro. El primer procedimiento de
instalación de este capítulo le muestra cómo instalar Linux de forma permanente desde un ISO multimedia
de Fedora Live.
195
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Instalación desde un DVD de instalación Un DVD de instalación, disponible con Fedora, RHEL, Ubuntu
y otras distribuciones de Linux, ofrece formas más flexibles de instalar Linux. En particular, en lugar
de simplemente copiar todo el contenido multimedia de Live en su computadora, con un DVD de
instalación puede elegir exactamente qué paquete de software desea. El segundo procedimiento de
instalación que muestro en este capítulo lo guiará a través de un proceso de instalación desde un
DVD de instalación de Red Hat Enterprise Linux 8.
Instalación en la empresa Sentarse frente a una computadora y hacer clic en las preguntas de instalación
no es un inconveniente si está instalando un solo sistema.
Pero, ¿qué sucede si necesita instalar docenas o cientos de sistemas Linux? ¿Qué sucede si desea
instalar esos sistemas de formas particulares que deben repetirse en múltiples instalaciones? Más
adelante en este capítulo, describo formas eficientes de instalar múltiples sistemas Linux utilizando
funciones de instalación en red y archivos kick start.
Un cuarto método de instalación que no se trata en este capítulo es instalar Linux en un
entorno de nube (como Amazon Web Services) o una máquina virtual en un host de virtualización,
como Virtual Box o un sistema VMware. El Capítulo 27 y el Capítulo 28 describen formas de instalar
o implementar una máquina virtual en un host KVM de Linux o en un entorno de nube.
Para probar conmigo los procedimientos de este capítulo, debe tener una computadora frente a
usted que no le importe
tenga
borrar
otro
por
sistema
completo.
operativo
Como instalado
alternativa,
(como
puede
Windows),
usar una
sciempre
omputadora
que haya
que
suficiente espacio libre en disco disponible fuera de ese sistema operativo. Describo el
procedimiento y el riesgo de pérdida de datos, si decide configurar uno de estos arreglos de
"arranque dual" (Linux y Windows).
Elegir una computadora
Puede obtener una distribución de Linux que se ejecuta en dispositivos portátiles o en una PC vieja en su
armario con tan solo 24 MB de RAM y un procesador 486. Sin embargo, para tener una buena experiencia de
PC de escritorio con Linux, debe considerar lo que quiere poder hacer con Linux cuando elija su computadora.
Asegúrese de considerar las especificaciones básicas que necesita para que una computadora tipo PC ejecute
las distribuciones Fedora y Red Hat Enterprise Linux. Debido a que Fedora se usa como base para las versiones
de Red Hat Enterprise Linux, los requisitos de hardware son similares para el hardware básico de escritorio y
servidor para esas dos distribuciones.
Procesador Un procesador Pentium de 1 GHz es el mínimo para una instalación de GUI. Para la mayoría
de las aplicaciones, un procesador de 32 bits está bien (x86). Sin embargo, si desea configurar el
sistema para realizar la virtualización, necesita un procesador de 64 bits (x86_64).
196
Machine Translated by Google
Capítulo 9: Instalación de Linux
NOTA
Si tiene una computadora menos potente que el mínimo descrito aquí, considere usar una distribución ligera de Linux. Las
distribuciones ligeras de Ubuntu incluyen Peppermint OS ( https://peppermintos.com/ ) y Lubuntu ( https://lubuntu.net/ ). Para una
distribución ligera basada en Fedora, pruebe el escritorio LXDE ( https://spins.fedoraproject.org/lxde/ ). Para una distribución de
Linux que requiera la menor cantidad de recursos, puede probar Tiny Core Linux ( http://tinycorelinux.net/ ).
RAM Fedora recomienda al menos 1 GB de RAM, pero al menos 2 GB o 3 GB serían mucho mejores.
En mi escritorio RHEL, estoy ejecutando un navegador web, un procesador de textos y un lector de
'
correo, y Estoy consumiendo más de 2 GB de RAM.
Unidad de DVD o USB Debe poder iniciar el proceso de instalación desde una unidad de DVD o USB.
En lanzamientos recientes, el ISO de medios en vivo de Fedora se ha vuelto demasiado grande
'
para caber en un CD, por lo que debe grabarlo en un DVD o unidad USB. Si t
pauede
rrancar
od uesde
na uunidad
n DVD
USB, hay formas de iniciar la instalación desde un disco duro o mediante una instalación PXE.
Una vez que se inicia el proceso de instalación, a veces se puede recuperar más software desde
diferentes ubicaciones (a través de la red o desde el disco duro, por ejemplo).
NOTA
PXE (pronunciado pixie) significa Entorno de ejecución previo al arranque (PXE). Puede iniciar una computadora cliente desde una
tarjeta de interfaz de red (NIC) que esté habilitada para PXE. Si un servidor de arranque PXE está disponible en la red, puede
proporcionar todo lo que una computadora cliente necesita para arrancar. Lo que arranca puede ser un instalador. Entonces, con un arranque
PXE, es posible realizar una instalación completa de Linux sin un CD, DVD o cualquier otro medio físico.
Tarjeta de red Necesita hardware de red con cable o inalámbrico para poder agregar más
software u obtener actualizaciones de software. Fedora ofrece repositorios de software gratuitos si puede
conectarse a Internet. Para RHEL, las actualizaciones están disponibles como parte del precio de suscripción.
Espacio en disco Fedora recomienda al menos 20 GB de espacio en disco para una instalación de
escritorio promedio, aunque las instalaciones pueden oscilar (según los paquetes que elija
9
instalar) desde 600 MB (para un servidor mínimo sin instalación de GUI) hasta 7 GB (para instalar
todos los paquetes desde el DVD de instalación). Considere la cantidad de datos que necesita
almacenar. Aunque los documentos pueden ocupar muy poco espacio, los videos pueden consumir
grandes cantidades de espacio. (En comparación, puede instalar Tiny Core Linux en el disco con
solo unos 16 MB de espacio en disco, que incluye una GUI).
Funciones especiales de hardware Algunas funciones de Linux requieren funciones especiales de
hardware. Por ejemplo, para usar Fedora o RHEL como host de virtualización mediante KVM, la
computadora debe tener un procesador que admita la virtualización. Estos incluyen chips AMDV o IntelVT.
'
Si Si no está seguro del hardware de su computadora, hay algunas formas de verificar lo que está
usted tiene. Si está ejecutando Windows, la ventana Propiedades del sistema puede mostrarle el
procesador que tiene, así como la cantidad de RAM que está Live
instalada.
CD iniciado,
Como abra
lternativa,
un shell
con
y eFscriba
edora
dmesg | less para ver una lista de hardware a medida que se detecta en su sistema.
197
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Con su hardware instalado, puede optar por instalar Linux desde un Live CD o desde un medio de
instalación, como se describe en las siguientes secciones.
Instalar Fedora desde Live Media
En el Capítulo
2, aprendió cómo obtener e iniciar Linux Live media. Este capítulo lo guiará a través de
un proceso de instalación de un DVD en vivo de Fedora para que se instale permanentemente en su
disco duro.
La simplicidad es la principal ventaja de instalar desde Live media. Esencialmente, solo está copiando
el kernel, las aplicaciones y la configuración de la imagen ISO al disco duro. Hay menos decisiones
que debe tomar para realizar este tipo de instalación, pero tampoco puede elegir exactamente qué
paquetes de software instalar. Después de la instalación, puede agregar y eliminar paquetes como desee.
Las primeras decisiones que debe tomar sobre la instalación de Live Media incluyen dónde desea
instalar el sistema y si desea conservar los sistemas operativos existentes cuando finalice la instalación:
Computadora de arranque único La forma más fácil de instalar Linux es no tener que preocuparse
por otros sistemas operativos o datos en la computadora y hacer que Linux reemplace todo.
Cuando haya terminado, la computadora arranca directamente en Fedora.
Computadora de arranque múltiple Si ya tiene Windows instalado en una computadora y no quiere
borrarlo, puede instalar Fedora junto con Windows en ese sistema.
Luego, en el momento del arranque, puede elegir qué sistema operativo iniciar. Para poder
instalar Fedora en un sistema con otro sistema operativo instalado, debe tener espacio de
disco adicional disponible (fuera de la partición de Windows) o poder reducir el tamaño del
sistema de Windows para obtener suficiente espacio libre para instalar Fedora. Debido a que
las computadoras de arranque múltiple son tediosas de configurar y corren el riesgo de dañar su
sistema instalado, recomiendo instalar Linux en una computadora separada, incluso una vieja
usada, o en una máquina virtual, en lugar de arranque múltiple.
Sistema completo o virtual La instalación resultante de Fedora se puede instalar para arrancar
directamente desde el hardware de la computadora o desde dentro de un sistema operativo
existente en la computadora. Si tiene una computadora que se ejecuta como host virtual,
puede instalar Fedora en ese sistema como invitado virtual. El software de host de virtualización
incluye KVM, Xen y VirtualBox (para sistemas Linux y UNIX, así como Windows y Mac OS),
HyperV (para sistemas Microsoft) y VMware (para Linux, Windows y Mac OS). Puede usar la
imagen ISO de Fedora Live desde el disco o grabarla en un DVD para iniciar una instalación
desde el host del hipervisor elegido. (El Capítulo 27, "Uso de Linux para computación
describe ceómo
n la nube",
configurar un host de virtualización KVM).
El siguiente procedimiento lo guiará a través del proceso de instalación de Fedora Live ISO descrito
en el Capítulo 2 en su computadora local. Debido a que la instalación de Fedora 30 es muy similar a
la instalación de Red Hat Enterprise Linux 8 descrita más adelante en este capítulo, puede consultar
ese procedimiento si desea ir más allá de las selecciones simples que se muestran aquí (particularmente
en el área de configuración de almacenamiento) .
198
Machine Translated by Google
Capítulo 9: Instalación de Linux
PRECAUCIÓN Antes de comenzar el procedimiento, asegúrese de realizar copias de seguridad de todos los datos del equipo
que aún desee conservar. Aunque puede optar por no borrar las particiones de disco seleccionadas (siempre que haya
suficiente espacio disponible en otras particiones), siempre existe el riesgo de que se pierdan datos cuando manipula particiones
de disco. Además, desconecte las unidades USB que haya conectado a su computadora porque podrían sobrescribirse.
1. Consigue Fedora. Elija la imagen de medios de Fedora Live que desea usar, descárguela
a su sistema local y grábela en un medio apropiado. Consulte el Apéndice A para obtener
información sobre cómo obtener los medios Fedora Live y grabarlos en un DVD o unidad USB.
2. Inicie la imagen en vivo. Inserte el DVD o la unidad USB. Cuando aparezca la pantalla del
BIOS, busque un mensaje que le indique que presione una tecla de función particular
(como F12) para interrumpir el proceso de inicio y seleccione el medio de inicio. Seleccione
la unidad de DVD o USB, según la que tenga, y Fedora debería aparecer y mostrar la
pantalla de inicio. Cuando vea la pantalla de inicio, seleccione Iniciar FedoraWorkstationLive.
3. Inicie la instalación. Cuando aparezca la pantalla Bienvenido a Fedora, coloque su
Pase el mouse sobre el área Instalar en disco duro y selecciónelo. La Figura 9.1 muestra un
ejemplo de la selección Instalar en disco duro en el medio Fedora Live.
FIGURA 9.1
Inicie el proceso de instalación desde Live media.
199
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
4. Seleccione el idioma. Cuando se le solicite, elija el tipo de idioma que más le convenga (como inglés de EE. UU.)
y seleccione Siguiente. Debería ver la pantalla Resumen de la instalación, como se muestra en la Figura 9.2.
FIGURA 9.2
Seleccione las opciones de configuración en la pantalla Resumen de instalación.
5. Seleccione Hora y fecha. En la pantalla Hora y fecha, puede seleccionar su zona horaria
ya sea haciendo clic en el mapa o eligiendo la región y la ciudad de los cuadros desplegables.
Para configurar la fecha y la hora, si tiene una conexión a Internet, puede seleccionar el botón Hora
de la red para encenderla, o puede seleccionar APAGADO y configurar la fecha y la hora manualmente
desde los cuadros en la parte inferior de la pantalla. Seleccione Listo en la esquina superior derecha
cuando haya terminado.
6. Seleccione el destino de la instalación. Los dispositivos de almacenamiento disponibles (como su disco duro)
unidad), con su disco duro seleccionado como el destino de la instalación.
Si desea que el instalador instale Fedora automáticamente, recuperando el espacio existente en el
disco, asegúrese de que su disco esté seleccionado (no una unidad USB u otro dispositivo conectado
a su computadora), luego haga las siguientes selecciones:
a. Automático . . . Si hay suficiente espacio en disco disponible en la unidad de disco seleccionada,
puede continuar con la instalación seleccionando Continuar. De lo contrario, debe recuperar
espacio en disco de la siguiente manera:
Me gustaría hacer espacio adicional disponible. . . Si desea borrar el disco duro por completo,
seleccione esta casilla de verificación y haga clic en Continuar. Puede borrar algunas o todas
las particiones que actualmente contienen datos.
b. Recuperar espacio en disco. Desde esta pantalla, puede seleccionar Eliminar todo. Luego seleccione
Recuperar Espacio. El particionamiento se configura automáticamente y vuelve a la pantalla
Resumen de instalación.
200
Machine Translated by Google
Capítulo 9: Instalación de Linux
7. Seleccione el teclado. Puede usar el teclado predeterminado en inglés (EE. UU.) o seleccionar
Teclado para elegir una distribución de teclado diferente.
8. Comience la instalación. Seleccione Comenzar instalación para comenzar la instalación en el disco duro.
9. Finalice la configuración. Cuando se complete la primera parte de la instalación, haga clic en Salir.
10. Reiniciar. Seleccione el pequeño botón de encendido/apagado del menú en la esquina superior derecha de la
pantalla. Cuando se le solicite, haga clic en el botón Reiniciar. Expulse o retire los medios Live cuando aparezca
la pantalla de inicio del sistema. La computadora debería arrancar en su sistema Fedora recién instalado. (Es
posible que deba apagar la computadora para que se reinicie).
11. Comience a usar Fedora. En este punto aparece una primera pantalla de inicio que le permite crear una cuenta
de usuario y una contraseña, entre otras cosas. Se inicia sesión automáticamente con esa cuenta de usuario
cuando finaliza la configuración. Esa cuenta tiene privilegios de sudo, por lo que puede comenzar de inmediato
a realizar tareas administrativas según sea necesario.
12. Obtenga actualizaciones de software. Para mantener su sistema seguro y actualizado, una de las
primeras tareas que debe hacer después de instalar Fedora es obtener las últimas versiones del
software que acaba de instalar. Si su computadora tiene una conexión a Internet (conectándose a
una red Ethernet cableada o seleccionando una red inalámbrica accesible desde el escritorio se
encarga de eso), simplemente puede abrir una Terminal como su nuevo usuario y escribir sudo dnf
update para descargar y actualizar todo sus paquetes de Internet. Si se instala un nuevo kernel,
puede reiniciar su computadora para que el nuevo kernel surta efecto.
En este punto, puede comenzar a usar el escritorio, como se describe en el Capítulo 2. También puede
utilizar el sistema para realizar ejercicios de cualquiera de los capítulos de este libro.
Instalación de Red Hat Enterprise Linux desde
Medios de instalación
Además de ofrecer un DVD en vivo, la mayoría de las distribuciones de Linux ofrecen una sola imagen o 9
un conjunto de imágenes que se pueden usar para instalar la distribución. Para este tipo de medio de
instalación, en lugar de copiar todo el contenido del medio en el disco, el software se divide en paquetes
que puede seleccionar para satisfacer sus necesidades exactas. Un DVD de instalación completa, por ejemplo,
puede permitirle instalar cualquier cosa, desde un sistema mínimo hasta un escritorio con todas las funciones
y un servidor completo que ofrece múltiples servicios.
En este capítulo, utilizo un DVD de instalación de Red Hat Enterprise Linux 8 como medio de instalación.
Revise la información de hardware y las descripciones del arranque dual en la sección anterior antes de
comenzar la instalación de RHEL.
Siga este procedimiento para instalar Red Hat Enterprise Linux desde un DVD de instalación.
1. Obtenga los medios de instalación. El proceso de descarga de imágenes ISO de instalación de RHEL se
describe en la página del producto Red Hat Enterprise Linux. Si aún no eres Rojo
201
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Cliente de Hat, puede solicitar una copia de evaluación aquí: https://www.redhat.com/en/technologies/
linuxplatforms/enterpriselinux.
Esto requiere que cree una cuenta de Red Hat. Si eso no es posible, puede descargar un DVD
de instalación desde un sitio espejo del proyecto CentOS para obtener una experiencia similar:
https://wiki.centos.org/Download.
Para este ejemplo, utilicé 6.7G RHEL 8 DVD ISO rhel8.0x86_64dvd.iso.
Una vez que tenga el DVD ISO, puede grabarlo en una unidad USB física o en un DVD de doble
capa, como se describe en el Apéndice A.
2. Inicie los medios de instalación. Inserte la unidad USB o DVD en su computadora
y reiniciar (Si es necesario, interrumpa el indicador de inicio para seleccionar iniciar desde el USB
o DVD seleccionado). Aparece la pantalla de bienvenida.
3. Seleccione Instalar o Probar medios. Seleccione Instalar o "Probar este medio e instalar"
entrada para hacer una nueva instalación de RHEL. La prueba de medios verifica que el DVD no
se haya dañado durante el proceso de copia o grabación. Si necesita modificar el proceso de
instalación, puede agregar opciones de inicio presionando la tecla Tabulador con una entrada de
inicio resaltada y escribiendo las opciones que desee. Consulte la sección "Uso de las opciones de
arranque de la instalación" más adelante en este capítulo.
4. Seleccione un idioma. Seleccione su idioma y elija Continuar. Aparece la pantalla Resumen de
instalación. Desde esa pantalla, puede seleccionar cambiar cualquiera de las funciones de
Localización, Software y Sistema disponibles, como se muestra en la Figura 9.3 .
FIGURA 9.3
Elija entre los temas Localización, Software y Sistema en la pantalla Resumen de instalación.
202
Machine Translated by Google
Capítulo 9: Instalación de Linux
5. Teclado. Elija entre diferentes tipos de teclados disponibles con los idiomas que seleccionó anteriormente.
Escriba un texto para ver cómo se distribuyen las teclas.
6. Soporte de idiomas. Tiene la oportunidad de agregar soporte para idiomas adicionales (más allá de lo
que configuró de forma predeterminada anteriormente). Seleccione Listo cuando haya terminado.
7. Hora y fecha. Elija una zona horaria para su máquina del mapa o de la lista que se muestra (como se
describe en la sección "Instalación de Fedora desde Live Media"). Configure la hora manualmente con las
flechas arriba/abajo o seleccione Hora de red para que su sistema intente conectarse automáticamente a
los servidores de hora en red para sincronizar la hora del sistema. Seleccione Listo cuando haya terminado.
8. Fuente de instalación. El DVD de instalación se usa, de forma predeterminada, para proporcionar los
paquetes RPM que se usan durante la instalación. Tiene la opción de seleccionar "En la red" y elegir una
URL web (http, https o ftp) que identifique dónde se encuentra el repositorio de software de Red Hat
Enterprise Linux. Después de elegir el DVD o una ubicación de red, puede agregar repositorios yum adicionales
para que esos repositorios también se utilicen durante la instalación. Seleccione Listo cuando haya terminado.
9. Selección de software. La selección predeterminada de "Servidor con GUI" proporciona un sistema de
escritorio GNOME 3 además de una instalación de servidor básica. Otras opciones incluyen
"Servidor" (que no tiene GUI), "Instalación mínima" (que comienza con un conjunto de paquetes básicos) y
"Estación de trabajo" (orientado a usuarios finales). Puede seleccionar agregar otros servicios u otros
entornos base para incluir. Seleccione Listo cuando esté listo para continuar.
10. Destino de la instalación. El nuevo sistema RHEL se instala, de manera predeterminada, en el disco duro local
mediante partición automática. También tiene la opción de adjuntar almacenamiento en red o almacenamiento
especial, como Firmware RAID. (Consulte la sección "División de discos duros" más adelante en este capítulo
para obtener detalles sobre la configuración del almacenamiento). Haga clic en Listo cuando haya terminado.
Es posible que se le solicite que verifique que está bien eliminar el almacenamiento existente.
11. Volcado. Habilitar kdump reserva RAM para usarla para capturar el volcado de kernel resultante en caso de
que su kernel falle. Sin kdump, no habría forma de diagnosticar un kernel bloqueado. De manera
predeterminada, habilitar kdump reserva 160 MB más 2 bits por cada 4 KB de RAM para evitar fallas del
kernel. 9
12. Nombre de red y host. Cualquier tarjeta de interfaz de red que se descubra se puede configurar en este punto.
Si hay un servicio DHCP disponible en la red, la información de la dirección de la red se asigna a la interfaz
después de seleccionar ON. Seleccione Configurar si prefiere configurar la interfaz de red manualmente.
Rellene el cuadro Nombre de host si desea establecer el nombre de host del sistema. La configuración de su
red y nombre de host durante la instalación puede facilitar el uso de su sistema después de la instalación.
Haga clic en Listo para continuar.
13. Política de Seguridad. Al elegir una política de seguridad (no se elige ninguna de forma predeterminada),
puede asegurarse de que su sistema cumpla con un estándar de seguridad seleccionado. Todos los campos
son opcionales y se pueden cambiar más tarde.
14. Propósito del Sistema. Esta selección opcional le permite elegir la función del sistema, el servicio
acuerdo de nivel y uso.
203
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
15. Comience la instalación. Haga clic en el botón Iniciar instalación para iniciar el proceso de instalación. Una
barra de progreso marca el progreso de la instalación. Mientras se instala el sistema, puede configurar la
contraseña de root y crear una nueva cuenta de usuario para su nuevo sistema.
16. Contraseña raíz. Establezca la contraseña para el usuario raíz y verifíquela (escríbala nuevamente).
Haga clic en Listo para aceptarlo. Si la contraseña es demasiado corta o demasiado débil,
permanece en la página (donde puede establecer una nueva contraseña). Si decide mantener la
contraseña débil, haga clic en Listo nuevamente para aceptar la contraseña débil.
17. Creación de Usuario. Es una buena práctica iniciar sesión en un sistema Linux con un usuario que no sea root
cuenta y solicitar privilegios de root según sea necesario. Puede configurar una cuenta de usuario,
incluido un nombre de usuario, nombre completo y contraseña. Puede seleccionar "Convertir a este
usuario en administrador" para otorgarle privilegios de sudo (permitiendo que la cuenta actúe como
usuario raíz según sea necesario). Seleccione Listo cuando haya terminado. Si la contraseña que
ingresa es demasiado corta o débil, debe cambiarla o hacer clic en Listo nuevamente si aún desea
usar la contraseña débil.
18. Complete la instalación. Cuando finalice la instalación, haga clic en Reiniciar. Extraiga el DVD cuando el sistema
se reinicie y Red Hat Enterprise Linux se inicie desde el disco duro.
19. Ejecute firstboot. Si instaló una interfaz de escritorio, la primera pantalla de inicio aparece la primera vez que
inicia el sistema. Aquí '
es lo que haces:
a. Información de licencia. Lea y haga clic en la casilla de verificación para aceptar la información de la
licencia, luego haga clic en Listo.
b. Administrador de suscripciones. Cuando se le solicite, puede dejar la suscripción predeterminada.
sistema de administración de red instalado (subscription.rhn.redhat.com) o ingrese la ubicación
de un servidor de Red Hat Satellite para registrar su sistema. Haga clic en Siguiente. Ingrese su
cuenta y contraseña de Red Hat, luego haga clic en Registrarse para registrarse y autorizar su
sistema para recibir actualizaciones. Si la suscripción encontrada es aceptable, haga clic en
Adjuntar para habilitar la suscripción.
20. Seleccione Finalizar configuración cuando haya terminado.
Ahora debería poder iniciar sesión en su sistema Red Hat Enterprise Linux. Una de las primeras cosas
que debe hacer es obtener actualizaciones de software para el nuevo sistema. Haga esto iniciando
sesión en el sistema y ejecutando sudo dnf upgrade desde una ventana de Terminal.
Descripción de las instalaciones basadas en la nube
Cuando instala un sistema Linux en una computadora física, el instalador puede ver que la
'
computadora instala
disco duro, Linux en
interfaces un
de entorno
red, CPU dye
on ube,
tros esos componentes
componentes físicos C
de hardware. se
abstraen
uando en un
usted
conjunto de recursos. Por lo tanto, para instalar una distribución de Linux en una plataforma en la nube
de Amazon EC2, Google Compute Engine o OpenStack, debe hacer las cosas de manera diferente.
204
Machine Translated by Google
Capítulo 9: Instalación de Linux
La forma común de instalar Linux en una nube es comenzar con un archivo que es una imagen de un
sistema Linux instalado. Por lo general, esa imagen incluye todos los archivos que necesita un sistema
Linux básico en ejecución. Los metadatos se agregan a esa imagen desde un archivo de configuración o
completando un formulario desde un controlador en la nube que crea e inicia el sistema operativo como
una máquina virtual.
El tipo de información agregada a la imagen puede incluir un nombre de host particular, una
contraseña raíz y una nueva cuenta de usuario. También es posible que desee elegir tener una cantidad
específica de espacio en disco, una configuración de red particular y una cierta cantidad de procesadores
de CPU y RAM.
Los métodos para instalar Linux en un entorno KVM similar a una nube local se analizan en el Capítulo
28 , “Implementación de Linux en la nube”. Ese capítulo cubre cómo ejecutar un sistema Linux
como una imagen de máquina virtual en un entorno KVM, nube de Amazon EC2 o entorno
OpenStack.
Instalación de Linux en la empresa
Si estuviera administrando docenas, cientos, incluso miles de sistemas Linux en una gran empresa,
sería terriblemente ineficiente tener que ir a cada computadora para escribir y hacer clic en cada instalación.
Afortunadamente, con Red Hat Enterprise Linux y otras distribuciones, puede automatizar la instalación de
tal manera que todo lo que necesita hacer es encender una computadora y arrancar desde la computadora.
'
s tarjeta de interfaz de red para obtener la instalación de Linux deseada.
Aunque nos hemos centrado en instalar Linux desde un DVD o un medio USB, hay muchas otras
formas de iniciar una instalación de Linux y muchas formas de completar una instalación. Las siguientes
descripciones recorren paso a paso el proceso de instalación y describen formas de cambiar ese proceso
a lo largo del camino:
Inicie el medio de instalación. Puede iniciar una instalación desde cualquier medio que pueda
arrancar desde una computadora: CD, DVD, unidad USB, disco duro o tarjeta de interfaz de
red compatible con PXE. La computadora pasa por su orden de arranque y mira el registro de
arranque maestro en el medio físico o busca un servidor PXE en la red. 9
Inicie el kernel de anaconda. El trabajo del gestor de arranque es apuntar al núcleo especial (y
posiblemente un disco RAM inicial) que inicia el instalador de Linux (llamado anaconda). Por
lo tanto, cualquiera de los tipos de medios que se acaban de describir simplemente necesita
señalar la ubicación del kernel y el disco RAM inicial para iniciar la instalación. Si los paquetes de
software no están en el mismo medio, el proceso de instalación le indicará dónde obtener esos
paquetes.
Agregue kickstart u otras opciones de arranque. Las opciones de arranque (descritas más adelante
en este capítulo) se pueden pasar al kernel de anaconda para configurar cómo se inicia. Una
opción compatible con Fedora y RHEL le permite pasar la ubicación de un archivo kickstart al
instalador. Ese kickstart puede contener toda la información necesaria para completar la
instalación: contraseña de root, partición, zona horaria, etc. para configurar aún más el sistema
instalado. Una vez que se inicia el instalador, solicita la información necesaria o utiliza las
respuestas proporcionadas en el archivo kickstart.
205
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Encuentre paquetes de software. Los paquetes de software no tienen que estar en el medio de
instalación. Esto le permite iniciar una instalación desde un medio de arranque que contiene solo
un núcleo y un disco RAM inicial. Desde el archivo kickstart o desde una opción que ingresa
manualmente al instalador, puede identificar la ubicación del repositorio que contiene los paquetes de
software RPM. Esa ubicación puede ser un CD local (cdrom), un sitio web (http), un sitio FTP (ftp), un
recurso compartido NFS (nfs), NFS ISO (nfsiso) o un disco local (hd).
Modificar la instalación con scripts kickstart. Los guiones incluidos en un kickstart pueden
ejecute los comandos que elija antes o después de la instalación para configurar aún más el sistema
Linux. Esos comandos pueden agregar usuarios, cambiar permisos, crear archivos y directorios,
capturar archivos a través de la red o configurar el sistema instalado exactamente como lo especifique.
Aunque la instalación de Linux en entornos empresariales está más allá del alcance de este libro, quiero que
comprenda las tecnologías que están disponibles cuando desee automatizar el proceso de instalación de Linux.
Estas son algunas de esas tecnologías disponibles para usar con Red Hat Enterprise Linux, junto con enlaces a
donde puede encontrar más información sobre ellas:
Servidor de instalación Si configura un servidor de instalación, no tiene que llevar los paquetes de
software a cada máquina donde instala RHEL. Básicamente, copia todos los paquetes de software
del medio de instalación de RHEL a un servidor web (http), un servidor FTP (ftp) o un servidor NFS
(nfs) y luego señala la ubicación de ese servidor cuando inicia el instalador. La Guía de instalación de
RHEL 8 describe cómo configurar una fuente de instalación local o de red:
https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/8/
htmlsingle/performing_a_standard_rhel_installation/index#preparar fuentede
instalación_prepararparasuinstalación
Servidor PXE Si tiene una computadora con una tarjeta de interfaz de red compatible con PXE
'
Al arrancar (como la mayoría lo hace), puede configurar su s BIOS para arrancar desde esa NIC. Si usted
computadora para configurar un servidor PXE en esa red, ese servidor puede presentar un menú a
la computadora que contiene entradas para iniciar un proceso de instalación. La Guía de instalación
de RHEL proporciona información sobre cómo configurar los servidores PXE para la instalación:
https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/8/ htmlsingle/
performing_a_standard_rhel_installation/index#bootingthe installationusingpxe_booting
theinstaller
Archivos kickstart Para automatizar completamente una instalación, cree lo que se llama un archivo
kickstart. Al pasar un archivo kickstart como una opción de arranque a un instalador de Linux, puede
proporcionar respuestas a todas las preguntas de instalación en las que normalmente tendría que
hacer clic.
Cuando instala RHEL, el archivo /root/anacondaks.cfg contiene un archivo kickstart que contiene
respuestas a todas las preguntas de instalación para la instalación que acaba de realizar. Puede
presentar ese archivo a su próxima instalación para repetir la configuración de instalación o usar ese
archivo como modelo para diferentes instalaciones.
206
Machine Translated by Google
Capítulo 9: Instalación de Linux
Consulte la Guía de instalación avanzada de RHEL para obtener información sobre cómo realizar una instalación
kickstart: https://access.redhat.com/documentation/enus/red_hat_enter prise_linux/8/htmlsingle/
performing_an_advanced_rhel_installation/index/#performing_an_automated_installation_using_kickstart . . . y creando
sus propios archivos kickstart https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/8/htmlsingle/
performing_an_advanced_rhel_installation/index/#creatingkickstartfiles_installingrhelasanexperienced usuario
Exploración de temas comunes de instalación
Algunos de los temas de instalación mencionados anteriormente en este capítulo requieren más explicaciones para que pueda
implementarlos por completo. Lea las siguientes secciones para comprender mejor los temas específicos de instalación.
Actualizar o instalar desde cero Si ya tiene una versión anterior de
Linux instalada en su computadora, Fedora, Ubuntu y otras distribuciones de Linux ofrecen una opción de actualización. Red Hat
Enterprise Linux ofrece una ruta de actualización limitada de RHEL 7 a RHEL 8.
La actualización le permite mover un sistema Linux de una versión principal a la siguiente. Entre lanzamientos menores,
simplemente puede actualizar los paquetes según sea necesario (por ejemplo, escribiendo yum update).
Aquí hay algunas reglas generales antes de realizar una actualización:
Retire los paquetes adicionales. Si tiene paquetes de software que no necesita, elimínelos antes de realizar una
actualización. Los procesos de actualización generalmente actualizan solo los paquetes que están en su sistema. Las
actualizaciones generalmente realizan más comprobaciones y comparaciones que las instalaciones limpias, por lo
que cualquier paquete que pueda eliminar ahorra tiempo durante el proceso de actualización.
Compruebe los archivos de configuración. Un procedimiento de actualización de Linux a menudo deja copias de
archivos de configuración antiguos. Debe verificar que los nuevos archivos de configuración todavía funcionen
para usted. 9
CONSEJO
Instalar Linux desde cero es más rápido que una actualización. También da como resultado un sistema Linux más limpio. Por lo tanto,
si no necesita los datos en su sistema (o si tiene una copia de seguridad de sus datos), le recomiendo que realice una instalación nueva.
Luego puede restaurar sus datos a un sistema recién instalado.
Algunas distribuciones de Linux, sobre todo Gentoo, han adoptado el enfoque de proporcionar actualizaciones continuas.
En lugar de sacar una nueva versión cada pocos meses, simplemente obtiene paquetes actualizados continuamente a
medida que están disponibles e instálelos en su sistema.
207
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Arranque dual Es
posible tener múltiples sistemas operativos instalados en la misma computadora. Una forma de
hacerlo es tener múltiples particiones en un disco duro y/o múltiples discos duros y luego instalar
diferentes sistemas operativos en diferentes particiones. Siempre que el cargador de arranque
contenga información de arranque para cada uno de los sistemas operativos instalados, puede
elegir cuál ejecutar en el momento del arranque.
PRECAUCIÓN
Aunque las herramientas para cambiar el tamaño de las particiones de Windows y configurar sistemas de arranque múltiple han mejorado en los últimos años, aún
existe cierto riesgo de pérdida de datos en los sistemas de arranque dual de Windows/Linux. Los diferentes sistemas operativos a menudo tienen diferentes vistas
de las tablas de partición y los registros de inicio maestro que pueden hacer que su máquina no pueda iniciarse (al menos temporalmente) o pierda datos de forma
permanente. Siempre haga una copia de seguridad de sus datos antes de intentar cambiar el tamaño de un sistema de archivos de Windows para hacer espacio
para Linux.
Si la computadora que está utilizando ya tiene un sistema Windows, es muy posible que todo el disco duro esté
dedicado a Windows. Aunque puede ejecutar un Linux de arranque, como KNOPPIX o Tiny Core Linux, sin tocar el
disco duro, para hacer una instalación más permanente, querrá encontrar espacio en disco fuera de la instalación de
Windows. Hay algunas maneras de hacer esto:
Agregar un disco duro. En lugar de jugar con su partición de Windows, simplemente puede agregar un disco
duro y dedicarlo a Linux.
Cambia el tamaño de tu partición de Windows. Si tiene espacio disponible en una partición de Windows, puede
reducir esa partición para que haya espacio libre disponible en el disco para dedicarlo a Linux. Las
herramientas comerciales como Acronis Disk Director (https://www.acronis.com/enus/personal/diskmanager)
están disponibles para cambiar el tamaño de las particiones de su disco y configurar un administrador de
arranque funcional. Algunas distribuciones de Linux (particularmente las distribuciones de arranque de Linux
que se usan como medios de rescate) incluyen una herramienta llamada GParted (que incluye software del
proyecto LinuxNTFS para cambiar el tamaño de las particiones NTFS de Windows).
NOTA
Escriba dnf install gparted (en Fedora) o aptget install gparted (en Ubuntu) para instalar GParted.
Ejecute gparted como root para iniciarlo.
Antes de intentar cambiar el tamaño de su partición de Windows, es posible que deba desfragmentarla. Para
desfragmentar su disco en algunos sistemas Windows para que todo el espacio utilizado se ordene en el disco, abra
Mi PC, haga clic con el botón derecho en el icono de su disco duro (generalmente C:), seleccione Propiedades, haga
clic en Herramientas y seleccione Desfragmentar ahora .
208
Machine Translated by Google
Capítulo 9: Instalación de Linux
Desfragmentar su disco puede ser un proceso bastante largo. El resultado de la desfragmentación es que
todos los datos en su disco son contiguos, creando mucho espacio libre contiguo al final de la partición. A
veces, debe completar las siguientes tareas especiales para que esto sea cierto:
■ Si el archivo de intercambio de Windows no se mueve durante la desfragmentación, debe eliminarlo.
Luego, después de desfragmentar el disco nuevamente y cambiar su tamaño, debe restaurar el archivo
de intercambio. Para eliminar el archivo de intercambio, abra el Panel de control, abra el ícono Sistema,
haga clic en la pestaña Rendimiento y seleccione Memoria virtual. Para desactivar el archivo de intercambio,
haga clic en Desactivar memoria virtual. ■ Si su partición DOS tiene archivos ocultos que están en el
espacio que está tratando de liberar
'
arriba, necesitas encontrarlos. En algunos casos, puede No los elimine. En otros casos,
intercambiar archivos creados por un programa, puede eliminar esos archivos de forma segura. Esto
es un poco complicado porque algunos archivos no deben eliminarse, como los archivos del sistema DOS.
Puede usar el comando attrib s h desde el directorio raíz para manejar archivos ocultos.
Después de desfragmentar su disco, puede usar las herramientas comerciales descritas anteriormente
(Acronis Disk Director) para volver a particionar su disco duro y hacer espacio para Linux. O bien, puede
utilizar la alternativa de código abierto GParted.
Una vez que haya liberado suficiente espacio en disco para instalar Linux (consulte los requisitos de espacio
en disco descritos anteriormente en este capítulo), puede instalar Ubuntu, Fedora, RHEL u otra distribución de
Linux. A medida que configura su cargador de arranque durante la instalación, puede identificar Windows, Linux
y cualquier otra partición de arranque para que pueda seleccionar cuál arrancar cuando inicie su computadora.
Instalación de Linux para ejecutar virtualmente
Con la tecnología de virtualización, como KVM, VMware, VirtualBox o Xen, puede configurar su
computadora para ejecutar varios sistemas operativos simultáneamente. Por lo general, tiene un sistema
operativo host en ejecución (como su escritorio Linux o Windows) y luego configura los sistemas operativos
invitados para que se ejecuten dentro de ese entorno.
9
Si tiene un sistema Windows, puede usar productos comerciales de VMware para ejecutar Linux en su
escritorio de Windows. Obtenga una prueba de VMware Workstation (https://www.vmware.com/try vmware)
para ver si le gusta. Luego ejecute sus invitados virtuales instalados con el VMware Player gratuito. Con una
versión completa de VMware Workstation, puede ejecutar varias distribuciones al mismo tiempo.
Los productos de virtualización de código abierto que están disponibles con los sistemas Linux incluyen
Virtu alBox (https://www.virtualbox.org), Xen ( https://xenproject.org) y KVM (https://www.linuxkvm. org).
Algunas distribuciones de Linux todavía usan Xen. Sin embargo, todos los sistemas de Red Hat actualmente
'
utilizan KVM como base para la ización de Red Hat yFunciones
otros proyectos
de hipervisor
de nube.
en
CRonsulte
HEL, Reed
l CHapítulo
at Virtual
28 para
obtener información sobre cómo instalar Linux como una máquina virtual en un host KVM de Linux.
209
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Uso de las opciones de arranque de la instalación
Cuando el kernel de anaconda se inicia en el momento del arranque para RHEL o Fedora, las opciones de arranque
proporcionadas en la línea de comandos del kernel modifican el comportamiento del proceso de instalación. Al
interrumpir el cargador de arranque antes de que se inicie el kernel de instalación, puede agregar sus propias opciones
de arranque para dirigir cómo se comporta la instalación.
Cuando vea la pantalla de inicio de instalación, dependiendo del cargador de inicio, presione Tabulador o alguna
otra tecla para poder editar la línea de comando del kernel de anaconda. La línea que identifica el núcleo podría
ser similar a la siguiente:
vmlinuz initrd=initrd.img ...
vmlinuz es el núcleo comprimido e initrd.img es el disco RAM inicial (que contiene módulos y otras herramientas
necesarias para iniciar el instalador). Para agregar más opciones, simplemente escríbalas al final de esa línea y
presione Entrar.
Entonces, por ejemplo, si tiene un archivo kickstart disponible desde /root/ks.cfg en un CD, su indicador de
inicio de anaconda para iniciar la instalación usando el archivo kickstart podría tener el siguiente aspecto:
vmlinuz initrd=initrd.img ks=cdrom:/root/ks.cfg
Para Red Hat Enterprise Linux 8 y las últimas versiones de Fedora, las opciones de arranque del kernel utilizadas
durante la instalación están cambiando a un nuevo método de nomenclatura. Con esta nueva denominación, un
prefijo de inst. se puede colocar delante de cualquiera de las opciones de arranque que se muestran en esta
sección que son específicas del proceso de instalación (por ejemplo, inst.xdriver o inst.repo=dvd). Sin embargo,
por el momento, aún puede usar las opciones que se muestran en las siguientes secciones con el inst. prefijo
Opciones de arranque para deshabilitar
funciones A veces, una instalación de Linux falla porque la computadora tiene algún hardware que no funciona
o no es compatible. A menudo, puede solucionar esos problemas pasando opciones al instalador que hacen
cosas como deshabilitar el hardware seleccionado cuando necesita seleccionar su propio controlador. La tabla
9.1 proporciona algunos ejemplos.
Opciones de arranque para problemas
de video Si tiene problemas con su pantalla de video, puede especificar la configuración de video como se indica
en la Tabla 9.2 .
Opciones de arranque para tipos de instalación
'
especiales De manera predeterminada, la instalación se ejecuta en estás sentado en la consola
modo gráfico cuando responde preguntas. Si tiene una consola de solo texto, o si la GUI no funciona
correctamente, puede ejecutar una instalación en modo de texto sin formato: al escribir texto, hace que la instalación
se ejecute en modo de texto.
210
Machine Translated by Google
Capítulo 9: Instalación de Linux
TABLA 9.1 Opciones de arranque para funciones de desactivación
Opción de instalador le dice al sistema
nofirewire No cargar soporte para dispositivos fi rewire
intención No cargar soporte DMA para discos duros
noido No cargar soporte para dispositivos IDE
nompata No habilitar la compatibilidad con dispositivos multirruta
noparportar No cargar soporte para puertos paralelos
nopcmcia No cargar soporte para controladores PCMCIA
sin sonda No sondear hardware; en su lugar, solicite al usuario los controladores
noscsi No cargar soporte para dispositivos SCSI
nuusb No cargar soporte para dispositivos USB
noipv6 No habilitar la red IPV6
no sabe No sondear dispositivos de red
numapagado Para deshabilitar el acceso a memoria no uniforme (NUMA) para la arquitectura AMD64
acpi=apagado Para deshabilitar la configuración avanzada y la interfaz de energía (ACPI)
TABLA 9.2 Opciones de arranque para problemas de video
Si desea iniciar la instalación en una computadora, pero desea responder las preguntas 9
de instalación desde otra computadora, puede habilitar una instalación de VNC (computación
de red virtual). Después de iniciar este tipo de instalación, puede ir a otro sistema y abrir un
visor vnc, dándole al visor la dirección de la máquina de instalación (como 192.168.0.99:1).
La Tabla 9.3 proporciona los comandos necesarios, junto con lo que debe indicarle al sistema
que haga.
Opciones de inicio para kickstarts y repositorios
remotos Puede iniciar el proceso de instalación desde un medio de instalación que contiene poco
más que el kernel y el disco RAM inicial. Si ese es el caso, debe identificar el repositorio donde
existen los paquetes de software. Puede hacerlo proporcionando un archivo kickstart o
identificando la ubicación de los repositorios de alguna manera. Para obligar al instalador a
solicitar la ubicación del repositorio (CD/DVD, disco duro, NFS o URL), agregue askmethod a las
opciones de arranque de la instalación.
211
Opción de arranque le dice al sistema
xdriver=vesa Utilice el controlador de vídeo vesa estándar
resolución = 1024x768 Elija la resolución exacta para usar
noviembre No utilice el controlador de búfer de fotogramas VGA 16
skipddc No sondee el DDC del monitor (la sonda puede colgar al instalador)
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
TABLA 9.3 Opciones de arranque para instalaciones VNC
Con las opciones repo=, puede identificar las ubicaciones de los repositorios de software. Los siguientes
ejemplos muestran la sintaxis a utilizar para crear entradas repo=:
repo=hd:/dev/sda1:/myrepo
Repositorio en /myrepo en la primera partición del disco 1 repo=http://
abc.example.com/myrepo Repositorio disponible en /myrepo en el
servidor web repo=ftp://ftp.example .com/myrepo Repositorio
disponible desde / myrepo en servidor FTP repo=cdrom Repositorio
disponible desde CD o DVD local repo=nfs::mynfs.example.com:/
myrepo/ Repositorio disponible desde / myrepo en NFS share
repo=nfsiso::nfs .example.com:/mydir/rhel7.iso Imagen ISO de
instalación disponible desde el servidor NFS
En lugar de identificar el repositorio directamente, puede especificarlo dentro de un archivo kickstart. Los
siguientes son ejemplos de algunas formas de identificar la ubicación de un archivo kickstart.
ks=cdrom:/cosas/ks.cfg Obtenga
kickstart desde un CD/DVD.
ks=hd:sda2:/test/ks.cfg Obtenga
kickstart desde el directorio de prueba en el disco duro (sda2). ks=http://
www.example.com/ksfiles/ks.cfg Obtenga kickstart desde un servidor web.
ks=ftp://ftp.example.com/allks/ks.cfg Obtenga kickstart desde un servidor
FTP. ks=nfs:mynfs.example.com:/someks/ks.cfg Obtenga kickstart desde un
servidor NFS.
Varias opciones de arranque
Aquí hay algunas otras opciones que puede pasar al instalador que no encajan en una categoría.
rescate
En lugar de instalar, ejecute el kernel para abrir el modo de rescate de Linux.
mediacheck
Compruebe el CD/DVD de instalación en busca de errores de suma de comprobación.
212
Opción de arranque le dice al sistema
vnc Ejecute la instalación como un servidor VNC
vncconnect=hostname[:port] Conéctese al nombre de host del cliente VNC y al puerto opcional
Machine Translated by Google
Capítulo 9: Instalación de Linux
Para obtener más información sobre el uso del instalador de anaconda en modo de rescate (para rescatar un sistema Linux
dañado), consulte el Capítulo 21, "Resolución
opciones
de pdroblemas
e arranque
de
eLn
inux".
RHEL
Para
8, consulte
obtener lia
nformación
Guía de instalación
sobre el udso
e R
de
HEL
las 8ú:ltimas
https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/8/ htmlsingle/
performing_a_standard_rhel_installation/index#customboot options_bootingtheinstaller
Uso de almacenamiento especializado En
entornos informáticos de grandes empresas, es habitual almacenar el sistema operativo y los datos fuera del equipo
local. En su lugar, el instalador identifica algún dispositivo de almacenamiento especial más allá del disco duro local, y
ese dispositivo (o dispositivos) de almacenamiento se puede usar durante la instalación.
Una vez identificados, los dispositivos de almacenamiento que indique durante la instalación se pueden usar de la misma
manera que se usan los discos locales. Puede particionarlos y asignarles una estructura (sistema de archivos, espacio de
intercambio, etc.) o dejarlos solos y simplemente montarlos donde desee que estén disponibles los datos.
Los siguientes tipos de dispositivos de almacenamiento especializados se pueden seleccionar de la
Pantalla Dispositivos de almacenamiento cuando instala Red Hat Enterprise Linux, Fedora u otras distribuciones de Linux:
RAID de firmware Un dispositivo RAID de firmware es un tipo de dispositivo que tiene ganchos en el BIOS, lo
que permite que se utilice para iniciar el sistema operativo, si lo desea.
Dispositivos multirruta Como su nombre lo indica, los dispositivos multirruta proporcionan múltiples rutas
entre la computadora y sus dispositivos de almacenamiento. Estas rutas se agregan, por lo que estos dispositivos
parecen un solo dispositivo para el sistema que los usa, mientras que la tecnología subyacente proporciona un
rendimiento mejorado, redundancia o ambos. Las conexiones pueden ser proporcionadas por dispositivos iSCSI
o Fibre Channel over Ethernet (FCoE).
Otros dispositivos SAN Cualquier dispositivo que represente una red de área de almacenamiento (SAN).
Si bien la configuración de estos dispositivos de almacenamiento especializados está más allá del alcance de este libro, 9
sepa que si está trabajando en una empresa donde los dispositivos iSCSI y FCoE están disponibles, puede configurar su
sistema Linux para usarlos en el momento de la instalación. Necesita los siguientes tipos de información para hacer esto:
Dispositivos iSCSI Solicite a su administrador de almacenamiento que le proporcione la dirección IP de destino del
dispositivo iSCSI y el tipo de autenticación de detección necesaria para utilizar el dispositivo. El dispositivo iSCSI
puede requerir credenciales.
Dispositivos Fibre Channel over Ethernet (FCoE) Para FCoE, debe conocer la red
interfaz de trabajo que está conectada a su conmutador FCoE. Puede buscar en esa interfaz los dispositivos
FCoE disponibles.
213
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Particionamiento de discos duros El disco
duro (o discos) de su computadora proporciona el área de almacenamiento permanente para sus archivos de datos, programas
de aplicaciones y el propio sistema operativo. Particionar es el acto de dividir un disco en áreas lógicas con las que se puede
trabajar por separado. En Windows, normalmente tiene una partición que consume todo el disco duro. Sin embargo, con Linux
existen varias razones por las que es posible que desee tener varias particiones:
Múltiples sistemas operativos Si instala Linux en una PC que ya tiene un sistema operativo Windows, es posible que
desee mantener ambos sistemas operativos en la computadora.
Para todos los propósitos prácticos, cada sistema operativo debe existir en una partición completamente
separada. Cuando su computadora arranca, puede elegir qué sistema ejecutar.
Múltiples particiones dentro de un sistema operativo Para evitar que todo su sistema operativo se quede sin espacio en
disco, las personas a menudo asignan particiones separadas a diferentes áreas del sistema de archivos de Linux.
Por ejemplo, si /home y /var fueran asignados a particiones separadas, entonces un usuario glotón que llene la
partición /home no impediría que los demonios de registro continuaran escribiendo en archivos directorio /var/log.
de registro en el
Las particiones múltiples también facilitan la realización de ciertos tipos de copias de seguridad (como una
copia de seguridad de imágenes). Por ejemplo, una copia de seguridad de imagen de /home sería mucho más
rápida (y probablemente más útil) que una copia de seguridad de imagen del sistema de archivos raíz (/).
Diferentes tipos de sistemas de archivos Los diferentes tipos de sistemas de archivos tienen diferentes estructuras.
Los sistemas de archivos de diferentes tipos deben estar en sus propias particiones. Además, es posible que
necesite diferentes sistemas de archivos para tener diferentes opciones de montaje para funciones especiales (como
solo lectura o cuotas de usuario). En la mayoría de los sistemas Linux, necesita al menos un tipo de sistema de
archivos para la raíz del sistema de archivos (/) y uno para su área de intercambio. Los sistemas de archivos en CD
ROM utilizan el tipo de sistema de archivos iso9660.
CONSEJO
Cuando crea particiones para Linux, generalmente asigna el tipo de sistema de archivos como nativo de Linux (usando el tipo ext2, ext3, ext4
o xfs en la mayoría de los sistemas Linux). Si las aplicaciones que está ejecutando requieren nombres de archivo particularmente largos, tamaños
de archivo grandes o muchos inodos (cada archivo consume un inodo), es posible que desee elegir un tipo de sistema de archivos diferente.
Viniendo de Windows
Si solo ha usado sistemas operativos Windows antes, probablemente tenía todo su disco duro
asignado a C: y nunca pensó en las particiones. Con muchos sistemas Linux, tiene la oportunidad
de ver y cambiar la partición predeterminada en función de cómo desea usar el sistema.
Durante la instalación, los sistemas como Fedora y RHEL le permiten particionar su disco duro usando herramientas
gráficas de partición. Las siguientes secciones describen cómo particionar su disco durante una instalación de Fedora.
Consulte la sección "Consejos para crear particiones" para obtener algunas ideas para crear particiones de disco.
214
Machine Translated by Google
Capítulo 9: Instalación de Linux
Comprensión de los diferentes tipos de partición
Muchas distribuciones de Linux le dan la opción de seleccionar diferentes tipos de partición cuando
particiona su disco duro durante la instalación. Los tipos de partición incluyen lo siguiente:
Particiones de Linux Use esta opción para crear una partición para un archivo ext2, ext3 o ext4
tipo de sistema que se agrega directamente a una partición en su disco duro (u otro medio de almacenamiento).
El tipo de sistema de archivos xfs también se puede usar en una partición de Linux. (De hecho, xfs es ahora el
tipo de sistema de archivos predeterminado para los sistemas RHEL 8).
Particiones LVM Cree una partición LVM si planea crear o agregar un grupo de volúmenes LVM. Los LVM le brindan
más fl exibilidad para aumentar, reducir y mover particiones más tarde que las particiones regulares.
Particiones RAID Cree dos o más particiones RAID para crear una matriz RAID. Estas particiones deben estar
en discos separados para crear una matriz RAID eficaz. Las matrices RAID pueden ayudar a mejorar el
rendimiento, la confiabilidad o ambos, ya que esas características se relacionan con la lectura, escritura y
almacenamiento de sus datos.
Intercambiar particiones Cree una partición de intercambio para ampliar la cantidad de memoria virtual
disponible en su sistema.
Las siguientes secciones describen cómo agregar particiones regulares de Linux y LVM, RAID y particiones de
intercambio utilizando el instalador gráfico de Fedora. Si aún no está seguro de cuándo debe usar estos diferentes
tipos de partición, consulte el Capítulo 12, "Administración de discos y sistemas de
información
archivos", psara
obre
obtener
la configuración
más
de particiones de disco.
Sugerencias para crear
particiones Cambiar las particiones de su disco para manejar varios sistemas operativos puede ser muy
complicado, en parte porque cada sistema operativo tiene sus propias ideas sobre cómo se debe manejar la
información de partición, así como diferentes herramientas para hacerlo. Aquí hay algunos consejos para
ayudarlo a hacerlo bien:
■ Si está creando un sistema de arranque dual, especialmente para un sistema Windows, intente
instale el sistema operativo Windows primero después de particionar su disco. De lo contrario, la instalación
de Windows puede hacer que las particiones de Linux sean inaccesibles. ■ La página del manual de fdisk
9
recomienda que utilice las herramientas de creación de particiones que vienen con un sistema operativo para
crear particiones para ese sistema operativo. Por ejemplo, el fdisk de Windows sabe cómo crear particiones
que le gustarán a Windows, y el fdisk de Linux felizmente creará sus particiones de Linux. Sin embargo,
después de configurar el disco duro para arranque dual, probablemente no debería volver a las herramientas
de partición exclusivas de Windows. Utilice fdisk de Linux o un producto creado para sistemas de arranque
múltiple (como Acronis Disk Director).
■ Una tabla de particiones de registro de arranque maestro (MBR) puede contener cuatro particiones principales,
una de las cuales se puede marcar para contener 184 unidades lógicas. En una tabla de particiones GPT,
puede tener un máximo de 128 particiones primarias en la mayoría de los sistemas operativos, incluido Linux.
'
Por lo general, gana particiones, usa LNo
VM
nyecesito
crea tantos
casi tvantas
olúmenes
particiones.
lógicos
Sci
omo
necesitas
desee.más
215
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Si está usando Linux como un sistema de escritorio, probablemente no necesite muchas particiones diferentes. Sin
embargo, existen muy buenas razones para tener múltiples particiones para sistemas Linux que son compartidas por
muchos usuarios o son servidores web públicos o servidores de archivos. Tener múltiples particiones dentro de
Fedora o RHEL, por ejemplo, ofrece las siguientes ventajas:
Protección contra ataques Los ataques de denegación de servicio a veces realizan acciones que intentan
para llenar su disco duro. Si las áreas públicas, como /var, están en particiones separadas, un ataque exitoso
puede llenar una partición sin apagar toda la computadora.
Debido a que /var es la ubicación predeterminada para los servidores web y FTP, y se espera que contenga
una gran cantidad de datos, los discos duros completos a menudo se asignan solo al sistema de archivos /var.
Protección contra sistemas de archivos dañados Si solo tiene un sistema de archivos (/), su
la corrupción puede causar que todo el sistema Linux se dañe. La corrupción de una partición más pequeña
puede ser más fácil de reparar y, a menudo, permite que la computadora permanezca en servicio mientras se
realiza la corrección.
La Tabla 9.4 enumera algunos directorios que puede considerar convertir en particiones separadas del sistema de
archivos.
TABLA 9.4 Asignación de particiones a directorios particulares
Directorio Explicación
/boot A veces, el BIOS de las PC más antiguas solo puede acceder a los primeros 1024 cilindros de su
disco duro. Para asegurarse de que la BIOS pueda acceder a la información en su directorio /
boot, cree una partición de disco separada (de forma predeterminada, RHEL 8 establece esta
partición en 1024 MiB) para /boot. Incluso con varios núcleos instalados, rara vez hay una razón
para que / boot tenga más de 1024 MiB.
/usr Esta estructura de directorios contiene la mayoría de las aplicaciones y utilidades
disponibles para los usuarios de Linux. La teoría original era que si /usr estaba en una
partición separada, podría montar ese sistema de archivos como de solo lectura después de
instalar el sistema operativo. Esto evitaría que los atacantes reemplacen o eliminen
aplicaciones importantes del sistema con sus propias versiones que pueden causar problemas
de seguridad. Una partición /usr separada también es útil si tiene estaciones de trabajo sin disco
en su red local. Usando NFS, puede compartir /usr a través de la red con esas estaciones de trabajo.
/era Sus directorios FTP (/var/ftp) y servidor web (/var/www) están, de forma predeterminada en
muchos sistemas Linux, almacenados en /var. Tener una partición /var separada puede evitar
que un ataque a esas instalaciones dañe o llene todo su disco duro.
/home Debido a que los directorios de su cuenta de usuario se encuentran en este directorio,
rate /home account puede evitar que un usuario imprudente llene todo el disco duro. También separa
convenientemente los datos del usuario de su sistema operativo (para realizar copias de seguridad o nuevas
instalaciones fácilmente). A menudo, /home se crea como un volumen lógico LVM, por lo que puede crecer en
tamaño a medida que aumentan las demandas de los usuarios. También se pueden asignar cuotas de usuario para limitar el uso del disco.
/tmp Proteger /tmp del resto del disco duro colocándolo en una partición separada puede garantizar
que las aplicaciones que necesitan escribir en archivos temporales en /tmp puedan completar
su procesamiento, incluso si el resto del disco se llena.
216
Machine Translated by Google
Capítulo 9: Instalación de Linux
Aunque las personas que usan sistemas Linux rara vez ven la necesidad de tener muchas particiones, aquellos
que mantienen y ocasionalmente tienen que recuperar sistemas grandes se sienten agradecidos cuando el
sistema que necesitan arreglar tiene varias particiones. Múltiples particiones pueden limitar los efectos del
daño deliberado (como ataques de denegación de servicio), problemas de usuarios errantes y corrupción
accidental del sistema de archivos.
Uso del cargador de arranque GRUB Un
cargador de arranque le permite elegir cuándo y cómo arrancar los sistemas operativos instalados en
los discos duros de su computadora. GRand Unifi ed Bootloader (GRUB) es el cargador de arranque más
popular utilizado para sistemas Linux instalados. Hay dos versiones principales de GRUB disponibles en la
actualidad:
GRUB heredado (versión 1). Esta versión de GRUB se usó con versiones anteriores de RHEL,
Fedora y Ubuntu.
GRUB 2. Las versiones actuales de Red Hat Enterprise Linux, Ubuntu y Fedora utilizan GRUB 2 como
cargador de arranque predeterminado.
NOTA
SYSLINUX es otro cargador de arranque que encontrará con los sistemas Linux. Los cargadores de arranque SYSLINUX no se utilizan
normalmente para los sistemas Linux instalados. Sin embargo, SYSLINUX se usa comúnmente como cargador de arranque para CD y
DVD de arranque de Linux. SYSLINUX es particularmente bueno para arrancar imágenes de CD ISO9660 (isolinux) y memorias USB
(syslinux) y para trabajar en hardware antiguo o para arrancar PXE (pxelinux) un sistema a través de la red.
Si desea iniciar a un nivel de ejecución en particular, puede agregar el nivel de ejecución que desee al final
de la línea del kernel. Por ejemplo, para que el arranque de RHEL se ejecute en el nivel 3 (modo de trabajo
multiusuario más red), agregue 3 al final de la línea del núcleo. También puede iniciar en modo de usuario
único (1), modo multiusuario (2) o modo X GUI (5). El nivel 3 es una buena opción si su GUI se rompe
temporalmente. El nivel 1 es bueno si ha olvidado su contraseña de root.
De forma predeterminada, verá una pantalla de inicio cuando se inicie Linux. Si desea ver mensajes que
muestren las actividades que suceden a medida que se inicia el sistema, puede eliminar la opción rhgb quiet
9
de la línea del kernel. Esto le permite ver los mensajes a medida que se desplazan. Presionar Esc durante el
arranque obtiene el mismo resultado.
GRUB 2 representa una importante reescritura del proyecto GRUB Legacy. Se adoptó como cargador de arranque
predeterminado para las últimas versiones de Red Hat Enterprise Linux, Fedora y Ubuntu. La función principal
del cargador de arranque GRUB 2 sigue siendo encontrar e iniciar el sistema operativo que desea, pero ahora se
integra mucha más potencia y flexibilidad en las herramientas y los archivos de configuración que lo llevan allí.
En GRUB 2, el archivo de configuración ahora se llama /boot/grub2/grub.cfg o /etc/grub2efi.cfg (para sistemas
que arrancan con EFI). Todo, desde el contenido de grub.cfg hasta la forma en que se crea grub.cfg, es diferente
del archivo grub.conf heredado de GRUB.
217
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Aquí hay algunas cosas que debe saber sobre el archivo grub.cfg:
■ En lugar de editar grub.cfg a mano o agregar paquetes RPM del núcleo, grub.cfg se genera
automáticamente a partir del contenido del archivo /etc/default/grub y el directorio /etc/
grub.d/. Debe modificar o agregar a esos archivos para configurar GRUB 2 usted mismo. ■
El archivo grub.cfg puede contener sintaxis de secuencias de comandos, incluidas funciones,
bucles y variables.
■ Los nombres de dispositivos necesarios para identificar la ubicación de los núcleos y los discos RAM iniciales
se pueden identificar de manera más confiable mediante etiquetas o identificadores únicos universales (UUID).
Esto evita la posibilidad de que un dispositivo de disco como /dev/sda se cambie a /dev/
sdb cuando agrega un nuevo disco (lo que daría como resultado que no se encuentre el
núcleo).
■ Para los sistemas Fedora y RHEL, los archivos *conf en el directorio /boot/loader/entries se
usan para crear entradas que aparecen en el menú de GRUB que aparece en el momento
del arranque.
Puede crear su propia entrada para el menú de inicio de GRUB siguiendo el formato de una entrada
existente. El siguiente archivo en el directorio /boot/loader/entries crea una entrada de menú para
iniciar un kernel RHEL 8 e initrd:
título Red Hat Enterprise Linux (4.18.080.el8.x86_64) 8.0 (Ootpa) versión
4.18.080.el8.x86_64 linux /vmlinuz4.18.080.el8.x86_64 initrd /initramfs4.18.0
80.el8.x86_64.img $tuned_initrd options $kernelopts $tuned_params id
rhel201903131234474.18.080.el8.x86_64 grub_users $grub_users grub_arg
unrestricted grub_class kernel
La entrada de menú para esta selección aparece como Red Hat Enterprise Linux (4.18.
080.el8.x86_64) 8.0 (Ootpa) en el menú de arranque de GRUB 2.
La línea de linux identifica la ubicación del kernel (/vmlinuz4.18.080.el8.x86_64), seguida de la ubicación
del initrd (/initramfs4.18.080.el8.x86_64.img).
Hay muchas, muchas más características de GRUB 2 que puede conocer si desea profundizar en
'
cargador
su sistema escribiendo info grub2 de arranque.
en el shell. La mdejor
La entrada documentación
e información pG
para ara
GRUB
2 p2roporciona
RUB está disponible
mucha información para iniciar diferentes sistemas operativos, escribir sus propios archivos de
configuración, trabajar con archivos de imagen de GRUB, establecer variables de entorno de GRUB y
trabajar con otras características de GRUB.
218
Machine Translated by Google
Capítulo 9: Instalación de Linux
Resumen
Aunque cada distribución de Linux incluye un método de instalación diferente, debe realizar muchas actividades
comunes, independientemente del sistema Linux que instale. Para cada sistema Linux, debe lidiar con problemas de
partición de disco, opciones de arranque y configuración de cargadores de arranque.
En este capítulo, repasó los procedimientos de instalación para una estación de trabajo Fedora (usando una
instalación de medios en vivo) y Red Hat Enterprise Linux (desde medios de instalación).
Aprendió cómo la implementación de Linux en entornos de nube puede diferir de los métodos de instalación
tradicionales mediante la combinación de metadatos con archivos de imagen del sistema operativo base preconstruidos
para ejecutarse en grandes grupos de recursos informáticos.
El capítulo también cubrió temas especiales de instalación, incluido el uso de opciones de arranque y la partición del
disco. Con su sistema Linux ahora instalado, el Capítulo 10, “Obtención y administración
comenzar
del software”,
a administrar
describe
el software
cómo
en su sistema Linux.
Ejercicios
Utilice estos ejercicios para poner a prueba sus conocimientos sobre la instalación de Linux. Te recomiendo que
hagas estos ejercicios en una computadora que no tenga sistema operativo o datos que temes perder (en otras
palabras, uno que no te importe borrar). Si tiene una ces
omputadora
una forma qsue
egura
le pdermite
e hacer
instalar
estos seistemas
jercicios.
virtuales,
Estos ejercicios
también se
probaron con Fedora 30 Workstation Live media y un DVD de instalación de RHEL 8.
1. Comience a instalar desde Fedora Live media, utilizando tantas de las opciones predeterminadas
como sea posible.
2. Después de haber instalado completamente Fedora, actualice todos los paquetes en
el sistema.
3. Inicie la instalación desde un DVD de instalación de RHEL, pero hágalo de modo que la instalación se ejecute
en modo de texto. Complete la instalación de la forma que elija.
4. Comience la instalación desde un DVD de instalación de RHEL y configure la partición del disco de la 9
siguiente manera: 1024 MB /boot, / (6G), /var (2G) y /home (2G). Deja el resto como espacio sin usar.
PRECAUCIÓN
Completar el Ejercicio 4 finalmente elimina todo el contenido de su disco duro. Si solo desea usar este ejercicio
para practicar la partición, puede reiniciar su computadora antes de hacer clic en Aceptar cambios al final de este
procedimiento sin dañar su disco duro. Si continúa y divide su disco, suponga que se han eliminado todos los datos
que no ha cambiado explícitamente.
219
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Conseguir y administrar
EN ESTE CAPÍTULO
Instalación de software desde el escritorio
Trabajando con paquetes RPM
Usando YUM para administrar paquetes
Uso de rpm para trabajar con paquetes
Instalación de software en la empresa.
No necesito saber mucho sobre qué tan suave
En
las
El distribuciones
software dye
se empaqueta Linux como
administra Fedora
para obtener y Ubuntu,
el software no Esas distribuciones tienen excelentes
que desea.
herramientas de instalación de software que apuntan automáticamente a grandes repositorios de software. Solo unos
'
clics y usted El pocos vuelven a usar el software en poco más de tiempo del que se tarda en descargarlo.
hecho de que la administración del software de Linux sea tan fácil en estos días es un mérito de la comunidad de
Linux, que ha trabajado diligentemente para crear formatos de paquetes, herramientas de instalación complejas y
paquetes de software de alta calidad. No solo es fácil obtener el software, sino que
administrarlo,
después de instalarlo,
consultarlo,
y eliminarlo.
es afácil
ctualizarlo
Este capítulo comienza describiendo cómo instalar software en Fedora utilizando la nueva herramienta de instalación
gráfica de software. Si solo está instalando algunas aplicaciones de escritorio en su propio sistema de escritorio, es
posible que no necesite mucho más que eso y actualizaciones de seguridad ocasionales.
Para profundizar en la administración del software de Linux, a continuación describo lo que constituye los paquetes
de software de Linux (comparando los paquetes con formato deb y rpm), los componentes de administración de
software subyacentes y los comandos (dnf, yum y rpm) para administrar el software en Fedora y Red Hat. Linux empresarial.
A esto le sigue una descripción de cómo administrar paquetes de software en la informática empresarial.
Administración de software en el escritorio
La ventana del software Fedora ofrece una forma intuitiva de elegir e instalar aplicaciones de escritorio que no se
alinea con las prácticas típicas de instalación de Linux. La ventana del software de Ubuntu ofrece la misma interfaz
para los usuarios de Ubuntu. En cualquier caso, con la ventana Software, el más pequeño
221
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
componente de software que instala es una aplicación. Con Linux, instala paquetes (como rpms y
debs).
La Figura 10.1 muestra un ejemplo de la ventana Software.
FIGURA 10.1
Instale y administre paquetes de software desde la ventana Software.
Para acceder a la ventana Software en Fedora o Ubuntu, seleccione Actividades, luego escriba
Software y presione Entrar. La primera vez que abra esta ventana, puede seleccionar Habilitar
para permitir repositorios de software de terceros que no forman parte de los repositorios
redistribuibles oficiales de Fedora. Usar la ventana Software es la mejor manera de instalar
aplicaciones orientadas al escritorio, como procesadores de texto, juegos, editores de gráficos y
aplicaciones educativas.
Desde la ventana Software, puede seleccionar las aplicaciones que desea instalar del grupo
Elecciones d el editor
(audio (un puñado
y video, de
juegos, aplicaciones
gráficos populares),
y fotografía, eolegir
etc. ), entre
buscar categorías
aplicaciónde aplicaciones
por
222
Machine Translated by Google
Capítulo 10: Obtener y administrar software
nombre o descripción. Seleccione el botón Instalar para que la ventana Software descargue e instale todos los
paquetes de software necesarios para que la aplicación funcione.
Otras características de esta ventana le permiten ver todas las aplicaciones instaladas (pestaña Instaladas) o
ver una lista de aplicaciones que tienen paquetes actualizados disponibles para instalar (pestaña Actualizaciones).
Si desea eliminar una aplicación instalada, simplemente haga clic en el botón Eliminar junto al nombre del paquete.
Si está utilizando Linux únicamente como un sistema de escritorio, donde desea escribir documentos,
reproducir música y realizar otras tareas comunes de escritorio, la ventana Software puede ser todo lo que
necesita para obtener el software básico que desea. De forma predeterminada, su sistema se conecta al
repositorio principal de software de Fedora y le da acceso a cientos de aplicaciones de software. Como se
señaló anteriormente, también tiene la opción de acceder a aplicaciones de terceros que aún son gratuitas para
que las use pero no las redistribuya.
Aunque la ventana Software le permite descargar e instalar cientos de aplicaciones desde el repositorio de
software de Fedora, ese repositorio en realidad contiene decenas de miles de paquetes de software. ¿Qué
paquetes no puede ver de ese repositorio, cuándo podría querer esos otros paquetes y cómo puede obtener
acceso a esos paquetes (así como a los paquetes de otros repositorios de software)?
Ir más allá de la ventana del software
Si está administrando un solo sistema de escritorio, es posible que esté bastante satisfecho con los cientos
de paquetes que puede encontrar a través de la ventana Software. Las versiones de código abierto de los
tipos más comunes de aplicaciones de escritorio están disponibles para usted a través de la ventana Software
después de que tenga una conexión de Fedora a Internet.
Sin embargo, los siguientes son algunos ejemplos de por qué es posible que desee ir más allá de lo que puede
hacer con la ventana Software:
Más repositorios Fedora y Red Hat Enterprise Linux distribuyen solo software de código abierto y
distribución gratuita. Es posible que desee instalar algún software comercial (como Adobe Flash Player)
o software no libre (disponible en repositorios como rpmfusion.org).
Más allá de las aplicaciones de escritorio Decenas de miles de paquetes de software en el repositorio de
Fedora no están disponibles a través de la ventana Software. La mayoría de estos paquetes no están
asociados con aplicaciones gráficas en absoluto. Por ejemplo, algunos paquetes contienen herramientas
puras de línea de comandos, servicios del sistema, herramientas de programación o documentación
que no aparece en la ventana Software.
Flexibilidad Aunque no lo sepa, cuando instala una aplicación a través de la ventana Software, en realidad
puede estar instalando varios paquetes RPM. Este conjunto de paquetes puede ser simplemente un 10
conjunto de paquetes predeterminado que incluye documentación, fuentes adicionales, complementos
de software adicionales o varios paquetes de idiomas que
223
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
puede o no querer. Con los comandos yum y rpm, tiene más fl exibilidad sobre
exactamente qué paquetes relacionados con una aplicación u otra función de software
están instalados en su sistema.
Consultas más complejas Con comandos como yum y rpm, puede obtener información detallada
sobre paquetes, grupos de paquetes y repositorios.
Validación de software Usando rpm y otras herramientas, puede verificar si un
el paquete ha sido modificado antes de que lo instalara o si alguno de los componentes de un
paquete ha sido manipulado desde que se instaló el paquete.
Administrar la instalación de software Aunque la ventana Software funciona bien si está instalando
software de escritorio en un solo sistema, no se escala bien para
múltiples
administrar
sistemas.
software
Otras
en
herramientas se construyen sobre la función rpm para hacer eso.
Antes de comenzar con algunas de las herramientas de línea de comandos para instalar y administrar
software en Linux, la siguiente sección describe cómo funcionan los sistemas subyacentes de
administración de paquetes y paquetes en Linux. En particular, me enfoco en el paquete RPM tal como
se usa en Fedora, Red Hat Enterprise Linux y distribuciones relacionadas, así como en paquetes Deb,
que están asociados con Debian, Ubuntu, Linux Mint y distribuciones relacionadas.
Comprender Linux RPM y DEB
Paquete de software
En los primeros sistemas Linux, si deseaba agregar software, tomaba el código fuente de un proyecto
que lo produjo, lo compilaba en archivos binarios ejecutables y lo colocaba en su computadora. Si tuvo
suerte, alguien ya lo habría compilado en un formulario que se ejecutaría en su computadora.
La forma del paquete podría ser un tarball que contenga archivos ejecutables (comandos),
documentación, archivos de configuración y bibliotecas. (Un tarball es un archivo único en el que se
reúnen varios archivos para almacenarlos o distribuirlos cómodamente). Cuando instala software
desde un tarball, los archivos de ese tarball pueden distribuirse por todo el sistema Linux en
directorios apropiados (/ usr/share/man, /etc, /bin y /lib, por nombrar solo algunos).
Aunque es fácil crear un tarball y simplemente colocar un conjunto de software en su sistema
Linux, este método de instalación de software hace que sea difícil hacer estas cosas:
Obtener software dependiente Necesitaría saber si el software que estaba instalando dependía de
otro software instalado para que su software funcione. Luego, tendría que rastrear ese software
e instalarlo también (que podría tener algunas dependencias).
Enumere el software Incluso si supiera el nombre del comando, es posible que no sepa dónde se
encuentran sus archivos de configuración o documentación cuando lo busque más tarde.
224
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Elimine el software A menos que conserve el tarball original o una lista de archivos,
no sabría
dónde estaban todos los archivos cuando llegó el momento de eliminarlos. Incluso si lo
supiera, tendría que eliminar cada uno individualmente.
Actualice el software Los Tarballs no están diseñados para contener metadatos sobre los contenidos
que contienen. Después de instalar el contenido de un tarball, es posible que no tenga forma de
saber qué versión del software está utilizando, lo que dificulta localizar errores y obtener nuevas
versiones de su software.
Para hacer frente a estos problemas, los paquetes evolucionaron de simples tarballs a empaques más
complejos. Con solo unas pocas excepciones notables (como Gentoo, Slackware y algunas otras), la
mayoría de las distribuciones de Linux fueron a uno de los dos formatos de empaquetado: DEB y RPM:
Paquete DEB ( .deb ) El proyecto Debian GNU/Linux creó el paquete .deb,
que es utilizado por Debian y otras distribuciones basadas en Debian (Ubuntu, Linux Mint,
KNOPPIX, etc.). Usando herramientas como aptget, apt y dpkg, las distribuciones de Linux
podrían instalar, administrar, actualizar y eliminar software.
Empaquetado RPM ( .rpm ) Originalmente llamado Red Hat Package Manager, pero luego se repite
RPM Package Manager, renombrado en forma intensiva, RPM es el formato de paquete preferido para
SUSE, las distribuciones de Red Hat (RHEL y Fedora) y aquellas basadas en las distribuciones de
Red Hat (CentOS, Oracle Linux, etc.). El comando rpm fue la primera herramienta para administrar los
RPM. Más tarde, se agregó yum para mejorar la función de RPM, y ahora dnf está listo para reemplazar
eventualmente a yum.
Para administrar software en sistemas individuales, hay defensores en ambos lados del debate RPM vs.
DEB con puntos válidos. Aunque RPM es el formato preferido para administrar la instalación, las
actualizaciones y el mantenimiento de software de calidad empresarial, DEB es muy popular entre muchos
entusiastas de Linux. Este capítulo cubre RPM (Fedora y Red Hat Enterprise Linux) y (hasta cierto punto) el
paquete DEB y la administración de software.
Comprensión del empaquetado DEB Los paquetes
de software de Debian contienen múltiples archivos y metadatos relacionados con algún conjunto de software
en el formato de un archivo ar. Los archivos pueden ser ejecutables (comandos), archivos de configuración,
documentación y otros elementos de software. Los metadatos incluyen cosas como dependencias, licencias,
tamaños de paquetes, descripciones y otra información. Varias herramientas gráficas y de línea de comandos
están disponibles para trabajar con archivos DEB en Ubuntu, Debian y otras distribuciones de Linux. Algunos
de estos incluyen lo siguiente:
Centro de software de Ubuntu Seleccione la aplicación de software de Ubuntu desde GNOME
Menú de actividades. La ventana que aparece le permite buscar aplicaciones y paquetes que desee
buscando palabras clave o navegando por categorías. 10
225
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
aptitude El comando aptitude es una herramienta de instalación de paquetes que proporciona una
menú orientado a la pantalla que se ejecuta en el shell. Después de ejecutar el comando, use las
teclas de flecha para resaltar la selección que desea y presione Entrar para seleccionarla. Puede
actualizar paquetes, obtener nuevos paquetes o ver paquetes instalados.
usar
*
pHara
ay audministrar
n conjunto
la
de
instalación
comandos dae
pt*
paquetes.
(aptget, apt, aptconfig, aptcache, apt, etc.) que se pueden
El Centro de software de Ubuntu es bastante intuitivo para encontrar e instalar paquetes. Sin embargo,
aquí hay algunos ejemplos de comandos que pueden ayudarlo a instalar y administrar paquetes con
'
comandos apt*. En este caso, yo Estoy buscando e instalando el paquete vsftpd:
NOTA
Tenga en cuenta que los comandos apt * están precedidos por el comando sudo en estos ejemplos. Esto se debe a que es
una práctica común que un administrador de Ubuntu ejecute comandos administrativos como un usuario normal con privilegios de sudo.
$ sudo aptobtener actualización Obtenga las últimas versiones del paquete $
sudo aptcache search vsftpd Busque el paquete por palabra clave (como vsftpd) $ sudo aptcache show vsftpd
Muestre información sobre un paquete $ sudo aptget install vsftpd Instale el paquete vsftpd $ sudo aptget mejora
Actualice los paquetes instalados si la actualización está lista $
sudo aptcache pkgnames Listar todos los paquetes que están instalados
Hay muchos otros usos de los comandos apt* que puede probar. Si tiene un sistema Ubuntu instalado, le
recomiendo que ejecute man apt para comprender lo que pueden hacer apt y los comandos relacionados.
Descripción del paquete RPM Un paquete RPM
es una consolidación de archivos necesarios para proporcionar una función, como un procesador de texto,
un visor de fotos o un servidor de archivos. Los comandos, los archivos de configuración y la documentación
que componen la característica del software pueden estar dentro de un RPM. Sin embargo, un archivo RPM
también contiene metadatos que almacenan información sobre el contenido de ese paquete, de dónde
proviene el paquete, qué necesita para ejecutarse y otra información.
¿Qué hay en un RPM?
Incluso antes de mirar dentro de un RPM, puede saber mucho sobre él por el nombre del paquete RPM
en sí. Para averiguar el nombre de un paquete RPM actualmente instalado en su sistema (en este ejemplo,
el navegador web Firefox), puede escribir lo siguiente desde el shell en Fedora o Red Hat Enterprise Linux:
# rpm q firefox
firefox67.04.fc30.x86_64
A partir de esto, puede decir que el nombre base del paquete es firefox. El número de versión es 67.0
(asignado por el productor original de Firefox, el Proyecto Mozilla). La liberación
226
Machine Translated by Google
Capítulo 10: Obtener y administrar software
(asignado por el empaquetador, Fedora, cada vez que el paquete se reconstruye con el mismo número de
versión) es 4. El paquete de Firefox se creó para Fedora 30 (fc30) y se compiló para la arquitectura x86 de 64
bits (x86_64).
Cuando se instaló el paquete de Firefox, probablemente se copió del medio de instalación (como un CD o
DVD) o se descargó de un repositorio de YUM (más sobre esto más adelante).
Si le dieron el archivo RPM y estaba ubicado en un directorio local, el nombre aparecería como
firefox67.04.fc30.x86_64.rpm y podría instalarlo desde allí. Independientemente de su origen, una vez que se
instala el paquete, el nombre y otra información sobre él se almacenan en una base de datos RPM en la máquina
local.
Para obtener más información sobre lo que hay dentro de un paquete RPM, puede usar otras opciones además
del comando rpm para consultar esa base de datos RPM local, como en este ejemplo:
# rpmqi firefox : firefox
Nombre
Versión : 67,0
Liberar : 4.fc30
Arquitectura: x86_64
Fecha de instalación: dom 02 jun 2019 09:37:25 p. m. EDT
Grupo : Sin especificar
Tamaño : 266449296
Licencia : MPLv1.1 o GPLv2+ o LGPLv2+
Firma: RSA/SHA256, viernes 24 de mayo de 2019 12:09:57 p. m. EDT, ID de clave
ef3c111fcfc659b9
Fuente RPM: firefox67.04.fc30.src.rpm Fecha de compilación: jueves 23
de mayo de 2019 10:03:55 a. m. EDT Host de compilación:
buildhw08.phx2.fedoraproject.org Reubicaciones: (no reubicable)
Empaquetador : Proyecto Fedora : Proyecto
Proveedor Fedora : https://
URL www.mozilla.org/firefox/ : https://bugz.fedoraproject.org/firefox
Mozilla Firefox es un navegador
URL del ewrror :
eb dNe avegador
código abierto ,
web Mdozilla
iseñado
Firefox
para
Deescripción
l cumplimiento
resumida :
de los
estándares, el rendimiento y la portabilidad.
Además de la información que obtuvo del nombre del paquete en sí, la opción qi (información de consulta)
le permite ver quién creó el paquete (Proyecto Fedora), cuándo se creó y cuándo se instaló. Se enumeran el
grupo en el que se encuentra el paquete (sin especificar), su tamaño y la licencia. Para permitirle obtener más
información sobre el paquete, la URL apunta a la página del proyecto en Internet y las líneas Resumen y
Descripción le indican para qué se usa el paquete.
10
¿De dónde vienen los RPM?
El software incluido con las distribuciones de Linux, o creado para funcionar con esas distribuciones, proviene
de miles de proyectos de código abierto en todo el mundo. Estos proyectos, referidos
227
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
como proveedores de software upstream, generalmente ponen el software a disposición de cualquiera que lo
desee, bajo ciertas condiciones de licencia.
Una distribución de Linux toma el código fuente y lo convierte en archivos binarios. Luego reúne esos binarios
junto con documentación, archivos de configuración, scripts y otros componentes disponibles del proveedor
original.
Una vez que todos esos componentes se recopilan en el RPM, el paquete RPM se firma (para que los
usuarios puedan probar la validez del paquete) y se coloca en un depósito de RPM para la distribución y
arquitectura específicas (32 bits x86, 64 bits x86, etc.). El repositorio se coloca en un CD o DVD de
instalación o en un directorio que está disponible como servidor FTP, web o NFS.
Instalación de
RPM Cuando instala inicialmente un sistema Fedora o Red Hat Enterprise Linux, muchos paquetes RPM
individuales componen esa instalación. Después de instalar Linux, puede agregar más paquetes usando la
ventana Software (como se describió anteriormente). Consulte el Capítulo 9, “Instalación
obtener
de Linux”,
información
para
sobre la instalación de Linux.
Sin embargo, la primera herramienta que se desarrolló para instalar paquetes RPM fue el comando rpm.
Usando rpm, puede instalar, actualizar, consultar, validar y eliminar paquetes RPM. El comando, sin
embargo, tiene algunos inconvenientes importantes:
Dependencias Para que la mayoría de los paquetes RPM funcionen, se debe instalar algún otro
software (biblioteca, ejecutables, etc.) en el sistema. Cuando intenta instalar un paquete con rpm, si
un paquete dependiente no está instalado, la instalación del paquete falla y le indica qué componentes
se necesitan. En ese momento, debe investigar para encontrar qué paquete contenía ese componente.
Cuando vaya a instalarlo, ese paquete dependiente podría tener dependencias que necesita instalar
para que funcione. Esta situación se conoce cariñosamente como el "infierno de la dependencia" y, a
menudo, se usa como un ejemplo de por qué los paquetes DEB eran mejores que los RPM. Las
herramientas de empaquetado DEB se crearon para resolver automáticamente las dependencias de
los paquetes, mucho antes de que las herramientas de empaquetado relacionadas con RPM pudieran
hacerlo.
Ubicación de los RPM El comando rpm espera que proporcione la ubicación exacta del archivo RPM
cuando intente instalarlo. En otras palabras, tendría que dar firefox67.04.fc30.x86_64.rpm como
una opción si el RPM estuviera en el directorio actual o en http://example.com/
firefox67.04.fc30.x86_64. rpm si lo fuera
en un servidor.
A medida que Red Hat Linux y otras aplicaciones basadas en RPM crecieron en popularidad, se hizo evidente
que había que hacer algo para que la instalación del paquete fuera más conveniente. La respuesta fue la
instalación de YUM.
228
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Gestión de paquetes RPM con YUM
El proyecto YellowDog Updater Modifi ed (YUM) se propuso resolver el dolor de cabeza de administrar
dependencias con paquetes RPM. Su principal contribución fue dejar de pensar en los paquetes
RPM como componentes individuales y pensar en ellos como partes de repositorios de software más
grandes.
Con los repositorios, el problema de lidiar con las dependencias no recayó en la persona que instaló
el software, sino en la distribución de Linux o en el distribuidor de software de terceros que hace que el
software esté disponible. Entonces, por ejemplo, dependería del Proyecto Fedora asegurarse de que
todos los componentes que necesita cada paquete en su distribución de Linux puedan ser resueltos por
algún otro paquete en el repositorio.
Los repositorios también podrían construirse unos sobre otros. Entonces, por ejemplo, el repositorio
rpmfusion.org podría asumir que un usuario ya tenía acceso al repositorio principal de Fedora. Si un
paquete que se está instalando desde rpmfusion.org necesita una biblioteca o un comando del repositorio
principal de Fedora, el paquete de Fedora puede descargarse e instalarse al mismo tiempo que instala el
paquete rpmfusion.org.
Los repositorios de yum se pueden ubicar en un directorio en un servidor web (http://), en un
servidor FTP (ftp://), en un medio local como un CD o DVD, o en un directorio local (archivo:/ /). Las
ubicaciones de estos repositorios luego se almacenarían en el usuario 's en el archivo /etc/yum. conf
o, más típicamente, en archivos de configuración separados en el directorio /etc/yum.repos.d.
Transición de yum a dnf La interfaz de línea
de comandos dnf representa la próxima generación de YUM. DNF, que se refiere a sí mismo como
Dandifi ed YUM, (https://github.com/rpmsoftwaremanagement/dnf/) ha sido parte de Fedora desde la
versión 18 y acaba de agregarse como el administrador de paquetes RPM predeterminado para RHEL.
8. Al igual que yum, dnf es una herramienta para encontrar, instalar, consultar y, en general, administrar
paquetes RPM desde repositorios de software remotos a su sistema Linux local.
Si bien dnf mantiene una compatibilidad básica de línea de comandos con yum, una de sus principales
diferencias es que se adhiere a una API estricta. Esa API fomenta el desarrollo de extensiones y
complementos para dnf.
Para nuestros propósitos, casi todos los comandos yum descritos en este capítulo pueden reemplazarse
por dnf o usarse tal cual. El comando yum es un enlace simbólico a dnf en Fedora y RHEL, por lo que
escribir cualquier comando tiene el mismo resultado. Para obtener más información sobre DNF, consulte
la página de DNF en https://dnf.readthedocs.io/.
Comprender cómo funciona yum
Esta es la sintaxis básica del comando yum:
10
# comando yum [opciones]
229
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Usando esa sintaxis, puede buscar paquetes, ver información de paquetes, conocer grupos de paquetes,
actualizar paquetes o eliminar paquetes, por nombrar algunas características. Con el repositorio YUM y
la configuración en su lugar, un usuario puede instalar un paquete simplemente escribiendo algo como
lo siguiente:
# ñam instalar firefox
El usuario solo necesita saber el nombre del paquete (que se puede consultar de diferentes maneras,
como se describe en la sección "Búsqueda de paquetes" más adelante en este capítulo). La función
YUM encuentra la última versión de ese paquete disponible en el repositorio, lo descarga en el sistema
local y lo instala.
Para obtener más experiencia con la instalación de YUM y para ver dónde hay oportunidades para
personalizar cómo funciona YUM en su sistema, siga las descripciones de cada fase del proceso de
instalación de YUM que se describe a continuación.
NOTA
En los últimos sistemas Fedora y RHEL, los archivos de configuración de YUM ahora son en realidad enlaces a archivos DNF en el
directorio /etc/dnf. Además del archivo principal de configuración de dnf ( /etc/dnf/dnf.conf ), ese directorio contiene principalmente
módulos y complementos que se suman a su capacidad para administrar paquetes RPM.
1. Revisando /etc/yum.conf:
Cuando se inicia cualquier comando de yum, comprueba el archivo /etc/yum.conf para ver la
configuración predeterminada. El archivo /etc/yum.conf es el archivo de configuración básico
de YUM. También puede identificar la ubicación de los repositorios aquí, aunque el directorio /
'
es un ejemplo deen
etc/yum.repos.d es la ubicación más típica para identificar repositorios. Aquí /etc/yum.conf
un sistema RHEL 8, con algunos otros agregados:
[principal]
gpgcheck=1 installonly_limit=3
clean_requirements_on_remove=Verdadero
mejor = Verdadero
cachedir=/var/cache/yum/$basearch/$releasever keepcache=0
debuglevel=2 logfile=/var/log/yum.log
arco exacto=1
complementos = 1
El gpgcheck se usa para validar cada paquete contra una clave que recibe de quienes
construyeron el RPM. Está activado por defecto (gpgcheck=1). Para paquetes en Fedora
o RHEL, la clave viene con la distribución para verificar todos los paquetes. Para instalar
paquetes que no son de su distribución, debe importar la clave para verificar esos paquetes o
desactivar esa característica (gpgcheck=0).
230
Machine Translated by Google
Capítulo 10: Obtener y administrar software
La configuración install_onlylimit=3 permite que se mantengan en el sistema hasta tres versiones
del mismo paquete (no establezca esto en menos
menos
de 2, pdara
os paaquetes
segurarse
del
de
kernel).
tener siempre al
clean_requirements_on_ remove=True le dice a yum que elimine los paquetes dependientes cuando
elimine un paquete, si esos paquetes no son necesarios de otra manera. Con best=True, al actualizar
un paquete, intente siempre usar la versión más alta disponible.
Otras configuraciones que puede agregar a yum.conf le dicen a YUM dónde guardar los archivos de
caché (/var/cache/yum) y las entradas de registro (/var/log/yum.log) y si debe mantener los archivos
de caché después de un paquete. está instalado (0 significa no). Puede aumentar el valor de nivel de
depuración en el archivo yum.conf por encima de 2 si desea ver más detalles en sus archivos de registro.
A continuación, puede ver si la arquitectura exacta (x86, x86_64, etc.) debe coincidir al elegir los
paquetes para instalar (1 significa que sí) y si usar complementos (1 significa que sí) para permitir
cosas como listas negras. , listas blancas o conexión a Red Hat Network para paquetes.
Para encontrar otras funciones que puede establecer en el archivo yum.conf,
escriba man yum.conf.
2. Comprobación de los archivos /etc/yum.repos.d/*.repo:
Los repositorios de software se pueden habilitar colocando archivos que terminan en .repo en el
directorio /etc/yum.repos.d/ que apuntan a la ubicación de uno o más repositorios. En Fedora, incluso
sus repositorios básicos de Fedora están habilitados desde archivos .repo en este directorio. Aquí /etc/
'
yum.repos.d/myrepo.repo: es un ejemplo de un archivo de configuración de yum simple llamado
[myrepo]
name=Mi repositorio de paquetes de software
baseurl=http://myrepo.example.com/pub/myrepo enable=1
gpgcheck=1
gpgkey=file:///etc/pki/rpmgpg/MYOWNKEY
Cada entrada del repositorio comienza con el nombre del repositorio entre corchetes. La línea de
nombre contiene una descripción legible por humanos del repositorio.
La línea baseurl identifica el directorio que contiene los archivos RPM, que puede ser una entrada
httpd://, ftp:// o file://.
La línea habilitada indica si la entrada está activa. Un 1 está activo; 0 está inactivo.
Si no hay una línea habilitada, la entrada está activa. Las dos últimas líneas del código anterior indican si
se deben verificar las firmas en los paquetes de este repositorio. La línea gpgkey muestra la ubicación de
la clave que se utiliza para verificar los paquetes en este repositorio.
10
Puede tener tantos repositorios habilitados como desee. Sin embargo, tenga en cuenta que cuando usa
los comandos yum, se verifica cada repositorio y los metadatos sobre todos los paquetes se descargan
al sistema local que ejecuta el comando yum. Entonces, para ser más eficiente, no habilite repositorios
que no necesite.
231
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
3. Descarga de paquetes RPM y metadatos desde un repositorio YUM:
Una vez que yum conoce las ubicaciones de los repositorios, los metadatos del directorio repodata de
cada repositorio se descargan al sistema local. De hecho, es la existencia de un directorio repodata en un
directorio de RPMs lo que indica que se trata de un repositorio YUM.
La información de metadatos se almacena en el sistema local en el directorio /var/cache/yum. Cualquier
consulta adicional sobre paquetes, grupos de paquetes u otra información del repositorio se recopila de los
metadatos almacenados en caché hasta que se alcanza un período de tiempo de espera.
Una vez que se alcanza el período de tiempo de espera, yum recupera metadatos nuevos si se ejecuta
el comando yum. De forma predeterminada, el tiempo de espera es de 6 horas para los minutos yum y de
48 horas para los minutos dnf. Puede cambiar ese período configurando metadata_expire en el archivo /etc/
yum.conf.
Luego, yum mira los paquetes que solicitó instalar y verifica si esos paquetes necesitan algún paquete
dependiente. Con la lista de paquetes reunida, yum le pregunta si está bien descargar todos esos paquetes.
Si elige sí, los paquetes se descargan a los directorios de caché y se instalan.
4. Instalación de paquetes RPM en el sistema de archivos de Linux:
Después de descargar todos los paquetes necesarios en los directorios de caché, yum ejecuta comandos
rpm para instalar cada paquete. Si un paquete contiene secuencias de comandos de preinstalación (que
pueden crear una cuenta de usuario especial o crear directorios), esas secuencias de comandos se
ejecutan. El contenido de los paquetes (comandos, archivos de configuración, documentos, etc.) se copia
en el sistema de archivos en las ubicaciones especificadas en los metadatos de RPM. Luego se ejecutan
los scripts posteriores a la instalación. (Los scripts posteriores a la instalación ejecutan comandos adicionales
necesarios para configurar el sistema después de instalar cada paquete).
5. Almacenamiento de metadatos del repositorio YUM en la base de datos RPM local.
Los metadatos contenidos en cada paquete RPM que se instala finalmente se copian en la base de datos
RPM local. La base de datos RPM está contenida en archivos que se almacenan en el directorio /var/lib/rpm.
Una vez que la información sobre los paquetes instalados está en la base de datos RPM local, puede
realizar todo tipo de consultas de esa base de datos. Puede ver qué paquetes están instalados, enumerar los
componentes de esos paquetes y ver scripts o registros de cambios asociados con cada paquete. Incluso
puede validar los paquetes instalados contra la base de datos RPM para ver si alguien ha manipulado los
componentes instalados.
El comando rpm (descrito en la sección “Instalación, consulta y verificación de software con el comando
rpm” más adelante en este capítulo) es la mejor herramienta para consultar la base de datos RPM. Puede
ejecutar consultas individuales con rpm o usarlas en secuencias de comandos para generar informes o
ejecutar consultas comunes una y otra vez.
Ahora que comprende el funcionamiento básico del comando yum, su sistema Fedora debe configurarse
automáticamente para conectarse al repositorio principal de Fedora y al repositorio de actualizaciones de Fedora. Puede
probar algunas líneas de comando yum para instalar paquetes ahora mismo. O bien, puede habilitar otros repositorios
YUM de terceros para extraer software.
232
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Uso de YUM con repositorios de software de terceros Los repositorios
de software de Fedora y Red Hat Enterprise Linux se han examinado para que contengan
solo software que cumpla con los criterios que lo hacen abierto y redistribuible. En algunos
casos, sin embargo, es posible que desee ir más allá de esos repositorios. Antes de hacerlo,
debe comprender que algunos repositorios de terceros tienen estas limitaciones:
■ Pueden tener requisitos menos estrictos para la redistribución y la libertad de
limitaciones de patentes que los repositorios de Fedora y RHEL. ■ Pueden
introducir algunos confl ictos de software. ■ Pueden incluir software que no es
de código abierto y, aunque puede ser gratuito para uso personal, puede no ser redistribuible.
■ Pueden ralentizar el proceso de instalación de todos sus paquetes (porque los metadatos se
descargan para cada repositorio que haya habilitado).
Por esas razones, le recomiendo que (1) no habilite ningún repositorio de software adicional, o (2) habilite
solo el repositorio RPM Fusion (http://rpmfusion.org) al principio para Fedora y el repositorio EPEL. (http://
fedoraproject.org/wiki/EPEL) para Red Hat Enterprise Linux. RPM Fusion representa una fusión de varios
repositorios populares de Fedora de terceros (Freshrpms, Livna.org y Dribble). Consulte las preguntas
frecuentes del repositorio para obtener detalles (http://rpmfusion.org/FAQ). Para habilitar
RPM eFl usion
repositorio
en Fedora,
Free
haga lo siguiente:
1. Abra una ventana de Terminal.
2. Escriba su e ingrese la contraseña raíz cuando se le solicite.
3. Escriba el siguiente comando en una línea sin espacio entre la barra oblicua y
rpmfusion (si eso no funciona, vaya al directorio de fedora y elija el RPM apropiado para su versión
de Fedora):
# rpm Uvh http://download1.rpmfusion.org/free/fedora/rpmfusionfree
releasestable.noarch.rpm
El repositorio RPM Fusion Nonfree contiene elementos como los códecs necesarios para reproducir
muchos formatos multimedia populares. Para habilitar el repositorio Nonfree en Fedora, escriba lo siguiente
(nuevamente, escriba las siguientes dos líneas en una sola línea, sin espacio entre las dos):
# rpm Uhv http://download1.rpmfusion.org/nonfree/fedora/rpmfusionnonfree
releasestable.noarch.rpm
La mayoría de los otros repositorios de terceros que podrían interesarle contienen software que no es de
código abierto. Por ejemplo, si desea instalar el complemento Adobe Flash para Linux, descargue el
paquete del repositorio YUM de Adobe y puede usar el comando yum para instalar el complemento Flash
y obtener actualizaciones más tarde ejecutando el comando yum update cuando hay actualizaciones
disponibles. 10
Gestión de software con el comando yum
El comando yum tiene docenas de subcomandos que puede usar para trabajar con paquetes RPM en su
sistema. Las siguientes secciones proporcionan algunos ejemplos de comandos yum útiles
233
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
líneas para buscar, instalar, consultar y actualizar paquetes asociados con sus repositorios
YUM. La sección "Instalación y eliminación de paquetes" describe cómo instalar y eliminar paquetes
instalados con el comando yum.
NOTA
Los metadatos, que describen el contenido de los repositorios YUM, se descargan de cada uno de sus repositorios YUM habilitados
la primera vez que ejecuta un comando yum. Los metadatos se descargan nuevamente después de que se alcanza el tiempo de
caducidad de los metadatos. Cuantos más repositorios de YUM habilite y más grandes sean, más tiempo puede tomar esta descarga.
Puede reducir este tiempo de descarga aumentando el tiempo de caducidad (en el archivo /etc/yum.conf) o no habilitando los
repositorios que no necesita.
Búsqueda de paquetes
Utilizando diferentes subcomandos de búsqueda, puede encontrar paquetes basados en palabras
clave, contenido del paquete u otros atributos.
' '
digamos que quiere probar un editor de texto diferente pero puede no recuerdo el nombre
Deja del que querías. Puede comenzar usando el subcomando de búsqueda para buscar el
término editor en el nombre o la descripción:
# editor de búsqueda yum
...
eclipseveditor.noarch : Complemento Verilog/VHDL basado en Eclipse ed.x86_64 : El editor de
línea GNU emacs.x86_64 : Editor de texto GNU Emacs
La búsqueda descubrió una larga lista de paquetes que contenían editor en el nombre o la descripción.
El que estaba buscando se llama emacs. Para obtener información sobre ese paquete, puedo
usar el subcomando info:
# yum información emacs
Nombre : emacs
Época : 1
Versión : 26,2
Lanzamiento: 1.fc30 Arquitectura:
x86_64 Tamaño: 3,2 M
Fuente : emacs26.21.fc30.src.rpm
Repositorio: actualizaciones
Resumen : Editor de texto GNU Emacs : http://
URL www.gnu.org/software/emacs/
Licencia : GPLv3+ y CC01.0
Descripción: Emacs es un texto potente, personalizable, autodocumentado y sin modelo.
: editor. Emacs contiene funciones especiales de edición de código,
una secuencia de comandos
234
Machine Translated by Google
Capítulo 10: Obtener y administrar software
: idioma (elisp), y la capacidad de leer correo,
noticias y mas
: sin salir del editor.
Si conoce el comando, el archivo de configuración o el nombre de la biblioteca que desea, pero no
sabe en qué paquete se encuentra, utilice el subcomando provide para buscar el paquete. Aquí puede ver
que el comando dvdrecord es parte del paquete wodim:
# yum proporciona dvdrecord
wodim1.1.1141.fc30.x86_64 : Un programa de grabación de CD/DVD de línea de comando
Repo Coincide c: on: Nombre
sombrero
de fieltro de archivo: /usr/bin/dvdrecord
El subcomando list se puede usar para listar nombres de paquetes de diferentes maneras. Úselo con un
nombre base de paquete para encontrar la versión y el repositorio de un paquete. Puede enumerar solo
los paquetes que están disponibles o instalados, o puede enumerar todos los paquetes.
# yum lista emacs
emacs.i686 1:26.21.fc30 actualizaciones
# yum lista disponible CUnit.i686
2.1.317.el8 rhel8forx86_64
appstreamrpms
CUnit.x86_64 2.1.317.el8 rhel8parax86_64appstreamrpms 3.2.622.el8 rhel8para
GConf2.i686 x86_64appstreamrpms 0.19.11.el8 rhel8parax86_64 appstreamrpm
LibRaw.i686
...
# yum lista instalada Paquetes
instalados GConf2.x86_64
ModemManager.x86_64 3.2.622.el8 @AppStream
1.8.01.el8 @anaconda
...
# ñam enumerar todos
...
Si encuentra un paquete pero quiere ver de qué componentes depende ese paquete, puede usar el
subcomando deplist. Con deplist, puede ver los componentes (dependencia) pero también el paquete
en el que viene el componente (proveedor). El uso de deplist puede ayudar si no hay un paquete
disponible para proporcionar una dependencia, pero desea saber cuál es el componente para poder
buscarlo en otros repositorios. Considere el siguiente ejemplo:
# yum eliminar emacs | menos paquete:
emacs1:26.18.fc30.x86_64
dependencia: /bin/sh
proveedor: bash5.0.71.fc30.i686 proveedor:
bash5.0.71.fc30.x86_64 dependencia: /usr/sbin/ 10
alternatives proveedor: alternativas1.114.fc30. x86_64
235
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Instalación y eliminación de paquetes
El subcomando install le permite instalar uno o más paquetes, junto con cualquier paquete
dependiente necesario. Con yum install, se pueden buscar múltiples repositorios para cumplir con
las dependencias necesarias. Considere el siguiente ejemplo de instalación de yum:
# yum instalar emacs
...
Paquete Versión de arquitectura Tamaño del repositorio
================================================== ===================
Instalación:
emacs x86_64 1:26.21.fc30 actualizaciones 3,2 millones
Instalación de dependencias: x86_64
emacscomún x86_64 x86_64 1:26.21.fc30 38M
ImageMagicklibs fftw actualizaciones 1:6.9.10.281.fc30 2,2
libsdoble 3.3.84.fc30 fedora fedora millones 984 mil
...
Resumen de Transacciones
================================================== ===================
Instalar 7 paquetes
Tamaño total de descarga: 45 M
Tamaño instalado: 142 M
¿Está bien? [s/n]: sí
Puede ver aquí que emacs requiere que emacscommon y varios otros paquetes estén instalados
para que todos estén en cola para la instalación. Los seis paquetes juntos son 45 MB para
descargar, pero consumen 142 MB después de la instalación. Presionando y los instala. Puede
poner y en la línea de comando (justo después del comando yum) para evitar tener que presionar y
para instalar los paquetes. Personalmente, sin embargo, normalmente quiero ver todos los paquetes
a punto de instalarse antes de aceptar la instalación.
Puede reinstalar un paquete si elimina por error componentes de un paquete instalado. Si intenta
una instalación regular, el sistema responde con "nada que hacer". En su lugar, debe usar el
subcomando reinstall. Por ejemplo, suponga que instaló el paquete zsh y luego eliminó /bin/zsh por
error. Puede restaurar los componentes faltantes escribiendo lo siguiente:
# yum reinstalar zsh
'
Puede eliminar un solo paquete, junto con sus dependencias que son paquetes, no requerido por otros
con el subcomando remove. Por ejemplo, para eliminar el paquete y las dependencias de emacs,
puede escribir lo siguiente:
# yum eliminar emacs
Eliminando:
emacs x86_64 1:26.21.fc30 actualizaciones 38M
236
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Eliminando dependencias no utilizadas:
ImageMagicklibs x86_64 1:6.9.10.281.fc30 fedora 8,9 millones
...
Resumen de Transacciones
================================================== ===================
Eliminar 7 paquetes
Espacio liberado: 142 M
¿Está bien? [s/n]: sí
Tenga en cuenta que el espacio que se muestra para cada paquete es el espacio real consumido por el paquete
en el sistema de archivos y no el tamaño de la descarga (que es considerablemente menor).
Un método alternativo para eliminar un conjunto de paquetes que ha instalado es usar el subcomando
history. Usando el historial, puede ver sus actividades de yum y deshacer una transacción completa. En otras
palabras, todos los paquetes que instaló se pueden desinstalar utilizando la opción deshacer del subcomando
history, como en el siguiente ejemplo:
# ñam historia
| Línea de comando | Fecha y hora
IDENTIFICACIÓN
| Comportamiento) | alterado
12 | instalar emacs | 20190622 11:14 | Instalar | 7
...
# yum información histórica 12
ID de transacción: 12
...
Línea de comando : instalar emacs
...
# yum historia deshacer 12
Deshacer la transacción 12, del sábado 22 de junio de 2019 a las 11:14:42 a. m. EDT
Instalar emacs1:26.21.fc30.x86_64 Instalar @actualizaciones
emacscommon1:26.21.fc30.x86_64 @actualizaciones
...
Antes de deshacer la transacción, puede ver la transacción para ver exactamente qué paquetes estaban
involucrados. Ver la transacción puede evitar que elimine por error los paquetes que desea conservar. Al
deshacer la transacción 12, puede eliminar todos los paquetes que se instalaron durante esa transacción. Si
está tratando de deshacer una instalación que incluía docenas o incluso cientos de paquetes, deshacer puede
ser una opción muy útil.
10
237
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Actualización de
paquetes A medida que aparecen nuevas versiones de un paquete, a veces se colocan en repositorios
de actualización separados o simplemente se agregan al repositorio original. Si hay disponibles varias
versiones de un paquete (ya sea en el mismo repositorio o en otro repositorio habilitado), yum
proporciona la versión más reciente cuando instala un paquete. Para algunos paquetes, como el
paquete del kernel de Linux, puede conservar varias versiones del mismo paquete.
Si aparece una nueva versión de un paquete más tarde, puede descargar e instalar la nueva versión del
paquete mediante el subcomando de actualización.
El subcomando checkupdate puede buscar actualizaciones. El subcomando de actualización se puede
usar para actualizar un solo paquete o para obtener actualizaciones de todos los paquetes que están
instalados actualmente y tienen una actualización disponible. O simplemente puede actualizar un solo paquete
(como el paquete cups), como en este ejemplo:
# actualización de verificación de yum
...
file.x86_64 5.363.fc30 actualizaciones filelibs.x86_64 5.363.fc30
actualizaciones firefox.x86_64 67.0.41.fc30 actualizaciones
firewalld.noarch 0.6.41.fc30 actualizaciones
...
# yum update
Dependencias resueltas.
================================================== ============
Actualización:
NetworkManager x86_64 1:1.16.21.fc30 actualizaciones NetworkManageradsl x86_64 1,7 millones
1:1.16.21.fc30 actualizaciones 25k
...
Resumen de Transacciones
================================================== ============
Instalar 7 paquetes
Paquete(s) de actualización 172
Tamaño total de descarga: 50 M
¿Está bien [y/N]: y # yum tazas
de actualización
El comando anterior solicitó actualizar el paquete cups. Si es necesario actualizar otros paquetes
dependientes para actualizar cups, esos paquetes también se descargarán e instalarán.
238
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Actualización de grupos de paquetes
Para facilitar la administración de un conjunto completo de paquetes a la vez, YUM admite grupos de paquetes.
Por ejemplo, podría instalar GNOME Desktop Environment (para obtener un escritorio completo) o
Virtualización (para obtener los paquetes necesarios para configurar la computadora como host de
virtualización). Puede comenzar ejecutando el subcomando grouplist para ver una lista de nombres de
grupos: # yum grouplist | Menos grupos de entornos disponibles:
Sistema operativo personalizado de Fedora
Instalación mínima
Edición del servidor Fedora
...
Grupos Instalados:
LibreOffice
Entorno de escritorio GNOME
fuentes
...
Grupos Disponibles:
Autoría y publicación
Libros y Guías
Bibliotecas y herramientas de desarrollo C
...
'
Digamos que quería probar un entorno de escritorio diferente. Verá LXDE y
Deja que quieras saber qué hay en ese grupo. Para averiguarlo, utilice el subcomando groupinfo:
# yum información de grupo LXDE
Grupo: LXDE
Descripción: LXDE es un entorno de escritorio ligero X11...
Paquetes Obligatorios:
...
lxdecomún
lxdm
lxinput
lxlauncher
lxmenudatos
...
Además de mostrar una descripción del grupo, groupinfo muestra Paquetes obligatorios (aquellos
que siempre se instalan con el grupo), Paquetes predeterminados (aquellos que se instalan de
manera predeterminada pero que se pueden excluir) y Paquetes opcionales (que son parte del grupo
pero no instalado por defecto). Cuando usa algunas herramientas gráficas para instalar grupos de
paquetes, puede desmarcar los paquetes predeterminados o marcar los paquetes opcionales para
cambiar si se instalan con el grupo.
Si decide que desea instalar un grupo de paquetes, use el subcomando groupinstall:
10
# yum groupinstall LXDE
239
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Esta instalación grupal resultó en la instalación de 101 paquetes del grupo y la actualización de 5 paquetes
existentes. Si decide que no le gusta el grupo de paquetes, puede eliminar
subcomando
todo el ggrupo
roupremove:
a la vez usando el
# yum groupremove LXDE
Mantenimiento de su base de datos y caché de paquetes RPM
Varios subcomandos de yum pueden ayudarlo a realizar tareas de mantenimiento, como verificar si hay
problemas con su base de datos RPM o borrar el caché. La instalación de YUM tiene herramientas para mantener
'
sus paquetes RPM y mantener su sistema s software eficiente y seguro.
Limpiar el caché es algo que querrás hacer de vez en cuando. Si decide mantener los paquetes descargados
después de instalarlos (se eliminan de manera predeterminada, según la configuración de keepcache=0 en el
archivo /etc/yum.conf), sus directorios de caché (en /var/cache/yum) pueden llena. Los metadatos almacenados
en directorios de caché se pueden borrar, lo que hace que se descarguen nuevos metadatos de todos los
repositorios YUM habilitados la próxima vez que se ejecute yum. Aquí hay formas de borrar esa información:
# yum paquetes limpios 14
archivos eliminados
# metadatos limpios yum
El caché caducó Se
eliminaron 16 archivos
# yum limpia los 68
archivos eliminados
Aunque es poco probable, es posible que la base de datos RPM se dañe. Esto puede suceder si ocurre algo
inesperado, como desconectar el cable de alimentación cuando un paquete está parcialmente instalado. Puede
revisar la base de datos RPM para buscar errores (yum check) o simplemente reconstruir los archivos de la base
'
de datos RPM. Aquí Este es un ejemplo de una base de datos RPM corrupta y el
comando rpm que puede usar para solucionarlo:
# yum check
error: db5 error(11) from dbenv>open: Recurso temporalmente no disponible error: no
se puede abrir el índice de paquetes usando db5Recurso temporalmente no
disponible(11) error: no se puede abrir la base de datos de paquetes en /var/lib/rpm
Error: Error: rpmdb open falló # rpm rebuilddb
# yum check
Los ejemplos de limpieza de yum en las líneas de comando anteriores eliminan los datos almacenados en caché
de los subdirectorios /var/cache/yum. El ejemplo rpm rebuilddb reconstruye la base de datos.
El ejemplo de comprobación de yum puede comprobar si hay problemas con la base de datos y la memoria caché de RPM
local, pero tenga en cuenta que utilizamos el comando rpm para solucionar el problema.
En general, el comando más adecuado para trabajar con la base de datos RPM local es el comando rpm.
240
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Descarga de RPM desde un repositorio
de YUM Si solo desea examinar un paquete sin instalarlo realmente, puede descargar
ese paquete con el comando dnf o, en versiones anteriores, usar el comando yumdownloader.
Cualquiera de los casos hace que el paquete que usted nombra se descargue del repositorio de YUM
y se copie a su directorio actual.
Por ejemplo, para descargar la última versión del paquete del navegador web Firefox con yum
downloader desde el repositorio de YUM a su directorio actual, escriba lo siguiente:
# yumdownloader firefox
firefox67.0.41.fc30.x86_64.rpm 6,1 MB/seg | 92 MB 00:14
Para usar el comando dnf, escriba esto:
# dnf descargar firefox
firefox60.7.01.el8_0.x86_64.rpm 6.1 MB/s | 93 MB 00:15
Con cualquier paquete RPM descargado ahora ubicado en su directorio actual, puede usar una
variedad de comandos rpm para consultar o usar ese paquete de diferentes maneras (como se describe
en la siguiente sección).
Instalación, consulta y verificación de software con
el comando rpm
Hay una gran cantidad de información sobre los paquetes instalados en la base de datos RPM local.
El comando rpm contiene docenas de opciones que le permiten encontrar información sobre cada
paquete, como los archivos que contiene, quién lo creó, cuándo se instaló, qué tamaño tiene y muchos
otros atributos. Debido a que la base de datos contiene huellas dactilares (md5sums) de cada archivo en
cada paquete, se puede consultar con RPM para averiguar si los archivos de cualquier paquete han sido
alterados.
El comando rpm aún puede realizar actividades básicas de instalación y actualización, aunque la
mayoría de las personas solo usan rpm de esa manera cuando hay un paquete en el directorio local, listo
para ser instalado. E ntonces,
para busquemos
descargar uno
la última en nuestro
versión directorio
del paquete zsh:local para trabajar. Escriba lo siguiente
# descarga dnf zsh
zsh5.5.16.el8.x86_64.rpm 3,0 MB/seg | 2.9 MB 00:00
Con el paquete zsh descargado en su directorio actual, pruebe algunos comandos rpm en
él.
Instalar y eliminar paquetes con rpm 10
Para instalar un paquete con el comando rpm, escriba lo siguiente:
# rpm i zsh5.5.16.el8.x86_64.rpm
241
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Tenga en cuenta que se proporciona el nombre completo del paquete para instalar con rpm, no solo el nombre
base del paquete. Si se instaló una versión anterior de zsh, podría actualizar el paquete usando U.
A menudo, las personas usan las opciones h y v para imprimir signos hash y una salida más detallada
durante la actualización:
# rpm Uhv zsh5.5.16.el8.x86_64.rpm Verificando...
######################## [100%]
Preparando... ######################## [100%] 1:zsh5.5.16.el8 ######
################### [100%]
Aunque una instalación (i) solo instala un paquete si el paquete aún no está instalado, una actualización (
U) instala el paquete incluso si ya está instalado. Un tercer tipo de instalación, llamado actualización (F),
instala un paquete solo si una versión anterior existente de un paquete está instalada en la computadora,
como en este ejemplo:
# rpmFhv *.rpm
Podría usar el comando de actualización anterior si estuviera en un directorio que contiene miles de RPM
pero solo desea actualizar los que ya estaban instalados (en una versión anterior) en su sistema y omitir
los que aún no estaban instalados.
Puede agregar algunas opciones interesantes a cualquiera de sus opciones de instalación. La opción
replacepkgs le permite reinstalar una versión existente de un paquete (si, por ejemplo, eliminó algunos
componentes por error), y oldpackage le permite reemplazar un paquete más nuevo con una versión
anterior.
# rpm Uhv replacepkgs emacs26.15.el8.x86_64.rpm # rpm Uhv oldpackage
zsh5.0.225.el7_3.1.x86_64.rpm
Puede eliminar un paquete con la opción e. Solo necesita el nombre base de un paquete para eliminarlo.
Aquí hay un ejemplo:
# rpm e emacs
El comando rpm e emacs sería exitoso porque ningún otro paquete depende de emacs. Sin embargo,
dejaría atrás emacscommon, que se instaló como una dependencia de emacs. Si hubiera intentado
eliminar primero emacscommon, ese comando fallaría con un mensaje de "Dependencias fallidas".
Consulta de información de rpm Después
de instalar el paquete, puede consultar información al respecto. Con la opción q, puede ver información sobre
el paquete, incluida una descripción (qi), una lista de archivos (ql), documentación (qd) y archivos de
configuración (qc).
# rpm qi zsh
Nombre : zsh
Versión : 5.5.1
Liberar : 6.el8
...
242
Machine Translated by Google
Capítulo 10: Obtener y administrar software
# rpm ql zsh /etc/
skel/.zshrc /etc/zlogin /
etc/zlogout
...
# rpm qd zsh /usr/
share/doc/zsh/BUGS /usr/share/
doc/zsh/CONTRIBUTORES /usr/share/doc/
zsh/FAQ
...
# rpm qc zsh /etc/
skel/.zshrc /etc/zlogin /
etc/zlogout
...
Puede usar opciones para consultar cualquier información contenida en un RPM. Puede
averiguar qué necesita un RPM para instalarlo (requires), qué versión de software
proporciona un paquete (provides), qué scripts se ejecutan antes y después de instalar o
eliminar un RPM (scripts) y qué cambios se han realizado en un RPM (changelog).
# rpm q requiere emacscommon /bin/sh /
usr/bin/pkgconfig /usr/sbin/alternatives
...
# rpm q provides emacscommon
config(emacscommon) = 1:26.21.fc30 emacs
common = 1:26.21.fc30
emacscomún(x8664) = 1:26.21.fc30 emacsel =
1:26.21.fc30
pkgconfig(emacs) = 1:26.2 # rpm q
scripts httpd postinstall scriptlet
(usando /bin/sh): if [ $1 eq 1 ] ; luego # Instalación
inicial systemctl noreload preset httpd.service...
...
# rpm q registro de cambios httpd |
menos * jue 02 de mayo de 2019 Lubos Uhliarik <luhliari@redhat.com>
2.4.394 No se especifica la dependencia de httpd en initscripts (#1705188)
* Martes 9 de abril de 2019 Joe Orton <jorton@redhat.com> 2.4.393
...
En los dos ejemplos anteriores, puede ver que los scripts dentro del paquete httpd
usan el comando systemctl para configurar el servicio httpd. La opción changelog le 10
permite ver por qué se han realizado cambios en cada versión del paquete.
243
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Usando una función llamada queryformat, puede consultar diferentes etiquetas de información y
generarlas en la forma que desee. Ejecute la opción querytags para poder ver todas las etiquetas
disponibles:
# rpm querytags | menos
ARCO
TAMAÑO DE ARCHIVO
NOMBRES BÁSICOS
BUGURL
...
# rpm q binutils queryformat "El paquete es %{NOMBRE} \ y la versión es %{RELEASE}\n"
El paquete es binutils y la versión es 29.fc30
Todas las consultas que ha realizado hasta ahora se han realizado en la base de datos RPM local.
Al agregar un p a esas opciones de consulta, puede consultar un archivo RPM que se encuentra en
su directorio local. La opción p es una excelente manera de mirar dentro de un paquete que alguien
le da para investigar de qué se trata antes de instalarlo en su sistema.
Si aún no lo ha hecho, obtenga el paquete zsh y colóquelo en su directorio local (dnf download
zsh). Luego ejecute algunos comandos de consulta en el archivo RPM.
# rpm qip zsh5.7.11.fc30.x86_64.rpm Ver información sobre el archivo RPM # rpm qlp
zsh5.7.11.fc30.x86_64.rpm Listar todos los archivos en el archivo RPM # rpm qdp zsh5.7.11.fc30.x86_64.rpm
Mostrar documentos en el archivo RPM # rpm qcp zsh5.7.11.fc30.x86_64.rpm Listar archivos de configuración
en el archivo RPM
Verificación de paquetes RPM Con
la opción V, puede verificar los paquetes instalados en su sistema para ver si los componentes
han cambiado desde que se instalaron por primera vez. Aunque es normal que los archivos de
configuración cambien con el tiempo, no es normal que los archivos binarios (los comandos en /bin, /
sbin, etc.) cambien después de la instalación. Los archivos binarios que se cambian son probablemente
una indicación de que su sistema ha sido descifrado.
En este ejemplo, instalaré el paquete zsh y lo estropearé. Si desea probar con los ejemplos,
asegúrese de eliminar o reinstalar el paquete cuando haya terminado.
# rpm i zsh5.7.11.fc30.x86_64.rpm # echo hola > /bin/
zsh # rm /etc/zshrc # rpm V zsh falta c /etc/zshrc /bin/zsh
S.5....T.
En este resultado, puede ver que el archivo /bin/zsh se ha manipulado y se ha eliminado /etc/zshrc.
Cada vez que vea una letra o un número en lugar de un punto de
244
Machine Translated by Google
Capítulo 10: Obtener y administrar software
la salida rpm V, es una indicación de lo que ha cambiado. Las letras que pueden reemplazar los puntos
(en orden) incluyen las siguientes:
S El tamaño del archivo difiere
METRO
El modo difiere (incluye permisos y tipo de archivo)
5 La suma MD5 difiere
D Discrepancia de número mayor/menor de dispositivo
L discordancia de ruta readLink(2)
U La propiedad del usuario difiere
GRAMO
La propiedad del grupo difiere mTime
T difiere
PAG
Las capacidades difieren
Esos indicadores son de la sección Verificar de la página de manual de rpm. En mi ejemplo, puede ver que
el tamaño del archivo ha cambiado (S), el md5sum comparado con la huella digital d(5)
el ayrchivo
el tiempo
ha cdambiado
e
modificación (T) en el archivo es diferente.
Para restaurar el paquete a su estado original, use rpm con la opción replacepkgs, como se muestra a
continuación. (El comando yum reinstall zsh también funcionaría). Luego verifíquelo con V nuevamente.
Ningún resultado de V significa que cada archivo vuelve a su estado original.
# rpm i replacepkgs zsh5.7.11.fc30.x86_64.rpm # rpm V zsh
Es una buena práctica hacer una copia de seguridad de su base de datos RPM (desde /var/lib/rpm) y
copiarla en algún medio de solo lectura (como un CD). Luego, cuando vaya a verificar los paquetes que
sospecha que fueron descifrados, sabrá que no los está comparando con una base de datos que también
ha sido descifrada.
Gestión de software en la empresa
En este punto, debe tener un buen conocimiento práctico de cómo instalar, consultar, eliminar y manipular
paquetes con herramientas gráficas, el comando yum y el comando rpm. Cuando comienza a trabajar con
archivos RPM en una gran empresa, necesita ampliar ese conocimiento.
Las funciones utilizadas para administrar paquetes RPM en la empresa con Red Hat Enterprise Linux
ofrecen un poco más de complejidad y mucha más potencia. En lugar de tener un gran repositorio de
software, como lo hace Fedora, RHEL proporciona software utilizando Red Hat Subscription Management,
que requiere suscripciones/derechos de pago que permiten el acceso a una variedad de canales y
productos de software (RHEL, Red Hat Virtualization, Red Hat Software Collections). , etcétera).
En términos de computación empresarial, uno de los grandes bene cios del diseño de paquetes RPM es que
se puede automatizar su gestión. Otros esquemas de empaquetado de Linux permiten que los paquetes se
10
detengan y le soliciten información cuando se están instalando (como solicitar una
245
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
ubicación del directorio o un nombre de usuario). Los paquetes RPM se instalan sin interrupción y ofrecen algunas de las
siguientes ventajas:
Archivos kickstart Todas las preguntas que responda durante una instalación manual y todos los paquetes que
seleccione se pueden agregar a un archivo denominado archivo kickstart. Cuando inicia un instalador de Fedora
o Red Hat Enterprise Linux, puede proporcionar un archivo kickstart en el indicador de inicio. A partir de ese
momento, todo el proceso de instalación se completa por sí solo. Cualquier modificación a las instalaciones del
paquete predeterminado se puede realizar ejecutando scripts previos y posteriores desde el archivo kickstart para
hacer cosas como agregar cuentas de usuario o modificar archivos de configuración.
Arranque PXE Puede configurar un servidor PXE para permitir que las computadoras cliente arranquen un kernel
ana conda (instalador) y un archivo kickstart seleccionado. Una computadora completamente en blanco con
una tarjeta de interfaz de red (NIC) que admita el arranque PXE puede simplemente arrancar desde su NIC para
iniciar una instalación nueva. En otras palabras, encienda la computadora, y si toca la NIC en su orden de inicio,
unos minutos más tarde puede tener un sistema recién instalado, configurado según sus especificaciones exactas
sin intervención.
Servidor satélite (Spacewalk) Se pueden implementar sistemas Red Hat Enterprise Linux
utilizando lo que se conoce como Satellite Server. Satellite Server incorpora las mismas características que
tiene de Red Hat CDN para administrar e implementar nuevos sistemas y actualizaciones. Los sistemas RHEL
se pueden configurar para obtener actualizaciones de software automáticas en los momentos establecidos desde
el servidor satelital. Los conjuntos de paquetes denominados erratas que corrigen problemas específi cos se
pueden implementar rápida y automáticamente en los sistemas que los necesitan.
Imágenes de contenedor En lugar de instalar RPM individuales en un sistema, puede
empaquete unos pocos o unos pocos cientos de RPM en una imagen de contenedor. La imagen del
contenedor es como un RPM en el sentido de que contiene un conjunto de software, pero a diferencia de un
RPM en el sentido de que se agrega más fácilmente a un sistema, se ejecuta directamente y se elimina de un
sistema que un RPM.
Las descripciones de cómo usar los archivos kickstart, los servidores satélite, los contenedores y otras características
de instalación listas para la empresa están más allá del alcance de este libro. Pero la comprensión que ha adquirido al
aprender sobre YUM y RPM siguen siendo componentes críticos de todas las funciones que acabamos de mencionar.
Resumen
El paquete de software en Fedora, Red Hat Enterprise Linux y sistemas relacionados se proporciona mediante paquetes
de software basados en las herramientas RPM Package Manager (RPM). Debian, Ubuntu y sistemas relacionados
empaquetan software en archivos DEB. Puede probar herramientas gráficas fáciles de usar, como la ventana Software para
buscar e instalar paquetes. Las principales herramientas de línea de comandos incluyen los comandos yum, dnf y rpm para
sistemas relacionados con Red Hat y aptitude, apt* y dpkg para sistemas relacionados con Debian.
Con estas herramientas de administración de software, puede instalar, consultar, verificar, actualizar y eliminar paquetes.
También puede realizar tareas de mantenimiento, como limpiar archivos de caché y reconstruir el
246
Machine Translated by Google
Capítulo 10: Obtener y administrar software
Base de datos RPM. Este capítulo describe muchas de las funciones de la ventana Software, así como los
comandos yum, dnf y rpm.
Con su sistema instalado y los paquetes de software que necesita agregados, es hora de configurar
aún más su sistema Fedora, RHEL, Debian o Ubuntu. Si espera que varias personas usen su sistema, su
próxima tarea podría ser agregar y administrar cuentas de usuario en su sistema. El Capítulo 11,
"Administración de cuentas de usuario", describe la aLdministración
sistemas inux. de usuarios en Fedora, RHEL y otros
Ejercicios
Estos ejercicios ponen a prueba su conocimiento sobre cómo trabajar con paquetes de software RPM en
Fedora o Red Hat Enterprise Linux. Para hacer los ejercicios te recomiendo que tengas delante un sistema
Fedora que tenga conexión a Internet. (La mayoría de los procedimientos funcionan igual de bien en un
sistema RHEL registrado).
Debe poder acceder a los repositorios de Fedora (que deben configurarse automáticamente).
Si está atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo
hay varias formas de completar una tarea).
1. Busque en el repositorio de YUM el paquete que proporciona el comando mogrify.
2. Mostrar información sobre el paquete que proporciona el comando mogrify y
determinar cuál es la página de inicio (URL) de ese paquete.
3. Instale el paquete que contiene el comando mogrify.
4. Enumere todos los archivos de documentación contenidos en el paquete que proporciona el mog
rificar el comando.
5. Revise el registro de cambios del paquete que proporciona el mogrify
dominio.
6. Elimine el comando mogrify de su sistema y verifique su paquete contra el
Base de datos RPM para ver que el comando realmente falta.
7. Vuelva a instalar el paquete que proporciona el comando mogrify y asegúrese de que todo el
paquete esté intacto nuevamente.
8. Descargue el paquete que proporciona el comando mogrify a su actual
directorio.
9. Muestre información general sobre el paquete que acaba de descargar consultando el archivo
RPM del paquete en el directorio actual.
10. Elimine el paquete que contiene el comando mogrify de su sistema.
10
247
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Gestión de cuentas de usuario
EN ESTE CAPÍTULO
Trabajar con cuentas de usuario
Trabajar con cuentas de grupo
Configuración de cuentas de usuario centralizadas
A
Agregar y administrar usuarios son tareas comunes para los administradores de sistemas Linux. Las cuentas
de usuario mantienen límites entre las personas que usan sus sistemas y entre los procesos que
ejecutar en sus sistemas. Los grupos son una forma de asignar derechos a su sistema que se pueden asignar
a varios usuarios a la vez.
Este capítulo describe no solo cómo crear un nuevo usuario, sino también cómo crear configuraciones y archivos predefinidos
'
medio
para configurar los comandos de usuario, aambiente
puede Uso de herramientas
signar configuraciones como du
como la ubicación e seradd y usermod
de inicio, cuom
un directorio n shell
predeterminado, un grupo predeterminado y valores específicos de ID de usuario y de grupo. Con Cockpit, puede agregar y
administrar cuentas de usuario a través de una interfaz de usuario web.
Creación de cuentas de usuario
Cada persona que use su sistema Linux debe tener una cuenta de usuario separada. Tener una cuenta de
usuario le brinda un área en la que almacenar archivos de forma segura, así como un medio para adaptar su
interfaz de usuario (GUI, ruta, variables de entorno, etc.) para adaptarse a la forma en que usa la computadora.
Puede agregar cuentas de usuario a la mayoría de los sistemas Linux de varias maneras. Los sistemas Fedora y
Red Hat Enterprise Linux ofrecen Cockpit, que incluye una selección de cuenta para crear y administrar cuentas
de usuario. Si Cockpit aún no está instalado y habilitado, hágalo de la siguiente manera:
# yum install cockpit y # systemctl
enable now cockpit.socket
249
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Para crear una cuenta de usuario a través de Cockpit, haga lo siguiente:
1. Abra la interfaz de Cockpit desde su navegador web (nombre de host: 9090).
2. Inicie sesión como root (o como usuario con privilegios de root), seleccione la opción "Reutilizar mi contraseña para
tareas privilegiadas” y seleccione Cuentas.
3. Seleccione Crear nueva cuenta.
La Figura 11.1 muestra un ejemplo de la ventana emergente Crear nueva cuenta:
FIGURA 11.1
Añade y modifica cuentas de usuario desde Cockpit.
4. Comience a agregar una nueva cuenta de usuario a su sistema Linux. Aquí están los campos que necesita
llenar:
'
Nombre completo Usar el usuario s nombre real, normalmente se usa con mayúsculas y minúsculas
letras, como lo escribiría el usuario en la vida real. Técnicamente, esta información se almacena en el
campo de comentarios del archivo passwd, pero por convención, la mayoría de los sistemas Linux y
'
UNIX esperan que este campo contenga a cada usuario. nombre completo.
Nombre de usuario Este es el nombre utilizado para iniciar sesión como este usuario. Cuando elija un nombre
de usuario, no
comience
en mcinúsculas,
letras on un número (por ejemplo,
de c2ontrol
sin caracteres 6jsmith). Además, ye us
ni espacios, mm
n ejor
utilizar
áximo e otodas
cho las
dcaracteres, por
convención. El comando useradd permite hasta 32 caracteres,
250
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
pero algunas aplicaciones no pueden manejar nombres de usuario tan largos. Herramientas como ps muestran
ID de usuario (UID) en lugar de nombres si los nombres son demasiado largos. Tener usuarios llamados Jsmith
y jsmith puede causar confusión con programas (como sendmail) que no distinguen entre mayúsculas y
minúsculas.
Contraseña, Confirmar Introduzca la contraseña que desea que tenga el usuario en los campos Contraseña y Confi 11
rmar. La contraseña debe tener al menos ocho caracteres y contener una combinación de letras mayúsculas y
minúsculas, números y signos de puntuación. No debe contener palabras reales, letras repetidas o letras seguidas
en el teclado. A través de esta interfaz, debe establecer una contraseña que cumpla con los criterios anteriores.
(Si desea agregar una contraseña que no cumpla con este criterio, puede usar el comando useradd, que se
describe más adelante en este capítulo). Las barras debajo de los campos de contraseña
a medida
cqambian
ue mejora
de rlojo
a seguridad
a verde
de su contraseña. .
Acceso Para crear una cuenta que aún no está listo para usar, seleccione la casilla de verificación Bloquear
cuenta. Eso evita que alguien inicie sesión en la cuenta hasta que desmarque esa casilla o cambie esa
información en el archivo passwd.
5. Seleccione Crear para agregar el usuario al sistema. Una entrada para la nueva cuenta de usuario es
agregado al archivo /etc/passwd y la nueva cuenta de grupo al archivo /etc/group.
(Los describiré más adelante en este capítulo).
La pantalla Cuentas de Cockpit le permite modificar un pequeño conjunto de información sobre un usuario regular después de
que se haya creado. Para modificar la información del usuario más tarde, haga lo siguiente:
1. Seleccione la cuenta de usuario que desea cambiar. Aparece una pantalla con los disponibles
selecciones para esa cuenta de usuario.
2. Puede eliminar pero no modificar el nombre de usuario, pero puede cambiar lo siguiente:
información:
'
Nombre completo Porque el usuario El nombre completo de s es solo un comentario, puedes cambiar eso como
usted por favor.
Roles De manera predeterminada, tiene la oportunidad de seleccionar casillas de verificación que permiten que el
usuario se agregue al rol de Administrador del servidor (lo que otorga al usuario privilegios de root al agregarlo
al grupo de ruedas) o Image Builder (que permite al usuario crear contenedores). y otros tipos de imágenes a
través del grupo de soldadura). Es posible que otros componentes de Cockpit agreguen otras funciones a esta
lista. Si el usuario ha iniciado sesión, ese usuario debe cerrar la sesión para obtener esos privilegios.
Acceso Puede elegir Bloquear cuenta para bloquear la cuenta, seleccione para bloquear la
cuenta en una fecha en particular, o nunca bloquear la cuenta (sin establecer una fecha de caducidad de la
cuenta).
Contraseña Puede elegir Establecer contraseña para establecer una nueva contraseña para ese usuario o
Forzar cambio para obligar al usuario a cambiar su contraseña la próxima vez que inicie sesión. De forma
predeterminada, las contraseñas nunca caducan. Puede cambiar eso para que la contraseña caduque cada
número determinado de días.
251
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Claves SSH públicas autorizadas Si tiene una clave SSH pública para el usuario,
puede seleccionar el signo más (+) para este campo, pegar esa clave en el cuadro de texto y seleccionar
Agregar clave. Con esa clave en su lugar, el usuario con la clave privada asociada puede iniciar sesión en
esa cuenta de usuario a través de SSH sin necesidad de ingresar una contraseña.
3. Los cambios surten efecto de inmediato, por lo que simplemente puede salir de la ventana cuando esté
terminado de modificar la cuenta de usuario.
El área Cuentas de la interfaz de usuario web de Cockpit se diseñó para simplificar el proceso de creación y modificación
de cuentas de usuario. Se pueden agregar o modificar más funciones asociadas con las cuentas de usuario desde la línea
de comandos. La siguiente parte de este capítulo describe cómo agregar cuentas de usuario desde la línea de comando
con useradd y cambiarlas con el comando usermod.
Adición de usuarios con useradd A veces, un
sistema Linux no tiene una herramienta de escritorio o una interfaz de usuario web disponible para agregar usuarios.
Otras veces, puede que le resulte más conveniente agregar muchos usuarios a la vez con un script de shell o cambiar las
características de la cuenta de usuario que no están disponibles en Cockpit. Para esos casos, hay comandos disponibles
que le permiten agregar y modificar cuentas de usuario desde la línea de comandos.
El método más sencillo para crear un nuevo usuario desde el shell es el comando useradd. Después de abrir una ventana
de Terminal con permiso de root, simplemente invoque useradd en el símbolo del sistema, con detalles de la nueva
cuenta como parámetros.
El único parámetro requerido es el nombre de inicio de sesión del usuario, pero probablemente desee incluir información
adicional antes. Cada elemento de la información de la cuenta está precedido por un código de opción de una sola letra con
un guión delante. Las siguientes opciones están disponibles con useradd:
c "comentario": proporciona una descripción de la nueva cuenta de usuario. Normalmente, este es el
'
persona nombre completo. Reemplace el comentario con el nombre de la cuenta de usuario (c Jake).
Use comillas para ingresar varias palabras (por ejemplo, c ″Jake Jackson″).
d home_dir: establece el directorio de inicio que se usará para la cuenta. El valor predeterminado es nombrarlo igual
que el nombre de inicio de sesión y colocarlo en /home. Reemplace home_dir con el nombre del directorio a usar
(por ejemplo, d /mnt/homes/jake).
D: en lugar de crear una nueva cuenta, guarde la información proporcionada como la nueva
configuración predeterminada para cualquier cuenta nueva que se cree.
e expire_date: Asigna la fecha de vencimiento de la cuenta en formato AAAAMMDD .
Reemplace expire_date con una fecha que desee usar. (Por ejemplo, para caducar una cuenta el 5 de mayo de
2022, use e 20220505).
f 1: establezca el número de días después de que caduque una contraseña hasta que la cuenta sea permanente
nentemente deshabilitado. El valor predeterminado, 1, deshabilita la opción. Establecer esto en 0 deshabilita el
252
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
cuenta inmediatamente después de que la contraseña haya expirado. Reemplace 1 (que es menos
uno) con el número a usar.
g grupo: establezca el grupo principal (ya debe existir en el archivo /etc/group) en el que estará el
nuevo usuario. Reemplace el grupo con el nombre del grupo (por ejemplo, g rueda).
Sin esta opción, se crea un nuevo grupo que es el mismo que el nombre de usuario y se utiliza como 11
grupo principal de ese usuario.
G lista de grupos : agregue el nuevo usuario a la lista separada por comas proporcionada de grupos
complementarios (por ejemplo, G rueda, ventas, tecnología, almuerzo). (Si usa G más tarde con
usermod, asegúrese de usar aG y no solo G. Si no lo hace, los grupos complementarios
se eliminan y
elos
xistentes
grupos
que proporciona aquí son los únicos asignados).
k skel_dir: Establece el directorio esqueleto que contiene los archivos de configuración inicial y
scripts de inicio de sesión que deben copiarse en el directorio de inicio de un nuevo usuario. Este
parámetro solo se puede usar junto con la opción m. Reemplace skel_dir con el nombre del
directorio a usar. (Sin esta opción, se utiliza el directorio /etc/skel).
'
m: Crea automáticamente el usuario s directorio de inicio y copie los archivos en el directorio de
esqueleto (/etc/skel) en él. (Esta es la acción predeterminada para Fedora y RHEL, por lo que no es s
necesaria. No es la acción predeterminada para Ubuntu).
'
M: No crear el nuevo usuario crearlo. s directorio de inicio, incluso si el comportamiento predeterminado se establece en
n: desactiva el comportamiento predeterminado de crear un nuevo grupo que coincida con el nombre y
la ID de usuario del nuevo usuario. Esta opción está disponible con los sistemas Fedora y RHEL.
Otros sistemas Linux a menudo asignan un nuevo usuario al grupo llamado usuarios.
o: use con u uid para crear una cuenta de usuario que tenga el mismo UID que otro nombre de
usuario. (Esto le permite tener dos nombres de usuario diferentes con autoridad sobre el mismo
conjunto de archivos y directorios). p contraseña: ingrese una contraseña para la cuenta que está
agregando. esto debe ser un
contraseña encriptada. En lugar de agregar una contraseña cifrada aquí, simplemente puede usar el
comando de usuario passwd más tarde para agregar una contraseña para el usuario. (Para generar
una contraseña MD5 cifrada, escriba openssl passwd).
s shell: especifique el shell de comandos que se usará para esta cuenta. Reemplace la carcasa con la
shell de comandos (por ejemplo, s /bin/csh).
u user_id: especifique el número de ID de usuario de la cuenta (por ejemplo, u 1793).
Sin la opción u, el comportamiento predeterminado es asignar automáticamente el siguiente número
disponible. Reemplace user_id con el número de ID. Los ID de usuario que se asignan
automáticamente a usuarios regulares comienzan en 1000, por lo que debe usar ID para usuarios
regulares que estén por encima de ese número de una manera que no entre en conflicto con las
asignaciones automáticas.
253
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
' '
Dejar s crear una cuenta para un nuevo usuario. El usuario El nombre completo de s es Sara Green, con un nombre de
inicio de sesión de sara. Para comenzar, conviértase en usuario root y escriba el siguiente comando:
# useradd c "Sara Green" sara
A continuación, establezca la contraseña inicial para Sara mediante el comando passwd. Se le pedirá que escriba la contraseña
dos veces:
# passwd sara
Cambiando la contraseña del usuario sara.
Nueva contraseña: **********
Vuelva a escribir la nueva contraseña: **********
NOTA
Los asteriscos en este ejemplo representan la contraseña que ingresa. En realidad, no se muestra nada cuando escribe la
contraseña. Además, tenga en cuenta que ejecutar passwd como usuario raíz le permite agregar contraseñas cortas o en blanco que los
usuarios normales no pueden agregar.
Al crear la cuenta para Sara, el comando useradd realiza varias acciones:
■ Lee los archivos /etc/login.defs y /etc/default/useradd para obtener los valores predeterminados que se utilizarán al
crear cuentas. ■ Comprueba los parámetros de la línea de comandos para averiguar qué valores predeterminados
anular. ■ Crea una nueva entrada de usuario en los archivos /etc/passwd y /etc/shadow según el
valores predeterminados y parámetros de línea de comandos.
■ Crea cualquier entrada de grupo nueva en el archivo /etc/group. (Fedora crea un grupo
'
usando el nuevo usuario nombre de.)
■ Crea un directorio de inicio basado en el nombre del usuario en el directorio /home. ■ Copia cualquier archivo
ubicado dentro del directorio /etc/skel al nuevo directorio de inicio.
Esto generalmente incluye secuencias de comandos de inicio de sesión y aplicación.
El ejemplo anterior utiliza solo algunas de las opciones de adición de usuario disponibles. La mayoría de las configuraciones de
cuenta se asignan utilizando valores predeterminados. Puede establecer más valores explícitamente si lo desea.
'
Aquí Es un ejemplo que usa algunas opciones más para hacerlo:
# useradd g usuarios G rueda, apache s /bin/tcsh c "Sara Green" sara
En este caso, se le dice a useradd que convierta a los usuarios en el grupo principal al que pertenece Sara (g), que la
agregue a los grupos Wheel y Apache, y que asigne tcsh como su shell de comando principal (s). Un directorio de inicio en /
'
home bajo el valor predeterminado del usuario. Esta línea de comando El
dna
ombre
como rdesultado
e (/home/sara)
que se
eas
gregue
creado upna
or línea similar a
la siguiente al archivo /etc/passwd:
sara:x:1002:1007: Sara Green:/home/sara:/bin/tcsh
254
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
Cada línea del archivo /etc/passwd representa un único registro de cuenta de usuario. Cada campo está
separado del siguiente por un carácter de dos puntos (:). La posición del
qué
campo
es. Ceomo
n la specuencia
uede ver,
deetermina
l nombre
de inicio de sesión es lo primero. El campo de contraseña contiene una x porque, en este ejemplo, el archivo
de contraseña oculta se usa para almacenar datos de contraseña cifrada (en /etc/shadow).
11
El ID de usuario seleccionado por useradd es 1002. El ID de grupo principal es 1007, que
corresponde a un grupo sara privado en el archivo /etc/group. El campo de comentarios se configuró
correctamente en Sara Green, el directorio de inicio se asignó automáticamente como /home /sara y el
shell de comandos se asignó como /bin/tcsh, exactamente como se especificó con las opciones de adición
de usuario.
Al omitir muchas de las opciones (como hice en el primer ejemplo de adición de usuario), se asignan valores
predeterminados en la mayoría de los casos. Por ejemplo, al no usar g sales o G wheel, apache, se asignó
el nombre de grupo sara al nuevo usuario. Algunos sistemas Linux (aparte de Fedora y RHEL) asignan
usuarios como nombre de grupo de forma predeterminada. Del mismo modo, excluir s /bin/tcsh hace que /bin/
bash se asigne como shell predeterminado.
El archivo /etc/group contiene información sobre los diferentes grupos en su sistema Linux y los usuarios
que pertenecen a ellos. Los grupos son útiles para permitir que varios usuarios compartan el acceso a los
mismos archivos mientras niegan el acceso a otros. Aquí está la entrada /etc/group creada para Sara:
Sara:x:1007:
Cada línea en el archivo de grupo contiene el nombre de un grupo, una contraseña de grupo (generalmente
llena con una x), el número de ID de grupo asociado con él y una lista de usuarios en ese grupo. De forma
predeterminada, cada usuario se agrega a su propio grupo, comenzando con el siguiente GID disponible,
comenzando con 1000.
Configuración de los valores
predeterminados del usuario El comando useradd determina los valores predeterminados para las cuentas
nuevas al leer los archivos /etc/login.defs y /etc/default/useradd. Puede modificar esos valores predeterminados
editando los archivos manualmente con un editor de texto estándar. Aunque login.defs es diferente en
diferentes sistemas Linux, el siguiente es un ejemplo que contiene muchas de las configuraciones que puede
encontrar en un archivo login.defs:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 200
SYS_UID_MAX 999
GID_MIN 1000
255
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME sí
Todas las líneas sin comentarios contienen pares de palabra clave/valor. Por ejemplo, la palabra clave
PASS_MIN_LEN va seguida de un espacio en blanco y el valor 5. Esto le dice a useradd que la contraseña del
usuario debe tener al menos cinco caracteres. Otras líneas le permiten personalizar el rango válido de números de ID
de usuario asignados automáticamente o números de ID de grupo. (Fedora comienza en UID 1000; los sistemas
anteriores comenzaban con UID 100). Los números de cuenta de grupo y usuario administrativo permanente están
reservados hasta 199 y 200, respectivamente. Por lo tanto, puede asignar sus propias cuentas administrativas de
usuario y grupo a partir de 200 y 201, respectivamente, hasta el número de ID 999.
Una sección de comentarios que explica el propósito de la palabra clave precede a cada palabra clave (que edité
aquí para ahorrar espacio). Modificar un valor predeterminado es tan simple como editar el valor asociado con una
palabra clave y guardar el archivo antes de ejecutar el comando useradd.
Si desea ver otras configuraciones predeterminadas, encuéntrelas en el archivo /etc/default/useradd.
También puede ver la configuración predeterminada escribiendo el comando useradd con la opción D, de la
siguiente manera:
# agregarusuario D
GRUPO=100
INICIO=/inicio
INACTIVO=1
CADUCAR=
CONCHA=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=sí
También puede usar la opción D para cambiar los valores predeterminados. Cuando se ejecuta con este
indicador, useradd se abstiene de crear una nueva cuenta de usuario; en su lugar, guarda las opciones
proporcionadas adicionalmente como los nuevos valores predeterminados en /etc/default/useradd. No todas las
opciones de adición de usuario se pueden usar junto con la opción D. Solo puede usar las cinco opciones
enumeradas aquí.
b default_home : establece el directorio predeterminado en el que se crean los directorios de inicio de los
usuarios. Reemplace inicio_predeterminado con el nombre del directorio a usar (por ejemplo, b / garaje).
Por lo general, esto es /home.
e default_expire_date: establece la fecha de vencimiento predeterminada en la que el usuario
cuenta deshabilitada. El valor default_expire_date debe reemplazarse con una fecha en el formato AAAA
MMDD (por ejemplo, e 20111017). f default_inactive : establece el número de días después de que
una contraseña haya caducado antes de que se deshabilite la cuenta. Reemplace default_inactive con un
número que represente la cantidad de días (por ejemplo, f 7).
256
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
g default_group: establece el grupo predeterminado en el que se colocarán los nuevos usuarios. Ni
Normalmente, useradd crea un nuevo grupo con el mismo nombre y número de ID que el usuario.
Reemplace grupo_predeterminado con el nombre del grupo a usar (por ejemplo, g osos).
s default_shell: establece el shell predeterminado para nuevos usuarios. Esto es /bin/bash,
típicamente Reemplace default_shell con la ruta completa al shell que desea como predeterminado para los 11
nuevos usuarios (por ejemplo, s /bin/ash).
Para establecer cualquiera de los valores predeterminados, dé la opción D primero y agregue los valores
predeterminados que desea establecer. Por ejemplo, para establecer la ubicación del directorio de inicio predeterminado
en /home/everyone y el shell predeterminado en /bin/tcsh, ingrese lo siguiente:
# useradd D b /home/todos s /bin/tcsh
Además de configurar los valores predeterminados del usuario, un administrador puede crear archivos predeterminados
'
que se copian en los archivos de configuración
de inicio para d
s directorio e ucso.
su ada usuario
Estos (como .bashrc).
archivos Tenga en
pueden incluir secuencias ccuenta
de que
omandos cionfigurar
de este
nicio de sesión
y shell
tipo de archivos es el propósito del directorio predeterminado /etc/skel.
Otros comandos que son útiles para trabajar con cuentas de usuario incluyen usermod (para modificar la configuración
de una cuenta existente) y userdel (para eliminar una cuenta de usuario existente).
Modificación de usuarios con usermod El comando
usermod proporciona un método simple y directo para cambiar los parámetros de la cuenta. Muchas de las
opciones disponibles con él reflejan las que se encuentran en useradd.
Las opciones que se pueden usar con este comando incluyen las siguientes:
c nombre de usuario: cambia la descripción asociada a la cuenta de usuario. Reemplazar
nombre de usuario con el nombre de la cuenta de usuario (c jake). Use comillas para ingresar varias palabras
(por ejemplo, c ″Jake Jackson″).
d home_dir: cambia el directorio de inicio para usar para la cuenta. El valor predeterminado es nombrarlo igual
que el nombre de inicio de sesión y colocarlo en /home. Reemplace home_dir con el nombre del directorio a
usar (por ejemplo, d /mnt/homes/jake). e expire_date : asigna una nueva fecha de vencimiento para la cuenta
en AAAAMMDD
formato. Reemplace expire_date con una fecha que desee usar. (Para el 15 de octubre de 2022, use e
20221015).
f 1: cambia el número de días después de que caduca una contraseña hasta que la cuenta es por
inhabilitado permanentemente. El valor predeterminado, 1, deshabilita la opción. Establecer esto en 0
deshabilita la cuenta inmediatamente después de que la contraseña haya expirado. Reemplace 1 con el
número a usar.
g grupo: cambie el grupo principal (como se indica en el archivo /etc/group) en el que estará el usuario. Reemplace
el grupo con el nombre del grupo (por ejemplo, g rueda).
257
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
G grouplist : establece los grupos secundarios del usuario en la lista de grupos separados por
'
comas suministrada. Si el usuario ya está en al menos un grupo además del grupo de es privado
usuarios, también debe agregar la opción a (Ga). De lo contrario, el usuario pertenece solo al
nuevo conjunto de grupos y pierde la pertenencia a cualquier grupo anterior.
l login_name : cambia el nombre de inicio de sesión de la cuenta.
L: Bloquea la cuenta poniendo un signo de exclamación al principio de la
contraseña cifrada en /etc/shadow. Esto bloquea la cuenta y aún le permite dejar la contraseña
intacta (la opción U la desbloquea). m: disponible solo cuando se usa –d. Esto hace que los
'
contenidos del usuario s dirección a casa
tory para ser copiado en el nuevo directorio.
o: use solo con u uid para eliminar la restricción de que los UID deben ser únicos. s shell:
especifique un shell de comando diferente para usar con esta cuenta. Reemplazar carcasa
con el shell de comandos (por ejemplo, s bash).
u user_id: cambia el número de ID de usuario de la cuenta. Reemplace user_id con el número de
identificación (por ejemplo, u 1474).
U: Desbloquea la cuenta de usuario (eliminando el signo de exclamación al principio de la
contraseña cifrada).
Los siguientes son ejemplos del comando usermod:
# usermod s /bin/csh chris # usermod
Ga ventas, marketing, chris
El primer ejemplo cambia el shell a csh shell para el usuario llamado chris. En el segundo ejemplo,
se agregan grupos complementarios para el usuario chris. La opción a (Ga) asegura que los grupos
complementarios se agreguen a cualquier grupo existente para el usuario chris. Si no se usa a, los
grupos complementarios existentes para chris se borran y la nueva lista de grupos incluye los únicos
grupos complementarios asignados a ese usuario.
Eliminación de usuarios con userdel Así
como usermod se usa para modificar la configuración del usuario y useradd se usa para crear
usuarios, userdel se usa para eliminar usuarios. El siguiente comando elimina el usuario chris:
# usuariodel r chris
Aquí, el usuario chris se elimina del archivo /etc/password. La opción –r elimina la
'
usuarios directorio de inicio también. Si elige no usar –r, de la siguiente manera, el directorio de inicio de
chris no se elimina:
# usuario del chris
Tenga en cuenta que simplemente eliminar la cuenta de usuario no cambia nada sobre los archivos que
el usuario deja en el sistema (excepto aquellos que se eliminan cuando usa r).
'
Sin embargo, la propiedad de los archivos dejados parece pertenecer al número de propietario ID de usuario
anterior cuando ejecuta ls l en los archivos.
258
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
Antes de eliminar al usuario, es posible que desee ejecutar un comando de búsqueda para encontrar todos los
archivos que el usuario dejaría atrás. Después de eliminar el usuario, puede buscar en el ID de usuario para encontrar
los archivos que quedaron atrás. Aquí hay dos comandos de búsqueda para hacer esas cosas:
# encontrar / usuario chris ls #
encontrar / uid 504 ls 11
Debido a que los archivos que no están asignados a ningún nombre de usuario se consideran un riesgo de seguridad,
'
es un dee
es una buena idea encontrar esos archivos y asignarlos a una cuenta de usuario real. Aquí hay un comando jemplo
búsqueda que encuentra todos los archivos en el sistema de archivos que no están asociados con ningún usuario (los
archivos se enumeran por UID):
# encontrar / nouser ls
Comprender las cuentas de grupo
Las cuentas de grupo son útiles si desea compartir un conjunto de archivos con varios usuarios. Puede
crear un grupo y cambiar el conjunto de archivos que se asociarán con ese grupo. El usuario root puede
'
asignar usuarios a ese grupo para que puedan tener acceso a los archivos basados en ese grupo permiso
sion.
Considere el siguiente archivo y directorio:
$ ls ld /var/salesdocs /var/salesdocs/file.txt drwxrwxr x. 2 ventas raíz
4096 14 de enero 09:32 /var/salesstuff/
rwrwr. 1 raíz de ventas 0 14 de enero 09:32 /var/salesstuff/file.txt
Si observa los permisos en el directorio /var/salesdocs (rwxrwxrx), verá que el segundo conjunto de rwx
muestra que cualquier miembro del grupo (ventas) tiene permiso para leer archivos en ese directorio (r
se lee), crear y borrar archivos de ese directorio (w es escribir), y cambiar a ese directorio (x es ejecutar).
Los miembros del grupo de ventas pueden leer y modificar el archivo denominado file.txt (según el
segundo rw).
Uso de cuentas de grupo Cada
usuario está asignado a un grupo principal. En Fedora y RHEL, por defecto, ese grupo es un nuevo
grupo con el mismo nombre que el usuario. Entonces, si el usuario se llamara sara, el grupo que se le
asignó también sería sara. El grupo primario está indicado por el número en el tercer campo de cada
entrada en el archivo /etc/passwd; por ejemplo, el ID de grupo 1007 aquí:
sara:x:1002:1007: Sara Green:/home/sara:/bin/tcsh
Esa entrada apunta a una entrada en el archivo /etc/group:
Sara:x:1007:
Pasemos a las cuentas de usuario y grupo de sara para ver ejemplos. Aquí hay algunos datos sobre
el uso de grupos:
■ Cuando Sara crea un archivo o directorio, por defecto, ese archivo o directorio se asigna
al grupo primario de sara (también llamado sara).
259
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
■ El usuario sara puede pertenecer a cero o más grupos complementarios. Si Sara fuera una
miembro de grupos llamados ventas y marketing, esas entradas podrían tener el siguiente
aspecto en el archivo /etc/group:
ventas:x:1302:joe,bill,sally,sara
marketing:x:1303:mike,terry,sara
' '
■ El usuario sara puede t agregarse a un grupo suplementario. Puede agregar ni siquiera agregar
otro usuario a su grupo sara. Solo alguien con privilegios de root puede asignar usuarios a
grupos.
■ Cualquier archivo asignado al grupo de ventas o marketing es accesible para Sara con
grupo y otros permisos (el que proporcione más acceso). Si Sara quiere crear un archivo con
los grupos de ventas o marketing asignados, podría usar el comando newgrp. En este ejemplo,
Sara usa el comando newgrp para que las ventas se conviertan en su grupo principal
temporalmente y crea un archivo:
[sara]$ touch file1 [sara]$
newgrp sales [sara]$ touch file2
[sara]$ ls l file* rwrwr. 1
sara sara 0 18 de enero 22:22
file1 rwrwr. 1 sara ventas 0 18 de enero 22:23 file2
[sara]$ salida
También es posible permitir que los usuarios se conviertan en miembros de un grupo temporalmente
con el nuevo comando grp sin ser realmente miembros de ese grupo. Para hacer eso, alguien con
permiso de root puede usar gpasswd para establecer una contraseña de grupo (como gpasswd sales).
Después de eso, cualquier usuario puede escribir newgrp sales en un shell y usar temporalmente sales
como su grupo principal simplemente ingresando la contraseña del grupo cuando se le solicite.
Creación de cuentas de grupo Como
usuario raíz, puede crear nuevos grupos desde la línea de comandos con el comando groupadd.
Además, como se indicó anteriormente, los grupos se crean automáticamente cuando se crea una
cuenta de usuario.
Los números de ID de grupo del 0 al 999 se asignan a grupos administrativos especiales. Por ejemplo,
el grupo raíz está asociado con GID 0. Los grupos regulares comienzan en 1000 para Red Hat
Enterprise Linux y Fedora. En los primeros sistemas UNIX, los GID iban de 0 a 99. Otros sistemas Linux
reservan GID entre 0 y 500 para grupos administrativos. Una característica relativamente nueva, descrita
anteriormente, reserva cuentas administrativas de usuarios y grupos hasta 199 y 200, respectivamente,
y le permite crear sus propias cuentas administrativas entre esos números y 999.
260
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
Estos son algunos ejemplos de cómo crear una cuenta de grupo con el comando groupadd:
# groupadd reyes #
groupadd g 1325 comodines
En los ejemplos que se acaban de mostrar, el grupo denominado reyes se crea con el siguiente ID de grupo
11
disponible. Después de eso, los comodines de grupo se crean usando la ID de grupo 1325. A algunos
administradores les gusta usar un número de grupo indefinido por encima de 200 y por debajo de 1000 para que
el grupo que crean no sUID
e entrometa en las
y GID puedan deesignaciones
ir n paralelo). de grupo por encima de 1000 (para que los números
Para cambiar un grupo más tarde, use el comando groupmod, como en el siguiente ejemplo:
# groupmod g 330 comodines #
groupmod n jacks comodines
En el primer ejemplo, el ID de grupo de los comodines se cambia a 330. En el segundo, el nombre de los
comodines se cambia a jotas. Si luego quisiera asignar cualquiera de los grupos como grupos complementarios
a un usuario, puede usar el comando usermod (como se describe anteriormente en este capítulo).
Gestión de usuarios en la empresa
El método básico de Linux para manejar cuentas de usuarios y grupos no ha cambiado desde que se
desarrollaron los primeros sistemas UNIX hace décadas. Sin embargo, a medida que los sistemas Linux se
utilizan de formas más complejas, se han agregado al modelo básico de usuario/grupo funciones para administrar
usuarios, grupos y los permisos asociados con ellos para que sea más flexible y centralizado:
Más fl exible En el modelo básico, solo se puede asignar un usuario y un grupo a cada archivo. Además,
los usuarios regulares no tienen la capacidad de asignar permisos específicos a diferentes usuarios
o grupos y tienen muy poca flexibilidad para configurar archivos/directorios colaborativos. Las mejoras
a este modelo permiten a los usuarios regulares configurar directorios colaborativos especiales
(usando funciones como bit pegajoso y directorios de bits GID establecidos).
Con las listas de control de acceso (ACL), cualquier usuario también puede asignar permisos
específicos a archivos y directorios a cualquier usuario y grupo que desee.
Más centralizado Cuando solo tiene una computadora, almacenar información de usuario para todos los
usuarios en el archivo /etc/passwd probablemente no sea una dificultad. Sin embargo, si necesita
autenticar el mismo conjunto de usuarios en miles de sistemas Linux, centralizar esa información puede
ahorrarle mucho tiempo y dolores de cabeza. Red Hat Enterprise Linux incluye funciones que le permiten
autenticar usuarios desde servidores LDAP o servidores de Microsoft Active Directory.
Las siguientes secciones describen cómo utilizar funciones como las Listas de control de acceso (ACL) y los
directorios compartidos (directorios de bits fijos y bits GID establecidos) para proporcionar formas eficaces de
compartir archivos y directorios de forma selectiva.
261
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Configuración de permisos con listas de control de acceso La función Lista de control
de acceso (ACL) se creó para que los usuarios normales pudieran compartir sus archivos y directorios de forma selectiva con
otros usuarios y grupos. Con las ACL, un usuario puede permitir que otros lean, escriban y ejecuten archivos y directorios sin
dejar completamente abiertos esos elementos del sistema de archivos ni requerir que el usuario raíz cambie el usuario o grupo
que se les asignó.
Aquí hay algunas cosas que debe saber sobre las ACL:
■ Para que se utilicen las ACL, deben estar habilitadas en un sistema de archivos cuando ese sistema de archivos
esta montado.
■ En Fedora y Red Hat Enterprise Linux, las ACL se habilitan automáticamente en cualquier archivo
sistema creado cuando se instala el sistema.
■ Si crea un sistema de archivos después de la instalación (como cuando agrega un disco duro),
debe asegurarse de que la opción de montaje acl se use cuando se monte el sistema de archivos (más sobre
eso más adelante).
■ Para agregar ACL a un archivo, use el comando setfacl; para ver las ACL establecidas en un archivo,
utiliza el comando getfacl.
■ Para establecer ACL en cualquier archivo o directorio, debe ser el propietario real (usuario) asignado al mismo. En
otras palabras, tener asignados permisos de usuario o grupo con setfacl no le da permiso para cambiar las ACL en
esos archivos usted mismo.
■ Debido a que se pueden asignar múltiples usuarios y grupos a un archivo/directorio, el permiso real que tiene un
usuario se basa en una unión de todas las designaciones de usuarios/grupos a los que pertenecen. Por ejemplo,
si un archivo tuviera permiso de solo lectura (r) para el grupo de ventas y lectura/escritura/ejecución (rwx) para
el grupo de mercado, y María perteneciera a ambos, María tendría permiso rwx.
NOTA
,
Si las ACL no están habilitadas en el sistema de archivos que intenta usar con setfacl, consulte este capítulo para consulte la sección "Habilitación de ACL" más adelante
obtener información sobre cómo montar un sistema de archivos con las ACL habilitadas.
Configuración de ACL con setfacl
Con el comando setfacl, puede modificar los permisos (m) o eliminar los permisos de ACL (x). El siguiente es un ejemplo de
la sintaxis del comando setfacl:
setfacl mu:nombre de usuario:rwx nombre de archivo
En el ejemplo que se acaba de mostrar, la opción de modificación (m) va seguida de la letra u, lo que indica que está
configurando permisos de ACL para un usuario. Después de dos puntos (:), indica el nombre de usuario, seguido de otros
dos puntos y los permisos que desea asignar. Al igual que con el comando chmod, puede asignar permisos de lectura (r),
escritura (w) y/o ejecución (x) al usuario o grupo (en el ejemplo, se otorga el permiso rwx completo). El último argumento se
reemplaza por el nombre de archivo real que está modificando.
262
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
Los siguientes son algunos ejemplos del usuario mary usando el comando setfacl para agregar
permisos para otros usuarios y grupos en un archivo:
[maria]$ touch /tmp/memo.txt [maria]$ ls
l /tmp/memo.txt rwrwr. 1 mary mary
0 21 de enero 09:27 /tmp/memo.txt [mary]$ setfacl mu:bill:rw /tmp/memo.txt 11
[mary]$ setfacl mg:sales:rw /tmp/memo.txt
En el ejemplo anterior, Mary creó un archivo llamado /tmp/memo.txt. Usando el comando setfacl,
modificó los permisos (m) para el usuario llamado bill para que ahora tenga permisos de lectura/escritura
(rw) para ese archivo. Luego modificó los permisos para las ventas del grupo para que cualquiera que
pertenezca a ese grupo también tenga permisos de lectura/escritura. Mire ls l y obtenga la salida de ese
archivo ahora:
[mary]$ ls l /tmp/memo.txt rwrwr+ 1
mary mary 0 21 de enero 09:27 /tmp/memo.txt [mary]$ getfacl /tmp/memo.txt #
archivo : tmp/memo.txt # propietario: mary # grupo: mary
usuario::rw
usuario:factura:rw
grupo::rw
grupo:ventas:rw
máscara::rw
otro::r
Desde la salida ls l, observe el signo más (+) en la salida rwrwr+. El signo más indica que las ACL
están configuradas en el archivo, por lo que debe ejecutar el comando getfacl para ver cómo se
configuran las ACL. El resultado muestra a mary como propietario y grupo (igual que lo que ve con ls
l), los permisos de usuario normales (rw) y los permisos para la factura de usuario de ACL (rw). Lo
mismo es cierto para los permisos de grupo y los permisos para las ventas de grupo. Otros permisos
son r.
La línea de máscara (cerca del final del ejemplo anterior de getfacl) requiere una discusión especial.
Tan pronto como establezca las ACL en un archivo, el permiso de grupo regular en el archivo
establece una máscara del permiso máximo que un usuario o grupo de ACL puede tener en un
archivo. Por lo tanto, incluso si proporciona a una persona más permisos de ACL de los que permiten
los permisos de
en egl srupo,
los peermisos
iguiente jemplo: efectivos de la persona no superan los permisos de grupo, como
[mary]$ chmod 644 /tmp/memo.txt [mary]$
getfacl /tmp/memo.txt # archivo: tmp/memo.txt
# propietario: mary # grupo: mary
usuario::rw
usuario:factura:rw #efectivo:r
263
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
grupo::rw #efectivo:r
grupo:ventas:rw #efectivo:r máscara::r
otro::r
Observe en el ejemplo anterior que aunque la factura del usuario y las ventas del grupo tienen permisos rw, sus
permisos efectivos son r. Por lo tanto, Bill o cualquier persona en ventas no podría cambiar el archivo a menos que
Mary volviera a abrir los permisos (por ejemplo, escribiendo chmod 664 /tmp/memo.txt).
Configuración de ACL
predeterminadas La configuración de ACL predeterminadas en un directorio permite que sus ACL se hereden.
Esto significa que cuando se crean nuevos archivos y directorios en ese directorio, se les asignan las mismas
ACL. Para establecer un permiso de ACL de usuario o grupo como predeterminado, agregue ad: a la designación
de usuario o grupo. Considere el siguiente ejemplo:
[mary]$ mkdir /tmp/mary [mary]$ setfacl
md:g:market:rwx /tmp/mary/ [mary]$ getfacl /tmp/mary/ # archivo: tmp/mary/ #
propietario: mary # grupo : María
usuario::rwx
grupo::rwx otro::rx
predeterminado:usuario::rwx
predeterminado:grupo::rwx
predeterminado:grupo:ventas:rwx
predeterminado:grupo:mercado:rwx
predeterminado:máscara::rwx
predeterminado:otro::rx
Para asegurarse de que la ACL predeterminada funcionó, cree un subdirectorio. Luego ejecute getfacl nuevamente.
Verá que se agregan líneas predeterminadas para usuario, grupo, máscara y otras, que se heredan de las ACL del
directorio:
[mary]$ mkdir /tmp/mary/test [mary]$ getfacl /tmp/
mary/test # archivo: tmp/mary/test # propietario: mary
# grupo: mary
usuario::rwx
grupo::rwx
grupo:ventas:rwx
grupo:mercado:rwx
máscara::rwx
otro::rx
264
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
predeterminado:usuario::rwx
predeterminado:grupo::rwx
predeterminado:grupo:ventas:rwx
predeterminado:grupo:mercado:rwx
predeterminado:máscara::rwx
predeterminado:otro::rx 11
Tenga en cuenta que cuando crea un archivo en ese directorio, los permisos heredados son diferentes.
Debido a que se crea un archivo normal sin permiso de ejecución, el permiso efectivo se reduce a rw:
[mary@cnegus ~]$ touch /tmp/mary/file.txt [mary@cnegus ~]$ getfacl /tmp/
mary/file.txt # archivo: tmp/mary/file.txt # propietario: mary # grupo: mary
usuario::rw
#efectivo:rw grupo::rwx
#efectivo:rw grupo:ventas:rwx grupo:mercado:rwx
#efectivo:rw máscara::rw
otro::r
Habilitación de
ACL En los sistemas Fedora y RHEL recientes, los tipos de sistemas de archivos xfs y ext (ext2, ext3 y ext4) se crean
automáticamente con compatibilidad con ACL. En otros sistemas Linux, o en sistemas de archivos creados en otros
sistemas Linux, puede agregar la opción de montaje acl de varias maneras:
■ Agregue la opción acl al quinto campo de la línea en el archivo /etc/fstab que monta automáticamente el sistema
de archivos cuando se inicia el sistema. ■ Implante la línea acl en el campo Opciones de montaje
predeterminadas en el superbloque del sistema de archivos, de modo que la opción acl se use ya sea que el s
sistema de archivos se monte automática o manualmente.
■ Agregue la opción acl a la línea de comando de montaje cuando monte el sistema de archivos manualmente
con el comando de montaje.
Tenga en cuenta que en los sistemas Fedora y Red Hat Enterprise Linux, solo tiene que agregar la opción de montaje
acl a aquellos sistemas de archivos que se crearon en otro lugar. El instalador de anaconda agrega automáticamente
compatibilidad con ACL a cada sistema de archivos que crea durante el tiempo de instalación y mkfs agrega acl a cada
sistema de archivos que crea con esa herramienta. Para verificar que la opción acl se haya agregado a un sistema de
archivos ext, determine el nombre del dispositivo asociado con el sistema de archivos y ejecute el comando tune2fs l para
ver las opciones de montaje implantadas, como en este ejemplo:
# montar | grep home /dev/mapper/
myboxhome on /home type ext4 (rw) # tune2fs l /dev/mapper/myboxhome | grep
"opciones de montaje"
Opciones de montaje predeterminadas: user_xattr acl
265
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Primero, escribí el comando de montaje para ver una lista de todos los sistemas de archivos que están
montados actualmente, limitando la salida buscando la palabra home (porque estaba buscando el sistema de
archivos montado en /home). Después de ver el nombre del dispositivo del sistema
una odpción
e archivos,
para tune2fs
lo usé como
l para
encontrar la línea de opciones de montaje predeterminada. Allí, pude ver las opciones de montaje que el usuario
implantó en el superbloque
_del
sistema
xattr dae
(para archivos
tributos para que csomo
extendidos e usaran
cuando
y ascl
SELinux) e fm ontara
ueron el sistema de
ambos
archivos.
Si el campo de opciones de montaje predeterminado está en blanco (como cuando acaba de crear un nuevo
sistema de archivos), puede agregar la opción de montaje acl usando el comando tune2fs o. Por ejemplo, en un
sistema Linux diferente, creé un sistema de archivos en una unidad USB extraíble que se asignó como dispositivo /
dev/sdc1. Para implantar la opción de montaje acl y verificar que esté allí, ejecuté los siguientes comandos:
# tune2fs o acl /dev/sdc1 #
tune2fs l /dev/sdc1 | grep "opciones de montaje"
Opciones de montaje predeterminadas: ac
Puede probar que esto funcionó volviendo a montar el sistema de archivos e intentando usar el comando setfacl en
un archivo en ese sistema de archivos.
Una segunda forma de agregar soporte acl a un sistema de archivos es agregar la opción acl a la línea en el
archivo /etc/fstab que monta automáticamente el sistema de archivos en el momento del arranque. El siguiente es
un ejemplo de cómo se vería una línea que monta el sistema de archivos ext4 ubicado en el dispositivo /dev/sdc1
en el directorio /var/stuff:
En lugar de la entrada predeterminada en el cuarto campo, agregué acl. Si ya había opciones configuradas
en ese campo, agregue una coma después de la última opción y agregue acl. La próxima vez que se monte el
sistema de archivos, se habilitarán las ACL. Si el sistema de archivos ya estuviera montado, podría escribir el
siguiente comando de montaje como root para volver a montar el sistema de archivos usando acl o cualquier otro
valor agregado al archivo /etc/fstab:
# montar o volver a montar /dev/sdc1
Una tercera forma de agregar compatibilidad con ACL a un sistema de archivos es montar el sistema de
archivos a mano y solicitar específicamente la opción de montaje de ACL. Por lo tanto, si no hubiera ninguna
entrada para el sistema de archivos en el archivo /etc/fstab, después de crear el punto de montaje (/var/stuff),
escriba el siguiente comando para montar el sistema de archivos e incluir compatibilidad con ACL:
# montar o acl /dev/sdc1 /var/cosas
Tenga en cuenta que el comando de montaje solo monta el sistema de archivos temporalmente. Cuando el
sistema se reinicia, el sistema de archivos no se vuelve a montar, a menos que agregue una entrada al archivo /
etc/fstab.
266
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
Adición de directorios para que los usuarios
colaboren Normalmente, se ignora un conjunto especial de tres bits de permiso cuando utiliza el
comando chmod para cambiar los permisos en el sistema de archivos. Estos bits pueden establecer
permisos especiales en comandos y directorios. El enfoque de esta sección es configurar los bits que
lo ayudarán a crear directorios para usar en colaboración. 11
Al igual que con los bits de lectura, escritura y ejecución para usuarios, grupos y otros, estos bits de
permisos de archivos especiales se pueden configurar con el comando chmod. Si, por ejemplo, ejecuta chmod
775 / mnt/xyz, el permiso implícito es en realidad 0775. Para cambiar los permisos, puede reemplazar el
número 0 con cualquier combinación de esos tres bits (4, 2 y 1), o puede use valores de letras en su lugar.
(Consulte el Capítulo 4, “Moverse por el sistema
los permisos).
de archivos”,
Las letras
si necesita
y los nq
úmeros
ue se le
se
recuerde
muestran
cómo
en la
funcionan
Tabla 11.1.
TABLA 11.1 Comandos para crear y usar archivos
Establecer bit de ID de usuario 4 tu+s
Establecer bit de ID de grupo 2 g+s
poco pegajoso 1 o+t
Los bits que le interesan para crear directorios colaborativos son el bit de ID de grupo establecido (2) y el bit
fijo (1). Si está interesado en otros usos de los bits de configuración de ID de usuario y configuración de ID de
grupo, consulte la barra lateral "Uso de los comandos de configuración de bits de UID y GID".
Crear directorios de colaboración grupal (establecer bit GID)
Cuando crea un directorio GID establecido, todos los archivos creados en ese directorio se asignan al grupo
asignado al propio directorio. La idea es tener un directorio donde todos los miembros de un grupo puedan
'
compartir archivos y aún así protegerlos de otros usuarios. Aquí hay un directorio csa
olaborativo para
conjunto de todos
pasos los
para
cre
usuarios en el grupo que creé llamado ventas:
1. Cree un grupo para usar en colaboración:
# groupadd g 301 ventas
2. Añade al grupo algunos usuarios con los que quieras poder compartir archivos (yo
María usada):
# usermod aG ventas maría
3. Crea el directorio colaborativo:
# mkdir /mnt/herramientas de ventas
267
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Uso de los comandos Set UID y Set GIDBit
Los bits set UID y set GID se usan en archivos ejecutables especiales que permiten que los comandos set se
ejecuten de manera diferente a la mayoría. Normalmente, cuando un usuario ejecuta un comando, ese comando ' se
s por
ejecuta con las misiones de ese usuario. En otras palabras, si ejecuto el comando vi como chris, esa instancia del
comando vi tendría los permisos para leer y escribir archivos que el usuario chris podría leer y escribir.
Los comandos con los bits set UID o set GID son diferentes. Es el propietario y el grupo asignado al comando,
respectivamente, el que determina los permisos que tiene el comando para acceder a los recursos en la computadora.
Por lo tanto, un comando de UID establecido propiedad de root se ejecutaría con permisos de root; un comando set
GID propiedad de apache tendría permisos de grupo de apache.
Ejemplos de aplicaciones que han activado los bits de UID son los comandos su y newgrp. En ambos casos, los
comandos deben poder actuar como usuario raíz para hacer su trabajo. Sin embargo, para obtener permisos de raíz,
el usuario debe proporcionar una contraseña. Puede decir que su es un comando de bit UID establecido debido a la
s donde generalmente va el primer bit de ejecución (x):
$ ls /bin/su
rwsrxrx. 1 raíz raíz 30092 30 de enero 07:11 su
4. Asignar las ventas del grupo al directorio:
# chgrp sales /mnt/salestools
5. Cambie el permiso de directorio a 2775. Esto activa el bit de ID de grupo establecido (2), completo
rwx para el usuario (7), rwx para el grupo (7) y rx (5) para otro:
# chmod 2775 /mnt/herramientas de ventas
6. Conviértete en mary (ejecutar su mary). Como María, cree un archivo en el directorio
compartido y mire los permisos. Cuando enumera los permisos, puede ver que el directorio es
un directorio GID establecido porque aparece una s minúscula donde debería estar el permiso
de ejecución del grupo (rwxrwsrx):
# su mary
[mary]$ touch /mnt/salestools/test.txt [mary]$ ls ld /
mnt/salestools/ /mnt/salestools/test.txt drwxrwsrx. 2 root sales 4096 22 de
enero 14:32 /mnt/salestools/ rwrwr. 1 mary sales 0 22 de enero 14:32 /mnt/
salestools/test.txt
Por lo general, un archivo creado por mary tendría asignado el grupo mary. Pero debido a que
test.txt se creó en un directorio de bits de ID de grupo establecido, el archivo se asigna al grupo de
ventas. Ahora, cualquier persona que pertenezca al grupo de ventas puede leer o escribir en ese
archivo, según los permisos del grupo.
Creación de directorios de eliminación restringida (sticky bit)
Un directorio de eliminación restringida se crea activando el sticky bit de un directorio. ¿Qué diferencia
a un directorio de eliminación restringida de otros directorios? Normalmente, si el permiso de escritura
268
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
está abierto para un usuario en un archivo o directorio, ese usuario puede eliminar ese archivo o directorio. Sin
embargo, en un directorio de eliminación restringida, a menos que sea el usuario raíz o el propietario del directorio,
'
nunca podrá eliminar a otro usuario s llenarlos.
Por lo general, un directorio de eliminación restringida se usa como un lugar donde muchos usuarios diferentes
pueden crear archivos. Por ejemplo, el directorio /tmp es un directorio de eliminación restringida:
11
$ ls ld /tmp
drwxrwxrwt. 116 raíz raíz 36864 22 de enero 14:18 /tmp
Puede ver que los permisos están completamente abiertos, pero en lugar de una x para el bit de ejecución para otros,
la t indica que el bit adhesivo está establecido. El siguiente es un ejemplo de creación de un directorio de eliminación
restringida con un archivo que está completamente abierto para que cualquier persona pueda escribir:
[mary]$ mkdir /tmp/mystuff [mary]$
chmod 1777 /tmp/mystuff [mary]$ cp /etc/
services /tmp/mystuff/ [mary]$ chmod 666 /tmp/mystuff/
services [mary]$ ls ld /tmp/mystuff /tmp/mystuff/services
drwxrwxrwt. 2 mary mary 4096 22 de enero 15:28 /tmp/mystuff/ rw
rwrw. 1 mary mary 640999 22 de enero 15:28 /tmp/mystuff/services
Con los permisos establecidos en 1777 en el directorio /tmp/mystuff, puede ver que todos los permisos están
completamente abiertos, pero aparece at en lugar del último bit de ejecución. Con el archivo /tmp/mystuff/services
abierto para escritura, cualquier usuario podría abrirlo y cambiar su contenido. Sin embargo, debido a que el
archivo está en un directorio sticky bit, solo root y mary pueden eliminar ese archivo.
Centralización de cuentas de usuario
Aunque la forma predeterminada de autenticar a los usuarios en Linux es verificar la información del usuario con
el archivo /etc/passwd y las contraseñas del archivo /etc/shadow, también puede autenticarse de otras formas. En
la mayoría de las grandes empresas, la información de la cuenta de usuario se almacena en un servidor de autenticación
centralizado, por lo que cada vez que instala un nuevo sistema Linux, en lugar de agregar cuentas de usuario a ese
sistema, el sistema Linux consulta el servidor de autenticación cuando alguien intenta iniciar sesión. .
Al igual que con la autenticación de contraseña/sombra local, la configuración de la autenticación centralizada
requiere que proporcione dos tipos de información: información de la cuenta (nombre de usuario, ID de usuario/
grupo, directorio de inicio, shell predeterminado, etc.) y método de autenticación (diferentes tipos de contraseñas
cifradas). , tarjetas inteligentes, escáneres de retina, etc.). Linux proporciona formas de configurar ese tipo de
información.
Los dominios de autenticación que se admiten a través del comando authconfig incluyen LDAP, NIS y Windows
Active Directory.
269
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Los tipos de bases de datos centralizados admitidos incluyen los siguientes:
LDAP El Protocolo ligero de acceso a directorios (LDAP) es un protocolo popular para proporcionar servicios de
directorio (como directorios telefónicos, direcciones y cuentas de usuario). Es un estándar abierto que se
configura en muchos tipos de entornos informáticos.
NIS El Servicio de información de red (NIS) fue creado originalmente por Sun Microsystems para propagar
información como cuentas de usuario, configuración de host y otros tipos de información del sistema a través
de muchos sistemas UNIX. Debido a que NIS pasa información en texto claro, la mayoría de las empresas
ahora usan los protocolos LDAP o Winbind más seguros para la autenticación centralizada.
Winbind Si selecciona Winbind en la ventana Configuración de autenticación, podrá autenticar a sus usuarios
en un servidor de Microsoft Active Directory (AD).
Muchas grandes empresas amplían su configuración de autenticación de escritorio para realizar la
configuración del servidor además de utilizar un servidor AD.
Si está pensando en configurar sus propios servicios de autenticación centralizados y desea utilizar un proyecto de
código abierto, le recomiendo buscar en el servidor de directorio 389 (https://directory.fedoraproject.org/). Fedora y
otros sistemas Linux ofrecen este servidor LDAP de calidad empresarial.
Resumen
Tener cuentas de usuario separadas es el método principal para establecer límites seguros entre las personas que usan
su sistema Linux. Los usuarios habituales normalmente pueden controlar los archivos y directorios dentro de sus propios
directorios de inicio, pero muy poco fuera de esos directorios.
En este capítulo, aprendió cómo agregar cuentas de usuarios y grupos, cómo modificarlas e incluso cómo
extender las cuentas de usuarios y grupos más allá de los límites del archivo local /etc/passwd. También aprendió
que la autenticación se puede realizar accediendo a servidores LDAP centralizados.
El siguiente capítulo presenta otro tema básico que necesitan los administradores de sistemas Linux: cómo
administrar los discos. En ese capítulo, aprenderá cómo particionar discos, agregar sistemas de archivos y montarlos
para que el contenido de las particiones del disco sea accesible para quienes usan su sistema.
Ejercicios
Utilice estos ejercicios para probar su conocimiento sobre cómo agregar y administrar cuentas de usuarios y
grupos en Linux. Estas tareas asumen que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque
algunas tareas también funcionan en otros sistemas Linux). Si está atascado, las soluciones a las tareas se muestran
en el Apéndice B (aunque en Linux, a menudo tiene varias formas de completar una tarea).
270
Machine Translated by Google
Capítulo 11: Administración de cuentas de usuario
1. Agregue una cuenta de usuario local a su sistema Linux que tenga el nombre de usuario jbaxter
y un nombre completo de John Baxter y que usa /bin/sh como shell predeterminado. Deje que el
UID se asigne de forma predeterminada. Establezca la contraseña de jbaxter en: My1N1te0ut!
2. Cree una cuenta de grupo denominada testing que utilice el ID de grupo 315.
3. Agregue jbaxter al grupo de prueba y al grupo bin.
11
4. Abra un shell como jbaxter (ya sea una nueva sesión de inicio de sesión o usando un shell actual)
y haga que el grupo de prueba sea temporalmente su grupo predeterminado para que cuando
escriba touch /home/jbaxter/file.txt, el grupo de prueba se asigne como el grupo del archivo.
5. Tenga en cuenta qué ID de usuario se ha asignado a jbaxter y elimine la cuenta de usuario sin
eliminar el directorio de inicio asignado a jbaxter.
6. Busque cualquier archivo en el directorio /home (y cualquier subdirectorio) que esté asignado a
el ID de usuario que recientemente perteneció al usuario llamado jbaxter.
7. Copie el archivo /etc/services en el directorio básico predeterminado para que
aparece en el directorio de inicio de cualquier usuario nuevo. Luego agregue un nuevo
usuario al sistema llamado mjones, con un nombre completo de Mary Jones y un directorio de
inicio de /home/maryjones.
8. Busque todos los archivos en el directorio /home que pertenecen a mjones. ¿Hay archivos
propiedad de mjones que no esperabas ver?
9. Inicie sesión como mjones y cree un archivo llamado /tmp/maryfile.txt. Usando ACL, asigne al usuario
del contenedor permiso de lectura/escritura para ese archivo. Luego asigne el permiso de lectura/
escritura del grupo lp a ese archivo.
10. Todavía como mjones, cree un directorio llamado /tmp/mydir. Mediante ACL, asigne
permisos predeterminados para ese directorio para que el usuario adm tenga permiso de lectura/
escritura/ejecución para ese directorio y cualquier archivo o directorio creado en él. Cree el
directorio /tmp/mydir/testing/ y el archivo /tmp/mydir/newfile.txt, y asegúrese de que al usuario adm
también se le hayan asignado permisos completos de lectura/escritura/ejecución.
(Tenga en cuenta que, a pesar de que se asignó el permiso rwx al usuario adm, el permiso
efectivo en newfile.txt es solo rw. ¿Qué podría hacer para asegurarse de que adm también obtenga
el permiso de ejecución?)
271
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Administración de discos y archivos
EN ESTE CAPÍTULO
Trabajar con scripts de shell
Creación de volúmenes lógicos con LVM
Adición de sistemas de archivos
Montaje de sistemas de archivos
Desmontar sistemas de archivos
Su sistema
operativo,
almacenamiento aplicaciones
para y adpagues
que cuando atos deben mantenerse
y vuelvas en
a encender aclgún
la tipo de taodo
omputadora, lmacenamiento permanente.
siga ahí. Tradicionalmente,
ese almacenamiento ha sido proporcionado por un disco duro en su computadora. Para organizar la información
en ese disco, el disco generalmente se divide en particiones, y la mayoría de las particiones tienen una estructura
denominada sistema de archivos .
En este capítulo se describe cómo trabajar con discos duros. Las tareas del disco duro incluyen particionar, agregar sistemas
de archivos y administrar esos sistemas de archivos de varias maneras. Los dispositivos de almacenamiento que están
conectados a los sistemas, como los dispositivos extraíbles, incluidas las unidades de disco duro (HDD) y las unidades de estado
sólido (SSD), y los dispositivos de red se pueden particionar y administrar de la misma manera.
Después de cubrir las particiones básicas, describo cómo se puede usar Logical Volume Manager (LVM) para facilitar el
crecimiento, reducción y administración de sistemas de archivos de manera más eficiente.
Comprender el almacenamiento en disco
Los conceptos básicos de cómo funciona el almacenamiento de datos son los mismos en la mayoría de los sistemas
operativos modernos. Cuando instala el sistema operativo, el disco se divide en una o más particiones. Cada partición está
formateada con un sistema de archivos. En el caso de Linux, algunas de las particiones pueden tener un formato especial
para elementos como el área de intercambio o los volúmenes físicos LVM. Los discos se utilizan para el almacenamiento
permanente; la memoria de acceso aleatorio (RAM) y el intercambio se utilizan para el almacenamiento temporal. Por
ejemplo, cuando ejecuta un comando, ese comando se copia del disco duro a la RAM para que el procesador de su
computadora (CPU) pueda acceder a él más rápidamente.
273
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Su CPU puede acceder a los datos mucho más rápido desde la RAM que desde un disco duro, aunque los SSD
se parecen más a la RAM que a los HDD. Sin embargo, un disco suele ser mucho más grande que la RAM, la RAM
es mucho más costosa y la RAM se borra cuando se reinicia la computadora. Piense en su oficina como una
metáfora de RAM y disco. Un disco es como un archivador donde almacena carpetas con la información que
necesita. La memoria RAM es como la parte superior de su escritorio, donde coloca la carpeta de papeles mientras
la está usando, pero la vuelve a colocar en el archivador cuando no lo está.
Si la RAM se llena al ejecutar demasiados procesos o un proceso con pérdida de memoria, los nuevos procesos fallan
si su sistema no tiene una forma
intercambio.
de ampliar lU
a
n
meemoria
spacio ddel
e isntercambio
istema. Ahí
ees
s
udna
onde
partición
entra o
dee
n
un
ijntercambio
uego
archivo
un ádrea
e
dintercambio
el
de
disco duro
donde su computadora puede "intercambiar" datos de la RAM que no se está utilizando en ese momento y luego
"intercambiarlos". los datos vuelven a la RAM
cuando
RAM se necesitan
(el rendimiento dve
se nauevo.
e Aunque
fectado es
cm
cuando ejor nunca
ambia), es meejor
xceder
su
cambiar
que hacer que los procesos simplemente fallen.
Otra partición especial es un volumen físico de Logical Volume Manager (LVM) . Los volúmenes físicos LVM le
permiten crear grupos de espacio de almacenamiento denominados grupos de volúmenes. De esos grupos de
volúmenes, tiene mucha más flexibilidad para aumentar y reducir los volúmenes lógicos que para cambiar el
tamaño de las particiones de disco directamente.
Para Linux, se requiere al menos una partición de disco, asignada a la raíz (/) de todo el sistema de archivos de
Linux. Sin embargo, es más común tener particiones separadas que se asignan a directorios particulares, como /
home, /var y/o /tmp. Cada una de las particiones se conecta al sistema de archivos Linux más grande montándola en
un punto en el sistema de archivos donde desea que se use esa partición. Cualquier archivo agregado al directorio
del punto de montaje de una partición, o un subdirectorio, se almacena en esa partición.
NOTA
La palabra montar se refiere a la acción de conectar un sistema de archivos desde un disco duro, una unidad USB o un dispositivo de
almacenamiento en red a un punto particular del sistema de archivos. Esta acción se realiza mediante el comando de montaje, junto con
opciones para decirle al comando dónde se encuentra el dispositivo de almacenamiento y a qué directorio del sistema de archivos conectarlo.
El negocio de conectar particiones de disco al sistema de archivos de Linux se realiza de forma automática e
invisible para el usuario final. ¿Como sucedió esto? Cada partición de disco regular creada cuando instala Linux
está asociada con un nombre de dispositivo. Una entrada en el archivo /etc/fstab le dice a Linux el nombre del
dispositivo de cada partición y dónde m ontarlo
se (así
inicia e como otros bits de información). El montaje se realiza cuando
l sistema.
'
La mayor parte de este capítulo se enfoca en comprender cómo se conectó su El disco está particionado y
computadora para formar su sistema de archivos Linux, así como también cómo particionar discos, formatear
sistemas de archivos y espacio de intercambio, y usar esos elementos cuando se inicia el sistema. Luego, el capítulo
cubre cómo particionar y crear un sistema de archivos manualmente.
274
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Viniendo de Windows
Los sistemas de archivos están organizados de manera diferente en Linux que en los sistemas operativos Microsoft Windows.
En lugar de letras de unidad (por ejemplo, A:, B:, C:) para cada disco local, sistema de archivos de red, CDROM u otro tipo
de medio de almacenamiento, todo encaja perfectamente en la estructura de directorios de Linux.
Algunas unidades se conectan (montan) automáticamente en el sistema de archivos cuando inserta medios extraíbles. Por
'
autómata
ejemplo, un CD puede estar montado en /media/cdrom. Si la unidad es única, depende de un administrador montado
crear en d
un punto t e
montaje en el sistema de archivos y luego conectar el disco a ese punto.
Linux puede comprender los sistemas de archivos VFAT, que a menudo son el formato predeterminado cuando compra una
unidad flash USB. Una unidad flash USB VFAT y exFAT proporciona una buena forma de compartir datos entre sistemas
Linux y Windows. El soporte del kernel de Linux está disponible para los sistemas de archivos NTFS, que generalmente se 12
usan con Windows en estos días. Sin embargo, NTFS y, a veces, exFAT, a menudo requieren que instale controladores de
kernel adicionales en Linux.
Los sistemas de archivos VFAT se utilizan a menudo cuando es necesario intercambiar archivos entre diferentes tipos de
sistemas operativos. Debido a que VFAT se usó en MSDOS y en los primeros sistemas operativos de Windows, ofrece un
buen mínimo común denominador para compartir archivos con muchos tipos de sistemas (incluido Linux). NTFS es el tipo de
sistema de archivos más utilizado con los sistemas modernos de Microsoft Windows.
Partición de discos duros
Linux proporciona varias herramientas para administrar las particiones de su disco duro. Necesita saber
cómo particionar su disco si desea agregar un disco a su sistema o cambiar su configuración de disco
existente.
Las siguientes secciones muestran cómo particionar el disco usando una unidad flash USB extraíble y un
disco duro fijo. Para estar seguro, utilizo una unidad flash USB que no contiene
ningún
pdara
conservar ato
pqracticar
ue desee
la
partición.
¡Cambiar la partición puede hacer que un sistema no
pueda arrancar!
'
No recomiendo usar su sistema. s disco duro principal para practicar cómo cambiar la partición porque un error
puede hacer que su sistema no pueda arrancar. Incluso si usa una unidad flash USB separada para practicar, una entrada
incorrecta en /etc/fstab puede bloquear su sistema al reiniciar. Si después de cambiar las particiones su sistema no arranca,
consulte el Capítulo 21, “Resolución de problemas de Linux”, para obtener información sobre cómo solucionar el problema.
Descripción de las tablas de particiones La
arquitectura de la PC Las computadoras han usado tradicionalmente las tablas de particiones Master Boot
Record (MBR) para almacenar información sobre los tamaños y diseños de las particiones del disco duro. Hay
275
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
muchas herramientas para administrar particiones MBR que son bastante estables y conocidas. Sin embargo, hace
algunos años, un nuevo estándar llamado tablas de partición de identificador único global (GUID) comenzó a
usarse en los sistemas como parte de la arquitectura de la computadora UEFI para reemplazar el antiguo método
BIOS para iniciar el sistema.
Muchas herramientas de partición de Linux se han actualizado para manejar tablas de partición GUID (gpt).
Se han agregado otras herramientas para manejar tablas de particiones GUID. Debido a que el popular
comando fdisk no admite particiones gpt, el comando parted se usa para ilustrar el particionamiento en este
capítulo.
Las limitaciones impuestas por la especificación MBR provocaron la necesidad de particiones GUID.
En particular, las particiones MBR están limitadas a 2 TB de tamaño. Las particiones GUID pueden crear
particiones de hasta 9,4 ZB (zettabytes).
Ver particiones de disco Para ver
particiones de disco, use el comando parted con la opción l. El siguiente es un ejemplo de partición en un disco
duro fijo de 160 GB en un sistema Red Hat Enterprise Linux 8:
# parted l /dev/sda Disco /dev/
sda: 160,0 GB, 160000000000 bytes, 312500000 sectores Unidades = sectores de 1 * 512 = 512
bytes Tamaño del sector (lógico/físico): 512 bytes / 512 bytes Tamaño de E/S ( mínimo/óptimo):
512 bytes / 512 bytes Tipo de etiqueta de disco: dos Identificador de disco: 0x0008870c
Cuando se inserta una unidad flash USB, se asigna al siguiente dispositivo SD disponible. El siguiente ejemplo
muestra la partición en el disco duro (/dev/sda) y una unidad USB de un sistema Fedora 30, donde /dev/sdb se
asigna como el nombre del dispositivo USB (el segundo disco en el sistema). Esta unidad USB es una nueva unidad
flash USB de 128 GB:
# fdisk l /dev/sdb
Aunque esta unidad se asignó a /dev/sdb, su unidad podría estar asignada a un nombre de dispositivo diferente.
Aquí hay algunas cosas que debe buscar:
■ Un dispositivo de almacenamiento SCSI o USB, representado por una sd? dispositivo (como sda, sdb,
sdc, etc.) puede tener hasta 16 dispositivos menores (por ejemplo, el dispositivo principal /dev/sdc y /dev/
sdc1 a /dev/sdc15). Entonces, puede haber 15 particiones en total.
Un dispositivo de almacenamiento SSD NVMe, representado por un dispositivo nvme (como nvme0,
nvme1, nvme2, etc.) se puede dividir en uno o más espacios de nombres (la mayoría de los dispositivos
solo usan el primer espacio de nombres) y particiones. Por ejemplo, /dev/nvme0n1p1 representa la
primera partición en el primer espacio de nombres en el primer SSD NVMe.
■ Para equipos x86, los discos pueden tener hasta cuatro particiones primarias. Entonces, para tener más
de cuatro particiones en total, una debe ser una partición extendida. Cualquier partición
276
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
más allá de las cuatro particiones primarias hay particiones lógicas que usan espacio de la partición extendida.
■ El campo id indica el tipo de partición. Observe que hay una partición LVM de Linux en el primer ejemplo.
Su primer disco duro principal suele aparecer como /dev/sda. Con las instalaciones de RHEL y Fedora, generalmente
hay al menos una partición LVM creada por el instalador, de la cual se pueden asignar otras particiones. Entonces, la salida
de fdisk podría ser tan simple como la siguiente:
# parted l
Disco /dev/sda: 500.1 GB, 500107862016 bytes
La primera partición tiene aproximadamente 210 MB y está montada en el directorio /boot/efi. La segunda partición (1074
MB) está montada en la partición /boot. Para las tablas de partición MBR más antiguas, solo hay una partición /boot. El
inicio debajo de la columna Flags indica que la partición es de inicio. El resto del disco lo consume la partición LVM, que 12
finalmente se usa para crear volúmenes lógicos.
Por el momento, te recomiendo que dejes el disco duro en paz y busques una unidad flash USB que no te importe borrar.
Puede probar los comandos que demuestro en ese disco.
Creación de un disco de una sola partición Para agregar
un nuevo medio de almacenamiento (disco duro, unidad flash USB o dispositivo similar) a su computadora para que
pueda ser utilizado por Linux, primero debe conectar el dispositivo de disco a su computadora y luego particionar el
disco. Aquí está el procedimiento general:
1. Instale el nuevo disco duro o inserte la nueva unidad flash USB.
2. Particione el nuevo disco.
3. Cree los sistemas de archivos en el disco nuevo.
4. Monte los sistemas de archivos.
La forma más fácil de agregar un disco o una unidad flash a Linux es tener todo el disco dedicado a una única partición de
Linux. Sin embargo, puede tener múltiples particiones y asignarlas a diferentes tipos de sistemas de archivos y diferentes
puntos de montaje si lo desea.
El siguiente proceso lo lleva a través de la partición de una unidad flash USB que se utilizará para Linux que tiene
una sola partición. Si tiene una unidad flash USB (de cualquier tamaño) que no le importa borrar, puede realizar este
procedimiento mientras lee. La siguiente sección describe cómo particionar un disco con varias particiones.
ADVERTENCIA Si comete un error al particionar su disco con parted , asegúrese de corregir ese cambio. A diferencia de ,
fdisk, donde solo puede escribir q para salir sin guardar los cambios, parted realiza los cambios de inmediato, por lo que
no puede simplemente salir para abandonar los cambios.
277
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
1. Para una unidad flash USB, simplemente conéctela a un puerto USB disponible. En el futuro, uso una
unidad flash USB de 128 GB, pero puede obtener una unidad flash USB de cualquier tamaño.
2. Determine el nombre del dispositivo para la unidad USB. Como usuario raíz desde un shell, escriba el
siguiente comando journalctl y luego inserte la unidad flash USB. Aparecen mensajes que indican el
nombre del dispositivo de la unidad que acaba de conectar (presione Ctrl+C para salir del comando final
cuando haya terminado):
# journalctl f kernel:
usb 41: nuevo dispositivo USB SuperSpeed Gen 1 número 3 usando
xhci_hcd
kernel: usb 41: Nuevo dispositivo USB encontrado, idVendor=0781,
idProduct=5581, bcdDevice= 1.00
kernel: usb 41: Nuevas cadenas de dispositivos USB: Mfr=1, Product=2,
Número de serie = 3
kernel: usb 41: Producto: Ultra
núcleo: usb 41: Fabricante: SanDisk
...
kernel: sd 6:0:0:0: adjunto scsi genérico sg2 tipo 0
núcleo: sdb: sdb1
kernel: sd 6:0:0:0: [sdb] Disco extraíble SCSI adjunto udisksd[809]: /dev/sdb1
montado en /run/media/chris/7DEBB010
en nombre de uid 1000
3. Desde la salida, puede ver que la unidad flash USB se encontró y se asignó a /dev/sdb. (El nombre de su
dispositivo puede ser diferente). También contiene una única partición formateada: sdb1 . ¡Asegúrese de
identificar el disco correcto o podría perder todos los datos de los discos que desee conservar!
4. Si la unidad flash USB se monta automáticamente, desmóntela. Aquí se explica cómo encontrar las
particiones USB en este ejemplo y desmontarlas: # mount | grep sdb /dev/sdb1 en /run/media... #
desmontar /dev/sdb1
5. Use el comando parted para crear particiones en la unidad USB. Por ejemplo, si está formateando el
segundo disco USB, SATA o SCSI (sdb), puede escribir lo siguiente:
# parted /dev/sdb GNU
Parted 3.2
Uso de /dev/sdb
¡Bienvenido a GNU Parted! Escriba 'ayuda' para ver una lista de comandos. (separados)
Ahora se encuentra en el modo de comando dividido, donde puede usar el conjunto de
comandos de una sola letra para trabajar con sus particiones.
278
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
6. Si comienza con una nueva unidad flash USB, es posible que tenga una partición dedicada por completo a un sistema
de archivos compatible con Windows (como VFAT o fat32). Utilice p para ver todas las particiones y rm para eliminar
la partición. Esto es lo que parecía cuando hice eso:
(separó) pag
Modelo: SanDisk Ultra (scsi)
Disco /dev/sdb: 123GB
Tamaño del sector (lógico/físico): 512B/512B
Tabla de particiones: msdos
Indicadores de disco:
Número Inicio Fin Tamaño Tipo Sistema de archivos Banderas 16.4kB
1 123GB 123GB primario fat32 (dividido) rm ¿Número de partición? 1 libras
12
7. Vuelva a etiquetar el disco para que tenga una tabla de particiones gpt.
(partido) mklabel gpt
Advertencia: la etiqueta de disco existente en /dev/sdb se destruirá y todos los datos de este
disco se perderán. ¿Quieres continuar?
¿Sí No? Sí
(separado)
8. Para crear una nueva partición, escriba mkpart. Se le solicita el tipo de sistema de
archivos, luego el inicio y el final de la partición. Este ejemplo nombra la partición
alldisk, usa xfs como tipo de sistema de archivos, inicia la partición en 1M y finaliza en
123GB:
(partido) mkpart
¿Nombre de la partición? []? alldisk ¿Tipo de
sistema de archivos? [ext2]? xfs
¿Comenzar? 1
¿Fin? 123 GB
9. Vuelva a verificar que el disco esté particionado de la manera que desea presionando p. (Su
la salida diferirá, dependiendo del tamaño de su disco).
(separó) pag
Modelo: SanDisk Ultra (scsi)
Disco /dev/sdb: 123GB
Tamaño del sector (lógico/físico): 512B/512B
Tabla de particiones: gpt
Indicadores de disco:
279
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
10. Aunque se ha realizado la partición, la nueva partición aún no está lista para usarse. Para
eso, tienes que crear un sistema de archivos en la nueva partición. Para crear un sistema de archivos
en la nueva partición de disco, use el comando mkfs. De forma predeterminada, este comando crea
un sistema de archivos ext2, que Linux puede utilizar. Sin embargo, en la mayoría de los casos
querrá usar un sistema de archivos de diario (como ext3, ext4 o xfs). Para crear un sistema de
archivos xfs en la primera partición del segundo disco duro, escriba lo siguiente:
# mkfs t xfs /dev/sdb1
SUGERENCIA Puede usar diferentes comandos u opciones para este comando, para crear otros tipos de sistemas de archivos. Por
ejemplo, utilice mkfs.exfat para crear un sistema de archivos VFAT, mkfs.msdos para DOS o mkfs.ext4 para el tipo de sistema de archivos ext4.
Es posible que desee un sistema de archivos VFAT o exFAT (disponible con Ubuntu) si desea compartir archivos entre sistemas Linux,
Windows y Mac.
11. Para poder utilizar el nuevo sistema de archivos, debe crear un punto de montaje y montarlo en la
partición. Aquí hay un ejemplo de cómo hacerlo. Luego verifica para asegurarse de que el montaje se
realizó correctamente.
# mkdir /mnt/prueba #
montaje /dev/sdb1 /mnt/prueba # df h /mnt/
sdb1
Sistema de Tamaño utilizado % de uso disponible Montado en
archivos /dev/sdb1 115G 13M 115G 1% /mnt/prueba
El comando df muestra que /dev/sdb1 está montado en /mnt/test y ofrece alrededor de 115 GB
de espacio en disco. El comando de montaje muestra todos los sistemas de archivos montados,
pero aquí solo enumero sdb1 para mostrar que está montado.
Todos los archivos o directorios que cree más tarde en el directorio /mnt/test y cualquiera de sus
subdirectorios se almacenan en el dispositivo /dev/sdb1.
12. Cuando termine de usar la unidad, puede desmontarla con el comando umount
comando, después de lo cual puede quitar la unidad de manera segura (consulte la descripción
del comando umount más adelante si este comando falla):
# umount /dev/sdb1
13. Por lo general, no configura una unidad flash USB para que se monte automáticamente cada vez que
el sistema arranca porque se monta automáticamente cuando lo conecta. Pero si decide
que quiere hacerlo, edite /etc/fstab y agregue una línea que describa qué y dónde montarlo. Este
es un ejemplo de una línea que podría agregar:
En este ejemplo, la partición (/dev/sdb1) está montada en el directorio /mnt/test como un sistema
de archivos xfs. La palabra clave defaults hace que la partición sea
280
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
montado en el momento del arranque. El número 0 le dice al sistema que no haga una copia de seguridad de los
archivos automáticamente desde este sistema de archivos con el comando dump (dump ya no se usa raramente,
pero el campo está aquí). El 1 en la última columna le dice al sistema que revise la partición en busca de errores
después de un cierto número de montajes.
En este punto, tiene una partición de disco montada permanentemente en funcionamiento. La siguiente sección describe cómo
particionar un disco que tiene varias particiones.
Creación de un disco de múltiples particiones Ahora que
comprende el proceso básico de particionar un disco, agregar un sistema de archivos y hacer que ese sistema de archivos esté
disponible (temporal y permanentemente), es hora de probar un ejemplo más complejo. Tomando esa misma unidad flash USB
de 128 GB, ejecuté el procedimiento que se describe más adelante en esta sección para crear múltiples particiones en un disco.
En este procedimiento, configuro una partición Master Boot Record (MBR) para ilustrar cómo funcionan las particiones extendidas
12
y para usar el comando fdisk más antiguo. Creo dos particiones de 5GB (sdb1 y sdb2), dos de 3GB (sdb3 y sdb5) y 4GB (sdb6). El
dispositivo sdb4 es una partición extendida, que consume todo el espacio restante en disco. El espacio de las particiones sdb5 y
sdb6 se toma de la partición extendida. Esto deja mucho espacio para crear nuevas particiones.
Como antes, inserte la unidad flash USB y determine el nombre del dispositivo (en mi caso, /dev/sdb). Además, asegúrese de
desmontar cualquier partición que se monte automáticamente cuando inserte la unidad flash USB.
SUGERENCIA Cuando indique el tamaño de cada partición, escriba el signo más y la cantidad de megabytes o gigabytes
que desea asignar a la partición. Por ejemplo, +1024M para crear una partición de 1024 megabytes o +10G para una
partición de 10 gigabytes. ¡Asegúrese de recordar el signo más (+) y la M o la G! Si olvida los ,sectores M oq ue
fdisk cree G yt e
obtiene
refieres
resultados inesperados.
1. Comencé este procedimiento sobrescribiendo la unidad USB con el comando dd (dd if=/dev/zero of=/dev/
sd<number> bs=1M count=100). Esto me permitió comenzar con un nuevo registro de arranque maestro. ¡Tenga
cuidado de usar el número de unidad correcto, o podría borrar su sistema operativo!
2. Cree seis particiones nuevas de la siguiente manera.
# fdisk /dev/sdb Bienvenido
a fdisk (utillinux 2.33.2).
Los cambios permanecerán solo en la memoria, hasta que decida escribirlos.
Tenga cuidado antes de usar el comando de escritura.
El dispositivo no contiene una tabla de particiones reconocida.
Creó una nueva etiqueta de disco de DOS con el identificador de disco 0x8933f665.
281
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Comando (m para ayuda): n
Tipo de partición p
primaria (0 primaria, 0 extendida, 4 libres) e extendida (contenedor
para particiones lógicas)
Seleccione (predeterminado p): p
Número de partición (14, predeterminado 1): 1
Primer sector (2048240254975, predeterminado 2048):
Último sector, +/sectores o +/tamaño{K,M,G,T,P} (2048 240254975,
predeterminado 240254975): +5G
Creó una nueva partición 1 de tipo 'Linux' y de tamaño 5 GiB.
Comando (m para ayuda): n
Partición tipo p
primaria (1 primaria, 0 extendida, 3 libres) e extendida (contenedor
para particiones lógicas)
Seleccione (predeterminado p): p
Número de partición (24, predeterminado 2): 2
Primer sector (10487808240254975, predeterminado 10487808):
Último sector, +/sectores o +/tamaño{K,M,G,T,P} (10487808 240254975,
predeterminado 240254975): +5G
Creó una nueva partición 2 de tipo 'Linux' y de tamaño 5 GiB.
Comando (m para ayuda): n
Partición tipo p
primaria (2 primarias, 0 extendidas, 2 libres) e extendidas
(contenedor para particiones lógicas)
Seleccione (predeterminado p): p
Número de partición (3,4, predeterminado 3): 3
Primer sector (20973568240254975, predeterminado 20973568):
Último sector, +/sectores o +/tamaño{K,M,G,T,P} (20973568 240254975,
predeterminado 240254975): +3G
Creó una nueva partición 3 de tipo 'Linux' y de tamaño 3 GiB.
Comando (m para ayuda): n
Tipo de partición p
primaria (3 primarias, 0 extendidas, 1 libre) e extendida (contenedor
para particiones lógicas)
Seleccione (predeterminado e): e
Partición seleccionada 4
282
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Primer sector (27265024240254975, predeterminado 27265024):
Último sector, +/sectores o +/tamaño{K,M,G,T,P} (27265024
240254975, predeterminado 240254975): <ENTRAR>
Creó una nueva partición 4 de tipo 'Extendida' y de tamaño 101.6 GiB.
Comando (m para ayuda): n Todas
las particiones primarias están en uso.
Agregar partición lógica 5 Primer sector
(27267072240254975, predeterminado 27267072): Último sector, +/sectores o +/
tamaño{K,M,G,T,P} (27267072 240254975, predeterminado 240254975): +3G
Creó una nueva partición 5 de tipo 'Linux' y de tamaño 3 GiB.
12
Comando (m para ayuda): n Todas
las particiones primarias están en uso.
Agregar partición lógica 6 Primer sector
(33560576240254975, predeterminado 33560576): Último sector, +/sectores o +/
tamaño{K,M,G,T,P} (33560576 240254975, predeterminado 240254975): +4G
Creó una nueva partición 6 de tipo 'Linux' y de tamaño 4 GiB.
3. Compruebe la partición antes de guardar escribiendo p. Observe que hay cinco particiones
utilizables (sdc1, sdc2, sdc3, sdc5 y sdc6) y que los sectores entre el inicio y el final de
sdc4 están siendo consumidos por sdc5 y sdc6.
Comando (m para ayuda): p
...
Bota Comenzar Sectores finales Tamaño Id Tipo 2048
Dispositivo / 10487807 10485760 5G 83Linux
dev/sdb1 / 10487808 20973567 10485760 5G 82Linux
dev/sdb2 / 20973568 27265023 6291456 3G 83Linux
dev/sdb3 / 27265024 240254975 212989952 101.6G 5 Extendido
dev/sdb4 / 27267072 33558527 6291456 3G 83Linux
dev/sdb5 /dev/sdb6 33560576 41949183 8388608 4G 83Linux
4. El tipo de partición predeterminado es Linux. Decidí que quería usar algunas de las
particiones para el espacio de intercambio (tipo 82), FAT32 (tipo x) y Linux LVM (tipo 8e).
Para hacer eso, escribo t e indico qué tipo de partición usar. Escriba L para ver una lista
de tipos de partición.
Comando (m para ayuda): t
Número de partición (16): 2
Código hexadecimal (escriba L para enumerar códigos): 82
283
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Se cambió el tipo de partición 'Linux' a 'Linux swap / Solaris'.
Comando (m para ayuda): t
Número de partición (16): 5 Código
hexadecimal (escriba L para ver los códigos): c Se
cambió el tipo de partición 'Linux' a 'W95 FAT32 (LBA)'.
Comando (m para ayuda): t
Número de partición (16): 6 Código
hexadecimal (escriba L para enumerar los códigos): 8e
Se cambió el tipo de partición 'Linux' a 'Linux LVM'.
5. Compruebo que la tabla de particiones está como la quiero y luego escribo los cambios:
Comando (m para ayuda): p
...
Bota Comenzar Sectores finales Tamaño Id Tipo
Dispositivo / 2048 10487807 10485760 5G 83Linux
dev/sdb1 / 10487808 20973567 10485760 Intercambio 5G 82 Linux/Solaris
dev/sdb2 / 20973568 27265023 6291456 3G 83Linux
dev/sdb3 / 27265024 240254975 212989952 101.6G 5 Extendido
dev/sdb4 /dev/sdb5 27267072 33558527 6291456 3G c W95 FAT32 (LBA) /
dev/sdb6 33560576 41949183 8388608 4G 8e Linux LVM
Comando (m para ayuda): w
La tabla de particiones se ha alterado!
El núcleo todavía usa las particiones antiguas. La nueva tabla se utilizará en el próximo
reinicio.
Sincronizando discos
6. Una vez completada la escritura, verifique que el kernel conozca los cambios en la tabla de
particiones. Para hacerlo, busque sdb en /proc/partitions. Si los nuevos dispositivos no
están allí, ejecute el comando partprobe /dev/sdb en la unidad o reinicie su computadora.
# grep sdb /proc/particiones
8 16 120127488 sdb
8 17 120125440 sdb1 #
partprobe /dev/sdb # grep sdb /proc/particiones
16 120127488 sdb
8
8 17 5242880 sdb1
8 18 5242880 sdb2
8 19 3145728 sdb3 1
8 20 sdb4
8 21 3145728 sdb5
8 22 4194304 sdb6
284
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
7. Si bien las particiones ahora están configuradas para diferentes tipos de contenido, se necesitan otros
'
comandos para estructurar las particiones en sistemas de archivos o áreas de intercambio.
Acquí
es ehso
omo para
acer
las particiones recién creadas:
sdb1: para convertir esto en un sistema de archivos ext4 normal de Linux, escriba lo siguiente:
# mkfs t ext4 /dev/sdb1
sdb2: para formatear esto como un área de intercambio, escriba lo siguiente:
# mkswap /dev/sdb2
sdb3: Para convertir esto en un sistema de archivos ext2 (el predeterminado), escriba lo siguiente:
# mkfs /dev/sdb3
sdb5: para convertir esto en un sistema de archivos VFAT (el valor predeterminado), escriba lo siguiente:
# mkfs t vfat /dev/sdb5 12
sdb6: para convertir esto en un volumen físico LVM, escriba lo siguiente:
# pvcreate /dev/sdb6
Estas particiones ahora están listas para montarse, usarse como áreas de intercambio o agregarse a un grupo de
volúmenes LVM. Consulte la siguiente sección, "Uso de particiones del administrador de volúmenes lógicos", para ver
cómo se usan los volúmenes físicos LVM para crear finalmente volúmenes lógicos LVM a partir de grupos de volúmenes.
Consulte la sección "Montaje de sistemas de archivos" para obtener descripciones sobre cómo montar sistemas de archivos
y habilitar áreas de intercambio.
Uso de particiones del administrador de volúmenes lógicos
El particionamiento básico del disco en Linux tiene sus defectos. ¿Qué pasa si te quedas sin espacio en disco? En los viejos
tiempos, una solución común era copiar los datos en un disco más grande, reiniciar el sistema con el nuevo disco y esperar
que no se quedara sin espacio nuevamente en el corto plazo.
Este proceso significó tiempo de inactividad e ineficiencia.
Logical Volume Manager (LVM) ofrece mucha fl exibilidad y eficiencia para hacer frente a las necesidades de
almacenamiento en constante cambio. Con LVM, las particiones de disco físico se agregan a grupos de espacio llamados
grupos de volúmenes. A los volúmenes lógicos se les asigna espacio de grupos de volúmenes según sea necesario. Esto
te da estas habilidades:
■ Agregar más espacio a un volumen lógico desde el grupo de volúmenes mientras el volumen está
todavia en uso.
■ Agregar más volúmenes físicos a un grupo de volúmenes si el grupo de volúmenes comienza a agotarse
del espacio. Los volúmenes físicos pueden ser de discos.
■ Mueva datos de un volumen físico a otro para que pueda quitar discos más pequeños y reemplazarlos por otros
más grandes mientras los sistemas de archivos todavía están en uso, nuevamente, sin tiempo de inactividad.
285
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Con LVM, también es más fácil reducir los sistemas de archivos para recuperar espacio en disco,
aunque la reducción requiere que desmonte el volumen lógico (pero no es necesario reiniciar). LVM
también admite funciones avanzadas, como duplicación y trabajo en clústeres.
Comprobación de un LVM existente
Comencemos mirando un ejemplo de LVM existente en un sistema Red Hat Enterprise Linux.
El siguiente comando muestra las particiones en mi primer disco duro:
# fdisk l /dev/sda | grep /dev/sda Disco /dev/sda: 160,0 GB,
160000000000 bytes /dev/sda1 * /dev/sda2 *
2048 1026047 512000 83 linux
1026048 312498175 155736064 8e Linux LVM
En este sistema RHEL, el disco duro de 160 GB se divide en una partición Linux de 500 MB (sda1)
y una segunda partición (Linux LVM) que consume el resto del disco (sda2). Luego, uso el comando
pvdisplay para ver si esa partición se está usando en un grupo LVM:
# pvdisplay /dev/sda2
Volumen físico /dev/sda2 vg_abc
Nombre de PV 148,52 GiB / no
Nombre VG utilizable 2,00
Tamaño de PV MiB sí (pero lleno)
asignable
Tamaño PE 4,00 MB
EP totales 38021
educación física gratis 0
PE asignado 38021
UUID de PV wlvuIvUiI2pNNDf39joH0X9tooAOII7R
Puede ver que el volumen físico LVM representado por /dev/sda2 tiene 148,52 GiB de espacio, todo
lo cual se ha asignado en su totalidad a un grupo de volúmenes denominado vg_abc. La unidad de
almacenamiento más pequeña que se puede utilizar desde este volumen físico es 4.0MiB, que se conoce
como extensión física (PE).
NOTA
Tenga en cuenta que las herramientas LVM muestran el espacio en disco en MiB y GiB. Un MB tiene 1 000 000 bytes (10 6), mientras que un
MiB tiene 1 048 576 bytes (2 20). Un MiB es una forma más precisa de reflejar cómo se almacenan los datos en una computadora. Pero la
gente de marketing tiende a usar MB porque hace que los discos duros, CD y DVD que venden parezcan tener más capacidad de la que tienen.
Tenga en cuenta que la mayoría de las herramientas en Linux muestran datos de almacenamiento en MiB y GiB, aunque algunas también pueden mostrar MB
y GB.
A continuación, desea ver información sobre el grupo de volúmenes:
# vgdisplay vg_abc
Grupo de volumen
Nombre VG vg_abc
286
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
identificación del sistema
Formato lvm2
Áreas de metadatos 1
Secuencia de metadatos n.º 4 lectura/
Acceso VG escritura
Estado VG redimensionable
LV MÁX. 0
Cur LV 3
VI abierto 3
VP máx. 0
PV actual 1
Actuar PV 1
Tamaño VG 148,52 GiB 4,00
Tamaño PE MiB
EP totales 38021 12
Asignación PE / Tamaño 38021 / 148,52 GiB 0 / 0 c2SGHM
PE gratis / Tamaño KU9HwbXMsgcaEtBrUXAq
UUID VG UnnSTh
Puede ver que se han asignado todos los 38.021 PE. Usando lvdisplay de la siguiente manera,
puede ver dónde se han asignado (he cortado parte de la salida):
# lvdisplay vg_abc
Volumen lógico
Nombre del LV /dev/vg_abc/lv_root vg_abc
Nombre VG
UUID de LV 33VeDcjd0lhlCcRMuBtkcwQvFicKCZqa lectura/escritura disponible
Acceso de escritura LV
Estado del VI
# abierto
Tamaño VI 1 50,00 GiB
LE actual 12800
Segmentos 1
Asignación tu heredas
Sectores de lectura anticipada auto
actualmente establecido en 256
dispositivo de bloque 253:0
Volumen lógico
Nombre del BT /dev/vg_abc/lv_inicio vg_abc
Nombre VG
...
Tamaño VI 92,64 GiB
Volumen lógico
Nombre del LV /dev/vg_abc/lv_swap vg_abc
Nombre VG
...
Tamaño VI 5,88 GiB
Hay tres volúmenes lógicos que extraen espacio de vg_abc. Cada volumen lógico está asociado
con un nombre de dispositivo que incluye el nombre del grupo de volúmenes y el volumen lógico
287
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
nombre: /dev/vg_abc/lv_root (50 GB), /dev/vg_abc/lv_home (92,64 GB) y /dev/vg_abc/lv_swap
(5,88 GB). Otros dispositivos vinculados a estos nombres se encuentran en el directorio /dev/mapper:
vg_abclv_home, vg_abclv_root y vg_abclv_swap.
Se puede utilizar cualquier conjunto de nombres para hacer referencia a estos volúmenes lógicos.
Los volúmenes lógicos raíz y de inicio se formatean como sistemas de archivos ext4, mientras que el volumen lógico
'
mire
que e
de intercambio se formatea como espacio de intercambio. Deje n uetilicen
se l archivo /etc/fstab
para
estos volúmenes ver cómo
lógicos:
# grep vg_ /etc/fstab /dev/mapper/
vg_abclv_root / /dev/mapper/vg_abc valores predeterminados ext4 1 1
lv_home /home ext4 defaults /dev/mapper/vg_abclv_swap swap swap 1 2
defaults 0 0
La Figura 12.1 ilustra cómo las diferentes particiones, grupos de volúmenes y volúmenes lógicos se
relacionan con el sistema de archivos completo de Linux. El dispositivo sda1 se formatea como un sistema
de archivos y se monta en el directorio /boot. El dispositivo sda2 proporciona espacio para el grupo de
volúmenes vg_abc. Luego, los volúmenes lógicos lv_home y lv_root se montan en los directorios /home
y /, respectivamente.
FIGURA 12.1
Los volúmenes lógicos LVM se pueden montar como particiones regulares en un sistema de archivos Linux.
/dev/mapper/vg_abclv_root /
Volúmenes lógicos
dev/mapper/vg_abclv_home /
dev/mapper/vg_abclv_swap
(iv)
Grupo de volumen
(vg) vg_abc
/dev/sda1 Volumen
/dev/sda2
físico (pv)
Si se queda sin espacio en cualquiera de los volúmenes lógicos, puede asignar más espacio del grupo
de volúmenes. Si el grupo de volúmenes no tiene espacio, puede agregar otro disco duro o unidad de
almacenamiento en red y agregar espacio de esa unidad al grupo de volúmenes para que haya más disponible.
Ahora que sabe cómo funciona LVM, la siguiente sección le muestra cómo crear volúmenes lógicos LVM
desde cero.
288
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Creación de volúmenes lógicos LVM Los
volúmenes lógicos LVM se utilizan de arriba hacia abajo, pero se crean de abajo hacia arriba.
, primero crea uno o más volúmenes físicos (pv), usa los volúmenes
Como se ilustra en la Figura 12.1,
físicos para crear grupos de volúmenes (vg) y luego crea volúmenes lógicos a partir de los grupos de
volúmenes (lv).
Los comandos para trabajar con cada componente LVM comienzan con las letras pv, vg y lv.
Por ejemplo, pvdisplay muestra volúmenes físicos, vgdisplay muestra grupos de volúmenes y lvdisplay
muestra volúmenes lógicos.
El siguiente procedimiento lo lleva a través de los pasos para crear volúmenes LVM desde cero.
Para realizar este procedimiento, puede usar la unidad flash USB y las particiones que describí anteriormente
en este capítulo.
1. Obtenga un disco con algo de espacio libre y cree una partición de disco del tipo LVM (8e). 12
Luego use el comando pvcreate para identificar esta partición como un volumen físico LVM. El
proceso para hacer esto se describe en la sección "Creación de un disco de múltiples particiones"
usando el dispositivo /dev/sdb6 en ese ejemplo.
2. Para agregar ese volumen físico a un nuevo grupo de volúmenes, use el comando vgcreate.
El siguiente comando le muestra cómo crear un grupo de volúmenes llamado myvg0 usando
el dispositivo /dev/sdb6:
# vgcreate myvg0 /dev/sdc6
Grupo de volumen "myvg0" creado con éxito
3. Para ver el nuevo grupo de volúmenes, escriba lo siguiente:
# vgdisplay myvg0
Grupo de volumen
Nombre VG mivg0
...
Tamaño VG <4,00 GiB
Tamaño PE 4,00 MB
EP totales 1023
Asignación PE / Tamaño 0 / 0
PE gratis / Tamaño 1023 / <4,00 MiB
'
4. Están disponibles todas las 1023 extensiones físicas (PE, 4,00 MiB cada una). Aquí mostrar a
cree un volumen lógico a partir de parte del espacio en ese grupo de volúmenes y luego verifique
que exista el dispositivo para ese volumen lógico:
# lvcreate n música L 1G myvg0
Volumen lógico "música" creado # ls /dev/mapper/
myvg0* /dev/mapper/myvg0music
289
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
5. Como puede ver, el procedimiento creó un dispositivo llamado /dev/mapper/myvg0
música. Ese dispositivo ahora se puede usar para instalar y montar un sistema de archivos, tal como lo
hizo con las particiones normales en la primera parte de este capítulo. Por ejemplo:
# mkfs t ext4 /dev/mapper/myvg0music # mkdir /mnt/
mymusic # mount /dev/mapper/myvg0music /mnt/mymusic
# df h /mnt/mymusic Filesystem /dev/mapper/myvg0music 976M 2,6M
987M
Tamaño utilizado % de uso disponible Montado en
1% /mnt/mimúsica
6. Al igual que con las particiones normales, los volúmenes lógicos se pueden montar de forma permanente
agregando una entrada al archivo /etc/fstab, como
/dev/mapper/myvg0music /mnt/mymusic ext4 por defecto 1 2
La próxima vez que reinicie, el volumen lógico se montará automáticamente en /mnt/mymusic.
(Asegúrese de desmontar el volumen lógico y eliminar esta línea si desea eliminar la unidad flash USB de su
computadora).
Volúmenes lógicos LVM en crecimiento Si se
queda sin espacio en un volumen lógico, puede agregarle espacio sin siquiera desmontarlo. Para hacerlo, debe
tener espacio disponible en el grupo de volúmenes, hacer crecer el volumen lógico y hacer crecer el sistema de
archivos para llenarlo. Sobre la base del procedimiento de la sección anterior, aquí se explica cómo hacer crecer
un volumen lógico:
1. Tenga en cuenta cuánto espacio hay actualmente en el volumen lógico y luego verifique ese espacio
está disponible en el grupo de volúmenes del volumen lógico:
# vgdisplay myvg0
...
Tamaño VG <4,00 MiB
Tamaño PE 4,00 MB
EP totales 1023
Asignación PE / Tamaño 256 / 1,00 GiB 767 /
PE gratis / Tamaño # df <3,00 GiB
h /mnt/mymusic/
Sistema de Tamaño utilizado % de uso disponible Montado en
archivos /dev/mapper/myvg0music 976M 2.6M 987M 1% /mnt/mimúsica
2. Expanda el volumen lógico usando el comando lvextend:
# lvextend L +1G /dev/mapper/myvg0music
El tamaño del volumen lógico myvg0/music cambió
de 1,00 GiB a 2,00 GiB (512 extensiones).
Volumen lógico myvg0/music redimensionado con éxito
3. Cambie el tamaño del sistema de archivos para que se ajuste al nuevo tamaño del volumen lógico:
# resize2fs p /dev/mapper/myvg0music
290
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
4. Verifique que el sistema de archivos esté ahora redimensionado para incluir el espacio adicional en disco:
# df h /mnt/mymusic/ Sistema de
archivos /dev/mapper/myvg0music Tamaño utilizado % de uso disponible Montado en
2.0G 3.0M 1.9G 1% /mnt/mymusic
Puede ver que el sistema de archivos ahora es aproximadamente 1G más grande.
Montaje de sistemas de archivos
'
Ahora que ha tenido la oportunidad de jugar con la partición del disco y los sistemas de archivos, Voy
retrocederé y hablaré sobre cómo se configuran los sistemas de archivos para conectarse permanentemente
a su sistema Linux.
La mayoría de las particiones del disco duro creadas cuando instala Linux se montan 12
automáticamente cuando se inicia el sistema. Cuando instala Fedora, Ubuntu, Red Hat Enterprise
Linux y otros sistemas Linux, tiene la opción de dejar que el instalador configure automáticamente
su disco duro o cree particiones usted mismo e indique los puntos de montaje para esas particiones.
Cuando inicia Linux, generalmente todas las particiones de Linux en su disco duro se enumeran
en su archivo /etc/fstab y se montan. Por esa razón, las siguientes secciones describen lo que
puede esperar encontrar en ese archivo. También describe cómo puede montar otras particiones
para que se conviertan en parte de su sistema de archivos Linux.
El comando de montaje se usa no solo para montar dispositivos de almacenamiento local, sino también para
montar otros tipos de sistemas de archivos en su sistema Linux. Por ejemplo, se puede usar mount para montar
directorios (carpetas) en la red desde servidores NFS o Samba. Se puede utilizar para montar sistemas de archivos
desde un nuevo disco duro o una unidad flash USB que no esté configurada para montaje automático. También puede
montar archivos de imagen del sistema de archivos mediante dispositivos de bucle.
NOTA
Con la adición de funciones de montaje automático y cambios en la forma en que se identifican los medios extraíbles con el kernel de
Linux 2.6 (utilizando funciones como Udev y Capa de abstracción de hardware), ya no necesita montar los medios extraíbles
manualmente para muchos sistemas de escritorio Linux. Comprender cómo montar y desmontar sistemas de archivos manualmente en
un servidor Linux, sin embargo, puede ser una habilidad muy útil si desea montar sistemas de archivos remotos o montar particiones
temporalmente en ubicaciones particulares.
Sistemas de archivos admitidos Para
ver los tipos de sistemas de archivos que están actualmente cargados en su núcleo, escriba cat /proc/
filesystems. La lista que sigue muestra una muestra de los tipos de sistemas de archivos que actualmente son
compatibles con Linux, aunque es posible que no estén en uso en este momento o incluso que no estén
disponibles en la distribución de Linux que está utilizando.
befs: Sistema de archivos utilizado por el sistema operativo BeOS.
291
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
btrfs: un sistema de archivos de copia en escritura que implementa características avanzadas del sistema de archivos.
Ofrece tolerancia a fallas y fácil administración. El sistema de archivos btrfs ha crecido recientemente en popularidad
para las aplicaciones empresariales.
cifs: Common Internet Filesystem (CIFS), el sistema de archivos virtual utilizado para acceder a servidores que cumplen con
la especificación SNIA CIFS. CIFS es un intento de refinar y estandarizar el protocolo SMB utilizado por Samba y el uso
compartido de archivos de Windows.
ext4: Sucesor del popular sistema de archivos ext3. Incluye muchas mejoras sobre
ext3, como la compatibilidad con volúmenes de hasta 1 exbibyte y tamaños de archivo de hasta 16 tebibytes.
(Esto reemplazó a ext3 como el sistema de archivos predeterminado utilizado en Fedora y RHEL. Desde entonces, ha
sido reemplazado por xfs como el sistema predeterminado para RHEL).
ext3: Los sistemas de archivos ext son los más comunes en la mayoría de los sistemas Linux. En comparación con ext2,
el sistema de archivos ext3, también llamado el tercer sistema de archivos extendido, incluye funciones de registro
en diario que, en comparación con ext2, mejoran la capacidad de un sistema de archivos
bloqueos.
para recuperarse de
ext2: el tipo de sistema de archivos predeterminado para sistemas Linux anteriores. Las características son las mismas que
ext3, excepto que ext2 no incluye funciones
de diario. ext: Esta es la primera versión
de ext3. Ya no se usa muy a menudo. iso9660: Evolucionado del sistema de archivos High Sierra (el
estándar original para CDROM).
Las extensiones del estándar High Sierra (llamadas extensiones Rock Ridge) permiten que los sistemas de archivos
iso9660 admitan nombres de archivos largos e información de estilo UNIX (como permisos de archivos, propiedad y
enlaces). Los CDROM de datos suelen utilizar este tipo de sistema de archivos. kafs: sistema de archivos del cliente AFS.
Se utiliza en entornos informáticos distribuidos para compartir archivos
con clientes Linux, Windows y Macintosh.
minix: tipo de sistema de archivos Minix, utilizado originalmente con la versión Minix de UNIX. Esta arriba
puertos nombres de archivo de hasta sólo 30 caracteres.
msdos: un sistema de archivos MSDOS. Puede usar este tipo para montar medios que provienen de
antiguos sistemas operativos de Microsoft. vfat:
sistema de archivos FAT extendido (VFAT) de Microsoft. exfat:
Sistema de archivos FAT extendido (exFAT) que ha sido optimizado para tarjetas SD, USB
discos duros y otras memorias flash.
umsdos: Un sistema de archivos de MSDOS con extensiones para permitir características que son similares a
UNIX (incluidos los nombres de archivo largos).
proc: no es un sistema de archivos real, sino una interfaz del sistema de archivos para el kernel de Linux. Tú
'
probablemente el No haga nada especial para configurar un sistema de archivos proc. Sin embargo, el /proc
punto de montaje ganado debería ser un sistema de archivos proc. Muchas utilidades confían en /proc para obtener acceso
a la información del kernel de Linux.
292
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
reiserfs: sistema de archivos con diario de ReiserFS. ReiserFS fue una vez un tipo de sistema de archivos predeterminado común
para varias distribuciones de Linux. Sin embargo, los sistemas de archivos ext y xfs son, con mucho, los tipos de sistemas de
archivos más comunes que se usan con Linux en la actualidad.
intercambio: se utiliza para particiones de intercambio. Las áreas de intercambio se utilizan para almacenar datos temporalmente cuando
La memoria RAM está agotada. Los datos se intercambian en el área de intercambio y luego se devuelven a la RAM cuando
se necesitan nuevamente.
squashfs: tipo de sistema de archivos comprimido de solo lectura. Squashfs es popular en CD en vivo, donde hay espacio
limitado y un medio de solo lectura (como un CD o DVD). nfs: tipo de sistema de archivos Network Filesystem (NFS).
NFS se utiliza para montar sistemas de archivos en
otras computadoras Linux o UNIX. hpfs: el
sistema de archivos se usa para realizar montajes de solo lectura de un sistema de archivos OS/2 HPFS. ncpfs:
un sistema de archivos utilizado con Novell NetWare. Se pueden montar sistemas de archivos NetWare 12
sobre una red.
ntfs: sistema de archivos de Windows NT. Dependiendo de la distribución que tenga, puede admitirse como un sistema de archivos
de solo lectura (para que pueda montar y copiar archivos desde él). ufs: sistema de archivos popular en los sistemas
operativos de Sun Microsystems (es decir, Solaris y SunOS).
jfs: un sistema de archivos de diario de 64 bits de IBM que es relativamente liviano para muchos
características que tiene.
xfs: un sistema de archivos de alto rendimiento desarrollado originalmente por Silicon Graphics que funciona muy bien con archivos
grandes. Este sistema de archivos es el tipo predeterminado para RHEL 7. gfs2: un sistema de archivos de disco compartido
que permite que varias máquinas usen el mismo disco compartido sin pasar por una capa de sistema de archivos de red como
CIFS, NFS, etc.
Para ver la lista de sistemas de archivos que vienen con el kernel que está usando, escriba ls /lib/modules/
kernelversion/kernel/fs/. Los módulos reales se almacenan en subdirectorios de ese directorio. Montar un sistema de archivos de
un tipo compatible hace que se cargue el módulo del sistema de archivos, si aún no lo está.
Escriba man fs para ver las descripciones de los sistemas de archivos de Linux.
Habilitación de áreas de intercambio Un
área de intercambio es un área del disco que queda disponible para Linux si el sistema se queda sin memoria (RAM). Si su RAM está
llena e intenta iniciar otra aplicación sin un área de intercambio, esa aplicación fallará.
Con un área de intercambio, Linux puede intercambiar temporalmente datos de la RAM al área de intercambio y luego recuperarlos
cuando sea necesario. Recibe un impacto en el rendimiento, pero es mejor que tener procesos que fallan.
293
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Para crear un área de intercambio desde una partición o un archivo, use el comando mkswap. Para habilitar esa área
de intercambio temporalmente, puede usar el comando swapon. Por ejemplo, aquí se explica cómo verificar el espacio
de intercambio disponible, crear un archivo de intercambio, habilitar el archivo de intercambio y luego verificar que el
espacio esté disponible en su sistema:
# libre m
total usado gratis búferes compartidos en caché
Memoria: 1955 663 1291 0 42 283
/+ búfer/caché: 337 1617
819 0 819
Intercambio: # dd if=/dev/zero of=/var/tmp/myswap bs=1M count=1024 # mkswap /var/opt/myswap #
swapon /var/opt/ myswap # free m
El comando libre muestra la cantidad de intercambio antes y después de crear, realizar y habilitar el área de
intercambio con el comando swapon. Esa cantidad de intercambio está disponible de forma inmediata y temporal
para su sistema. Para que esa área de intercambio sea permanente, debe agregarla a su archivo /etc/fstab. Aquí hay
un ejemplo:
/var/opt/myswap intercambio intercambio predeterminados 0 0
Esta entrada indica que el archivo de intercambio llamado /var/opt/myswap debe habilitarse en el momento del
arranque. Debido a que no hay un punto de montaje para el área de intercambio, el segundo campo simplemente
se establece en intercambio, al igual que el tipo de partición. Para probar que el archivo de intercambio funciona
antes de reiniciar, puede habilitarlo inmediatamente ( swapon a) y verificar que aparezca el área de intercambio adicional:
# swapon a
Deshabilitar el área de intercambio
Si en algún momento desea deshabilitar un área de intercambio, puede hacerlo usando el comando swapoff.
Puede hacer esto, en particular, si el área de intercambio ya no es necesaria y desea recuperar el espacio que
consume un archivo de intercambio o quitar una unidad USB que proporciona una partición de intercambio.
Primero, asegúrese de que no se esté usando espacio en el dispositivo de intercambio (usando el comando libre), y luego
use swapoff para desactivar el área de intercambio para que pueda reutilizar el espacio. Aquí hay un ejemplo:
# libre m total
usado gratis compartido tampones en caché
Memoria: 1955 1720 235 0 42 1310
/+ búfer/caché: 367 1588
294
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Intercambio: 1843 # 0 1843
swapoff /var/opt/myswap # free m
Observe que la cantidad de intercambio disponible se redujo después de ejecutar el comando swapoff.
Uso del archivo fstab para definir sistemas de archivos montables Las particiones del
disco duro en su computadora local y los sistemas de archivos remotos que usa todos los días probablemente
estén configurados para montarse automáticamente cuando inicia Linux. El archivo /etc/fstab contiene
definiciones para cada partición, junto con opciones que describen cómo se monta la partición. Aquí
' 12
s un ejemplo de un archivo /etc/fstab:
# /etc/fstab /dev/
mapper/vg_abclv_root / valores predeterminados ext4 1 1
UUID=78bdae469389438dbfee06dd934fae28 /boot ext4 defaults 1 2 /dev/mapper/vg_abclv_home /home /
más tvalores
dev/mapper/vg_abclv_swap # Montaje entradas agregadas
192.168.0.28/myshare predeterminados
arde /dev/sdb1 dee
# sistemas xt4 1 2
192.168.0.27:/nfsstuff //
archivos especiales
de Linux tmpfs devpts sysfs intercambio intercambiar valores predeterminados 0 0
/win vfat ro /usuarios nfs 1 2
remotos,_netdev 0 0 /share cifs guest,_netdev 0 0
/dev/shm tmpfs predeterminados 0 0 /dev/pts devpts
gid=5,mode=620 0 0 /sys sysfs predeterminados 0 0 /
proc proc predeterminados
proceso 0 0
El archivo /etc/fstab que se acaba de mostrar es de una instalación predeterminada del servidor Red Hat Enterprise Linux
6, con algunas líneas añadidas.
Por ahora, puede ignorar las entradas tmpfs, devpts, sysfs y proc. Esos son dispositivos especiales asociados
con la memoria compartida, ventanas de terminal, información del dispositivo y parámetros del núcleo,
respectivamente.
En general, la primera columna de /etc/fstab muestra el dispositivo o recurso compartido (lo que está montado),
mientras que la segunda columna muestra el punto de montaje (dónde está montado). A esto le sigue el tipo de
sistema de archivos, las opciones de montaje (o valores predeterminados) y dos números (usados para indicar a
comandos como dump y fsck qué hacer con el sistema de archivos).
Las tres primeras entradas representan las particiones de disco asignadas a la raíz del sistema de archivos (/),
el directorio /boot y el directorio /home. Los tres son sistemas de archivos ext4. La cuarta línea es un dispositivo
de intercambio (usado para almacenar datos cuando la memoria RAM se desborda). Tenga en cuenta que los
nombres de dispositivo para /, /home y swap comienzan con /dev/mapper. Esto se debe a que
son volúmenes
lógicos
LVM a los
que se les asigna espacio de un grupo de espacio llamado grupo de volúmenes LVM (más información sobre LVM
en la sección "Uso de particiones del administrador de volúmenes lógicos" anteriormente en este capítulo).
295
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
La partición /boot está en su propia partición física, /dev/sda1. Sin embargo, en lugar de usar /dev/sda1, un
identificador único (UUID) identifica el dispositivo. ¿Por qué usar un UUID en lugar de /dev/sda1 para identificar el
dispositivo? Supongamos que conectaste otro disco a tu computadora y arrancaste. Dependiendo de cómo su
computadora recorre los dispositivos conectados al arrancar, es posible que el nuevo disco se identifique como /dev/
sda, lo que hace que el sistema busque el contenido de /boot en la primera partición de ese disco.
Para ver todos los UUID asignados a los dispositivos de almacenamiento en su sistema, escriba el comando
blkid, de la siguiente manera:
# blkid /
dev/sda1:
UUID="78bdae469389438dbfee06dd934fae28" TIPO="ext4" /dev/sda2:
UUID="wlvuIvUiI2pNNDf39joH0X9tooAOII7R" TIPO="LVM2_miembro"
/dev/mapper/vg_abclv_root:
UUID="3e6f49a68fec45e190a938431284b689" TIPO="ext4"
/dev/mapper/vg_abclv_swap:
UUID="776629502cc24bd9a86034669535619d" TIPO="intercambiar"
/dev/mapper/vg_abclv_home:
UUID="7ffbcff336b94cbb871d091efb179790" TIPO="ext4" /dev/sdb1:
SEC_TYPE="msdos" UUID="75E096AA" TIPO="vfat"
Cualquiera de los nombres de dispositivos se puede reemplazar por la designación de UUID en la columna izquierda de
una entrada de /etc/fstab.
Agregué las siguientes tres entradas en /etc/fstab para ilustrar algunos tipos diferentes de entradas.
Conecté un disco duro de un antiguo sistema Microsoft Windows y lo monté en el directorio /win. Agregué la opción ro
para que montara solo lectura.
Las siguientes dos entradas representan sistemas de archivos remotos. En el directorio /remote, el directorio /
nfsstuff se monta en lectura/escritura (rw) desde el host en la dirección 192.168.0.27 como recurso compartido NFS.
En el directorio /share, el recurso compartido de Windows denominado myshare se monta desde el host en 192.168.0.28.
En ambos casos, agregué la opción _netdev, que le dice a Linux que espere a que se active la red antes de intentar
montar los recursos compartidos. Para obtener más información sobre el montaje de recursos compartidos CIFS y NFS,
consulte los Capítulos 19, “Configuración de un servidor de uso compartido de archivos d,e “Configuración
Windows (Samba)”,
de un
ys 2ervidor
0,
de archivos NFS”, respectivamente.
Viniendo de Windows
La sección "Uso del archivo fstab para definir sistemas de archivos montables" muestra cómo montar una partición de disco
duro de un sistema de archivos VFAT antiguo que se usa en Windows. La mayoría de los sistemas Windows actuales utilizan
el sistema de archivos NTFS . Sin embargo, el soporte para este sistema no se entrega con todos los sistemas Linux. NTFS
está disponible en Fedora en el paquete ntfs3g.
296
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Para ayudarlo a comprender el contenido del archivo /etc/fstab, esto es lo que hay en cada campo de ese archivo:
Campo 1: Nombre del dispositivo que representa el sistema de archivos. Este campo puede incluir el
Opción LABEL o UUID con la que puede indicar una etiqueta de volumen o un identificador único universal
( UUID) en lugar de un nombre de dispositivo. La ventaja de este enfoque es que debido a que la partición se
identifica por el nombre del volumen, puede mover un volumen a un nombre de dispositivo diferente y no tener
que cambiar el archivo fstab. (Consulte la descripción del comando mkfs en la sección "Uso del comando mkfs
para crear un sistema de archivos" más adelante en este capítulo para obtener información sobre la creación y
el uso de etiquetas).
Campo 2: Punto de montaje en el sistema de archivos. El sistema de archivos contiene todos los datos desde el
punto de montaje hasta la estructura de árbol de directorios, a menos que otro sistema de archivos esté montado
en algún punto debajo de él.
Campo 3: Tipo de sistema de archivos. Los tipos de sistemas de archivos válidos se describen en la sección
12
"Sistemas de archivos admitidos" anteriormente en este capítulo (aunque solo puede usar tipos de sistemas de
archivos para los que se incluyen controladores para su kernel).
Campo 4: use valores predeterminados o una lista de opciones separadas por comas (sin espacios) que desee usar
cuando se monte la entrada. Consulte la página del manual del comando de montaje (bajo la opción o) para
obtener información sobre otras opciones admitidas.
SUGERENCIA Por lo general, solo el usuario raíz puede montar un sistema de archivos usando el comando de montaje. Sin embargo, para permitir
que cualquier usuario monte un sistema de archivos (como un sistema de archivos en un CD), puede agregar la opción de usuario al campo 4 de /etc/fstab .
Campo 5: el número de este campo indica si es necesario volcar el sistema de archivos (es decir, hacer una copia
de seguridad de sus datos). Un 1 significa que el sistema de archivos debe volcarse y un 0 significa que no.
(Este campo ya no es particularmente útil porque la
mayoría
copia de los administradores
de seguridad de q
más sofisticadas Lue
inux
ucsan
el opciones
omando de de
volcado. La mayoría de las veces, se usa un 0).
Campo 6: el número en este campo indica si el sistema de archivos indicado debe verificarse con fsck cuando
llegue el momento de verificarlo: 1 significa que debe verificarse primero, 2 significa verificar después todos los
indicados por 1 ya se han verificado, y 0 significa que no lo verifique.
Si desea obtener más información sobre las opciones de montaje, así como sobre otras características del
archivo /etc/fstab, existen varias páginas man a las que puede consultar, incluidas man 5 nfs y man 8 mount.
Uso del comando mount para montar sistemas de archivos Los sistemas Linux ejecutan
automáticamente mount a (montar todos los sistemas de archivos desde el archivo /etc/fstab) cada
vez que inicia. Por esa razón, generalmente usas la montura
297
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Comando solo para situaciones especiales. En particular, el usuario o administrador promedio usa mount de dos
maneras:
■ Para mostrar los discos, particiones y sistemas de archivos remotos actualmente montados ■
Para montar un sistema de archivos temporalmente
Cualquier usuario puede escribir mount (sin opciones) para ver qué sistemas de archivos están montados actualmente
en el sistema Linux local. El siguiente es un ejemplo del comando de montaje. Muestra una única partición de disco
duro ( /dev/sda1) que contiene el sistema de archivos raíz (/) y los tipos de sistemas de archivos proc y devpts
montados en /proc y /dev, respectivamente.
$ mount /
dev/sda3 en / escriba ext4 (rw) /dev/
sda2 en /boot escriba ext4 (rw) /dev/sda1 en /
mnt/win escriba vfat (rw) /dev/proc en /proc
escriba proc (rw ) /dev/sys en /sys escriba sysfs
(rw) /dev/devpts en /dev/pts escriba devpts
(rw,gid=5,mode=620) /dev/shm en /dev/shm escriba tmpfs (rw) ninguno en /
proc/sys/fs/binfmt_misc escriba binfmt_misc (rw) /dev/cdrom en /media/
MyOwnDVD escriba iso9660 (ro,nosuid,nodev)
Tradicionalmente, los dispositivos más comunes para montar a mano son los medios extraíbles, como DVD o
CD. Sin embargo, según el tipo de escritorio que esté utilizando, es posible que los CD y DVD se monten
automáticamente cuando los inserte. (En algunos casos, las aplicaciones también se inician cuando se inserta un
medio. Por ejemplo, un reproductor de música o un editor de fotos se puede iniciar cuando el medio USB insertado
tiene música o imágenes digitales).
Ocasionalmente, sin embargo, puede resultarle útil montar un sistema de archivos manualmente. Por ejemplo, desea
ver el contenido de un disco duro antiguo, por lo que lo instala como un segundo disco en su computadora. Si las
particiones en el disco no se montaron automáticamente, puede montar particiones desde ese disco manualmente.
Por ejemplo, para montar una partición de disco de solo lectura sdb1 que tiene un sistema de archivos ext3 más
antiguo, puede escribir esto:
# mkdir /mnt/temp #
montaje t ext3 o ro /dev/sdb1 /mnt/tmp
Otra razón para usar el comando de montaje es volver a montar una partición para cambiar sus opciones de
montaje. Suponga que desea volver a montar /dev/sdb1 como lectura/escritura, pero no desea desmontarlo (tal vez
alguien lo esté usando). Puede usar la opción de volver a montar de la siguiente manera:
# montar t ext3 o volver a montar,rw /dev/sdb1
Montar una imagen de disco en loopback Otra forma valiosa
de usar el comando de montaje tiene que ver con las imágenes de disco. Si descarga un archivo de imagen ISO
de una tarjeta SD o un DVD de Internet y desea ver lo que contiene, puede hacerlo sin grabarlo en un DVD u otro
medio. Con la imagen en su disco duro, cree un punto de montaje y use la opción o loop para montarlo localmente.
Aquí hay un ejemplo:
# mkdir /mnt/mydvdimage #
mount o loop lo que seai686disc1.iso /mnt/mydvdimage
298
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
En este ejemplo, se crea el directorio /mnt/mydvdimage y luego se monta el archivo de imagen de disco (lo que sea
i686disc1.iso) que reside en el directorio actual.
Ahora puede usar un cd en ese directorio, ver su contenido y copiar o usar cualquiera de sus contenidos. Esto es útil
para imágenes de DVD descargadas desde las que desea instalar software sin tener que grabar la imagen en DVD.
También podría compartir ese punto de montaje a través de NFS, por lo que podría instalar el software desde otra
computadora. Cuando haya terminado, para desmontar la imagen, escriba umount /mnt/mydvdimage.
Otras opciones de montaje están disponibles solo para tipos de sistemas de archivos específi cos. Consulte la página
del manual de montaje para conocer esas y otras opciones útiles.
Uso del comando umount Cuando termine de usar
un sistema de archivos temporal, o si desea desmontar un sistema de archivos permanente temporalmente, use el comando
umount. Este comando separa el sistema de archivos de su punto de montaje en su sistema de archivos Linux. Para usar 12
umount, puede darle un nombre de directorio o un nombre de dispositivo, como se muestra en este ejemplo:
# desmontar /mnt/prueba
Esto desmonta el dispositivo del punto de montaje /mnt/test. También puede desmontar utilizando este formulario:
# umount /dev/sdb1
En general, es mejor usar el nombre del directorio (/mnt/test) porque el comando umount fallará si el dispositivo
está montado en más de una ubicación. (Todos los nombres de dispositivos comienzan con /dev.)
Si recibe el mensaje El dispositivo está ocupado, la solicitud de desmontaje ha fallado porque una aplicación tiene un
archivo abierto en el dispositivo o tiene un shell abierto con un directorio en el dispositivo como directorio actual. Detenga
los procesos o cambie a un directorio fuera del dispositivo que está tratando de desmontar para que la solicitud de
desmontaje tenga éxito.
Una alternativa para desmontar un dispositivo ocupado es la opción l. Con umount l (un desmontaje perezoso), el
desmontaje ocurre tan pronto como el dispositivo ya no está ocupado. Para desmontar un sistema de archivos NFS
remoto que ya no está disponible (por
efjemplo,
la uerza ee
l sl istema
servidor
se
de cayó), pN
archivos uede
FS. usar la opción umount f para desmontar a
CONSEJO
Una herramienta realmente útil para descubrir qué está manteniendo abierto un dispositivo que desea desmontar es el comando lsof. Escriba lsof con el nombre de la
partición que desea desmontar (como lsof /mnt/test ). El resultado muestra qué comandos mantienen abiertos los archivos en esa partición. El comando fuserv /mnt/test se
puede utilizar en el
mismo camino.
299
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
Uso del comando mkfs para crear un sistema de archivos
Puede crear un sistema de archivos para cualquier tipo de sistema de archivos admitido en un disco
o partición que elija. Lo hace con el comando mkfs. Aunque esto es más útil para crear sistemas de
archivos en particiones de disco duro, también puede crear sistemas de archivos en unidades flash
USB o DVD regrabables.
Antes de crear un nuevo sistema de archivos, asegúrese de lo siguiente:
■ Ha particionado el disco como desea (utilizando el comando fdisk). ■ Obtiene el
nombre del dispositivo correcto o puede terminar sobrescribiendo su disco duro por error. Por
ejemplo, la primera partición en la segunda unidad flash USB o SCSI de su sistema es /dev/
sdb1 y el tercer disco es /dev/sdc1. ■ Para desmontar la partición si está montada antes de
crear el sistema de archivos.
Los siguientes son dos ejemplos del uso de mkfs para crear un sistema de archivos en dos particiones
en una unidad flash USB ubicada como la primera y segunda partición en el tercer disco SCSI (/dev/
sdc1 y /dev/sdc2). El primero crea una partición xfs, mientras que el segundo crea una partición ext4.
# mkfs t xfs /dev/sdc1 metadatos=/dev/
sda3 tamaño = 256 agcount=4, agsize=256825 bloques sectsz=512
= attr=2, projid32bit=1 crc=0
=
datos = bsize=4096 bloques=1027300, imaxpct=25 sunit=0 swidth=0 blks
=
naming =versión 2 registro =registro bsize=4096 asciici=0 ftype=0 bsize=4096 bloques=2560,
interno version=2 sectsz=512 sunit=0 blks, lazycount=1 extsz=4096
= bloques=0, rtextents=0
tiempo real = ninguno
# mkfs t ext4 /dev/sdc2 mke2fs 1.44.6 (5
de marzo de 2019)
Creando un sistema de archivos con 524288 bloques 4k y 131072 inodos UUID del sistema de archivos:
6379d82efa2541608ffa32bc78d410eee Copias de seguridad de superbloque almacenadas en bloques:
32768, 98304, 163840, 229376, 294912
Asignación de tablas de grupo: hecho
Escritura de tablas de inodos: hecho
Creando diario (16384 bloques): hecho
Escribir superbloques e información de contabilidad del sistema de archivos: hecho
Ahora puede montar cualquiera de estos sistemas de archivos (por ejemplo, mkdir /mnt/myusb ;
mount /dev/sdc1 /mnt/myusb), cambiar a /mnt/myusb como su directorio actual (cd /mnt/myusb) y crear
archiva en él como quieras.
300
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Gestión del almacenamiento con Cockpit
La mayoría de las funciones descritas en este capítulo para trabajar con particiones de disco y sistemas de archivos
utilizando herramientas de línea de comandos se pueden lograr mediante la interfaz de usuario web de Cockpit.
Con Cockpit ejecutándose en su sistema, abra la interfaz de usuario web (nombre de host: 9090) y seleccione la
pestaña Almacenamiento. La Figura 12.2 muestra un ejemplo de la pestaña Cockpit Storage en un sistema Fedora.
12
'
La pestaña Almacenamiento proporciona una visión general sólida de la almacenamiento Grafica lectura y escritura
actividad de su sistema de sus dispositivos de almacenamiento cada minuto. Muestra el almacenamiento y los sistemas de
archivos locales (incluidos los dispositivos RAID y los grupos de volúmenes LVM), así como los destinos iSCSI y los recursos
compartidos NFS montados de forma remota. Cada disco duro, DVD y otro dispositivo de almacenamiento físico también se
muestra en la pestaña Almacenamiento.
Seleccione un sistema de archivos montado y podrá ver y cambiar la partición para ese sistema de archivos.
Por ejemplo, al seleccionar la entrada de un sistema de archivos que se montó automáticamente en /run/media,
puede ver todas las particiones del dispositivo en el que se encuentra ( /dev/sdb1 y /dev/sdb2). La Figura 12.3
muestra que hay un sistema de archivos ISO9660 (típico para dispositivos de arranque) y un sistema de archivos
VFAT más pequeño en las dos particiones.
Con la información del dispositivo de almacenamiento mostrada, puede volver a formatear todo el dispositivo de
almacenamiento (Crear tabla de particiones) o, suponiendo que haya espacio disponible en el dispositivo, agregar
una nueva partición (Crear partición). La Figura 12.4 muestra un ejemplo de la ventana que aparece cuando selecciona
Crear tabla de particiones.
301
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
FIGURA 12.3
Ver y cambiar particiones de disco para un dispositivo de almacenamiento seleccionado.
302
Machine Translated by Google
Capítulo 12: Administración de discos y sistemas de archivos
Si decide que desea formatear el disco o la unidad USB, cambie la configuración de Borrar para permitir que
se sobrescriban todos los datos en la unidad y luego elija el tipo de partición. Seleccione Formatear para
desmontar las particiones montadas de la unidad y crear una nueva tabla de particiones. Después de eso,
puede agregar particiones al dispositivo de almacenamiento, eligiendo el tamaño, el tipo de sistema de archivos
y si cifrar o no los datos. Incluso puede elegir en qué parte del sistema operativo puede crear rápidamente los
'
diseños de disco que d s
esee
filesystem
de formas
para más
ontar
intuitivas
la nueva
que
partición.
los métodos
Con p
solo
ara urealizar
nas pocas
pasos
selecciones,
comparables
usted
desde la
línea de comandos.
Resumen
La gestión de sistemas de archivos es una parte fundamental de la administración de un sistema Linux.
Usando comandos como fdisk, puede ver y cambiar las particiones del disco. Los sistemas de archivos se 12
pueden agregar a las particiones usando el comando mkfs. Una vez creados, los sistemas de archivos se
pueden montar y desmontar usando los comandos mount y umount, respectivamente.
Logical Volume Manager (LVM) ofrece una forma más potente y fl exible de administrar particiones de disco.
Con LVM, crea conjuntos de almacenamiento, denominados grupos de volúmenes, que pueden permitirle
aumentar y reducir los volúmenes lógicos, así como ampliar el tamaño de sus grupos de volúmenes mediante la
adición de más volúmenes físicos.
Para una forma más intuitiva de trabajar con dispositivos de almacenamiento, Cockpit ofrece una interfaz web
intuitiva para ver y configurar el almacenamiento en su sistema Linux. Con la interfaz de usuario web, puede ver
el almacenamiento local y en red, así como reformatear discos y modificar particiones de disco.
Con la mayoría de los conceptos básicos necesarios para convertirse en un administrador de sistemas
cubiertos en este punto del libro,
el Capítulo
conceptos 1a3,
para "Comprensión
mpliar de la administración
esas habilidades de sservidores",
para administrar ervidores dpe
resenta
red. Los
temas de ese capítulo incluyen información sobre cómo instalar, administrar y asegurar servidores.
Ejercicios
Utilice estos ejercicios para poner a prueba su conocimiento sobre la creación de particiones de disco, el
administrador de volumen lógico y el trabajo con sistemas de archivos. Necesita una unidad flash USB de al
menos 1 GB, que puede borrar para estos ejercicios.
Estas tareas asumen que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas
tareas también funcionan en otros sistemas Linux). Si está atascado, las soluciones a las tareas se muestran
en el Apéndice B (aunque en Linux, a menudo hay varias formas de completar una tarea).
1. Ejecute un comando como root para ver el diario del sistema en una Terminal a medida que ingresan
datos nuevos e inserte su unidad flash USB. Determine el nombre del dispositivo de la unidad flash
USB.
303
Machine Translated by Google
Parte III: Convertirse en un administrador del sistema Linux
2. Ejecute un comando para listar la tabla de particiones para la unidad flash USB.
3. Elimine todas las particiones en su unidad flash USB, guarde los cambios y asegúrese de que los cambios se
hayan realizado tanto en la tabla de particiones del disco como en el kernel de Linux.
4. Agregue tres particiones a la unidad flash USB: partición Linux de 100 MB, intercambio de 200 MB
partición y partición LVM de 500 MB. Guarde los cambios.
5. Coloque un sistema de archivos ext4 en la partición de Linux.
6. Cree un punto de montaje llamado /mnt/mypart y monte la partición de Linux en él.
7. Habilite la partición de intercambio y enciéndala para que haya espacio de intercambio adicional inmediatamente.
atly disponible.
8. Cree un grupo de volúmenes llamado abc desde la partición LVM, cree un volumen lógico de 200 MB de ese
grupo llamado datos, agregue una partición VFAT y luego monte temporalmente el volumen lógico en un nuevo
directorio llamado /mnt/test. Compruebe que se haya montado correctamente.
9. Aumente el volumen lógico de 200 MB a 300 MB.
10. Haga lo necesario para quitar la unidad flash USB de forma segura de la computadora: desmonte la partición de
Linux, apague la partición de intercambio, desmonte el volumen lógico y elimine el grupo de volúmenes de la
unidad flash USB.
304
Machine Translated by Google
rt
convertirse en un li
Administrador
Capítulo 13
Descripción de la administración del servidor
capitulo 14
Administración de redes
Capítulo 15
Iniciar y detener servicios
capitulo 16
Configuración de un servidor de impresión
capitulo 17
Configuración de un servidor web
capitulo 18
Configuración de un servidor FTP
capitulo 19
Configuración de un servidor de uso compartido de archivos de Windows (Samba)
capitulo 20
Configuración de un servidor de archivos NFS
capitulo 21
Solución de problemas de Linux
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Servidor de comprensión
Administración
EN ESTE CAPÍTULO
Administrar servidores Linux
Comunicación con servidores a través de redes
Configurar el registro de forma local y remota
Monitoreo de sistemas de servidor
Administrar servidores en la empresa
software, configurar impresoras, etc.), aparecen muchas tareas nuevas cuando configura un sistema
Aunque algunas
Linux tareas
para que adctúe
e administración
dpúblico.
el
Esso
como servidor. istema son necesarias
es especialmente incluso
cierto esn
si el un sistema
ervidor que cdonfiguró
e escritorio
(instalar
se h ace
a cualquier persona en Internet, donde puede estar sobrecargado con solicitudes de los buenos mientras
necesita estar constantemente en guardia contra los ataques de los malos.
Docenas de diferentes tipos de servidores están disponibles para sistemas Linux. La mayoría de los servidores envían
datos a clientes remotos, pero otros sirven al sistema local (como los que recopilan mensajes de registro o inician tareas
de mantenimiento en momentos determinados mediante la función cron). Muchos servidores están representados por
procesos que se ejecutan continuamente en segundo plano y responden a las solicitudes que les llegan. Estos procesos se
denominan procesos daemon .
Como su nombre lo indica, los servidores existen para servir. Los datos que sirven pueden incluir páginas web, archivos,
información de bases de datos, correo electrónico y muchos otros tipos de contenido. Como administrador del servidor,
algunos de los desafíos adicionales para sus habilidades de administración del sistema incluyen lo siguiente:
Acceso remoto Para usar un sistema de escritorio, generalmente se sienta en su consola. Sistemas de servidor, por
Por el contrario, tienden a estar alojados en bastidores en entornos climatizados bajo llave.
La mayoría de las veces, una vez que las computadoras físicas están en su lugar, la mayor parte de la administración de
esas máquinas se realiza mediante herramientas de acceso remoto. A menudo, no hay una interfaz gráfica disponible,
por lo que debe confiar en las herramientas de línea de comandos o en las interfaces basadas en navegador para hacer
cosas como el inicio de sesión remoto, la copia remota y la ejecución remota. La más común de estas herramientas se
basa en la función Secure Shell (SSH).
Seguridad diligente Para ser útil, un servidor debe poder aceptar solicitudes de contenido de
usuarios y sistemas remotos. A diferencia de los sistemas de escritorio, que simplemente pueden cerrar toda la red
307
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
puertos que permiten solicitudes de acceso entrantes, un servidor debe volverse más vulnerable al
permitir cierto acceso a sus puertos. Por eso, como administrador del servidor, es importante abrir puertos
a los servicios que se necesitan y bloquear los puertos que no se necesitan. Puede proteger los servicios
utilizando herramientas como iptables y firewalld (herramientas de firewall) y Security Enhanced Linux (para
limitar los recursos a los que puede acceder un servicio desde el sistema local).
Monitoreo continuo Aunque normalmente apaga su computadora portátil o su sistema de escritorio cuando no lo está usando,
los servidores generalmente permanecen encendidos las 24 horas del día, los 7 días de la semana, los 365 días del año.
Como no desea sentarse al lado de cada servidor y monitorearlo continuamente personalmente,
puede configurar herramientas para monitorear cada servidor, recopilar mensajes de registro e incluso
reenviar mensajes sospechosos a una cuenta de correo electrónico de su elección. Puede permitir que
los reporteros de actividad del sistema recopilen datos durante todo el día sobre el uso de la CPU, el uso
de la memoria, la actividad de la red y el acceso al disco.
En este capítulo, expongo algunas de las herramientas y técnicas básicas que necesita saber para
administrar servidores Linux remotos. Aprende a usar herramientas SSH para acceder a su servidor de
forma segura, transferir datos de un lado a otro e incluso iniciar escritorios remotos o aplicaciones gráficas y
hacer que aparezcan en su sistema local. Aprende a utilizar el registro remoto y los informes de actividad del
sistema para supervisar las actividades del sistema de forma continua.
Comenzando con la administración del servidor
Ya sea que esté instalando un servidor de archivos, un servidor web o cualquiera de las otras instalaciones
de servidor disponibles con los sistemas Linux, muchos de los pasos necesarios para poner en funcionamiento
el servidor son los mismos. Donde la configuración del servidor diverge es en las áreas de configuración y ajuste.
En capítulos posteriores, describo servidores específi cos y en qué se diferencian. En cada uno de los
capítulos relacionados con el servidor que
inicie
siguen,
y esté
seguirá
disponible
los mismos
para qpue
asos
lo ubtilicen
ásicos
sus
para
clientes.
que el servidor se
Paso 1: Instale el servidor Aunque la
mayoría del software del servidor no está preinstalado en el sistema Linux típico, cualquier sistema Linux de uso
general ofrece los paquetes de software necesarios para suministrar todos los tipos principales de servidor disponibles.
A veces, varios paquetes de software asociados con un tipo particular de servidor se reúnen en grupos de paquetes
(a veces llamados colecciones de paquetes). En otras ocasiones, solo necesita instalar los paquetes de servidor que
desee de forma individual. Aquí hay algunas categorías de paquetes de servidor en Fedora y algunos de los
paquetes disponibles en cada categoría:
Servidor de registro del sistema El servicio rsyslog permite que el sistema local recopile
mensajes entregados desde una variedad de componentes en el sistema. También puede actuar como un
servidor de registro remoto, recopilando mensajes de registro enviados desde otros servidores de registro.
(El servicio rsyslog se describe más adelante en este capítulo). En versiones recientes de Ubuntu, Fedora,
308
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
y RHEL, los mensajes de registro se recopilan en el diario systemd, que el servicio rsyslog puede recoger y
redirigir o mostrar localmente con el comando jour nalctl.
Servidor de impresión El servicio de impresión común de UNIX (paquete de tazas) se usa más
a menudo para proporcionar funciones de servidor de impresión en sistemas Linux. Los paquetes
que brindan administración gráfica de CUPS (systemconfigprinter) y controladores de impresora (foomatic,
hpijs y otros) también están disponibles cuando instala CUPS. (Consulte el Capítulo 16 “Configuración de
, impresión”).
un servidor de
Servidor web El servidor web Apache (paquete httpd o apache2) es el software
se utiliza con mayor frecuencia para servir páginas web (contenido HTTP). Los paquetes relacionados
incluyen módulos para ayudar a servir tipos particulares de contenido (conexiones Perl, Python, PHP y
SSL). Asimismo, existen paquetes de documentación relacionada (httpdmanual), herramientas para
monitorear datos web (webalizer) y herramientas para brindar servicios web proxy (squid). (Véase el
Capítulo 17 , “Configuración de un servidor web”).
Servidor FTP El demonio FTP muy seguro (paquete vsftpd) es el servidor FTP predeterminado que se usa en
Fedora y RHEL. Otros paquetes de servidores FTP incluyen proftpd y pure ftpd. (Véase el Capítulo 18
, “Configuración de un servidor FTP.”)
El servidor de archivos de Windows Samba (paquete samba) permite que un sistema Linux actúe como Win
, “Configurar un uso compartido de archivos de Windows
archivo dows y servidor de impresión. (Consulte el Capítulo
19 Servidor [Samba]).
Servidor de archivos NFS Network File System (NFS) es la función estándar de Linux y UNIX para
13
proporcionar directorios compartidos a otros sistemas a través de una red. El paquete nfsutils proporciona
, “Configurando
servicios NFS y comandos relacionados. (Consulte el Capítulo 20 sobre un servidor de archivos
NFS).
Servidor de correo Estos tipos de paquetes le permiten configurar servidores de correo, algunos
veces denominado servidor de agente de transporte de correo (MTA). Tiene varias opciones de servidores
de correo electrónico, incluidos sendmail, postfix (predeterminado en Fedora y RHEL) y exim. Los paquetes
relacionados, como dovecot, permiten que el servidor de correo envíe correos electrónicos a los clientes.
Servidor de directorio Los paquetes de esta categoría proporcionan autenticación local y remota
servicios. Estos incluyen Kerberos (servidor krb5), LDAP (servidores openldap) y NIS (ypserv).
Servidor DNS El servicio de dominio de nombres de Internet de Berkeley (bind) proporciona el software
necesario para configurar un servidor para resolver nombres de host en direcciones IP.
Servidor Network Time Protocol El paquete ntpd o chronyd proporciona un servicio
que puede habilitar para sincronizar el reloj de su sistema con relojes de servidores NTP públicos o privados.
Servidor SQL PostgreSQL (paquetes postgresql y postgresqlserver)
service es un sistema de gestión de base de datos relacional de objetos. Los paquetes relacionados
proporcionan documentación de PostgreSQL y herramientas relacionadas. El servicio MySQL (mysql y
paquetes de servidor mysql) es otro popular servidor de base de datos SQL de código abierto.
309
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Una rama de MySQL desarrollada por la comunidad llamada MariaDB ha suplantado a MySQL en
muchas distribuciones de Linux.
Paso 2: Configure el servidor La mayoría de
los paquetes de software de servidor se instalan con una configuración predeterminada que se inclina más
hacia la seguridad que hacia el uso completo inmediato. Aquí hay algunas cosas en las que pensar cuando se
dispone a configurar un servidor.
Uso de archivos de
configuración Tradicionalmente, los servidores Linux se han configurado editando archivos de texto sin
formato en el directorio /etc (o subdirectorios). A menudo, hay un archivo de configuración principal; a veces,
hay un directorio de configuración relacionado en el que los archivos que terminan en .conf se pueden extraer
del archivo de configuración principal.
El paquete httpd (servidor web Apache) es un ejemplo de un paquete de servidor que tiene un archivo de
configuración principal y un directorio donde se pueden colocar otros archivos de configuración e incluirlos
con el servicio. El archivo de configuración principal en Fedora y RHEL es /etc/httpd/conf/httpd.conf. El
directorio de configuración es /etc/httpd/conf.d/.
Después de instalar httpd y los paquetes relacionados, verá archivos en el directorio /etc/httpd/conf.d/ que
fueron colocados allí por diferentes paquetes: mod_ssl, mod_perl, etc.
Esta es una forma en que los paquetes complementarios a un servicio pueden tener su información de
configuración habilitada en el servidor httpd, sin que el paquete intente ejecutar un script para editar el
archivo principal httpd.conf.
La única desventaja de los archivos de configuración de texto sin formato es que
no obtiene el tipo de
verificación de error inmediata que obtiene cuando usa herramientas de administración gráfica. Debe ejecutar
un comando de prueba (si el servicio incluye uno) o intentar iniciar el servicio para ver si hay algún problema
con su archivo de configuración.
CONSEJO
En lugar de usar vi para editar archivos de configuración, use vim. El uso del comando vim puede ayudarlo a detectar errores de archivos de
configuración mientras está editando.
El comando vim conoce los formatos de muchos archivos de configuración (passwd, httpd.conf, fstab otros). Si comete , y
un error y escribe un término u opción no válido en uno de esos archivos, o rompe el formato de alguna manera, el color del
texto cambia. Por ejemplo, en /etc/fstab, si cambia los valores predeterminados
predeterminados
de la o
dpción
e la palabra.
a los cambios de color , el
Comprobación de la configuración
predeterminada La mayoría de los paquetes de software de servidor en Fedora y RHEL se instalan con una
configuración mínima y tienden más a ser seguros que totalmente útiles listos para usar. Al instalar un paquete
de software, algunas distribuciones de Linux le preguntan cosas como el directorio en el que desea instalarlo o
la cuenta de usuario con la que desea administrarlo.
310
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
Debido a que los paquetes RPM están diseñados para instalarse sin supervisión, la persona que instala el
paquete no tiene elección sobre cómo instalarlo. Los archivos se instalan en ubicaciones determinadas, se
habilitan cuentas de usuario específicas para administrarlos y, cuando inicia el servicio, es posible que
ofrezca una accesibilidad limitada. Se espera que configure el software después de instalar el paquete para
que el servidor sea totalmente funcional.
Dos ejemplos de servidores que se instalan con funcionalidad limitada son los servidores de correo
(paquetes sendmail o postfix) y los servidores DNS (paquete de enlace). Ambos servidores se instalan con
configuraciones predeterminadas y se inician al reiniciar. Sin embargo, ambos solo escuchan solicitudes en
su host local. Por lo tanto, hasta que configure esos servidores, las personas que no hayan iniciado sesión
en su servidor local no pueden enviar correo al servidor de correo ni usar su computadora como un servidor
DNS público, respectivamente.
Paso 3: Inicie el servidor La mayoría
de los servicios que instala en Linux están configurados para iniciarse cuando el sistema arranca y luego
se ejecutan continuamente, escuchando solicitudes, hasta que el sistema se apaga. Hay dos instalaciones
principales para administrar servicios: systemd (usado ahora por RHEL, Ubuntu y Fedora) y scripts
SystemVinit (usado por Red Hat Enterprise Linux a través de RHEL 6.x).
Independientemente de la instalación que se utilice en su sistema Linux, es su trabajo hacer cosas como
establecer si desea que el servicio se active cuando se inicie el sistema e iniciar, detener y volver a cargar
el servicio según sea necesario (posiblemente para cargar nuevos archivos de configuración o detener
,
temporalmente el acceso al servicio). Los comandos para realizar estas tareas se describen en el Capítulo 13
15 "Inicio y detención de servicios".
La mayoría de los servicios, pero no todos, se implementan como procesos daemon. Aquí hay algunas cosas
que debe saber sobre esos procesos:
Permisos de usuarios y grupos Los procesos Daemon a menudo se ejecutan como usuarios y grupos
distintos de root. Por ejemplo, httpd se ejecuta como apache y ntpd como usuario ntp. La razón de
esto es que si alguien descifra estos demonios, no tendría permisos para acceder a archivos más
allá de los que pueden acceder los servicios.
Archivos de configuración del demonio A menudo, un servicio tiene un archivo de configuración para el
demonio almacenado en el directorio /etc/sysconfig. Esto es diferente al archivo de configuración
del servicio en que su trabajo a menudo es simplemente pasar argumentos al propio proceso del
servidor en lugar de configurar el servicio. Por ejemplo, las opciones que configura en el archivo /etc/
sysconfig/rsyslogd se pasan al demonio rsyslogd cuando se inicia. Puede decirle al daemon, por
ejemplo, que genere información de depuración adicional o que acepte mensajes de registro remoto.
Consulte la página del manual del servicio (por ejemplo, man rsyslogd) para ver qué opciones se
admiten.
Números de puerto Los paquetes de datos van y vienen de su sistema a través de interfaces de red
a través de puertos para cada protocolo compatible (generalmente UDP o TCP). La mayoría de
los servicios estándar tienen números de puerto específicos a los que escuchan los demonios ya
los que se conectan los clientes. A menos que intente ocultar la ubicación de un servicio,
normalmente no cambia los puertos en los que escucha un proceso daemon. Cuando vas a asegurar
311
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
un servicio, debe asegurarse de que el puerto al servicio esté abierto en el cortafuegos (consulte el Capítulo
25, "Seguridad de Linux
Además,
en una
si cred",
ambia
para
un opbtener
uerto ein
nformación
el que escucha
sobre
eiptables
l servicio
y yc
ortafuegos
SELinux está
con
ecn
ortafuegos).
modo de
aplicación, SELinux puede evitar que el daemon escuche en ese puerto (consulte el Capítulo 24, "Mejora de
la seguridad de Linux con SELinux", para obtener más información sobre SELinux). .
NOTA
Una razón para cambiar los números de puerto en un servicio es la "seguridad por oscuridad". Por ejemplo, el servicio sshd es un objetivo
bien conocido para las personas que intentan ingresar a un sistema adivinando los inicios de sesión y las contraseñas en el puerto TCP 22.
He oído hablar de personas que cambian su servicio sshd orientado a Internet para escuchar en algún otro número de puerto (quizás algún número
de puerto muy alto sin usar). Luego les dicen a sus amigos o colegas que inicien sesión en su máquina desde SSH apuntando a este otro puerto.
La idea es que los escáneres de puertos que buscan ingresar a un sistema tengan menos probabilidades de escanear el puerto que normalmente
no se usa.
No todos los servicios se ejecutan continuamente como procesos daemon. Algunos servicios UNIX más antiguos se
ejecutaban bajo demanda utilizando el superservidor xinetd. Otros servicios solo se ejecutan una vez al iniciarse y salir.
Otros se ejecutan solo un número determinado de veces y se inician cuando el demonio crond ve que el servicio se
configuró para ejecutarse en un momento determinado.
En los últimos años, los servicios xinetd anteriores en RHEL y Fedora, como telnet y tftp, se han convertido en servicios
systemd. Una serie de servicios, incluida la cabina, utilizan sockets systemd para lograr los mismos resultados.
Paso 4: Asegure el servidor Abrir su sistema
para permitir que los usuarios remotos accedan a él a través de la red no es una decisión que deba tomarse a la ligera.
Los crackers de todo el mundo ejecutan programas para buscar servidores vulnerables que puedan tomar para sus datos
o su poder de procesamiento. Afortunadamente, existen medidas que puede implementar en los sistemas Linux para
proteger sus servidores y servicios de ataques y abusos.
Algunas técnicas de seguridad comunes se describen en las siguientes secciones. Estos y otros temas se tratan con
mayor profundidad en la Parte V, “Aprender las técnicas de seguridad de Linux”.
Protección con contraseña
Las buenas contraseñas y las políticas de contraseñas son la primera línea de defensa para proteger un sistema
Linux. Si alguien puede iniciar sesión en su servidor a través de ssh como usuario raíz con una contraseña de foobar,
espere ser descifrado. Una buena técnica es no permitir el inicio de sesión directo por root y exigir que cada usuario
inicie sesión como usuario normal y luego use su o sudo para convertirse en root.
También puede usar la función Módulo de autenticación conectable (PAM) para ajustar la cantidad de veces que alguien
puede tener intentos fallidos de inicio de sesión antes de bloquear el acceso a esa persona.
PAM también incluye otras funciones para bloquear la autenticación en su servidor Linux. Para obtener una descripción
de PAM, consulte el Capítulo 23, "Comprensión de la seguridad avanzada de Linux".
312
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
Por supuesto, puede omitir las contraseñas por completo al solicitar la autenticación de clave pública. Para usar ese
tipo de autenticación, debe asegurarse de que cualquier usuario que desee que tenga acceso a su servidor tenga su
clave pública copiada en el servidor (como a través de sshcopyid).
Luego, pueden usar ssh, scp o comandos relacionados para acceder a ese servidor sin escribir su contraseña.
Consulte la sección "Uso de autenticación basada en clave (sin contraseña)" más adelante en este capítulo para
obtener más información.
cortafuegos
El servicio de firewall de iptables puede rastrear y responder a cada paquete que viene y va a las interfaces de
red de su computadora. Con iptables, puede descartar o rechazar todos los paquetes que solicitan servicios en su
sistema, excepto los pocos que ha habilitado. Además, puede decirle a iptables que permita solicitudes de servicio
solo desde ciertas direcciones IP (chicos buenos) o que no permita solicitudes de otras direcciones (chicos malos).
En versiones recientes de RHEL y Fedora, la función firewalld agrega una capa de funcionalidad a las reglas de
firewall de Linux. Con firewalld, no solo puede insertar reglas de firewall en el kernel, sino que también puede
organizar las reglas de firewall dividiéndolas en zonas y cambiando las reglas de firewall sobre la marcha para
reaccionar ante diferentes eventos.
En cada uno de los próximos capítulos de servidores, describo qué puertos deben estar abiertos para permitir el
acceso a los servicios. Las descripciones de cómo funcionan iptables y firewalld se incluyen en el Capítulo 25,
"Seguridad de Linux en una red".
13
TCP Wrappers
TCP Wrappers, que usa los archivos /etc/hosts.allow y /etc/hosts.deny para permitir y denegar el acceso de
diversas formas a los servicios seleccionados, se usaba principalmente para proteger los servicios UNIX más
antiguos y ya no se usa. considerado muy seguro. Si bien el uso del programa TCP Wrapper (/usr/sbin/tcpd) solo
es común en sistemas que usan xinetd, los archivos /etc/hosts.allow y /etc/hosts.deny que el programa TCP
Wrapper verificó antes de otorgar acceso Los servicios de red a menudo son controlados por demonios que están
configurados para hacerlo. La opción de configuración dentro de los archivos de configuración para estos demonios a
menudo se etiqueta como soporte TCP Wrapper.
SELinux
Fedora, Red Hat Enterprise Linux y otras distribuciones de Linux vienen con la función Security Enhanced Linux
(SELinux) incluida y en modo de cumplimiento. Aunque el modo dirigido predeterminado no tiene mucho impacto en
la mayoría de las aplicaciones que ejecuta en Linux, tiene un gran impacto en la mayoría de los servicios principales.
Una función importante de SELinux es proteger el contenido de su sistema Linux de los procesos que se ejecutan en el
sistema. En otras palabras, SELinux se asegura de que un servidor web, un servidor FTP, un servidor Samba o un
servidor DNS pueda acceder solo a un conjunto restringido de archivos en el sistema (según lo definido por los contextos
de archivo) y permite solo un conjunto restringido de funciones ( según lo defi nido por booleanos y acceso limitado al
puerto).
Los detalles sobre cómo usar SELinux se encuentran en el Capítulo 24, "Mejora de la seguridad de Linux con
SELinux".
313
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Ajustes de seguridad en los archivos de
configuración Dentro de los archivos de configuración de la mayoría de los servicios hay valores que puede establecer
para proteger aún más el servicio. Por ejemplo, para servidores de archivos y servidores web, puede restringir el
acceso a ciertos archivos o datos según el nombre de usuario, el nombre de host, la dirección IP del cliente u otros atributos.
Paso 5: Monitoree el servidor Porque
'
puede configurar herramientas
t estar allí ppara
ara
monitorear cada servicio, cada minuto, necesita poner mon
monitorear sus servidores por usted y hacer que sea más fácil para usted saber cuándo algo necesita
atención. Algunas de las herramientas que puede usar para monitorear sus servidores se describen en
las secciones siguientes.
Configurar el registro
Con el servicio rsyslog (daemon rsyslogd), puede recopilar información crítica y condiciones de error en archivos de
registro sobre muchos servicios diferentes. De forma predeterminada, en RHEL, los mensajes de registro de las
aplicaciones se dirigen a archivos de registro en el directorio /var/log. Para mayor seguridad y conveniencia, los
mensajes de registro también se pueden dirigir a un servidor centralizado, proporcionando una ubicación única para
ver y administrar el registro de un grupo de sistemas.
Varios paquetes de software diferentes están disponibles para trabajar con rsyslog y administrar mensajes de registro.
La función logwatch escanea sus archivos de registro cada noche y envía información crítica recopilada de esos archivos
a una cuenta de correo electrónico de su elección. La función logrotate realiza una copia de seguridad de los archivos
de registro en archivos comprimidos cuando los registros alcanzan un tamaño determinado o pasan una cantidad
determinada de tiempo desde la copia de seguridad anterior.
Las funciones para configurar y administrar el registro del sistema se describen en la sección
"Configuración del registro del sistema" más adelante en este capítulo.
Ejecute informes de actividad del
sistema La función sar (que está habilitada por el paquete sysstat) se puede configurar para observar actividades
en su sistema, como uso de memoria, uso de CPU, latencia de disco, actividades de red y otros drenajes de
recursos. De forma predeterminada, la instalación sar inicia el programa sadc cada pocos minutos, día y noche,
para recopilar datos. Ver esos datos más tarde puede ayudarlo a regresar y descubrir dónde y cuándo la demanda
está aumentando en su sistema. La función sar se describe en la sección "Comprobación de los recursos del sistema
con sar" más adelante en este capítulo.
Vea la actividad en vivo con Cockpit
Con Cockpit ejecutándose en su sistema, puede observar la actividad del sistema en tiempo real. Abra su
navegador web para mostrar la consola de Cockpit (https://localhost:9090). En tiempo real, puede ver el porcentaje de
uso de la CPU, la memoria y el consumo de intercambio, la cantidad de datos que se escriben hacia y desde el disco
(E/S del disco) y el tráfico de la red a medida que se recopila y se muestra en la pantalla. La Figura 13.1 muestra un
ejemplo del área Sistema de la consola del Cockpit, mostrando datos de actividad.
314
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
FIGURA 13.1
Inicie sesión en la cabina
Mantenga actualizado el software del
sistema A medida que se descubren y reparan agujeros de seguridad, debe asegurarse de que los 13
paquetes de software actualizados que contienen esos parches estén instalados en sus servidores.
Nuevamente, con los servidores de misión crítica, la forma más segura y eficiente es usar sistemas Red Hat
Enterprise Linux suscritos para sus servidores y luego implementar actualizaciones de paquetes relacionadas
con la seguridad en su sistema tan pronto como se publiquen y prueben.
Para mantener su servidor personal y sus sistemas de escritorio actualizados, hay varias herramientas gráficas
para agregar software y buscar actualizaciones. También puede usar el comando yum para verificar e instalar
todos los paquetes que están disponibles para sus sistemas RHEL o Fedora (ingrese dnf update o yum update).
Verifique el sistema de archivos en busca de
signos de crackers Para verificar su sistema de archivos en busca de una posible intrusión, puede ejecutar
comandos como rpm V para verificar si algún comando, archivo de documento o archivo de configuración ha
sido manipulado en su sistema . Para obtener más información sobre rpm V, consulte la descripción de rpm
V en el Capítulo 10, "Obtención y administración de software".
Ahora que tiene una descripción general de cómo se realiza la configuración del servidor Linux, las siguientes
secciones de este capítulo se centran en las herramientas que necesita para acceder, asegurar y mantener sus
sistemas de servidor Linux.
315
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Comprobación y configuración de servidores
Si tiene la tarea de administrar un servidor Linux, las siguientes secciones incluyen una serie de
elementos que puede verificar. Tenga en cuenta que hoy en día muchos servidores en grandes centros
de datos son implementados y administrados por plataformas más grandes. Por lo tanto, sepa cómo se
administra el servidor antes de realizar cambios en él. Sus cambios pueden sobrescribirse automáticamente
si cambió el estado definido de ese sistema.
Administrar el acceso remoto con Secure
Servicio Shell
Las herramientas de Secure Shell son un conjunto de aplicaciones de cliente y servidor que le permiten
realizar comunicaciones básicas entre las computadoras cliente y su servidor Linux. Las herramientas
incluyen ssh, scp, sftp y muchas otras. Debido a que la comunicación está encriptada entre el servidor y
los clientes, estas herramientas son más seguras que otras similares más antiguas. Por ejemplo, en lugar
de usar comandos de inicio de sesión remotos más antiguos, como telnet o rlogin, podría usar ssh.
El comando ssh también puede reemplazar comandos de ejecución remota más antiguos, como rsh.
Los comandos de copia remota, como rcp, se pueden reemplazar con comandos seguros como scp y rsync.
Con las herramientas de Secure Shell, tanto el proceso de autenticación como todas las comunicaciones
posteriores están encriptadas. Las comunicaciones de telnet y los comandos "r" más antiguos exponen
las contraseñas y todos los datos a alguien que rastrea la red. Hoy en día, los comandos telnet y similares
deben usarse solo para probar el acceso a puertos remotos, proporcionar servicios públicos como el
arranque PXE o realizar otras tareas que no expongan sus datos privados.
NOTA
Para una discusión más profunda de las técnicas de encriptación, consulte el Capítulo 23, "Comprensión de la seguridad avanzada de Linux".
La mayoría de los sistemas Linux incluyen clientes shell seguros y muchos también incluyen el servidor
shell seguro. Si está utilizando la distribución Fedora o RHEL, por ejemplo, los paquetes de software de
cliente y servidor que contienen las herramientas ssh son los paquetes openssh, opensshclients y openssh
server de la siguiente manera:
# lista yum instalada | grep abresh
...
abresh.x86_64 7.9p15.fc30 abreshclients.x86_64 @anaconda
7.9p15.fc30 abreshserver.x86_64 7.9p15.fc30 @anaconda
@anaconda
En Ubuntu, solo está instalado el paquete opensshclients. Incluye la funcionalidad del paquete openssh.
Si necesita instalar el servidor, use el comando sudo aptget install opensshserver.
316
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
$ sudo dpkg lista | grep openssh opensshclient/
bionicupdates,bionicsecurity,now 1:7.6p14ubuntu0.3 amd64 [instalado] cliente de shell seguro (SSH),
para acceso seguro a máquinas remotas
abreshclientessh1/bionic 1:7.5p110 amd64
cliente de shell seguro (SSH) para el protocolo SSH1 heredado
abreshsftpserver/bionicupdates,bionicsecurity,ahora 1:7.6p14ubuntu0.3 amd64 [instalado]
módulo de servidor sftp de shell seguro (SSH), para acceso SFTP desde máquinas remotas $ sudo
aptget install opensshserver
Inicio del servicio opensshserver Los sistemas
Linux que vienen con el paquete opensshserver ya instalado a veces no están
configurados para iniciarse automáticamente. La gestión de los servicios de Linux (consulte
el Capítulo distintas
15, “Inicio
y detención dL
distribuciones. e los
a servicios”)
Tabla puede lsos
13.1 muestra er cmomandos
uy diferente
ssegún
que las usar
e deben
para garantizar que el demonio del servidor ssh, sshd, esté funcionando en un sistema Linux.
TABLA 13.1 Comandos para determinar el estado de sshd
13
Si sshd no se está ejecutando actualmente, puede iniciarlo emitiendo uno de los comandos enumerados en la
Tabla 13.2. Estos comandos necesitan privilegios de root para poder funcionar.
Los comandos de la Tabla 13.2 solo inician el servicio ssh o sshd. No lo configuran para que se inicie
automáticamente al arrancar. Para asegurarse de que el servicio del servidor esté configurado para iniciarse
automáticamente, debe usar uno de los comandos en la Tabla 13.3 usando privilegios de raíz.
317
Distribución Comando para determinar el estado de sshd
RHEL 6 chkconfig list sshd
Fedora y RHEL 7 o posterior systemctl estado sshd.servicio
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
TABLA 13.3 Comandos para iniciar sshd en el arranque
Cuando instalas opensshserver en Ubuntu, el demonio sshd está configurado para iniciarse automáticamente en el
arranque. Por lo tanto, es posible que no necesite ejecutar el comando de la Tabla 13.3 para su servidor Ubuntu.
Modifique la configuración de su cortafuegos para permitir que el cliente de openssh acceda al puerto 22 (los cortafuegos
se tratan en el Capítulo 25, "cortafuegos
Seguridad de
e Linux
sté en una red").
correctamente Una vez que
configurado, el servicio
debería esté
poder en
usar funcionamiento
los y celiente
comandos del l
ssh para acceder a su sistema a través del servidor ssh.
Cualquier otra configuración de lo que se le permite hacer al demonio sshd se maneja en el archivo /etc/ssh/
sshd_config. Como mínimo, establezca la configuración de PermitRootLogin en no.
Esto evita que cualquiera inicie sesión de forma remota como root.
# grep Permitir inicio de sesión raíz /etc/ssh/sshd_config
PermitRootLogin no
Después de haber cambiado el archivo sshd_config, reinicie el servicio sshd. Después de ese punto, si usa ssh para
iniciar sesión en ese sistema desde un cliente remoto, debe hacerlo como un usuario normal y luego usar su o sudo
para convertirse en el usuario raíz.
Uso de herramientas de cliente SSH
Se han creado muchas herramientas para acceder a sistemas Linux remotos para hacer uso del servicio SSH. La
más utilizada de esas herramientas es el comando ssh, que se puede usar para el inicio de sesión remoto, la
ejecución remota y otras tareas. Comandos como scp y rsync pueden copiar uno o más archivos a la vez entre el
cliente SSH y los sistemas del servidor. El comando sftp proporciona una interfaz similar a FTP para atravesar un
sistema de archivos remoto y obtener y colocar archivos entre los sistemas de forma interactiva.
De forma predeterminada, todas las herramientas relacionadas con SSH se autentican utilizando nombres de
usuario y contraseñas estándar de Linux, todo ello a través de conexiones cifradas. Sin embargo, SSH también es
compatible con la autenticación basada en clave, que se puede usar para configurar la autenticación basada en
clave y posiblemente sin contraseña entre clientes y servidores SSH, como se describe en la sección "Uso de la
autenticación basada en clave (sin contraseña)" más adelante en este capítulo.
Uso de ssh para inicio de
sesión remoto Use el comando ssh desde otra computadora Linux para probar que puede iniciar
sesión en el sistema Linux ejecutando su servicio sshd. El comando ssh es uno que usará con frecuencia
para acceder a un shell en los servidores que está configurando.
318
Distribución Comando para iniciar sshd en el arranque
RHEL 6 chkconfig sshd en
Fedora y RHEL 7 o posterior systemctl habilitar sshd.servicio
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
Intente iniciar sesión en su servidor Linux desde otro sistema Linux usando el comando ssh. (Si no
tiene otro sistema Linux, puede simular esto escribiendo localhost en lugar de la dirección IP e
iniciando sesión como usuario local). El siguiente es un ejemplo de inicio de sesión remoto en la
cuenta de johndoe en 10.140.67.23:
$ ssh johndoe@10.140.67.23 La autenticidad
del host '10.140.67.23 (10.140.67.23)'
no se puede establecer.
La huella digital de la clave RSA es
a4:28:03:85:89:6d:08:fa:99:15:ed:fb:b0:67:55:89.
¿Está seguro de que desea continuar conectándose (sí/no)? sí Advertencia: se agregó permanentemente
'10.140.67.23' (RSA) a la
lista de anfitriones conocidos.
contraseña de johndoe@10.140.67.23: *********
Si esta es la primera vez que inicia sesión en ese sistema remoto usando el comando ssh, el
sistema le pide que confirme que desea conectarse. Escriba sí y presione Entrar. Cuando se le
solicite, ingrese la contraseña del usuario.
Cuando escribe sí para continuar, acepta la clave pública del host remoto. En ese momento, la clave
pública del host remoto se descarga al cliente en el archivo ~/.ssh/known_hosts del cliente. Ahora,
los datos intercambiados entre estos dos sistemas se pueden cifrar y descifrar mediante el cifrado
asimétrico RSA (consulte el Capítulo 23, "Comprensión de la seguridad avanzada de Linux").
Después de iniciar sesión en el sistema remoto, puede comenzar a escribir comandos de shell.
La conexión funciona como un inicio de sesión normal. La única diferencia es que los datos se
13
cifran a medida que viajan por la red.
Cuando haya terminado, escriba exit para finalizar la conexión remota. La conexión se cierra y
vuelve al símbolo del sistema en su sistema local. (Si el shell local no regresa después de salir del
shell remoto, escribir ~. generalmente cierra la conexión).
$ salir
cerrar
sesión Conexión a 10.140.67.23 cerrada
Después de conectarse de forma remota a un sistema, existirá un archivo en el subdirectorio
de su sistema local, ~.ssh/known_hosts. Este archivo contiene la clave pública del host remoto
junto con su dirección IP. Las claves públicas y privadas de su servidor se almacenan en el
directorio /etc/ssh.
$ ls .ssh
hosts_conocidos $
cat .ssh/hosts_conocidos 10.140.67.23
sshrsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAoyfJK1YwZhNmpHE4yLPZAZ9ZNEdRE7I159f3I yGiH21Ijfqs
NYFR10ZlBLlYyTQi06r/9O19GwCaJ753InQ8FWHW+OOYOG5pQmghhn /
x0LD2uUb6egOu6zim1NEC
JwZf5DWkKdy4euCUEMSqADh/WYeuOSoZ0pp2IAVCdh6 con
PIHMF1HVR069cvdv+OTL4vD0X8llSpw
319
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
0ozqRptz2UQgQBBbBjK1RakD7fY1TrWv
NQhYG/ugt gPaY4JDYeY6OBzcadpxZmf7EYUw0ucXGVQ1a
NP/erIDOQ9rA0YNzCRv
y2LYCm2/9adpAxc+UYi5UsxTw4ewSBjmsXYq//Ahaw4mjw==
SUGERENCIA Cualquier intento posterior de este usuario de comunicarse con el servidor en 10.140.67.23 se autentica con esta
clave almacenada. Si el servidor debe cambiar su clave (lo que sucede si se reinstala el sistema operativo o si se rotan las claves),
los intentos de ssh a ese sistema dan como resultado una conexión rechazada y advertencias nefastas de que puede estar bajo
ataque. Si la clave realmente ha cambiado, para poder volver a usar ssh en esa dirección, simplemente
línea
elimine
completa)
la clave
de sdu
el
archivo
host (la
_hosts conocido y puede copiar la nueva clave.
Uso de ssh para ejecución
remota Además de iniciar sesión en un shell remoto, el comando ssh se puede usar para
ejecutar un comando en el sistema remoto y devolver la salida al sistema local. Aquí hay un
ejemplo:
$ ssh johndoe@10.140.67.23 nombre de host
johndoe@10.140.67.23 contraseña: ********** host01.example.com
En el ejemplo que se acaba de mostrar, el comando hostname se ejecuta como el usuario johndoe
en el sistema Linux ubicado en la dirección IP 10.140.67.23. El resultado del comando es el nombre
del host remoto (en este caso, host01.example.com), que aparece en la pantalla local.
Si ejecuta un comando de ejecución remota con ssh que incluye opciones o argumentos, asegúrese
de incluir toda la línea de comando remoto entre comillas. Tenga en cuenta que si hace referencia a
archivos o directorios en sus comandos remotos, las rutas relativas se interpretan en relación con el
directorio de inicio del usuario, como se muestra aquí:
$ ssh johndoe@10.140.67.23 "cat myfile" contraseña de
johndoe@10.140.67.23: ********** Contenido del archivo myfile
ubicado en el directorio de inicio de johndoe.
El comando ssh que se acaba de mostrar va al host remoto ubicado en 10.140.67.23 y ejecuta el
comando cat myfile como el usuario johndoe. Esto hace que el contenido del archivo myfile de ese
sistema se muestre en la pantalla local.
Otro tipo de ejecución remota que puedes hacer con ssh es el reenvío X11. Si el reenvío X11
está habilitado en el servidor (X11Forwarding yes está configurado en el archivo /etc/sshd/
sshd_config), puede ejecutar aplicaciones gráficas desde el servidor de forma segura a través de la
conexión SSH usando ssh X. Para un administrador de servidor nuevo, esto significa que si hay
herramientas de administración gráfica instaladas en un servidor, puede ejecutar esas herramientas sin
tener que sentarse en la consola, como en este ejemplo:
$ ssh X johndoe@10.140.67.23 systemconfigprinter contraseña de
johndoe@10.140.67.23: **********
320
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
Después de ejecutar este comando, se le solicitará la contraseña de root. Después de eso,
aparece la ventana Impresoras, lista para configurar una impresora. Simplemente cierre la ventana
cuando haya terminado y volverá el indicador local. Puede hacer esto para cualquier herramienta de
administración gráfica o simplemente para aplicaciones X regulares (como el editor gráfico gedit, para
que no tenga que usar vi).
Si desea ejecutar varios comandos X y no desea tener que volver a conectarse cada vez, también puede
usar el reenvío X11 directamente desde un shell remoto. Póngalos en segundo plano y podrá tener
varias aplicaciones X remotas ejecutándose en su escritorio local a la vez.
Aquí hay un ejemplo:
$ ssh X johndoe@10.140.67.23 contraseña
de johndoe@10.140.67.23: ********** $ systemconfigprinter & $
gedit & $ exit
Una vez que haya terminado de usar las aplicaciones gráficas, ciérrelas como lo haría normalmente.
Luego escriba exit, como se muestra en el código anterior, para salir del shell remoto y volver a su
shell local.
Copia de archivos entre sistemas con scp y rsync El
comando scp es similar al antiguo comando rcp de UNIX para copiar archivos hacia y desde sistemas
Linux, excepto que todas las comunicaciones están encriptadas. Los archivos se pueden copiar del 13
sistema remoto al sistema local o del local al remoto. También puede copiar archivos recursivamente a
través de una estructura de directorio completa si lo desea.
El siguiente es un ejemplo del uso del comando scp para copiar un archivo llamado memo desde el
directorio de inicio del usuario chris al directorio /tmp en una computadora remota como el usuario
johndoe:
$ scp /home/chris/memo johndoe@10.140.67.23:/tmp
johndoe@10.140.67.23 contraseña: *************** 100%|******* *********|
memorándum
153 0:00
Debe introducir la contraseña de johndoe. Una vez que se acepta la contraseña, el archivo se
copia correctamente en el sistema remoto.
Puede hacer copias recursivas con scp usando la opción r. En lugar de un archivo, pase un nombre de
directorio al comando scp y todos los archivos y directorios debajo de ese punto en el sistema de archivos
se copian al otro sistema.
$ scp johndoe@10.140.67.23:/usr/share/man/man1/ /tmp/ johndoe@10.140.67.23
contraseña: *************** volname.1.gz 100 % 543 0,5 KB/s 00:00 100 % 6788
6,6 KB/s 00:00 mtools.1.gz 100 % 2496 2,4 KB/s 00:00 roqet.1.gz
...
321
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Siempre que el usuario johndoe tenga acceso a los archivos y directorios del sistema remoto y el usuario local
pueda escribir en el directorio de destino (ambos son ciertos en este caso), la estructura de directorios de /usr/
share/man/man1 down se copia en el directorio local /tmp.
El comando scp se puede utilizar para realizar copias de seguridad de archivos y directorios en una red. Sin
embargo, si compara scp con el comando rsync, verá que rsync (que también funciona con conexiones SSH) es
una mejor herramienta de copia de seguridad. Intente ejecutar el comando scp que se muestra anteriormente
para copiar el directorio man1 (puede simular el comando usando localhost en lugar de la dirección IP si solo
tiene un sistema Linux accesible). Ahora ingrese lo siguiente en el sistema en el que copió los archivos:
$ ls l /usr/share/man/man1/batch* /tmp/man1/batch* rwrr.1 johndoe
johndoe 2628 15 de abril 15:32 /tmp/man1/batch.1. gz lrwxrwxrwx.1 raíz raíz 7 14 de febrero 17:49 /usr/
share/man/man1/batch.1.gz
> at.1.gz
A continuación, ejecute el comando scp nuevamente y enumere los archivos una vez más:
$ scp johndoe@10.140.67.23:/usr/share/man/man1/ /tmp/ johndoe@10.140.67.23
contraseña: *************** $ ls l /usr /share/man/man1/batch* /tmp/man1/batch*
rwrr.1 johndoe johndoe 2628 15 de abril 15:40 /tmp/man1/batch.1.gz
lrwxrwxrwx.1 raíz raíz 7 14 de febrero 17:49 /usr/share/man/man1/batch.1.gz
> at.1.gz
La salida de esos comandos le dice algunas cosas sobre cómo funciona scp:
Atributos perdidos Los permisos o los atributos de marca de fecha/hora no se conservaron cuando se
copiaron los archivos. Si estuviera utilizando scp como herramienta de copia de seguridad,
probablemente desee conservar los permisos y las marcas de tiempo en los archivos si necesita
restaurarlos más tarde.
Enlaces simbólicos perdidos El archivo batch.1.gz es en realidad un enlace simbólico al archivo at.1.gz. En
lugar de copiar el enlace, scp sigue el enlace y, de hecho, copia el archivo.
Nuevamente, si tuviera que restaurar este directorio, lote.1.gz sería reemplazado por el archivo at.1.gz
real en lugar de un enlace a él.
Copia repetida innecesariamente Si observó la segunda salida de scp, notará que todos los archivos se
copiaron nuevamente, aunque los archivos exactos que se copiaron ya estaban en el destino. La fecha
de modificación actualizada lo confirma. Por el contrario, el comando rsync puede determinar que un
archivo ya se ha copiado y no volver a copiarlo.
El comando rsync es una mejor herramienta de respaldo de red porque puede superar algunas de las deficiencias
de scp que se acaban de mencionar. Intente ejecutar un comando rsync para realizar la misma acción que acaba
de realizar scp, pero con algunas opciones adicionales:
$ rm rf /tmp/man1/ $ rsync
avl johndoe@10.140.67.23:/usr/share/man/man1/ /tmp/ johndoe@10.140.67.23 contraseña:
********** ***** enviando lista de archivos incrementales man1/
322
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
man1/HEAD.1.gz
man1/Mail.1.gz > mailx.1.gz
...
$ rsync avl johndoe@10.140.67.23:/usr/share/man/man1/ /tmp/ johndoe@10.140.67.23's
password: *************** enviando lista de archivos incrementales enviado 42362 bytes
recibido 13 bytes 9416.67 bytes/seg el tamaño total es 7322223 la aceleración es
172.80 $ ls l /usr/share/man/man1/batch* /tmp/man1/batch* lrwxrwxrwx.1 johndoe
johndoe 7 14 de febrero 17:49 /tmp/man1/batch.1.gz
> at.1.gz
lrwxrwxrwx.1 raíz raíz 7 14 de febrero 17:49 /usr/share/man/man1/batch.1.gz > at.1.gz
Después de eliminar el directorio /tmp/man1, ejecute un comando rsync para copiar todos los archivos en el
directorio /tmp/man1, usando a (archivo recursivo), v (verboso) y l (copiar enlaces simbólicos). ). Luego
ejecute el comando inmediatamente nuevamente y observe que no se copia nada. El comando rsync sabe
que todos los archivos ya están allí, por lo que no los vuelve a copiar. Esto puede representar un gran ahorro
de
ancho de banda de red para directorios con gigabytes de archivos donde solo cambian unos pocos megabytes.
Observe también en la salida de ls l que los enlaces simbólicos se han conservado en el archivo batch.1.gz
y también la marca de fecha/hora en el archivo. Si necesita restaurar esos archivos más adelante, puede
volver a colocarlos exactamente como estaban.
13
Este uso de rsync es bueno para las copias de seguridad. Pero, ¿qué pasaría si quisiera duplicar dos
directorios, haciendo que el contenido de dos estructuras de directorios sea exactamente igual en dos
máquinas? Los siguientes comandos ilustran cómo crear un espejo exacto de la estructura de directorios en
ambas máquinas utilizando los directorios que se muestran con los comandos rsync anteriores.
Primero, en el sistema remoto, copie un nuevo archivo en el directorio que se está copiando:
# cp /etc/services /usr/share/man/man1
A continuación, en el sistema local, ejecute rsync para copiar todos los archivos nuevos (en este caso, solo
el directorio y el archivo nuevo, servicios):
$ rsync avl johndoe@10.140.67.23:/usr/share/man/man1 /tmp contraseña de
johndoe@10.140.67.23:
***************
enviando lista de archivos incrementales
man1/ man1/services
Después de eso, regrese al sistema remoto y elimine el nuevo archivo:
$ sudo rm /usr/share/man/man1/servicios
Ahora, en el sistema local, ejecute rsync nuevamente y observe que no sucede nada. En este punto, los
directorios local y remoto son diferentes porque el sistema local tiene el archivo de servicios y el remoto no. Ese
es el comportamiento correcto para un directorio de respaldo. (Quieres tener
323
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
archivos en la copia de seguridad en caso de que se elimine algo por error). Sin embargo, si desea que los
directorios remoto y local se reflejen, deberá agregar la opción delete.
El resultado es que el archivo de servicios se elimina en el sistema local, haciendo que las estructuras de
directorio local y remota estén sincronizadas.
$ rsync avl /usr/share/man/man1 localhost:/tmp johndoe@10.140.67.23's
password: *************** enviando lista de archivos incrementales man1/
$ rsync avl delete johndoe@10.140.67.23:/usr/share/man/man1 /tmp
johndoe@10.140.67.23's password: *************** enviando lista de
archivos incrementales eliminando man1/ servicios
Copia interactiva con sftp Si no
sabe exactamente
copiar
qhué
acia
desea
o desde un sistema remoto, puede usar el comando sftp para crear una sesión
interactiva estilo FTP sobre el servicio SSH. Con sftp, puede conectarse a un sistema remoto a través de SSH,
cambiar directorios, enumerar el contenido de los directorios y luego (con el permiso adecuado) obtener
archivos y colocarlos en el servidor. Tenga en cuenta que, a pesar de su nombre, sftp no tiene nada que ver con
el protocolo FTP y no utiliza servidores FTP. Simplemente utiliza un estilo FTP de interacción entre un cliente y
un servidor sshd.
El siguiente ejemplo muestra al usuario johndoe conectándose a jd.example.com:
$ sftp johndoe@jd.example.com Conexión
a jd.example.com Contraseña de
johndoe@jd.example.com: *************** sftp>
En este punto, puede comenzar una sesión FTP interactiva. Puede usar los comandos get y put en los
archivos como lo haría con cualquier cliente FTP, pero con la tranquilidad de saber que está trabajando en una
conexión cifrada y segura. Debido a que el protocolo FTP transmite nombres de usuario, contraseñas y datos en
texto no cifrado, usar sftp sobre SSH, si es posible, es una alternativa mucho mejor para permitir que sus usuarios
copien archivos del sistema de forma interactiva.
Uso de autenticación basada en clave (sin contraseña) Si está utilizando
herramientas SSH para conectarse a los mismos sistemas a lo largo del día, es posible que le resulte
inconveniente ingresar su contraseña una y otra vez. En lugar de usar la autenticación basada en contraseña,
SSH le permite configurar la autenticación basada en clave para usar en su lugar. Así es como funciona:
■ Crea una clave pública y una clave privada. ■ Usted
protege la clave privada pero copia la clave pública en la cuenta de usuario en el host remoto en el que
desea realizar la autenticación basada en claves.
■ Con su clave copiada en la ubicación adecuada, utiliza cualquier herramienta SSH para conectarse a
la cuenta de usuario en el host remoto, pero en lugar de pedirle una contraseña, el servicio SSH
remoto compara la clave pública y la clave privada y le permite acceder si las dos claves coinciden.
324
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
Cuando crea las claves, tiene la opción de agregar una frase de contraseña a su clave privada. Si decide
agregar una frase de contraseña, aunque no necesita ingresar una contraseña
sistema para
remoto,
autenticarse
aún debe
en
ingresar
el
su frase de contraseña para desbloquear su clave privada. Si no agrega una frase de contraseña, puede
comunicarse usando sus pares
embargo,
de claves
si alguien
pública/privada
obtiene su
dce
lave
una pmrivada,
anera p
qodría
ue no
arctuar
equiere
como
contraseña.
usted en Sin
cualquier comunicación que requiera esa clave.
El siguiente procedimiento demuestra cómo un usuario local llamado chris puede configurar la autenticación
basada en claves para un usuario remoto llamado johndoe en la dirección IP 10.140.67.23. Si no tiene dos
sistemas Linux, puede simular esto usando dos cuentas de usuario en su sistema local. Comienzo iniciando
sesión como el usuario local llamado chris y escribiendo lo siguiente para generar mi par de claves pública/
privada local:
$ sshkeygen
Generación de un par de claves rsa públicas/privadas.
Ingrese el archivo en el que guardará la clave (/home/chris/.ssh/id_rsa): ENTER Ingrese
la frase de contraseña (vacío si no tiene frase de contraseña): ENTER Ingrese la misma
frase de contraseña nuevamente: ENTER Su identificación ha sido guardada en /home/
chris/.ssh /id_rsa.
Su clave pública se ha guardado en /home/chris/.ssh/id_rsa.pub.
La huella digital clave es:
bf:06:f8:12:7f:f4:c3:0a:3a:01:7f:df:25:71:ec:1d chris@abc.example.com La imagen randomart de la
clave es:
... 13
Acepté la clave RSA predeterminada (las claves DSA también están permitidas) y presioné Enter dos veces
para tener una frase de contraseña en blanco asociada con la clave. Como resultado, mi clave privada
(id_rsa) y mi clave pública (id_rsa.pub) se copian en el directorio .ssh en mi directorio de inicio local. El
siguiente paso es copiar esa clave a un usuario remoto para que pueda usar la autenticación basada en clave
cada vez que me conecte a esa cuenta de usuario con las herramientas ssh:
$ sshcopyid i ~/.ssh/id_rsa.pub johndoe@10.140.67.23 contraseña de
johndoe@10.140.67.23:
***************
Cuando se me solicitó, ingresé la contraseña de johndoe. Una vez aceptado, la clave pública que
pertenece a chris se copia en el archivo authorized_keys en el directorio .ssh de johndoe en el sistema
remoto. Ahora, la próxima vez que chris intente conectarse a la cuenta de johndoe, la conexión SSH se
autenticará con esas claves. Debido a que no se coloca ninguna frase de contraseña en la clave privada, no
se requiere ninguna frase de contraseña para desbloquear esa clave cuando se usa.
Inicie sesión en la máquina con ssh johndoe@10.140.67.23 y verifique $HOME/.ssh/authorized_keys para
asegurarse de que no haya agregado claves adicionales que no esperaba.
[chris]$ ssh johndoe@10.140.67.23 Último inicio de
sesión: dom 17 de abril 10:12:22 de 2016 desde 10.140.67.22 [johndoe]$
325
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Con las claves en su lugar, Chris ahora podría usar ssh, scp, rsync o cualquier otro comando habilitado para
SSH para realizar la autenticación basada en claves. Usando estas claves, por ejemplo, un comando rsync
podría entrar en un script cron y hacer una copia de seguridad automática del directorio de inicio de johndoe todas
las noches.
¿Quiere proteger aún más su sistema remoto? Una vez que tenga las claves en su sistema remoto para
todas las personas a las que desea permitir que inicien sesión en ese sistema, puede configurar el servicio
sshd en el sistema remoto para que no permita la autenticación de contraseña cambiando la configuración de
PasswordAuthentication en /etc/ssh /sshd_config archivo a no, para que aparezca de la siguiente manera:
ContraseñaAutenticación no
Luego reinicie el servicio sshd (systemctl restart sshd). Después de eso, se acepta a cualquier persona con
una clave válida. Cualquiera que intente iniciar sesión sin una clave recibe el siguiente mensaje de error y ni
siquiera tiene la oportunidad de ingresar un nombre de usuario y contraseña:
Permiso denegado (clave pública, gssapikeyex, gssapiwithmic).
Configuración del registro del sistema
Con el conocimiento de cómo acceder a su servidor remoto utilizando herramientas SSH, puede iniciar sesión
en el servidor y configurar algunos de los servicios necesarios para asegurarse de que funciona sin problemas.
El registro del sistema es uno de los servicios básicos configurados para Linux para realizar un seguimiento
de lo que sucede en el sistema.
El servicio rsyslog (demonio rsyslogd) proporciona las funciones para recopilar mensajes de registro del
software que se ejecuta en el sistema Linux y dirigir esos mensajes a archivos de registro locales, dispositivos
o hosts de registro remotos. La configuración de rsyslog es similar a la configuración de su predecesor, syslog.
Sin embargo, rsyslog le permite agregar módulos para administrar y dirigir los mensajes de registro de manera
más específica.
En versiones recientes de Red Hat Enterprise Linux y Fedora, la función rsyslog aprovecha los mensajes
que se recopilan y almacenan en el diario systemd. Para mostrar los mensajes de registro del diario
directamente desde el diario systemd, en lugar de verlos desde archivos en el directorio /var/log, use el
comando journalctl.
Habilitación del registro del sistema con rsyslog La mayoría
de los archivos en el directorio /var/log se completan con mensajes de registro dirigidos a ellos desde el
servicio rsyslog. El demonio rsyslogd es el demonio de registro del sistema. Acepta mensajes de registro de una
variedad de otros programas y los escribe en los archivos de registro apropiados. Esto es mejor que hacer que
cada programa escriba directamente en su propio archivo de registro porque le permite administrar de forma
centralizada cómo se manejan los archivos de registro.
Es posible configurar rsyslogd para registrar distintos niveles de detalle en los archivos de registro. Se le puede
indicar que ignore todos los mensajes, excepto los más críticos, o puede registrar todos los detalles.
326
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
El demonio rsyslogd puede incluso aceptar mensajes de otras computadoras en su red.
Esta característica de registro remoto es particularmente útil porque le permite centralizar la administración y
revisión de los archivos de registro de muchos sistemas en su red. También hay un importante beneficio de
seguridad en esta práctica.
Con el registro remoto, si se interrumpe un sistema en su red, el cracker no puede eliminar ni modificar los
archivos de registro porque esos archivos se almacenan en una computadora separada. Sin embargo, es
importante recordar que esos mensajes de registro no están cifrados de manera predeterminada (aunque se
puede habilitar el cifrado). Cualquiera que acceda a su red local puede espiar esos mensajes a medida que
pasan de una máquina a otra. Además, aunque es posible que los piratas informáticos no puedan cambiar las
entradas de registro antiguas, pueden afectar el sistema de tal manera que no se debe confiar en los nuevos
mensajes de registro.
Ejecutar un host de registro dedicado, una computadora que no tiene otro propósito que registrar mensajes de
registro de otras computadoras en la red, no es raro. Debido a que este sistema no ejecuta otros servicios, es
poco probable que sea violado. Esto hace que sea casi imposible para los crackers borrar sus huellas por
completo.
Comprender el archivo rsyslog.conf El
archivo /etc/rsyslog.conf es el archivo de configuración principal para el servicio rsyslog.
En el archivo /etc/rsyslog.conf, una sección de módulos le permite incluir o no funciones específicas en su servicio
rsyslog. El siguiente es un ejemplo de la sección de módulos de /etc/rsyslog.conf en RHEL 8:
13
módulo(cargar="imuxsock"
# brinda soporte para el registro del sistema local (por ejemplo, a través del comando logger)
SysSock.Use="off") # Desactiva la recepción de mensajes a través del socket de registro local;
# mensajes locales se recuperan a través de imjournal ahora.
module(load="imjournal" # proporciona
acceso al diario systemd StateFile="imjournal.state") # Archivo
para almacenar la posición en el diario #module(load="imklog")
# lee los mensajes del núcleo (los mismos se leen desde journald)
#módulo(cargar="marcar")
# proporciona la capacidad de mensajes MARK
# Proporciona recepción de syslog UDP # para
ver los parámetros, consulte http://www.rsyslog.com/doc/imudp.html #module(load="imudp")
# debe hacerse solo una vez #input(type="imudp" port= "514")
# Proporciona recepción de syslog TCP # para
ver los parámetros, consulte http://www.rsyslog.com/doc/imtcp.html #module(load="imtcp") #
debe hacerse solo una vez #input(type="imtcp" port= "514")
Las entradas que comienzan con module(load= cargan los módulos que siguen. Los módulos que actualmente
están deshabilitados están precedidos por un signo de almohadilla (#). El módulo imjournal permite que rsyslog
327
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
acceder al diario systemd. Se necesita el módulo imuxsock para aceptar mensajes del sistema local. (No debe
comentarse, precedido por un signo de almohadilla, a menos que tenga una razón específica para hacerlo). El módulo
imklog registra los mensajes del kernel.
Los módulos que no están habilitados de forma predeterminada incluyen el módulo immark, que permite registrar
mensajes MARK (utilizados para indicar que un servicio está activo). Los módulos imudp e imtcp y las entradas de
número de puerto relacionadas se usan para permitir que el servicio rsyslog acepte mensajes de registro remoto y se
analizan con más detalle en la sección "Configuración y uso de un host de registro con rsyslogd" más adelante en este
capítulo.
La mayor parte del trabajo realizado en el archivo de configuración /etc/rsyslog.conf implica modificar la sección
REGLAS. El siguiente es un ejemplo de algunas de las reglas en la sección REGLAS del archivo /etc/rsyslog.conf
(tenga en cuenta que en Ubuntu, debe buscar en el directorio /etc/rsyslog.d esta información de configuración) :
#### NORMAS ####
# Registrar todos los mensajes del kernel en la consola.
# Registrar mucho más abarrota la pantalla.
#kern.* # Registra cualquier cosa (excepto el correo) de información de
/dev/console
nivel o superior.
# ¡No registres mensajes de autenticación privados!
*.info;mail.none;authpriv.none;cron.none # El archivo authpriv /var/registro/mensajes
tiene acceso restringido. authpriv.* # Registrar todos los mensajes
de correo en un solo lugar. correo.* /var/registro/seguro
/var/log/maillog
# Registrar cosas de
cron cron.* /var/registro/cron
Las entradas de reglas vienen en dos columnas. En la columna de la izquierda hay designaciones de los mensajes
que coinciden; la columna de la derecha muestra dónde van los mensajes coincidentes. Los mensajes se comparan
según la instalación (correo, cron, kern, etc.) y la prioridad (desde depuración, información, aviso y hasta crit, alerta y
emergencia), separados por un punto (.). Por lo tanto, mail.info coincide con todos los mensajes del servicio de correo
que tienen un nivel de información y superior.
En cuanto a dónde van los mensajes, la mayoría de los mensajes se dirigen a archivos en el directorio /var/log. Sin
embargo, puede enviar mensajes directos a un dispositivo (como /dev/console) o a un host de registro remoto (como
@ loghost.example.com). El signo de arroba (@) indica que el nombre que sigue es el nombre del host de registro.
De manera predeterminada, el registro se realiza solo en archivos locales en el directorio /var/log. Sin embargo, si
quita el comentario de la entrada kern.*, puede dirigir fácilmente los mensajes del kernel de todos los niveles a la
pantalla de la consola de su computadora.
La primera entrada de trabajo en el ejemplo anterior muestra que los mensajes de nivel de información de todos
los servicios (*) coinciden con esa regla, con la excepción de los mensajes de correo,
328
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
servicios authpriv y cron (que se excluyen con la palabra ninguno). Todos los mensajes coincidentes
se dirigen al archivo /var/log/messages.
Los servicios de correo, authpriv (mensajes de autenticación) y cron (mensajes de instalación cron) tienen
cada uno sus propios archivos de registro, como se enumeran en las columnas a su derecha. Para
comprender el formato de esos y otros archivos de registro, a continuación se describe el formato del archivo /
var/log/messages.
Comprensión del archivo de registro de
mensajes Debido a la gran cantidad de programas y servicios que registran información en el archivo de
registro de mensajes, es importante comprender el formato de este archivo. Puede obtener una buena
advertencia temprana de los problemas que se desarrollan en su sistema examinando este archivo. Cada línea
del archivo es un único mensaje grabado por algún programa o servicio. Aquí hay un fragmento de un archivo
de registro de mensajes real:
25 de febrero 11:04:32 red de juguetes: apertura de bucle invertido: éxito 25 de febrero
11:04:35 red de juguetes: apertura de interfaz eth0: éxito 25 de febrero 13:01:14 juguetes
vsftpd(pam_unix)[10565]: error de autenticación; nombre de registro = uid = 0 euid = 0 tty = ruser
= rhost = 10.0.0.5 usuario = chris
25 de febrero 14:44:24 juguetes su(pam_unix)[11439]: sesión abierta para
usuario raíz por chris (uid = 500)
El formato de mensaje predeterminado en el archivo /var/log/messages se divide en cinco partes
principales. Este formato está determinado por la siguiente entrada en el archivo /etc/rsyslog.conf: 13
módulo (carga = "integrado: omfile" Plantilla = "RSYSLOG_TraditionalFileFormat")
Cuando ve mensajes en archivos del directorio /var/log, de izquierda a derecha, las partes del mensaje son las
siguientes:
■ La fecha y la hora en que se registró el mensaje ■ El nombre
de la computadora de donde proviene el mensaje ■ El nombre del
programa o servicio al que pertenece el mensaje ■ El número de proceso
(entre corchetes) del programa que envía
el mensaje ■
El mensaje de texto real
Eche otro vistazo al fragmento de archivo anterior. En las dos primeras líneas, puede ver que la red se reinició.
La siguiente línea muestra que el usuario llamado chris intentó sin éxito acceder al servidor FTP en este sistema
desde una computadora en la dirección 10.0.0.5. (Escribió la contraseña incorrecta y la autenticación falló). La
última línea muestra a Chris usando el comando su para convertirse en usuario root.
Si revisa ocasionalmente los mensajes y los archivos seguros, podría detectar un intento de descifrado
antes de que tenga éxito. Si ve una cantidad excesiva de intentos de conexión para un servicio en particular,
especialmente si provienen de sistemas en Internet, es posible que esté bajo ataque.
329
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Configuración y uso de un host de registro con
' '
rsyslogd Para redirigir los cambios de
s archivos su
registro a otra computadora s rsyslogd, debe hacer
de
computadora al archivo de configuración de rsyslog local y remoto, /etc/rsyslog.conf.
Conviértase en root usando el comando su – y luego abra el archivo /etc/rsyslog.conf en un editor
de texto (como vi).
Del lado del cliente
Para enviar los mensajes a otra computadora (el servidor de registro) en lugar de un archivo, comience por
reemplazar el nombre del archivo de registro con el carácter @ seguido del nombre del servidor de registro. Por
ejemplo, para dirigir la salida de los mensajes que se envían a los archivos de registro de mensajes, seguros y de
registro de correo también a un host de registro, agregue las líneas en negrita al archivo de mensajes:
# Registre cualquier cosa (excepto el correo) de información de nivel o superior.
# ¡No registres mensajes de autenticación privados!
*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
*.info;mail.none;news.none;authpriv.none;cron.none @loghost # El archivo authpriv tiene acceso
restringido. /var/log/secure authpriv.* authpriv.* @loghost # Registrar todos los mensajes de correo
en un solo lugar. correo.*
/var/log/maillog @loghost
correo.*
Los mensajes ahora se envían al rsyslogd que se ejecuta en la computadora llamada loghost. El
nombre loghost no fue una elección arbitraria. Es habitual crear un nombre de host de este tipo y
convertirlo en un alias para el sistema real que actúa como loghost. De esa manera, si alguna vez
necesita cambiar las funciones de loghost a una máquina diferente, solo necesita cambiar el alias de
loghost; no necesita volver a editar el archivo syslog.conf en cada computadora.
Del lado del host
de registro El host de registro configurado para aceptar los mensajes debe escuchar esos mensajes
en puertos estándar (514 UDP, aunque también se puede configurar para aceptar mensajes en 514
TCP). Así es como configuraría el host de registro de Linux que también ejecuta el servicio rsyslog:
■ Edite el archivo /etc/rsyslog.conf en el sistema loghost y elimine los comentarios de las líneas que permiten
que el demonio rsyslogd escuche los mensajes de registro remotos. Descomente las dos primeras líneas
para habilitar los mensajes de registro UDP entrantes en el puerto 514 (predeterminado); elimine el
comentario de las dos líneas posteriores para permitir los mensajes que usan el protocolo TCP (también el
puerto 514):
module(load="imudp") # debe realizarse solo una vez input(type="imudp"
port="514") module(load="imtcp") # debe realizarse solo una vez
input(type="imtcp" puerto="514")
330
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
■ Abra su cortafuegos para permitir que los mensajes nuevos se dirijan a su servidor de registro.
tener 25 (Consulte el capítulo "Seguridad de Linux en una red" para obtener una descripción de cómo abrir
puertos para permitir el acceso a su sistema.)
■ Reinicie el servicio rsyslog (service rsyslog restart o systemctl restart rsyslog.service).
■ Si el servicio se está ejecutando, debería poder ver que el servicio está escuchando en los puertos
que habilitó (puertos UDP y/o TCP 514). Ejecute el comando netstat de la siguiente manera para ver
que el demonio rsyslogd está escuchando en los puertos IPv4 e IPv6 514 para los servicios UDP y
TCP:
# netstattupln | grep 514 tcp tcp udp
udp 0 0 0.0.0.0:514 0.0.0.0:* ESCUCHAR 25341/rsyslogd
0 0 :::514 :::* ESCUCHAR 25341/rsyslogd
0 0 0.0.0.0:514 0.0.0.0:* 25341/rsyslogd
0 0 :::514 :::* 25341/rsyslogd
Ver registros con logwatch El servicio logwatch
se ejecuta en la mayoría de los sistemas Linux que realizan registros del sistema con rsyslog.
Debido a que los registros en sistemas ocupados pueden llegar a ser muy grandes con el tiempo, no pasa
mucho tiempo antes de que haya demasiados mensajes para que un administrador del sistema vea cada mensaje
en cada registro. Para instalar la función logwatch, ingrese lo siguiente:
# yum instalar logwatch 13
Lo que hace logwatch es recopilar mensajes una vez cada noche que parecen representar un problema,
ponerlos en un mensaje de correo electrónico y enviarlo a cualquier dirección de correo electrónico que elija el
administrador. Para habilitar logwatch, todo lo que tiene que hacer es instalar el paquete logwatch.
El servicio logwatch se ejecuta desde un trabajo cron ( 0logwatch) ubicado en /etc/cron.daily.
El archivo /etc/logwatch/conf/logwatch.conf contiene la configuración local. Las opciones predeterminadas
utilizadas para recopilar mensajes de registro se establecen en el archivo /usr/share/logwatch/default.conf/log
watch.conf.
Algunas de las configuraciones predeterminadas definen la ubicación de los archivos de registro (/var/log),
la ubicación del directorio temporal (/var/cache/logwatch) y el destinatario del correo electrónico diario de
logwatch (el usuario raíz local). A menos que espere iniciar sesión en el servidor para leer los mensajes de
logwatch, probablemente desee cambiar la configuración de MailTo en el archivo /etc/logwatch/conf/logwatch.conf:
MailTo = chris@ejemplo.com
Busque en /usr/share/logwatch/default.conf/logwatch.conf otras configuraciones para cambiar (como el nivel de
detalle o el rango de tiempo para cada informe). Luego haga sus adiciones a /etc/logwatch/conf/logwatch.conf
como se mencionó.
331
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Cuando el servicio está habilitado (que es solo al instalar el paquete logwatch), verá un mensaje cada noche en el buzón del
usuario raíz. Cuando inicia sesión como root, puede usar el antiguo comando de correo para ver el buzón de correo del
usuario root:
# mail
Heirloom Mail versión 12.5 7/5/10. Tipo ? por ayuda "/var/spool/mail/root": 2 mensajes 2
nuevos >N 1 logwatch@abc.ex dom 15 de febrero 04:02 45/664 "Logwatch for abc" 2
logwatch@abc.ex lun 16 de febrero 04:02 45 /664 "Logwatch para abc"
& 1
& x
En el correo, debería ver los mensajes de correo electrónico de logwatch ejecutados todos los días (aquí a las 4:02 a. m.).
Escriba el número del mensaje que desea ver y recorra las páginas con la barra espaciadora o línea por línea presionando
Intro. Escriba x para salir cuando haya terminado.
El tipo de información que ve incluye errores del kernel, paquetes instalados, fallas de autenticación y servicios que
funcionan mal. Se informa el uso del espacio en disco, para que pueda ver si su almacenamiento se está llenando.
Con solo echar un vistazo a este mensaje de logwatch, debería tener una idea de si se están produciendo ataques
sostenidos o si se están produciendo fallas repetidas.
Comprobación de los recursos del sistema con sar
System Activity Reporter (sar) es una de las instalaciones de monitoreo de sistemas más antiguas creadas para los primeros
sistemas UNIX, anterior a Linux por algunas décadas. El comando sar en sí mismo puede mostrar la actividad del sistema
continuamente, a intervalos establecidos (cada segundo o dos) y mostrarla en la pantalla. También puede mostrar datos de
actividad del sistema que se recopilaron anteriormente.
El comando sar es parte del paquete sysstat. Cuando instala sysstat y habilita el servicio sysstat, su sistema inmediatamente
comienza a recopilar datos de actividad del sistema que se pueden revisar más tarde usando ciertas opciones para el
comando sar.
# systemclt habilitar sysstat # systemctl iniciar
sysstat
Para leer los datos en /var/log/sa/sa?? archivos, puede usar algunos de los siguientes comandos sar:
# sar u | menos Linux
5.3.8200.fc30.x86_64 (fedora30host) 28/11/2019 _x86_64_ (1 CPU)
23:27:46 REINICIO LINUX (1 CPU)
332
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
La opción u muestra el uso de la CPU. De forma predeterminada, la salida comienza a la medianoche del día
actual y luego muestra cuánto tiempo de procesamiento consumen las diferentes partes del sistema. La salida
continúa mostrando la actividad cada 10 minutos hasta que se alcanza la hora actual.
Para ver el resultado de la actividad del disco, ejecute el comando sar d. Nuevamente, la salida viene en intervalos
de 10 minutos a partir de la medianoche.
# sard | menos Linux
5.3.8200.fc30.x86_64 (fedora30host) 28/11/2019 _x86_64_ (1 CPU)
23:27:46 REINICIO LINUX (1 CPU)
Si desea ejecutar informes de actividad sar en vivo, puede hacerlo agregando conteos e intervalos de tiempo a la
línea de comando, como se muestra aquí:
# sar n DEV 5 2 Linux
13
5.3.8200.fc30.x86_64 (fedora30host) 28/11/2019 _x86_64_ (1 CPU)
23:19:36 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s... lo
23:19:41 5.42 5.42 1.06 1.06 0.00 0.00...
23:19:41 ens3 0.00 0.00 0.00 0.00 0.00 0.00...
...
Media: IFACE rxpck/s txpck/s rxkB/s txkB/ rxcmp/s txcmp/s rxmcst/s
Promedio: lo 7.21 7,21 1,42 1,42 0.00 0.00 0.00
Promedio: ens3 0.00 0,00 0,00 0,00 0.00 0.00 0.00
Promedio: wlan0 4.70 4,00 4,81 0,63 0.00 0.00 0.00
Con el ejemplo de n Dev que se acaba de mostrar, puede ver cuánta actividad se produjo en las diferentes interfaces
de red de su sistema. Puede ver cuántos paquetes se transmitieron y recibieron y cuántos KB de datos se transmitieron
y recibieron. En ese ejemplo, se tomaron muestras de datos cada 5 segundos y se repitieron dos veces.
Consulte las páginas man de sar, sadc, sa1 y sa2 para obtener más información sobre cómo se pueden recopilar y
mostrar los datos de sar.
333
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Comprobación del espacio del sistema
Aunque logwatch puede brindarle una instantánea diaria del consumo de espacio en los discos de su sistema, los
comandos df y du pueden ayudarlo a ver de inmediato cuánto espacio en disco hay disponible. Las siguientes
secciones muestran ejemplos de esos comandos.
Visualización del espacio del sistema con df Puede
visualizar el espacio disponible en sus sistemas de archivos usando el comando df. Para ver la cantidad de espacio
disponible en todos los sistemas de archivos montados en su computadora Linux, escriba df sin opciones:
$ df
Sistema de archivos 1k Usado Disponible Uso % Montado en
blocks /dev/sda3 /dev/sda2
30645460 2958356 26130408 11% / 35919 19% /bota
46668 8340
...
Este resultado de ejemplo muestra el espacio disponible en la partición del disco duro montada en el directorio / (raíz)
(/dev/sda1) y la partición /boot (/dev/sda2). El espacio en disco se muestra en bloques de 1 KB. Para producir una
salida en una forma más legible por humanos, use la opción h:
$ dfh
Sistema de Tamaño utilizado % de uso disponible Montado en
archivos /dev/ 29G 2,9G 24G 11% /
sda3 /dev/sda2 46m por 8,2m 25M 19% /arranque
...
Con la opción df h, la salida aparece en una lista de megabytes o gigabytes más amigable. Otras opciones con df le
permiten hacer lo siguiente:
■ Imprimir sólo sistemas de archivos de un tipo particular (tipo t). ■ Excluir
sistemas de archivos de un tipo particular (tipo x). Por ejemplo, escriba df x
tmpfs x devtmpfs para excluir tipos de sistemas de archivos temporales (limitando la salida a sistemas de
archivos que representan áreas de almacenamiento reales).
■ Incluya sistemas de archivos que no tengan espacio, como /proc y /dev/pts (a). ■ Muestra solo los
inodos disponibles y usados (i). ■ Muestra el espacio en disco en determinados tamaños de bloque (
blocksize=#).
Comprobación del uso del disco con du Para
saber cuánto espacio está consumiendo un directorio en particular (y sus subdirectorios), use el comando du. Sin
opciones, du enumera todos los directorios debajo del directorio actual, junto con el espacio consumido por cada
directorio. Al final, du produce el espacio total en disco utilizado dentro de esa estructura de directorios.
El comando du es una buena manera de verificar cuánto espacio está utilizando un usuario en particular (du /home/
jake) o en una partición particular del sistema de archivos (du /var). De forma predeterminada, el espacio en disco
334
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
se muestra en tamaños de bloque de 1 KB. Para que la salida sea más amigable (en kilobytes, megabytes y
gigabytes), use la opción h de la siguiente manera:
$ du h /home/jake /home/
httpd /home/jake/uucp/data /home/jake/uucp /
jake/httpd/stuff 114k /home/jake/
234k home/jake
137k
701k
1.0M
El resultado muestra el espacio en disco utilizado en cada directorio bajo el directorio de inicio del
usuario llamado jake (/home/jake). El espacio en disco consumido se muestra en kilobytes (k) y
megabytes (M). El espacio total consumido por /home/jake se muestra en la última línea. Agregue la
opción –s para ver el espacio total en disco utilizado para un directorio y sus subdirectorios.
Encontrar el consumo de disco con fi nd El comando find
es una excelente manera de encontrar el consumo de archivos de su disco duro usando una variedad de
criterios. Puede hacerse una buena idea de dónde se puede recuperar el espacio del disco encontrando archivos
que superen un cierto tamaño o que hayan sido creados por una persona en particular.
NOTA
Debe ser el usuario raíz para ejecutar este comando de manera efectiva, a menos que solo esté revisando sus archivos personales.
Si no es el usuario raíz, hay muchos lugares en el sistema de archivos para los que no tiene permiso para verificar. Los usuarios habituales 13
normalmente pueden consultar sus propios directorios de inicio, pero no los de los demás.
En el siguiente ejemplo, el comando de búsqueda busca en el sistema de archivos raíz (/) cualquier
archivo propiedad del usuario llamado jake (user jake) e imprime los nombres de archivo. La salida
del comando de búsqueda está organizada en una lista larga en orden de tamaño (ls ldS). Finalmente,
esa salida se envía al archivo /tmp/jake. Cuando vea el archivo /tmp/jake (por ejemplo, menos /tmp/
jake), encontrará todos los archivos que pertenecen al usuario jake enumerados en orden de tamaño.
Aquí está la línea de comando:
# encontrar / xdev usuario jake imprimir | xargs ls ldS > /tmp/jake
SUGERENCIA La opción xdev evita que se busquen sistemas de archivos distintos al sistema de archivos seleccionado. Esta es una buena manera
de eliminar mucha basura que puede salir del sistema de archivos /proc. También puede evitar que se realicen búsquedas en sistemas de archivos
grandes montados de forma remota.
# encontrar / xdev tamaño +100M | xargs ls ldS > /tmp/tamaño
335
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Puede ahorrar mucho espacio en disco simplemente eliminando algunos de los archivos más grandes que ya no
necesita. En este ejemplo, puede ver que los archivos grandes se ordenan por tamaño en el archivo /tmp/size.
Administración de servidores en la empresa
La mayor parte de la configuración del servidor cubierta en este libro describe cómo instalar sistemas manualmente
y trabajar directamente en las computadoras host. Tener que configurar cada host individualmente sería demasiado
ineficiente para los centros de datos modernos que consisten en docenas, cientos o incluso miles de computadoras.
Para que el proceso de configuración de servidores Linux en un gran centro de datos sea más eficiente, se emplean
algunos de los siguientes:
Implementaciones automatizadas Una forma de instalar sistemas sin tener que pasar por un proceso de
instalación manual es con el arranque PXE. Al configurar un servidor PXE e iniciar una computadora en
esa red desde una tarjeta de interfaz de red habilitada para PXE, puede iniciar una instalación completa de
ese sistema simplemente iniciando el sistema. Una vez finalizada la instalación, el sistema puede reiniciarse
para ejecutarse desde el sistema instalado.
Sistemas de host genéricos Al hacer que sus sistemas de host sean lo más genéricos posible, la instalación,
la configuración y las actualizaciones individuales se pueden simplificar en gran medida. Esto se puede
automatizar en capas, donde el sistema base se instala mediante el arranque PXE, la configuración se
realiza a través de funciones como cloudint y las aplicaciones pueden traer consigo sus propias
dependencias cuando se ejecutan. En el nivel de la aplicación, esto se puede hacer ejecutando una
aplicación desde dentro de una máquina virtual o contenedor. Cuando la aplicación termina de ejecutarse,
se puede descartar sin dejar su software dependiente en el host.
Separación de los sistemas de administración y de trabajo En lugar de administrar individualmente los
sistemas host, una plataforma separada puede ofrecer una forma de administrar grandes conjuntos de sistemas.
Para hacer esto, una plataforma como OpenStack u OpenShift puede tener nodos de administración (en
algunos casos llamados plano de control o nodos maestros) que administren las máquinas donde realmente
se ejecuta la carga de trabajo (a veces llamados trabajadores, esclavos o simplemente nodos). Esta
separación de tareas por tipo de host hace posible implementar aplicaciones en cualquier trabajador
disponible que satisfaga las necesidades de la aplicación (como memoria disponible o CPU).
Tenga en cuenta que comprender cómo se configuran las aplicaciones individuales y cómo se ejecutan los
servicios sigue siendo la base de estas formas más avanzadas de administrar los recursos del centro de datos.
Aunque la cobertura en profundidad de las herramientas de monitoreo e implementación empresarial está fuera
del alcance de este libro, consulte la Parte VI, "Compromiso con la computación en la nube", para obtener una
introducción sobre cómo las diferentes plataformas en la nube basadas en Linux manejan estos problemas.
Resumen
Aunque hay muchos tipos diferentes de servidores disponibles con los sistemas Linux, el procedimiento básico
para instalar y configurar un servidor es esencialmente el mismo. el curso habitual
336
Machine Translated by Google
Capítulo 13: Descripción de la administración del servidor
de eventos es instalar, configurar, iniciar, asegurar y monitorear sus servidores. Las tareas básicas que se aplican a
todos los servidores incluyen el uso de herramientas de red (particularmente herramientas SSH) para iniciar sesión,
copiar archivos o ejecutar comandos remotos.
'
Porque un administrador puede Para iniciar sesión observando los servidores todo el tiempo, las
herramientas para recopilar datos y revisar los datos de registro más tarde son muy importantes cuando se
administran servidores Linux. La función rsyslog se puede utilizar para el registro local y remoto. La instalación
sar recopila datos en vivo o reproduce datos recopilados anteriormente en intervalos de 10 minutos. Cockpit le
permite ver la actividad de la CPU, la memoria, el disco y la red en vivo desde una interfaz de usuario web.
Para ver el espacio en disco, puede ejecutar los comandos df y du.
Las habilidades descritas en este capítulo están diseñadas para ayudarlo a construir una base para
realizar una administración de sistemas de calidad empresarial en el futuro. Si bien estas habilidades son
útiles, para administrar muchos sistemas Linux al mismo tiempo, debe ampliar sus habilidades mediante el uso
de herramientas de monitoreo e implementación automatizadas, como se describe en la sección de computación
en la nube de este libro.
Si bien es fácil configurar la red para llegar a sus servidores en casos simples y predeterminados, la
configuración de red más compleja requiere un conocimiento de los archivos de configuración de red y las
herramientas relacionadas. El siguiente capítulo describe cómo configurar y administrar el trabajo en red en
Linux.
Ejercicios 13
Los ejercicios de esta sección cubren algunas de las herramientas básicas para conectarse y vigilar sus
servidores Linux. Como de costumbre, puede realizar las tareas aquí de varias maneras. Por lo tanto, no se
preocupe si no
obtenga realiza
los los
mismos reesultados.
jercicios
B. dSe
la
i misma
está manera
atascado, que
las se muestra
soluciones en
a las las respuestas,
tareas siempre
se muestran que
en el A péndice
Algunos de los ejercicios asumen que tiene un segundo sistema Linux disponible en el que puede iniciar sesión
y probar diferentes comandos. En ese segundo sistema, debe asegurarse de que el servicio sshd se esté
ejecutando, que el cortafuegos esté abierto y que ssh esté permitido para la cuenta de usuario en la que está
intentando iniciar sesión (la raíz suele estar bloqueada por sshd).
Si solo tiene un sistema Linux, puede crear una cuenta de usuario adicional y simplemente simular
comunicaciones con otro sistema conectándose al nombre localhost, como se muestra en este ejemplo:
# useradd joe #
passwd joe # ssh
joe@localhost
1. Usando el comando ssh, inicie sesión en otra computadora (o la computadora local) usando cualquier
cuenta a la que tenga acceso. Introduzca la contraseña cuando se le solicite.
2. Usando la ejecución remota con el comando ssh, muestre el contenido de un archivo /etc/system
release remoto y muestre su contenido en el sistema local.
337
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
3. Use el comando ssh para usar el reenvío X11 para mostrar una ventana de gedit en su directorio
sistema local; luego guarde un archivo en el usuario remoto 'de inicio.
4. Copie recursivamente todos los archivos del directorio /usr/share/selinux en un sistema remoto
al directorio /tmp en su sistema local de tal manera que todos los tiempos de modificación en
los archivos se actualicen al hora en el sistema local cuando se copian.
5. Copie recursivamente todos los archivos del directorio /usr/share/logwatch en un
sistema remoto al directorio /tmp en su sistema local de tal manera que todos los tiempos de modificación
en los archivos del sistema remoto se mantienen en el sistema local.
6. Cree un par de claves pública/privada para usar en comunicaciones SSH (sin contraseña en la
'
la clave), copie el archivo de clave pública a un usuario remoto cuenta con sshcopyid,
y use la autenticación basada en claves para iniciar sesión en esa cuenta de usuario sin tener que
ingresar una contraseña.
7. Cree una entrada en /etc/rsyslog.conf que almacene todos los mensajes de autenticación
(authpriv) nivel de información y superior en un archivo llamado /var/log/myauth. Desde una terminal,
mire el archivo a medida que ingresan los datos, y en otra terminal, intente ingresar a su máquina local
como cualquier usuario válido con una contraseña incorrecta.
8. Use el comando du para determinar las estructuras de directorio más grandes en /usr/
compartir, ordenarlos de mayor a menor y enumerar los diez primeros de esos directorios en términos
de tamaño.
9. Use el comando df para mostrar el espacio que se usa y está disponible de todos los
sistemas de archivos adjuntos actualmente al sistema local, pero excluye cualquier sistema de archivos
tmpfs o devt mpfs.
10. Busque cualquier archivo en el directorio /usr que tenga más de 10 MB de tamaño.
338
Machine Translated by Google
CAPÍTULO S
Administración de redes
EN ESTE CAPÍTULO
Conexión automática de Linux a una red
Uso de NetworkManager para una conectividad de red sencilla
Configuración de redes desde la línea de comandos
Trabajar con archivos de configuración de red
Configuración de enrutamiento, DHCP, DNS y otras funciones de infraestructura de red para la empresa
a Internet, se ha vuelto tan fácil que he pospuesto escribir un capítulo completo sobre el trabajo
Conectar
en ured
n solo
de Lsistema de escritorio
inux hasta ahora. Soi
e
computadora pdortátil
stá tratando a una rsed,
e conectar u Fpedora,
articularmente
uno
RHEL, U que us e
buntu conecta
otro
sistema
de escritorio Linux a Internet, esto es lo o
que
inalámbrica:
puede intentar dada una interfaz de red disponible con cable
Red alámbrica Si su hogar u oficina tiene un puerto Ethernet alámbrico que proporciona una ruta a
Internet y su computadora tiene un puerto Ethernet, use un cable Ethernet para conectar los dos
puertos. Después de encender su computadora, inicie Linux e inicie sesión. Al hacer clic en el ícono
de administrador de NetworkMan en el escritorio, debería mostrarle que está conectado a Internet
o permitirle conectarse con un solo clic.
Red inalámbrica Para una computadora inalámbrica que ejecuta Linux, inicie sesión y haga clic en NetworkMan
icono de edad en el escritorio. De la lista de redes inalámbricas que aparecen, seleccione la que
desee y, cuando se le solicite, ingrese la contraseña requerida. Cada vez que inicia sesión desde esa
computadora desde la misma ubicación, automáticamente se conecta a esa red inalámbrica.
Si cualquiera de esos tipos de conexiones de red funciona para usted y no tiene curiosidad sobre cómo
funcionan las redes en Linux, eso puede ser todo lo que necesita saber. Sin embargo, ¿qué sucede si su
sistema Linux no se conecta
para hablar
automáticamente
con una red p
arivada
Internet?
en e¿l
Qué
trabajo
sucede
(VPN)?
si d¿
esea
Qué
csonfigurar
ucede si sdu
esea
escritorio
bloquear la
configuración de red en su servidor o configurar su sistema Linux para que funcione como un enrutador?
339
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En este capítulo, los temas relacionados con las redes se dividen en redes para equipos de
escritorio, servidores y computación empresarial. El enfoque general para configurar la red en estos
tres tipos de sistemas Linux es el siguiente:
Redes de escritorio/portátil En sistemas de escritorio o portátiles, NetworkManager se ejecuta de manera predeterminada
para administrar las interfaces de red. Con NetworkManager, puede aceptar automáticamente la dirección y la
información del servidor que necesita para conectarse a Internet. Sin embargo, también puede configurar la
información de la dirección manualmente. Puede configurar cosas como servidores proxy o conexiones de red
privada virtual para permitir que su escritorio funcione detrás del cortafuegos de una organización o para conectarse
a través de un cortafuegos, respectivamente.
Redes de servidor Aunque NetworkManager originalmente funcionaba mejor en configuraciones de red de computadoras
de escritorio y portátiles, ahora funciona extremadamente bien en servidores. Actualmente, las funciones que son
útiles para configurar servidores, como la vinculación de canales Ethernet y la configuración de alias, se pueden
encontrar en NetworkManager.
Redes empresariales Explicar cómo configurar las redes en una gran empresa puede llenar varios volúmenes. Sin
embargo, para darle una ventaja inicial en el uso de Linux en un entorno empresarial, analizo las tecnologías de red
básicas, como los servidores DHCP y DNS, que hacen posible que los sistemas de escritorio se conecten
automáticamente a Internet y encuentren sistemas basados en nombres y no en servidores. solo direcciones IP.
Configuración de redes para escritorios
Ya sea que se conecte a Internet desde Linux, Windows, un teléfono inteligente o cualquier otro tipo de dispositivo
habilitado para red, debe haber ciertas cosas en su lugar para que la conexión funcione. La computadora debe tener
una interfaz de red (alámbrica o inalámbrica), una dirección IP, un servidor DNS asignado y una ruta a Internet (identificada
por un dispositivo de puerta de enlace).
Antes de discutir cómo cambiar su configuración de red en Linux, veamos las actividades generales que ocurren cuando
Linux está configurado para conectarse a Internet automáticamente con NetworkManager:
Activar interfaces de red NetworkManager busca qué interfaces de red (alámbricas o inalámbricas) están configuradas
para iniciarse. De forma predeterminada, las interfaces externas generalmente están configuradas para iniciarse
automáticamente mediante DHCP, aunque en su lugar se pueden configurar nombres y direcciones estáticas en el
momento de la instalación.
Solicitar servicio DHCP El sistema Linux actúa como un cliente DHCP para enviar una solicitud de servicio DHCP en
cada interfaz habilitada. Utiliza la dirección MAC de la interfaz de red para identificarse en la solicitud.
Obtener respuesta del servidor DHCP Un servidor DHCP, posiblemente ejecutándose en una red inalámbrica
enrutador, cable módem u otro dispositivo que proporciona una ruta a Internet desde su ubicación, responde a
la solicitud de DHCP. Puede proporcionar muchos tipos diferentes de información al cliente DHCP. Esa
información probablemente contiene al menos lo siguiente:
340
Machine Translated by Google
Capítulo 14: Administración de redes
Dirección IP El servidor DHCP normalmente tiene un rango de Protocolo de Internet (IP)
direcciones que puede entregar a cualquier sistema en la red que solicite una dirección. En
entornos más seguros, o uno en el que desea asegurarse de que máquinas específicas obtengan
direcciones específicas, el servidor DHCP proporciona una dirección IP específica a las solicitudes
de direcciones MAC específicas. (Las direcciones MAC están diseñadas para ser únicas entre
todas las tarjetas de interfaz de red y las asigna el fabricante de cada tarjeta).
Máscara de subred Cuando al cliente DHCP se le asigna una dirección IP, la máscara de subred
adjunta le dice a ese cliente qué parte de la dirección IP identifica el trabajo de subred y cuál
identifica al host. Por ejemplo, una dirección IP de 192.168.0.100 y una máscara de subred de
255.255.255.0 le indican al cliente que la red es 192.168.0 y la parte del host es 100.
Tiempo de concesión Cuando una dirección IP se asigna dinámicamente al cliente DHCP (sistema
Linux), a ese cliente se le asigna un tiempo de concesión. El cliente no posee
debe
esa
vdolver
irección,
a arrendarla
pero
cuando expire el tiempo y solicitarla nuevamente cuando se reinicie la interfaz de red. Por lo
general, el servidor DHCP recuerda al cliente y asigna la misma dirección cuando el sistema se
inicia nuevamente o solicita renovar el contrato de arrendamiento. El tiempo de concesión
predeterminado suele ser de 86 400 segundos (24 horas) para las direcciones IPV4. Las direcciones
IPV6 más abundantes se asignan durante 2 592 000 segundos (30 días) de forma predeterminada.
Servidor de nombres de dominio Debido a que a las computadoras les gusta pensar en números
(como direcciones IP como 192.168.0.100) y las personas tienden a pensar en nombres
(como el nombre de host www.example.com), las computadoras necesitan una forma de traducir
los nombres de host en direcciones IP y a veces también lo contrario. El sistema de nombres de
dominio (DNS) fue diseñado para manejar ese problema al proporcionar una jerarquía de
servidores para hacer el mapeo de nombre a dirección en Internet. La ubicación de uno o más
servidores DNS (generalmente dos o tres) generalmente se asigna al cliente DHCP desde el host
DHCP.
Puerta de enlace predeterminada Aunque Internet tiene un espacio de nombres único, en realidad
está organizado como una serie de subredes interconectadas. Para que una solicitud de red
abandone su red local, debe saber qué nodo de su red proporciona una ruta a direcciones fuera
14
de su red local. El servidor DHCP generalmente proporciona la dirección IP de la "puerta de
enlace predeterminada". Al tener interfaces de red tanto en su subred como en la siguiente red
en el camino hacia el destino final de su comunicación, una puerta de enlace puede enrutar sus
paquetes a su destino.
Otra información Se puede configurar un servidor DHCP para proporcionar todo tipo de información
para ayudar al cliente DHCP. Por ejemplo, puede proporcionar la ubicación de un servidor NTP
(para sincronizar la hora entre clientes), servidor de fuentes (para obtener fuentes para su pantalla
X), servidor IRC (para chats en línea) o servidor de impresión (para designar impresoras
disponibles).
341
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Actualizar la configuración de la red local Después de recibir la configuración del servidor DHCP,
se implementa según corresponda en el sistema Linux local. Por ejemplo, la dirección IP se
establece en la interfaz de red, las entradas del servidor DNS se agregan al archivo local /etc/
resolv.conf (mediante NetworkManager) y el sistema local almacena el tiempo de concesión para
que sepa cuándo hacerlo. solicitar que se renueve el contrato de arrendamiento.
Todos los pasos que se acaban de describir normalmente suceden sin que tenga que hacer nada
más que encender su sistema Linux e iniciar sesión. Ahora suponga que desea poder verificar sus
interfaces de red o cambiar algunas de esas configuraciones. Puede hacerlo utilizando las herramientas
descritas en las siguientes secciones.
Comprobación de sus interfaces de red Hay
herramientas gráficas y de línea de comandos para ver información sobre sus interfaces de red en
Linux. Desde el escritorio, las herramientas de NetworkManager y la interfaz de usuario web de Cockpit
son buenos lugares para comenzar.
Comprobación de su red desde NetworkManager La
forma más fácil de comprobar la configuración básica de una interfaz de red es abrir el menú desplegable
en la esquina superior derecha de su escritorio y seleccionar su interfaz de red activa.
La Figura 14.1 muestra la configuración WiFi para una red activa en un escritorio Fedora GNOME 3.
FIGURA 14.1
Comprobación de las interfaces de red con NetworkManager
342
Machine Translated by Google
Capítulo 14: Administración de redes
Como puede ver en la Figura 14.1, , tanto las direcciones IPv4 como las IPv6 se asignan a la interfaz.
la dirección IP 192.168.1.254 ofrece un servicio de DNS y una ruta a redes externas.
Para ver más acerca de cómo está configurado su sistema Linux, haga clic en una de las pestañas en la parte
superior de la ventana. Por ejemplo, la Figura 14.2 muestra la pestaña Seguridad, donde puede seleccionar el
tipo de conexión de seguridad a la red y establecer la contraseña necesaria para conectarse a esa red.
Comprobación de su red desde Cockpit
Siempre que haya habilitado Cockpit, puede ver y cambiar información sobre sus interfaces de red a través
de su navegador web. En su sistema local, abra https://localhost:9090/network para ir directamente a la página
de redes de cabina para su sistema local. La Figura 14.3 muestra un ejemplo de esto.
Desde la página Cockpit Networking, puede ver información sobre todas sus interfaces de red a la vez. En este
caso, hay tres interfaces de red: wlp2s0 (la interfaz inalámbrica activa), enp4s0 (una interfaz cableada inactiva) y
virbr0 (una interfaz inactiva en la red conectada a cualquier máquina virtual que se ejecute en el sistema local).
14
En la parte superior de la página Cockpit Networking, puede ver los datos que se envían y reciben en el sistema
local. Seleccione una interfaz de red para ver una página que muestre actividades para esa interfaz en particular.
Seleccione Firewall para ver la lista de servicios que están permitidos en su sistema. Por ejemplo, la figura
14.4 muestra que los puertos UDP están abiertos para tres servicios (cliente DHCPv6, DNS de multidifusión y
cliente Samba). DHCPv6 permite que el sistema adquiera una dirección IPv6 de la red.
Los servicios Multicast DNS y Samba Client pueden permitir la detección automática de impresoras, sistemas de
archivos compartidos y una variedad de dispositivos y recursos compartidos.
El único servicio TCP que se muestra aquí como abierto es ssh. Con el servicio ssh (puerto TCP 22) abierto,
el servicio sshd que se ejecuta en su sistema local está disponible para que los usuarios remotos inicien sesión
en su sistema local.
343
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
FIGURA 14.3
Ver y cambiar la configuración de red desde Cockpit
344
Machine Translated by Google
Capítulo 14: Administración de redes
El hecho de que esos puertos estén abiertos no significa necesariamente que los servicios se estén ejecutando.
'
Sin embargo, si se están ejecutando, la computadora El firewall de s permitirá el acceso a ellos.
Las funciones más avanzadas disponibles en la página Cockpit Networking le permiten agregar enlaces, equipos,
puentes y VLAN a sus interfaces de red locales.
Comprobación de su red desde la línea de comandos
Para obtener información más detallada sobre sus interfaces de red, intente ejecutar algunos comandos.
Hay comandos que pueden mostrarle información sobre sus interfaces de red, rutas, hosts y tráfico en la red.
Visualización de interfaces de red
Para ver información sobre cada interfaz de red en su sistema Linux local, ingrese lo siguiente:
# ip addr show 1: lo:
<LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state DESCONOCIDO
grupo predeterminado qlen 1000 link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00: 00 inet 127.0.0.1/8 alcance host lo valid_lft para siempre preferido_lft
para siempre inet6 ::1/128 alcance host valid_lft para siempre preferido_lft para
siempre
2: enp4s0: <SIN PORTADORA, DIFUSIÓN, MULTIDIFUSIÓN, ARRIBA> mtu 1500
qdisc fq_codel estado DOWN grupo predeterminado qlen 1000
link/ether 30:85:a9:04:9b:f9 brd ff:ff:ff:ff:ff:ff 3: wlp2s0:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000 link /ether e0:06:e6:83:ac:c7 brd ff:ff:ff:ff:ff:ff inet
192.168.1.83/24 brd 192.168.1.255 alcance dinámica global ruta sin prefijo
wlp2s0 valid_lft 78738sec prefer_lft 78738sec inet6 2600:1700:722 :a10::489/128
alcance dinámica global ruta sin prefijo valid_lft 5529sec prefer_lft 5229sec
14
inet6 fe80::25ff:8129:751b:23e3/64 enlace de alcance ruta sin prefijo
valid_lft forever lft_preferido para siempre 4: virbr0: <SIN
CARRIER,DIFUSIÓN,MULTICAST,ARRIBA> mtu 1500 qdisc noqueue state DOWN
grupo predeterminado qlen 1000 link/ether 52:54:00:0c:69:0a brd ff:ff:ff:
ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 ámbito global virbr0
válido_lft para siempre preferido_lft para siempre
La salida ip addr show muestra información sobre sus interfaces de red, en este caso desde una computadora
portátil que ejecuta Fedora 30. La entrada lo en la primera línea de la salida muestra la interfaz de bucle
invertido, que se utiliza para permitir que los comandos de red se ejecuten en el sistema local.
345
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
para conectarse al sistema local. La dirección IP para localhost es 127.0.0.1/8 (el /8 es notación CIDR,
lo que indica que 127.0 es el número de red y 0.1 es el número de host). Agregue una opción s (ip s
addr show) para ver estadísticas de transmisiones de paquetes y errores asociados con cada interfaz.
En este caso, la interfaz Ethernet cableada (enp4s0) está inactiva (sin cable), pero la interfaz inalámbrica
está activa (wlp2s0). La dirección MAC en la interfaz inalámbrica (wlp2s0) es e0:06:e6:83:ac:c7 y la
dirección de Internet (IPv4) es 192.168.1.83. También se habilita una dirección IPv6.
Las versiones anteriores de Linux se utilizan para asignar nombres de interfaz de red más genéricos,
'
autobús Para
como eth0 y wlan0. Ahora las interfaces se nombran por sus ubicaciones en el ejemplo de la computadora,
el primer puerto en la tarjeta de red asentada en el tercer bus PCI para un sistema Fedora se llama p3p1.
El primer puerto Ethernet incorporado sería em1. Algunas veces, las interfaces inalámbricas aparecen
usando el nombre de la red inalámbrica como nombre del dispositivo.
Otro comando popular para ver la información de la interfaz de red es el comando ifconfig. De forma
predeterminada, ifconfig muestra información similar a la de ip addr, pero ifconfig también muestra la
cantidad de paquetes recibidos (RX) y transmitidos (TX) de forma predeterminada, así como la
cantidad de datos y cualquier error o paquete perdido:
# ifconfig wlp2s0 wlp2s0:
flags=4163<ARRIBA, TRANSMISIÓN, EN EJECUCIÓN, MULTITRANSMISIÓN> mtu 1500
inet 192.168.1.83 máscara de red 255.255.255.0
transmitir 192.168.1.255 inet6
2600:1700:722:a10:b55a:fca6:790d:6aa6
prefixlen 64 scopeid 0x0<global>
inet6 fe80::25ff:8129:751b:23e3
prefixlen 64 scopeid 0x20<enlace> inet6
2600:1700:722:a10::489
prefixlen 128 scopeid 0x0<global> ether
e0:06:e6:83:ac:c7 txqueuelen 1000 (Ethernet)
Paquetes RX 208402 bytes 250962570 (239,3 MiB)
Errores de RX 0 descartados 4 desbordamientos 0 marco 0
Paquetes de TX 113589 bytes 13240384 (12,6 MiB)
Errores de TX 0 caídas 0 excesos 0 operador 0 colisiones 0
Comprobación de la conectividad a sistemas remotos
Para asegurarse de que puede comunicarse con los sistemas que están disponibles en la red, puede
usar el comando ping. Siempre que la computadora responda a las solicitudes de ping (no todas lo
hacen), puede usar ping para enviar paquetes a ese sistema de una manera que les pida que respondan.
Aquí hay un ejemplo:
$ ping host1
PING host1 (192.168.1.15) 56(84) bytes de datos. 64 bytes desde
host1 (192.168.1.15): icmp_seq=1 ttl=64 tiempo=0,062 ms 64 bytes desde host1 (192.168.1.15):
icmp_seq=2 ttl=64 tiempo=0,044 ms ^ C
346
Machine Translated by Google
Capítulo 14: Administración de redes
estadísticas de ping de host1 2 paquetes
transmitidos, 2 recibidos, 0 % de pérdida de paquetes, tiempo 1822 ms rtt min/avg/max/mdev =
0,044/0,053/0,062/0,009 ms
El comando ping que se muestra aquí hace ping continuamente al host llamado host1. Después de
algunos pings, presione Ctrl+C para finalizar los pings, y las últimas líneas le muestran cuántas de las
solicitudes de ping tuvieron éxito.
Podría haber usado la dirección IP (192.168.1.15, en este caso) para ver que podía acceder al sistema.
Sin embargo, usar el nombre de host le brinda la ventaja adicional de saber que la traducción de su
nombre a dirección IP (realizada por su servidor DNS o archivo de host local) también funciona correctamente.
En este caso, sin embargo, host1 apareció en el archivo local /etc/hosts.
Comprobación de la información
de enrutamiento El enrutamiento es lo siguiente que puede comprobar con respecto a sus interfaces de
red. Los siguientes fragmentos le muestran cómo usar los comandos ip y route para hacerlo:
# ip route show default
via 192.168.122.1 dev ens3 proto dhcp metric 20100 192.168.122.0/24 dev ens3 proto kernel
scope link src 192.168.122.194 metric 100
El ejemplo del comando ip route show ilustra que la dirección 192.168.122.1 proporciona la ruta al host
desde una máquina virtual RHEL 8 a través de la interfaz de red ens3. Las comunicaciones a cualquier
dirección en el rango 192.168.122.0/24 desde la máquina virtual (192.168.122.194) pasan por esa interfaz.
El comando de ruta puede proporcionar información similar:
# ruta
Tabla de enrutamiento de IP del kernel
Valor predeterminado de puerta de Genmask Indicadores Métrico Ref Usar Iface
enlace de destino portal de inicio 0.0.0.0 Y 600 0 0 wlp2s0 0 wlp2s0 0 virbr0
192.168.1.0 0.0.0.0 255.255.255.0U 600 0
192.168.122.0 0.0.0.0 255.255.255.0U 0 0
La salida de la tabla de enrutamiento del núcleo es de un sistema Fedora con una sola interfaz de red 14
externa activa. La tarjeta de interfaz de red inalámbrica está en la ranura PCI 2, puerto 1 (wlp2).
Todos los paquetes destinados a la red 192.168.1 utilizan la NIC wlp2. Los paquetes destinados a cualquier
otra ubicación se reenvían al sistema de puerta de enlace en 192.168.1.0. Ese sistema representa mi
enrutador a Internet. Aquí hay una tabla de enrutamiento más compleja:
# ruta
Kernel IP tabla de enrutamiento
Destino Puerta de enlace Genmask Indicadores Métrico Ref Usar Iface
predeterminada 0.0.0.0 puerta de e2nlace
vpn.ejemplo. 55.0.0.0 Y 600 0 0 wlp3s0 0 tun0
10.0.0.0 255.255.217.0 U EN 50 0
10.10.135.0 0.0.0.0 vpn.ejemplo. 50 0 0 tun0 0
puerta 255.255.255.255 UGH 600 0 wlp3s0
347
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En el ejemplo de ruta que se acaba de mostrar, hay una interfaz inalámbrica (wlp3s0) así como una interfaz que
representa un túnel de red privada virtual (VPN). Una VPN proporciona una forma de tener comunicaciones
privadas cifradas entre un cliente y una red remota a través de una red insegura (como Internet). Aquí, el túnel va
desde el sistema local a través de la interfaz wlan0 hasta un host llamado vpn.example.com (parte del nombre está
truncado).
Toda la comunicación con la red 192.168.1.0/24 aún se realiza directamente a través de la LAN inalámbrica.
Sin embargo, los paquetes destinados a las redes 10.10.135.0/24 y 10.0.0.0/8 se enrutan directamente a
vpn.example.com para comunicarse con los hosts del otro lado de la conexión VPN a través de la interfaz de túnel
(tun0).
Se configura una ruta especial para las comunicaciones con los contenedores (docker0) que se ejecutan en el
sistema local en la red 172.17.0.0. Todos los demás paquetes van a la ruta predeterminada a través de la dirección
192.168.1.0. En cuanto a las banderas que se muestran en la salida, una U dice que la ruta está activa, una G
identifica la interfaz como una puerta de enlace y una H dice que el objetivo es un host (como es el caso con la
conexión VPN).
Hasta ahora, te he mostrado las rutas para salir del sistema local. Si desea seguir la ruta completa hasta un
host de principio a fin, puede utilizar el comando traceroute (dnf install traceroute). Por ejemplo, para rastrear la ruta
que toma un paquete desde su sistema local hasta el sitio google.com, escriba el siguiente comando traceroute:
# traceroute google.com traceroute a
google.com (74.125.235.136), 30 saltos máx., paquetes de 60 bytes
...
7 rrcs706295197.midsouth.biz.rr.com (70.62.95.197) ... 8 ge210.rlghncpop
rtr1.southeast.rr.com (24.93.73.62) . .. 9 ae30.cr0.dca10.tbone.rr.com (66.109.6.80) ...
10 107.14.19.19.133 (107.14.19.19.133) 13.60 ) 18.308 ms ... 14 66.249.94.22
(66.249.94.22) 18.344 ms ... 15 72.14.239.83 (72.14.239.83) 85.342 ms ... 16
64.233.174.177 (64.233.174.178) 26 ... 7.178 52 1 ms .255.35 (209.85.255.35)
169.995 ms ... 18 209.85.241.129 (209.85.241.129) 170.322 ms ... 19 nrt19s11
inf8.1e100.net (74.125.235.136) 169.360 ms ...
Trunqué parte de la salida para eliminar algunas de las rutas iniciales y la cantidad de tiempo (en
milisegundos) que los paquetes tardaban en atravesar cada ruta. Con traceroute, puede ver dónde se
encuentran los cuellos de botella en el camino si la comunicación de su red se está estancando.
348
Machine Translated by Google
Capítulo 14: Administración de redes
Visualización de los nombres de host
y dominio Para ver el nombre de host asignado al sistema local, escriba hostname. Para ver solo la
parte del dominio de ese nombre, use el comando dnsdomainname:
# nombre de
host pico.ejemplo.com
# nombrededominiodns
ejemplo.com
Configuración de interfaces de red Si no desea
que sus interfaces
automáticamente
de red se asignen
desde un servidor DHCP (o si no hay un servidor DHCP), puede configurar
las interfaces de red manualmente. Esto puede incluir la asignación de direcciones IP, las ubicaciones de los
servidores DNS y las máquinas de puerta de enlace, y las rutas. Esta información básica se puede configurar
mediante NetworkManager.
Configurar direcciones IP manualmente
Para cambiar la configuración de red para su interfaz de red cableada a través de Network
Administrador, haga lo siguiente:
1. Seleccione el icono Configuración del menú desplegable en la esquina superior derecha de la
escritorio y seleccione Red.
2. Suponiendo que tiene una NIC con cable que aún no está en uso, seleccione el botón de
configuración (icono de engranaje pequeño) junto a la interfaz que desea cambiar.
3. Elija IPv4 y cambie la configuración del Método IPv4 de Automático (DHCP) a Manual.
4. Complete la siguiente información (solo se requieren la dirección y la máscara de red):
a. Dirección: la dirección IP que desea asignar a su interfaz de red local. Por ejemplo,
192.168.100.100. b. Máscara de red: la máscara de subred que defi ne qué parte de la
dirección IP representa
reenvía la red y qué parte identifi ca al host. Por ejemplo, una máscara de red de 255.255.255.0
identificaría la porción de red de la dirección anterior como 192.168.100 y la porción de host como
100. 14
C. Puerta de enlace: la dirección IP de la computadora o dispositivo en la red que actúa como la
ruta predeterminada. La ruta predeterminada enrutará los paquetes desde la red local a
cualquier dirección que no esté disponible en la red local oa través de alguna otra ruta personalizada.
d. Servidores DNS: complete las direcciones IP del sistema que proporciona el servicio DNS
a su computadora. Si hay más de un servidor DNS, agregue los demás en una lista de
servidores separados por comas.
5. Haga clic en el botón Aplicar. La nueva información se guarda y la red se
reiniciado usando la nueva información. La figura 14.5 muestra un ejemplo de esa configuración
de red.
349
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Configuración de alias de
direcciones IP Puede adjuntar varias direcciones IP a una única interfaz de red. En la misma pantalla del
Administrador de red, esto se hace simplemente completando un cuadro de Direcciones subsiguiente y
agregando la nueva información de la dirección IP. Aquí hay algunas cosas que debe saber acerca de
agregar alias de dirección:
■ Se requiere una máscara de red para cada dirección, pero no se requiere
una puerta de enlace. ■ El botón Aplicar permanece atenuado hasta que incluya información
válida en los campos. ■ La nueva dirección no tiene que estar en la misma subred que la
dirección original, aunque esté escuchando el tráfico en la misma red física.
Después de agregar la dirección 192.168.100.103 a mi interfaz cableada, ejecutar ip addr show
enp4s0 muestra la siguiente indicación de las dos direcciones IP en la interfaz:
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state
UP group default qlen 1000 link/ether 30:85:a9:04:9b:f9 brd ff:ff:ff:ff:ff:ff inet
192.168.100.100/24 brd 192.168.100.255 ámbito global sin prefijo de ruta enp4s0
valid_lft para siempre preferido_lft para siempre inet 192.168.100.103/24 brd
192.168.100.255 ámbito global secundario sin prefijo de ruta enp4s0
válido_lft para siempre preferido_lft para siempre
350
Machine Translated by Google
Capítulo 14: Administración de redes
Para obtener información sobre la configuración de alias directamente en los archivos de configuración, consulte la sección
"Configuración de interfaces de red de alias" más adelante en este capítulo.
Configuración
de rutas Cuando solicita una conexión a una dirección IP, su sistema busca en su tabla de enrutamiento
para determinar la ruta por la cual conectarse a esa dirección. La información se envía en forma de
paquetes. Un paquete se enruta de las siguientes maneras diferentes, dependiendo de su destino:
■ El sistema local se envía a la interfaz lo. ■ Un sistema
en su red local se dirige a través de su NIC directamente a la NIC del sistema receptor deseado.
■ Cualquier otro sistema se envía a la puerta de enlace (enrutador) que dirige el paquete a su
dirección deseada en Internet.
Por supuesto, lo que acabo de describir aquí es uno de los casos más simples. De hecho, puede tener
múltiples NIC con múltiples interfaces para diferentes redes. También puede tener varios enrutadores en su
red local que brindan acceso a otras redes privadas. Por ejemplo, suponga que tiene un enrutador (u otro
sistema que actúa como enrutador) en su red local; puede agregar una ruta personalizada a ese enrutador a
través de NetworkManager. Usando el ejemplo de NetworkManager que se mostró anteriormente, desplácese
hacia abajo en la página para ver la sección Rutas. Luego agrega la siguiente información:
Dirección La dirección de red de la subred a la que enruta. Por ejemplo, si el
El enrutador (puerta de enlace) le proporcionará acceso a todos los sistemas en la red 192.168.200,
agregue la dirección 192.168.200.0.
Máscara de red Agregue la máscara de red necesaria para identificar la subred. Por ejemplo, si el
El enrutador proporciona acceso a la dirección Clase C 192.168.200, puede usar la máscara de red
255.255.255.0.
Puerta de enlace Agregue la dirección IP para el enrutador (puerta de enlace) que proporciona acceso
a la nueva ruta. Por ejemplo, si el enrutador tiene una dirección IP en su red 192.168.1 de
192.168.1.199, agregue esa dirección en este campo. 14
Haga clic en Aplicar para aplicar la nueva información de enrutamiento. Es posible que deba reiniciar la interfaz
para que esto surta efecto (por ejemplo, ifup enp4s0). Ingrese route n para asegurarse de que se haya
aplicado la nueva información de enrutamiento.
# ruta n Tabla
de enrutamiento de IP del kernel
Puerta de enlace de destino Genmask Banderas Métrica Ref Usar Iface 0
0.0.0.0 192.168.100.1 0.0.0.0 Y 1024 0 p4p1 0
192.168.100.0 0.0.0.0 255.255.255.0U 0 0 p4p1
192.168.200.0 192.168.1.199 255.255.255.0 Y 1 0 0 p4p1
351
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En el ejemplo que se acaba de mostrar, puede ver que la puerta de enlace predeterminada es 192.168.100.1. Sin
embargo, los paquetes destinados a la red 192.168.200 se enrutan a través del host de puerta de enlace en la
dirección IP 192.168.1.199. Presumiblemente, ese host tiene una interfaz de red que se enfrenta a la red 192.168.200
y está configurado para permitir que otros hosts se enruten a través de él hacia esa red.
Consulte la sección "Configuración de rutas personalizadas" más adelante en este capítulo para obtener información sobre cómo
configurar rutas directamente en los archivos de configuración.
Configuración de una conexión de proxy de red Si su sistema de
escritorio se ejecuta detrás de un firewall corporativo, es posible que no tenga acceso directo a Internet. En su lugar,
es posible que deba conectarse a Internet a través de un servidor proxy.
En lugar de permitirle acceso completo a Internet, un servidor proxy le permite realizar solicitudes solo para ciertos
servicios fuera de la red local. El servidor proxy luego pasa esas solicitudes a Internet oa otra red.
Los servidores proxy suelen proporcionar acceso a servidores web (http:// y https://) y servidores FTP (ftp://). Sin
embargo, un servidor proxy compatible con SOCKS puede proporcionar un servicio de proxy para diferentes protocolos
fuera de la red local. ( SOCKS es un protocolo de red creado para permitir que las computadoras cliente accedan a
Internet a través de un firewall). Puede identificar un servidor proxy en NetworkManager y hacer que las comunicaciones
para los protocolos seleccionados pasen por ese servidor (desde la ventana Configuración, seleccione Red y luego
seleccione proxy de red).
En lugar de identificar un servidor proxy para sus interfaces de red (a través de NetworkManager), puede configurar su
navegador para usar un servidor proxy directamente cambiando sus preferencias de Firefox para usar un servidor proxy.
'
Aquí s cómo defi nir un servidor proxy desde la ventana de Firefox:
1. Desde Firefox, seleccione Preferencias. Aparece la ventana de Preferencias de Firefox.
2. En la ventana de Preferencias de Firefox, desplácese hacia abajo hasta Configuración de red y
seleccione Configuración.
3. Desde la ventana Configuración de conexión que aparece, puede intentar detectar automáticamente la
configuración del proxy o, si configura el proxy en NetworkManager, puede optar por utilizar la configuración
del proxy del sistema. También puede seleccionar Configuración de proxy manual, complete la siguiente
información y haga clic en Aceptar.
a. Proxy HTTP: la dirección IP de la computadora que proporciona el servicio de proxy. Esto hace que todas
las solicitudes de páginas web (protocolo http://) se reenvíen al servidor proxy.
b. Puerto: El puerto asociado con el servicio de proxy. Por defecto, el número de puerto es
3128, pero puede diferir.
C. Usar este servidor proxy para todos los protocolos: seleccione esta casilla para usar el mismo servidor
proxy y puerto asociado con el proxy HTTP para todas las demás solicitudes de servicio.
Esto hace que otras configuraciones de proxy aparezcan atenuadas. (En lugar de seleccionar esta
casilla, puede configurar esos servicios de proxy por separado).
352
Machine Translated by Google
Capítulo 14: Administración de redes
d. Sin proxy para: agregue el nombre de host o la dirección IP de cualquier sistema con el que
desee poder comunicarse con Firefox directamente sin pasar por el servidor proxy.
No necesita agregar localhost y la dirección IP local (127.0.0.1) en este cuadro, ya que esas
direcciones ya están configuradas para no redirigir.
La Figura 14.6 muestra un ejemplo de la ventana Configure Proxy Access to the Internet completada para
configurar una conexión a un servidor proxy ubicado en la dirección IP 192.168.1.1 para todos los
protocolos. Después de hacer clic en Aceptar, todas las solicitudes del navegador Firefox a ubicaciones
fuera del sistema local se dirigen al servidor proxy, que reenvía esas solicitudes al servidor apropiado.
14
Configuración de redes desde la línea de comandos
Si bien NetworkManager hace un excelente trabajo al detectar automáticamente las redes cableadas o al
presentarle listas de redes inalámbricas, a veces es necesario abandonar la GUI y los comandos de
NetworkManager o Cockpit para configurar las funciones que necesita. Estas son algunas de las funciones
de red en RHEL y Fedora que se describen en las próximas secciones:
Configuración básica: Vea cómo usar nmtui para configurar redes básicas con un
Interfaz basada en menús desde un shell. Esta herramienta proporciona una interfaz intuitiva para
configurar redes en servidores que no tienen una interfaz gráfica para ejecutar herramientas
basadas en GUI.
353
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Archivos de configuración: comprenda los archivos de configuración asociados con las redes de
Linux y cómo configurarlos directamente.
Vinculación de canales Ethernet: configure la vinculación de canales Ethernet (varias tarjetas de red
escuchando en la misma dirección IP).
Configure la red con nmtui Muchos servidores no
tienen interfaces gráficas
si desea
disponibles.
configurar
Por
el lto
rabajo
tanto,
en red, debe poder hacerlo desde el shell. Una
forma de hacerlo es editar los archivos de configuración de red directamente. Otro método consiste en
usar comandos basados en menús que le permiten presionar las teclas de flecha y tabulador para navegar
y completar los formularios para configurar su interfaz de red.
El comando nmtui (yum install NetworkManagertui) proporciona una interfaz basada en menús que
se ejecuta en el shell. Como root, ingrese nmtui para ver una pantalla similar a la que se presenta en
la Figura 14.7.
FIGURA 14.7
Configuración de redes con NetworkManager TUI
Use las teclas de flecha y la tecla Tab para moverse por la interfaz. Con el elemento que desea
seleccionar resaltado, presione Entrar para seleccionarlo. La interfaz se limita a modificar los siguientes
tipos de información: editar o activar una conexión (tarjetas de interfaz de red) y establecer el nombre de
host del sistema (nombre de host y configuración de DNS).
Edición de una conexión TUI de NetworkManager Desde la
pantalla TUI de NetworkManager que se muestra, aquí se explica cómo editar una conexión existente.
1. Edite una conexión: con "Editar una conexión" resaltado, presione Entrar. Se muestra una lista
de dispositivos de red (generalmente tarjetas Ethernet cableadas o inalámbricas), junto con
cualquier red inalámbrica a la que se haya conectado en el pasado.
2. Dispositivos de red: Resalte uno de los dispositivos de red (en mi caso, elegí una interfaz Ethernet
cableada) y presione Entrar.
354
Machine Translated by Google
Capítulo 14: Administración de redes
3. Configuración de IPv4: Muévase al botón de mostrar Configuración de IPv4 y presione Entrar.
La ventana Editar conexión que aparece le permite cambiar la información relacionada con el
dispositivo de red seleccionado.
4. Cambiar a Manual: puede dejar los campos Nombre de perfil y Dispositivo como están.
De forma predeterminada, Automático está habilitado. Automático es lo que permite que la interfaz
de red aparezca automáticamente en la red si hay un servicio DHCP disponible. Para ingresar la
dirección y otra información usted mismo, use la tecla Tab para resaltar el campo Automático y
presione la barra espaciadora; luego use las teclas de flecha para resaltar Manual y presione Entrar.
5. Direcciones: ahora complete la información de la dirección (dirección IP y máscara de red).
Por ejemplo, 192.168.0.150/24 (donde 24 es el equivalente CIDR para la máscara de
red 255.255.255.0).
6. Puerta de enlace: escriba la dirección IP de la computadora o el enrutador que proporciona la
ruta a Internet.
7. Servidores DNS: escriba las direcciones IP de uno o dos servidores DNS para indicarle al sistema
dónde ir para traducir los nombres de host que solicita en direcciones IP.
8. Dominios de búsqueda: las entradas de Dominios de búsqueda se utilizan cuando solicita un host
desde una aplicación sin usar un nombre de dominio completamente calificado. Por ejemplo, si
escribe ping host1 con una ruta de búsqueda de ejemplo.com, el comando intentará enviar paquetes
de ping a host1.ejemplo.com.
9. Rutas: puede establecer rutas personalizadas resaltando Editar en el campo Rutas y presionando
Intro. Rellene los campos Destino/Prefijo y Próximo salto y seleccione Aceptar para guardar la
nueva ruta personalizada.
10. Otras selecciones: de las otras selecciones en la pantalla, considere configurar "Nunca usar esta red
como ruta predeterminada" si la red no se conecta a redes más aautomáticamente"
mplias e "Ignorar rsutas
i no o
dbtenidas
esea que
esas funciones se activen. establecerse automáticamente desde la
pantalla
red. La F
después
igura 14.8
de m
seleccionar
uestra la
Manual y completar la información de la dirección.
Tabulador hasta el botón Aceptar y presione la barra espaciadora. Luego haga clic en Salir para salir. 14
Comprensión de los archivos de configuración de red Ya sea que cambie
la configuración de su red usando NetworkManager o nmtui, la mayoría de los mismos archivos de
configuración se actualizan. En Fedora y RHEL, las interfaces de red y las rutas personalizadas se configuran
en archivos en el directorio /etc/sysconfig/networkscripts.
Abra el archivo /usr/share/doc/initscripts/sysconfig.txt para obtener descripciones de los archivos de
configuración de net workscripts (disponibles en el paquete initscripts).
355
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
FIGURA 14.8
Establezca direcciones IP estáticas seleccionando Manual en la pantalla Editar conexión.
Una cosa a tener en cuenta es que NetworkManager cree que controla los archivos en el directorio
de scripts de red. Así que tenga en cuenta que si establece direcciones manuales en una interfaz que
NetworkManager ha configurado para DHCP, podría sobrescribir los cambios que realizó manualmente
en el archivo.
Cables de interfaz de red
Los archivos de configuración para cada interfaz de red alámbrica, inalámbrica, ISDN, de acceso telefónico
u otro tipo están representados por archivos en el directorio /etc/sysconfig/networkscripts que comienzan
con ifcfginterface. Tenga en cuenta que la interfaz se reemplaza por el nombre de la interfaz de red.
Dada una interfaz de red para una NIC cableada como enp4s0, aquí hay un ejemplo de un archivo ifcfg
enp4s0 para esa interfaz, configurado para usar DHCP:
DISPOSITIVO=enp4s0
TIPO=Ethernet
BOOTPROTO=dhcp
ONBOOT=sí
DEFROUTE=sí
UUID=f16259c2f3504d78a539604c3f95998c
IPV4_FAILURE_FATAL=no
IPV6INIT=sí
IPV6_AUTOCONF=sí
IPV6_DEFROUTE=sí
IPV6_FAILURE_FATAL=no
356
Machine Translated by Google
Capítulo 14: Administración de redes
NOMBRE="Sistema enp4s0"
PEERDNS=sí
PEERROUTES=sí
IPV6_PEERDNS=sí
IPV6_PEERROUTES=sí
En este ejemplo de ifcfgenp4s0, las dos primeras líneas establecen el nombre del dispositivo y el
tipo de interfaz para Ethernet. La variable BOOTPROTO se establece en dhcp, lo que hace que
solicite información de dirección de un servidor DHCP. Con ONBOOT=yes, la interfaz se inicia
automáticamente en el momento del arranque del sistema. La configuración de IPV6 dice que debe
inicializar IPV6 y usar la configuración de IPV6 que se presenta, pero la interfaz continuará inicializándose
si no hay una red IPV6 disponible. Otras configuraciones dicen usar DNS de pares automáticamente y
enrutar los valores que se detectan.
'
Aquí Así se vería un archivo ifcfgenp4s1 simple para una interfaz Ethernet cableada que
utiliza direcciones IP estáticas:
DISPOSITIVO=enp4s1
HWADDR=00:1B:21:0A:E8:5E
TIPO=Ethernet
BOOTPROTO=ninguno
ONBOOT=sí
USUARIOCTL=no
IPADDR=192.168.0.140
MÁSCARA DE RED=255.255.255.0
PUERTA DE ENLACE=192.168.0.1
En este ejemplo de ifcfgenp4s1, debido a que se configura la dirección y otra información de forma
estática, BOOTPROTO se establece en none. Se necesitan otras diferencias para configurar la información
de la dirección que normalmente se obtiene de un servidor DHCP. En este caso, la dirección IP se establece
en 192.168.0.140 con una máscara de red de 255.255.255.0. El GATEWAY=192.168.0.1 identifica la
dirección del enrutador a Internet.
Aquí hay un par de otras configuraciones que podrían interesarle:
PEERDNS: establecer PEERDNS=no evita que DHCP sobrescriba el archivo /etc/resolv .conf. 14
Esto le permite establecer qué servidores DNS utiliza su sistema sin temor a que esa información
sea borrada por los datos proporcionados por el servidor DHCP.
¿DNS?: Si NetworkManager administra un archivo ifcfg, ¿establece la dirección de los servidores DNS
usando DNS? entradas. Por ejemplo, DNS1=192.168.0.2 hace que esa dirección IP se escriba en /
etc/resolv.conf como el primer servidor DNS que se usa en el sistema. ¿Puedes tener múltiples
DNS? entradas (DNS2=, DNS3=, etc.).
Además de configurar las interfaces de red principales, también puede crear archivos en el directorio /etc/
sysconfig/networkscripts que se pueden usar para establecer alias (varias direcciones IP para la misma
interfaz), interfaces enlazadas (múltiples NIC que escuchan en la misma dirección) y rutas personalizadas.
Estos se describen más adelante en este capítulo.
357
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Otros archivos de red
Además de los archivos de interfaz de red, hay otros archivos de configuración de red que puede
editar directamente para configurar la red de Linux. Estos son algunos de esos archivos.
Archivo /etc/sysconfi g/
network Las configuraciones de todo el sistema asociadas con su red local se pueden incluir en su
'
archivo /etc/sysconfig/network. El sistema RHEL 6, pero
El nombre también
de host se pueden
se establecía agregar
comúnmente otras
en este
archivo hasta
configuraciones a este archivo. Este es un ejemplo del contenido de un archivo /etc/sysconfig/network:
PUERTA DE ENLACE=192.168.0.1
En el ejemplo anterior, la PUERTA DE ENLACE predeterminada se establece en 192.168.0.1. Diferentes
interfaces pueden usar diferentes direcciones de GATEWAY. Para otras configuraciones que pueden
aparecer en los archivos de red, verifique el archivo sysconfig.txt en el directorio /usr/share/doc/initscripts.
Archivo /etc/hostname
'
En las versiones de RHEL y Fedora, el sistema El nombre de host se almacena en el archivo /etc/hostname.
Por ejemplo, si el archivo incluye el nombre de host host1.example.com, ese nombre de host se configurará
cada vez que se inicie el sistema. Puede verificar cómo se establece el nombre de host actual en cualquier
momento escribiendo el comando de nombre de host.
Archivo /etc/
hosts Antes de que se creara el DNS, la traducción de nombres de host a direcciones IP se hacía
pasando un único archivo de hosts. Si bien solo había unas pocas docenas y luego unos cientos de
hosts en Internet, este enfoque funcionó bastante bien. Pero a medida que Internet creció, el archivo
de host único se volvió inescalable y se inventó el DNS.
El archivo /etc/hosts todavía existe en los sistemas Linux. Todavía se puede usar para asignar
direcciones IP a nombres de host. El archivo /etc/hosts es una forma de configurar nombres y
direcciones para una red local pequeña o simplemente crear alias para facilitar el acceso a los sistemas
que usa todo el tiempo.
'
Aquí s un ejemplo de un archivo /etc/hosts:
127.0.0.1 localhost localhost.localdomain localhost
::1 localhost.localdomain
192.168.0.201 nodo1.ejemplo.com nodo1 joe 192.168.0.202
nodo2.ejemplo.com nodo2 sally
Las primeras dos líneas (127.0.0.1 y ::1) establecen direcciones para el sistema local. La dirección IPv4
del host local es 127.0.0.1; la dirección IPv6 para el host local es ::1. También hay entradas para dos
direcciones IP. Puede llegar a la primera dirección IP (192.168.0.201) con los nombres
node1.example.com, node1 o joe. Por ejemplo, al escribir ping joe, los paquetes se envían a
192.168.0.201.
358
Machine Translated by Google
Capítulo 14: Administración de redes
Archivo /etc/
resolv.conf Los servidores DNS y los dominios de búsqueda se configuran en el archivo /etc/resolv.conf.
Si NetworkManager está habilitado y en ejecución, no debe editar este archivo directamente. Usando las
entradas DNS ?= de los archivos ifcfg*, NetworkManager sobrescribe el archivo /etc/resolv.conf para que
'
pierda cualquier entrada que agregue a ese archivo.
es uA quí
n fue mdodificado
ejemplo por NetworkManager:
el archivo /etc/resolv.conf
que
# Generado por NetworkManager
servidor de nombres 192.168.0.2
servidor de nombres 192.168.0.3
Cada entrada del servidor de nombres identifica la dirección IP de un servidor DNS. El orden defi ne el orden
'
en que se comprueban los servidores DNS. Él es normal tener dos o tres entradas de servidor de nombres,
en caso de que el primero no esté disponible. Más que eso, y puede tomar demasiado tiempo para que se
verifique un nombre de host irresoluble para cada servidor.
Otro tipo de entrada que puede agregar a este archivo es una entrada de búsqueda. Una entrada de búsqueda le
permite indicar los dominios que se buscarán cuando se solicita un nombre de host por su nombre base en lugar
de su nombre de dominio completo completo. Puede tener múltiples entradas de búsqueda identificando uno o
más nombres de dominio después de la palabra clave de búsqueda, como en este ejemplo:
buscar ejemplo.com ejemplo.org ejemplo.net
Las opciones de búsqueda están separadas por espacios o tabulaciones.
/etc/nsswitch.conf A
diferencia de versiones anteriores, el archivo /etc/nsswitch.conf es administrado por el comando authselect
y no debe modificarse manualmente. Para realizar cambios, edite el archivo /etc/authse lect/user
nsswitch.conf y ejecute authselect applychanges.
La configuración en el archivo /etc/nsswitch.conf determina que la resolución del nombre de host se
realiza primero buscando en el archivo local /etc/hosts (archivos) y luego en los servidores DNS
enumerados en el archivo /etc/resolv.conf (dns ). El valor myhostname se usa para garantizar que siempre
se devuelva una dirección para el host. Así es como aparece la entrada de hosts en el archivo /etc/resolv.conf
en Red Hat Enterprise Linux: 14
Hospedadores: archivos dns mi nombre de host
Puede agregar otras ubicaciones, como bases de datos del Servicio de información de red (nis o nisplus),
para consultar la resolución de nombre de host a dirección IP. También puede cambiar el orden en que se
consultan los diferentes servicios. Puede verificar que la resolución de nombre de host a dirección IP
funcione correctamente usando diferentes comandos.
Si desea verificar que sus servidores DNS se consultan correctamente, puede usar los comandos host o
dig, como en, por ejemplo:
$ host redhat.com
redhat.com tiene la dirección 209.132.183.105 redhat.com
mail es manejado por 10 ussmtpinbound1.mimecast.com.
359
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
El correo de redhat.com es manejado por 10 ussmtpinbound2.mimecast.com. $ excavar redhat.com ;
<<>> DiG 9.11.11RedHat9.11.111.fc30 <<>> redhat.com ;; opciones globales: +cmd ;; Tengo respuesta: ;;
>>HEADER<< código de operación: CONSULTA, estado: NOERROR, id: 9948 ;; banderas: qr rd ra;
CONSULTA: 1, RESPUESTA: 1, AUTORIDAD: 0, ADICIONAL: 1 ;; PSEUDOSECCIÓN OPCIONAL: ;
EDNS: versión: 0, banderas:; upp:4096;; SECCIÓN DE PREGUNTAS: ;redhat.com.
EN UN
...
;; SECCIÓN DE RESPUESTAS:
redhat.com. 3600 EN UN 09.132.183.105
;; Tiempo de consulta: 49 ms ;;
SERVIDOR: 8.8.8.8#53(8.8.8.8)
;; CUÁNDO: Sábado 23 de noviembre 19:16:14 EST 2019
De forma predeterminada, el comando de host produce una salida más simple para las consultas
de DNS. Muestra la dirección IP de redhat.com y los nombres de los servidores de correo (registros
MX) que sirven a redhat.com. El comando dig muestra información similar a la que aparece en los
archivos que contienen registros DNS. La parte de la SECCIÓN DE PREGUNTAS del resultado muestra
que la sección de direcciones solicitó la dirección de redhat.com y la parte de la SECCIÓN DE
RESPUESTAS mostró la respuesta (209.132.183.105). También puede ver la dirección del servidor DNS
que se consultó.
Los comandos host y dig solo se utilizan para consultar servidores DNS. No revisan el archivo
nsswitch.conf para encontrar otros lugares para consultar, como el archivo de host local. Para eso,
tendrías que usar el comando getent:
# hosts getent nodo1 192.168.0.201
nodo1
Este ejemplo de getent encuentra un host llamado node1 que se ingresó en mi archivo local /
etc/hosts. El comando getent se puede usar para consultar cualquier configuración de información en el
archivo nsswitch.conf. Por ejemplo, escribir getent passwd root muestra la entrada para la cuenta de
usuario raíz en el archivo local, pero también puede consultar una base de datos LDAP remota para obtener
información del usuario si ha configurado esa función, como se describe en el Capítulo 1usuarios”.
1, “Gestión
cuentas.”
de
Configuración de interfaces de red de alias En
ocasiones, es posible que desee que su tarjeta de interfaz de red escuche en varias direcciones IP.
Por ejemplo, si estuviera configurando un servidor web que sirviera contenido seguro (https) para varios
dominios (example.com, example.org, etc.), cada dominio requeriría una dirección IP separada (asociada
con un certificado separado). cate). En ese caso, en lugar de agregar múltiples tarjetas de interfaz de red
a la computadora, simplemente podría crear múltiples alias en una sola NIC.
Para crear una interfaz de red de alias en RHEL 6 y versiones anteriores de Fedora, solo tiene que crear
otro archivo ifcfg. Siguiendo el ejemplo de una interfaz eth0 en un sistema RHEL,
360
Machine Translated by Google
Capítulo 14: Administración de redes
podría crear una interfaz eth0:0 asociada con la misma tarjeta de interfaz de red. Para ello, cree un
archivo en el directorio /etc/sysconfig/networkscripts denominado ifcfg eth0:0 que contenga
información como la siguiente:
DISPOSITIVO=eth0:0
ONPARENT=sí
IPADDR=192.168.0.141
MÁSCARA DE RED=255.255.255.0
El código de ejemplo crea un alias para la interfaz de red eth0 llamado eth0:0 . En lugar de ONBOOT
, la entrada ONPARENT dice que abra esta interfaz si el padre (eth0) se inicia y
escucha en la dirección 192.168.0.141. Puede abrir esa interfaz escribiendo ifup eth0:0 . Luego puede
verificar que la interfaz apareció usando el comando ip:
$ ip addr show eth0 2: eth0:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether f0:de:f1:28:46:d9 brd ff:ff:ff:ff:ff:ffinet 192.168.0.140/24 brd
192.168.0.255 alcance global eth0inet 192.168.0.141/24 brd 192.168.0.255
alcance global secundario eth0:0inet6 fe80::f2de:f1ff:fe28:46d9/64 enlace de ámbito valid_lft
para siempre preferido_lft para siempre Puede ver que la tarjeta de interfaz de red
representada por eth0 está escuchando en dos direcciones: 192.168.0.140 (eth0) y
192.168.0.141 (eth0 :0). Entonces, este sistema responderá a los paquetes destinados a cualquiera de
esas dos direcciones. Podría agregar más direcciones IP a esa interfaz creando más ifcfgeth0:?
archivos (ifcfgeth0:1, ifcfgeth0:2, etc.).
En los sistemas RHEL y Fedora más recientes, puede crear alias directamente en el archivo ifcfg
principal para un alias. Por ejemplo, una dirección principal (192.168.0.187) y un alias
(192.168.99.1) para una interfaz NIC llamada p4p1 podría estar representada por la siguiente
configuración de dirección en el archivo ifcfgp4p1:
IPADDR=192.168.0.187
PREFIJO=24 14
IPADDR1=192.168.99.1
PREFIJO1=24
Configuración de la vinculación de canales Ethernet La
vinculación de canales Ethernet le permite tener más de una tarjeta de interfaz de red en una
computadora asociada con una sola dirección IP. Hay varias razones por las que podría querer
hacer esto:
Alta disponibilidad Múltiples NIC en la misma dirección IP pueden garantizar que si una subred
falla o una NIC se rompe, aún se puede acceder a la dirección en una NIC conectada a otra
subred.
Rendimiento Si hay demasiado tráfico de red para ser manejado por una NIC, puede distribuir
ese tráfico entre varias NIC.
361
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En Red Hat Enterprise Linux y Fedora en una computadora con varias NIC, puede configurar la
vinculación de canales Ethernet creando algunos archivos ifcfg y cargando el módulo necesario.
Puede comenzar con un archivo de vinculación (por ejemplo, ifcfgbond0) y luego apuntar múltiples
ifcfgeth? archivos en esa interfaz de bonos. Luego puede cargar el módulo de bonos.
Según el tipo de vinculación que desee realizar, puede configurar su interfaz de vinculación en
diferentes modos. Usando la variable BONDING_OPTS, defi ne el modo y otras opciones de
vinculación (todas las cuales se pasan al módulo de vinculación). Puede obtener información sobre el
módulo de vinculación ingresando modinfo bonding o instalando el paquete kerneldocs y leyendo el
archivo bonding.txt del directorio /usr/share/doc/kerneldoc*/ Documentation/networking/.
Este es un ejemplo del archivo que define una interfaz enlazada. El archivo de este ejemplo es /etc/
sysconfig/networkscripts/ifcfgbond0:
DISPOSITIVO=bond0
ONBOOT=sí
IPADDR=192.168.0.50
MÁSCARA DE RED=255.255.255.0
BOOTPROTO=ninguno
BONDING_OPTS="mode=activebackup"
La interfaz bond0 en este ejemplo usa la dirección IP 192.168.0.50. Se inicia en el arranque. El
ENLACE _ OPTS establece el modo de vinculación en copia de seguridad activa. Esto
significa que solo una NIC está activa a la vez, y la siguiente NIC solo se hace cargo cuando la anterior
falla (conmutación por error). Ninguna tarjeta de interfaz de red está asociada con la interfaz bond0
todavía. Para eso, debe crear opciones de archivo ifcfg separadas. Por ejemplo, cree un archivo /etc/
sysconfig/networkscripts/ifcfgeth0 similar al siguiente (luego cree eth1, eth2, eth3, etc. para cada NIC
que desee usar en la interfaz de vinculación):
DISPOSITIVO=eth0
MAESTRO=bono0
ESCLAVO=sí
BOOTPROTO=ninguno
ONBOOT=sí
Con la interfaz eth0 utilizada como parte de la interfaz bond0, no se asigna ninguna dirección IP.
Esto se debe a que la interfaz eth0 usa la dirección IP de la interfaz bond0 al definirse como esclavo
(SLAVE=yes) de bond0 (MASTER=bond0).
Lo último que desea hacer es asegurarse de que la interfaz bond0 esté configurada para usar el
módulo de vinculación. Para hacerlo, cree un archivo /etc/modprobe.d/bonding.conf que contenga la
siguiente entrada:
alias bond0 vinculación
Debido a que todas las interfaces están configuradas en ONBOOT=yes, la interfaz bond0 se inicia y todo
el eth? las interfaces están disponibles cuando se necesitan.
362
Machine Translated by Google
Capítulo 14: Administración de redes
Establecimiento de rutas
personalizadas En una configuración de red simple, las comunicaciones que están destinadas a la red
local se dirigen a la interfaz adecuada en su LAN, mientras que las comunicaciones para los hosts fuera
de su LAN van a una puerta de enlace predeterminada para enviarse a hosts remotos. Como alternativa,
puede establecer rutas personalizadas para proporcionar rutas alternativas a redes específicas.
Para establecer una ruta personalizada en Fedora y RHEL, cree un archivo de configuración
en el directorio /etc/sysconfig/networkscripts. En esa ruta, defi ne lo siguiente:
¿PUERTA? La dirección IP del nodo en la red local que proporciona la ruta a
la subred representada por la ruta estática.
¿DIRECCIÓN? La dirección IP que representa la red a la que puede acceder el
ruta estática.
¿MASCARA DE RED? ¿La máscara de red que determina qué parte de la DIRECCIÓN? representa
la red y cuál representa los hosts a los que se puede acceder en esa red.
El nombre de cada archivo de ruta personalizado es interfaz de ruta. Entonces, por ejemplo, una ruta
personalizada a la que se puede acceder a través de su interfaz eth0 se llamaría routeeth0. Podría tener
múltiples rutas personalizadas en ese archivo, con cada entrada de ruta reemplazando el ? con el número
de interfaz:
DIRECCIÓN0=192.168.99.0
MÁSCARA DE RED0=255.255.255.0
PUERTA DE ENLACE0=192.168.0.5
En este ejemplo, cualquier paquete destinado a un host en la red 192.168.99 se enviaría a través de la
interfaz eth0 local y se dirigiría al nodo de puerta de enlace en 192.168.0.5. Presumiblemente, ese nodo
proporcionaría una ruta a otra red que contenga hosts en el rango de direcciones 192.168.99. Esta ruta
surtiría efecto cuando se reiniciara la interfaz de red eth0.
Para comprobar que la ruta funciona después de reiniciar la interfaz de red, puede escribir lo siguiente:
14
# ruta
Tabla de enrutamiento de IP del kernel
Valor predeterminado de puerta de Genmask Indicadores Métrica Ref Usar Iface 0 eth0
enlace de destino 192.168.0.1 0.0.0.0 y 0 0
192.168.0.0 * 255.255.255.0U 1 0 0 eth0
192.168.99.0 192.168.0.5 255.255.255.0 Y 0 0 0 eth0
El resultado del comando route n muestra que la ruta predeterminada (cualquier cosa que no esté
destinada a la red local 192.168.0 o la red 192.168.99) es a través de la dirección 192.168.0.1. Cualquier
paquete destinado a la red 192.168.99 se dirige a través de la dirección 192.168.0.5.
363
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Si desea agregar más rutas personalizadas, puede agregarlas a este mismo archivo routeeth0. El
siguiente conjunto de información se denominaría DIRECCIÓN1, MÁSCARA DE RED1, PUERTA DE
ENLACE1, etc.
Configuración de redes en la empresa
Hasta ahora, la configuración de red descrita en este capítulo se ha centrado en configurar sistemas
únicos para conectarse a una red. Las funciones disponibles en Linux pueden ir mucho más allá al
proporcionar un software compatible con la infraestructura de red real que necesitan las computadoras
anfitrionas para comunicarse.
Las siguientes secciones le presentan algunos de los tipos de servicios de infraestructura de red
disponibles en Linux. La implementación completa de estas características está más allá del alcance de
este libro, pero sepa que si necesita administrar las características de la infraestructura de red, las
siguientes secciones le darán una idea de cómo se implementan esas características en Linux.
Configuración de Linux como enrutador Si
tiene más de una interfaz de red en una computadora (generalmente dos o más NIC), puede configurar
Linux como enrutador. Para que esto suceda, todo lo que se necesita es un cambio en un parámetro del
kernel que permita el reenvío de paquetes. Para activar el parámetro ip_forward de forma inmediata y
temporal, ingrese lo siguiente como raíz:
# cat /proc/sys/net/ipv4/ip_forward
0
# echo 1 > /proc/sys/net/ipv4/ip_forward # cat /proc/
sys/net/ipv4/ip_forward
1
El reenvío de paquetes (enrutamiento) está deshabilitado de forma predeterminada, con el valor de ip_forward establecido en 0.
Al establecerlo en 1, el reenvío de paquetes se habilita inmediatamente. Para que este cambio sea
permanente, debe agregar ese valor al archivo /etc/sysctl.conf, para que aparezca de la siguiente manera:
net.ipv4.ip_forward = 1
Con ese archivo modificado como se muestra, cada vez que el sistema se reinicia, el valor de ip_forward se
_ adelante
restablece a 1. (Observe que net.ipv4.ip ip cualquier refleja
parámetro la
del ubicación
kernel real del en la estructura de
establecido
directorios /proc/sys de e
_ reenviar archivo, msta
manera).
enos /proc/sys, y con puntos reemplazando barras. Tu puedes cambiar
Cuando un sistema Linux se usa como enrutador, a menudo se usa como un cortafuegos entre una red
privada y una red pública, como Internet. Si ese es el caso, es posible que también desee utilizar ese
mismo sistema como un cortafuegos que realiza la traducción de direcciones de red (NAT) y proporciona el
servicio DHCP, de modo que los sistemas de la red privada puedan enrutarse a través del sistema Linux
utilizando direcciones IP privadas. (Consulte el Capítulo 25, información
"Seguridad dse
obre
Linux
cómo
en utna
rabajar
red",
cpon
ara
las
obtener
reglas
de firewall de Linux utilizando la función iptables).
364
Machine Translated by Google
Capítulo 14: Administración de redes
Configuración de Linux como un servidor DHCP Un sistema
Linux no solo puede usar un servidor DHCP para obtener su dirección IP y otra información, sino que
también puede configurarse para que actúe como un servidor DHCP. En su forma más básica, un servidor
DHCP puede entregar direcciones IP de un conjunto de direcciones a cualquier sistema que solicite una dirección
IP. Sin embargo, por lo general, el servidor DHCP también distribuye las ubicaciones de los servidores DNS y la
puerta de enlace predeterminada.
Configurar un servidor DHCP no es algo que deba hacerse sin pensarlo.
'
Don t agregue un servidor DHCP en una red que no esté bajo su control y que ya tenga un servidor DHCP
en funcionamiento. Muchos clientes están configurados para obtener información de direcciones de cualquier
servidor DHCP que la entregue.
El servicio DHCP lo proporciona el paquete dhcpserver en Fedora y RHEL. El servicio se llama
dhcpd. El archivo de configuración principal es /etc/dhcp/dhcpd.conf para redes IPv4 (hay un archivo
dhcpd6.conf en el mismo directorio para proporcionar el servicio DHCP para redes IPv6). De manera
predeterminada, el demonio dhcpd escucha en el puerto UDP 67, así que recuerde mantener ese
puerto abierto en su cortafuegos.
Para configurar un servidor DHCP, puede copiar el archivo dhcpd.conf.example del directorio /
usr/share/doc/dhcpserver y reemplazar el archivo /etc/dhcp/dhcpd.conf. Luego modifíquelo
como desee. Sin embargo, antes de usar ese archivo, desea cambiar las opciones de nombre de
dominio para reflejar su dominio y los rangos de direcciones IP para adaptarse a los que está
usando. Los comentarios en el archivo le ayudarán a hacer esto.
Cuando instala algunos servicios de nube y virtualización en un sistema Linux, se configura un
servidor DHCP de manera predeterminada para usted dentro de ese sistema. Por ejemplo, cuando
instala KVM e inicia el servicio libvirtd en RHEL o Fedora, configura automáticamente una red privada
predeterminada en el rango de direcciones 192.168.122.0/24. Cuando inicia máquinas virtuales, se
les asignan direcciones IP en ese rango. Cuando instala e inicia el servicio Docker en esas
distribuciones de Linux, también configura una red privada y entrega direcciones IP a los contenedores
Docker lanzados en ese sistema.
Configuración de Linux como un servidor DNS En Linux, 14
la mayoría de los servidores profesionales del Sistema de nombres de dominio (DNS) se implementan mediante
el servicio Berkeley Internet Name Domain (BIND). Esto se implementa en Fedora y RHEL instalando los
paquetes bind, bindutils y bindlibs. Para mayor seguridad, algunas personas instalan el paquete bindchroot.
De forma predeterminada, el enlace se configura editando el archivo /etc/named.conf. La
asignación de nombre de host a dirección IP se realiza en archivos de zona ubicados en el
directorio /var/named. Si instala el paquete bindchroot, los archivos de configuración de bind se
mueven al directorio /var/named/chroot, que intenta replicar los archivos de /etc y /var que se
necesitan para configurar bind de modo que el daemon named (que proporciona el servicio) se
limita a la estructura de directorios /etc/named/chroot.
365
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Si está interesado en probar bind, le recomiendo que primero lo pruebe configurando DNS para
una red doméstica pequeña detrás de un firewall como una forma de facilitar que las personas de su
hogar se comuniquen entre sí. otro. Puede bloquear las direcciones IP de las máquinas en su hogar
'
adjuntando direcciones MAC de cada tarjeta de interfaz de computadora a direcciones s
red
IP
específicas
en un servidor DHCP y luego asignando esos nombres a direcciones en un servidor DNS.
PRECAUCIÓN Antes de crear un servidor DNS público, tenga en cuenta que es muy importante proteger correctamente su servidor
DNS. Se puede usar un servidor DNS público descifrado para redirigir el tráfico a cualquier servidor que elijan los delincuentes. Por lo
tanto, si está utilizando ese servidor, corre el peligro de que se le presenten sitios que no son los sitios que cree que son.
Configuración de Linux como servidor proxy Un
servidor proxy proporciona un medio para restringir el tráfico de red de una red privada a una pública,
como Internet. Dichos servidores brindan una excelente manera de bloquear un laboratorio de
computación en una escuela o restringir los sitios web que los empleados pueden visitar desde el trabajo.
Al configurar físicamente Linux como un enrutador pero configurándolo como un servidor proxy,
todos los sistemas en su red doméstica o comercial pueden configurarse para acceder a Internet
usando solo ciertos protocolos y solo después de filtrar el tráfico.
Usando Squid Proxy Server, que viene con la mayoría de los sistemas Linux (paquete squid en
Fedora y RHEL), puede habilitar el sistema para aceptar solicitudes a servidores web (HTTP y
HTTPS), servidores de archivos (FTP) y otros protocolos. Puede restringir qué sistemas pueden usar
su servidor proxy (por nombre de host o dirección IP) e incluso limitar qué sitios pueden visitar (por
dirección específica, rango de direcciones, nombre de host o nombres de dominio).
Configurar un servidor proxy squid puede ser tan simple como instalar el paquete squid, editar el
archivo /etc/squid/squid.conf e iniciar el servicio squid. El archivo viene con una configuración mínima
recomendada. Sin embargo, es posible que desee defi nir los hosts (según la dirección IP o el nombre)
que desea permitir que utilicen el servicio. Hay listas negras disponibles con squid que le permiten
negar el acceso a conjuntos completos de sitios que podrían ser inapropiados para que los niños los
visiten.
Resumen
La mayoría de las conexiones de red desde un sistema Linux de escritorio o portátil se pueden realizar con poca
o ninguna intervención del usuario. Si utiliza NetworkManager a través de una conexión Ethernet por cable o
inalámbrica, la dirección y la información del servidor necesaria para iniciar se pueden obtener automáticamente
de un servidor DHCP.
Con la interfaz gráfica de NetworkManager, puede realizar algunas configuraciones de red, si lo desea. Puede
establecer direcciones IP estáticas y seleccionar el servidor de nombres y las computadoras de puerta de enlace para
366
Machine Translated by Google
Capítulo 14: Administración de redes
usar. Para realizar una configuración de red más manual y compleja, considere trabajar más directamente con
archivos de configuración de red.
Los archivos de configuración de red en Linux se pueden usar para configurar funciones más avanzadas, como
la vinculación de canales Ethernet.
Más allá de los conceptos básicos de conectividad de red en Linux, hay características disponibles que le permiten
proporcionar tipos de servicios de infraestructura de red. Este capítulo presentó servicios y funciones como
enrutamiento, DHCP y DNS que debe conocer cuando trabaje con funciones de red más avanzadas en Linux.
Con su red configurada, ahora puede comenzar a configurar los servicios para que se ejecuten en sus redes. El
Capítulo 15, “Inicio y detención de
dsetener
iniciar, ervicios”, describe
y verificar las
el e herramientas
stado que necesita
de los servicios para
que están habilitar, deshabilitar,
configurados para su
sistema Linux.
Ejercicios
Los ejercicios de esta sección le ayudarán a examinar y cambiar las interfaces de red en su sistema Linux, así
como a comprender cómo configurar funciones de red más avanzadas. Comience estos ejercicios en un sistema
Linux que tenga una conexión de red activa pero que no esté en medio de alguna actividad de red crítica.
Te recomiendo que hagas estos ejercicios directamente desde la consola de tu computadora (en otras
palabras, no te
metas en la computadora
interrumpir onectividad dpe
ara
su hred,
acerlos). Algunos
y parte de los comandos
que rqealiza,
de la configuración ue ejecuta pueden
si comete
un error,
puede provocar que su computadora no esté disponible temporalmente en la red.
A menudo hay varias formas de completar las tareas descritas en estos ejercicios. Si está atascado, consulte las
soluciones de tareas que se proporcionan en el Apéndice B.
1. Utilice el escritorio para verificar que NetworkManager haya iniciado con éxito su interfaz de red
(alámbrica o inalámbrica) a la red. Si no es así, intente iniciar su interfaz de red.
14
2. Ejecute un comando para verificar las interfaces de red activas disponibles en su computadora.
3. Intente ponerse en contacto con google.com desde la línea de comandos de una manera que garantice que el
DNS funciona correctamente.
4. Ejecute un comando para verificar las rutas que se utilizan para comunicarse fuera de su
red local.
5. Rastree la ruta que está tomando para conectarse a google.com.
6. Vea la actividad de red de su sistema Linux desde el usuario web de Cockpit
interfaz.
7. Cree una entrada de host que le permita comunicarse con su sistema host local
usando el nombre myownhost.
367
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
8. Determine las direcciones de los servidores de nombres DNS que se utilizan para resolver
hostnames a direcciones IP en su sistema, luego verifique cuál se consulta desde su
sistema para encontrar la dirección IP para google.com.
9. Cree una ruta personalizada que dirija el tráfico destinado a 192.168.99.0/
red 255.255.255.0 a alguna dirección IP en su red local, como 192.168.0.5 (primero
asegúrese de que la red 192.168.99 no se esté utilizando en su ubicación).
10. Verifique si su sistema ha sido configurado para permitir el enrutamiento de paquetes IPv4
entre las interfaces de red de su sistema.
368
Machine Translated by Google
CAPÍTULO S
Iniciar y detener Ser
EN ESTE CAPÍTULO
Comprender los diversos servicios de inicio de Linux
Auditoría de servicios controlados por demonios de Linux
Parada y puesta en marcha de servicios
Cambiando el servidor Linux 'nivel de ejecución predeterminado
Quitar servicios
T
El trabajo principal de un sistema de servidor Linux es ofrecer servicios a usuarios locales o remotos. Un servidor
puede proporcionar acceso a páginas web, archivos, información de bases de datos, transmisión de música u otros tipos de
contenido. Los servidores de nombres pueden brindar acceso a listas de computadoras anfitrionas o nombres de usuario. cientos
de estos y otros tipos de servicios se pueden configurar en sus sistemas Linux.
Los servicios continuos que ofrece un sistema Linux, como el acceso a un servicio de impresora o un servicio de inicio
de sesión, normalmente se implementan mediante lo que se denomina un proceso daemon . La mayoría de los sistemas
Linux tienen un método para administrar cada proceso daemon como un servicio utilizando uno de varios sistemas de
inicialización populares (también denominados sistemas init). Las ventajas de usar sistemas init incluyen la capacidad de
hacer lo siguiente:
Identifique los niveles de ejecución: reúna conjuntos de servicios en lo que se conoce como niveles de ejecución u objetivos.
Establecer dependencias: establezca dependencias de servicios, por ejemplo, un servicio que requiere que se inicie hasta que
'
las interfaces de red ganaron se hayan iniciado todos los servicios de inicio de red.
con éxito.
Establezca el nivel de ejecución predeterminado: seleccione qué nivel de ejecución u objetivo se inicia cuando se inicia el sistema (un nivel
de ejecución predeterminado).
Administre servicios: ejecute comandos que indiquen a los servicios individuales que inicien, detengan, pausen, reinicien o
incluso recargar archivos de configuración.
369
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En la actualidad, se utilizan varios sistemas de inicio diferentes con los sistemas Linux. El que use
depende de la distribución y versión de Linux que esté usando. En este capítulo, cubro los
siguientes sistemas de inicio que se han utilizado en Fedora, Red Hat Enterprise Linux, Ubuntu y
muchas otras distribuciones de Linux:
SysVinit: este sistema de inicio tradicional se creó para los sistemas UNIX System V a principios
de la década de 1980. Ofrece un método fácil de entender para iniciar y detener servicios
según el nivel de ejecución. La mayoría de los sistemas UNIX y Linux hasta hace unos años
usaban SysVinit.
Systemd: las últimas versiones de Fedora y RHEL utilizan el sistema de inicio systemd. Es el más
complejo de los sistemas de inicio, pero también ofrece mucha más fl exibilidad. Systemd no
solo ofrece funciones para iniciar y trabajar con servicios, sino que también le permite administrar
sockets, dispositivos, puntos de montaje, áreas de intercambio y otros tipos de unidades.
NOTA
Si está utilizando una versión anterior de Ubuntu, probablemente haya utilizado Upstart como su sistema de inicialización. A
partir de Ubuntu 15.04 (lanzado el 28 de abril de 2015), Upstart fue reemplazado por el demonio de inicialización systemd. Por lo
tanto, Upstart no se describirá en este libro.
Este capítulo describe los sistemas SysVinit y systemd init. En el proceso de usar el sistema de
inicio que coincida con su distribución de Linux, aprenderá cómo funciona el proceso de inicio para
iniciar servicios, cómo puede iniciar y detener servicios individualmente y cómo habilitar y deshabilitar
servicios.
Comprender el demonio de inicialización (init
o systemd)
Para comprender la gestión de servicios, debe comprender el demonio de inicialización. El demonio
de inicialización se puede considerar como la "madre de todos los procesos".
Este demonio es el primer proceso que inicia el kernel en el servidor Linux. Para las distribuciones de
Linux que usan SysVinit, el demonio init se llama literalmente init. Para systemd, el demonio de inicio se
llama systemd.
El kernel de Linux tiene un ID de proceso (PID) de 0. Por lo tanto, el demonio del proceso de
inicialización (init o systemd) tiene un ID de proceso principal (PPID) de 0 y un PID de 1. Una vez iniciado,
'
init es responsable de generar ( launching) procesos configurados para iniciarse en el momento del s
arranque del servidor, como el shell de inicio de sesión (proceso getty o mingetty). También es responsable
de la gestión de los servicios.
El demonio de inicio de Linux se basó en el demonio de inicio de UNIX System V. Por lo tanto, se llama
el demonio SysVinit. Sin embargo, no fue el único demonio de inicio clásico. El demonio init no es parte del
kernel de Linux. Por lo tanto, puede venir en diferentes sabores y las distribuciones de Linux pueden elegir
qué sabor usar. Otro demonio de inicio clásico se basó en
370
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Berkeley UNIX, también llamado BSD. Por lo tanto, los dos demonios de inicio de Linux originales eran BSD init
y SysVinit.
Los demonios de inicio clásicos funcionaron sin problemas durante muchos años. Sin embargo, estos
demonios fueron creados para trabajar dentro de un entorno estático. A medida que apareció nuevo hardware,
como dispositivos USB, los demonios de inicio clásicos tuvieron problemas para manejar estos y otros
dispositivos de conexión en caliente. El hardware de la computadora había cambiado de estático a basado en
eventos. Se necesitaban nuevos demonios de inicio para manejar estos entornos fluidos.
Además, a medida que aparecían nuevos servicios, los demonios de inicio clásicos tenían que lidiar con
el inicio de más y más servicios. Por lo tanto, todo el proceso de inicialización del sistema fue menos eficiente
y, en última instancia, más lento.
Los demonios de inicialización modernos han tratado de resolver los problemas de arranques de sistema
ineficientes y entornos no estáticos. El más popular de los nuevos demonios de inicialización es systemd. Las
distribuciones de Ubuntu, RHEL y Fedora han hecho el cambio al daemon systemd mientras mantienen la
compatibilidad con versiones anteriores de los daemons clásicos SysVinit, Upstart o BSD init.
El demonio systemd, disponible en http://docs.fedoraproject.org/enUS/quickdocs/understandingand
administeringsystemd, fue escrito principalmente por Lennart Poettering, un desarrollador de Red Hat.
Actualmente lo utilizan todas las últimas versiones de Fedora, RHEL, OpenSUSE y Ubuntu.
Para administrar sus servicios correctamente, necesita saber qué demonio de inicialización tiene su servidor.
Averiguar eso puede ser un poco complicado. El proceso de inicialización que se ejecuta en SysVinit o Upstart
se denomina init. Para los primeros sistemas systemd, también se llamaba init pero ahora se llama systemd.
Ejecutar ps e puede decirle inmediatamente si el suyo es un sistema systemd:
# pse | cabeza
PID TTY HORA CMD
1? 00:04:36 sistemad
2? 00:00:03 khilo
3? 00:00:15 ksoftirqd/0
Si PID 1 es el demonio de inicio de su sistema, intente buscar en la página de inicio de Wikipedia (http://
wikipedia.org/wiki/Init) en "Otras implementaciones". Esto lo ayudará a comprender si su demonio de inicio es
SysVinit, Upstart o algún otro sistema de inicialización.
Comprensión de los demonios de inicio clásicos Vale la pena
entender los demonios de inicio clásicos, SysVinit y BSD init, incluso si su servidor Linux tiene un demonio de
inicio diferente. No solo se usa a menudo la compatibilidad con versiones anteriores de los clásicos en los
demonios de inicio más nuevos, sino que muchos se basan en ellos. 15
Los demonios de inicio SysVinit y BSD clásicos funcionan de manera muy similar. Aunque al principio pueden
haber sido bastante diferentes, con el tiempo quedaron muy pocas diferencias significativas. Por ejemplo, el
antiguo demonio de inicio de BSD obtendría la configuración
371
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
información del archivo /etc/ttytab. Ahora, al igual que el demonio SysVinit, la información de
configuración del demonio
etc/inittab. de inicio
El siguiente es udn
e
aBrchivo
SD se
StysVinit /etc/inittab
oma en el momento del arranque del archivo /
clásico:
# cat /etc/inittab # inittab Este
archivo describe cómo debe configurarse el proceso INIT # Nivel de ejecución predeterminado. Los niveles de
ejecución utilizados por RHS son: # 0 detener (NO establezca initdefault en esto)
# 1 Modo de usuario único 2
# Multiusuario, sin NFS (Igual que 3, si no tiene red)
# 3 Modo multiusuario completo
# 4 sin usar
# 5 X11
# 6 reiniciar (NO establezca initdefault en esto)
# id:5:initpredeterminado:
# Inicialización del sistema. si::sysinit:/etc/
rc.d/rc.sysinit
l0:0:esperar:/etc/rc.d/rc 0 l1:1:esperar:/etc/
rc.d/rc 1 l2:2:esperar:/etc/rc.d/rc 2
l3:3:esperar :/etc/rc.d/rc 3 l4:4:esperar:/etc/
rc.d/rc 4 l5:5:esperar:/etc/rc.d/rc 5
l6:6:esperar:/etc/rc .d/rc 6
# Trampa CTRLALTDELETE
ca::ctrlaltdel:/sbin/shutdown t3 r now pf::powerfail:/sbin/shutdown f h
+2
"Falla de energía; sistema apagándose"
# Si se restableció la energía antes de que se iniciara el apagado, cancélela. pr:12345:powerokwait:/sbin/shutdown
c "Alimentación restaurada; apagado cancelado"
# Ejecutar gettys en niveles de ejecución estándar
1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/
mingetty tty2 3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4 5:2345: reaparición:/sbin/
mingetty tty5 6:2345: reaparición:/sbin/mingetty tty6
# Ejecute xdm en el nivel de ejecución 5
x:5:respawn:/etc/X11/prefdm nodaemon
372
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
TABLA 15.1 Niveles de ejecución estándar de Linux
Nivel de ejecución # Nombre Descripción
0 Detener Todos los servicios se cierran y el servidor se detiene.
1 o S Modo de usuario único La cuenta raíz se registra automáticamente en el servidor.
Otros usuarios no pueden iniciar sesión en el servidor. Solo está disponible la
interfaz de línea de comandos. Los servicios de red no se inician.
2 Modo multiusuario Los usuarios pueden iniciar sesión en el servidor, pero solo la línea de comandos
la interfaz está disponible. En algunos sistemas, se inician servicios e interfaces
de red; en otros no lo son. Originalmente, este nivel de ejecución se usaba para
iniciar dispositivos terminales tontos para que los usuarios pudieran iniciar sesión
(pero no se iniciaron servicios de red).
3 Extendido Los usuarios pueden iniciar sesión en el servidor, pero solo está disponible la
Modo multiusuario interfaz de línea de comandos. Se inician las interfaces de red y los servicios.
Este es un nivel de ejecución común para servidores.
4 Usuario definido Los usuarios pueden personalizar este nivel de ejecución.
5 Modo gráfico Los usuarios pueden iniciar sesión en el servidor. Línea de comandos y gráfico
Las interfaces están disponibles. Se inician los servicios de red. Esto es un
nivel de ejecución común para sistemas de escritorio.
6 Reiniciar El servidor se reinicia.
El archivo /etc/inittab le dice al demonio init qué nivel de ejecución es el predeterminado.
Un nivel de ejecución es un número de categorización que determina qué servicios se inician y qué servicios se detienen.
En el ejemplo anterior, se establece un nivel de ejecución predeterminado de 5 con la línea id:5:initdefault:. La Tabla 15.1
muestra los siete niveles de ejecución estándar de Linux.
Las distribuciones de Linux pueden diferir ligeramente en la definición de cada nivel de ejecución, así como en los niveles
de ejecución que se ofrecen.
PRECAUCIÓN Los únicos niveles de ejecución que deben usarse en el archivo /etc/inittab son del 2 al 5. Los otros niveles de
ejecución podrían causar problemas. Por ejemplo, si coloca el nivel de ejecución 6 en el archivo /etc/inittab como predeterminado,
cuando el servidor se reinicie, entrará en un bucle y continuará reiniciando una y otra vez.
Los niveles de ejecución no solo se utilizan como nivel de ejecución predeterminado en el archivo /etc/inittab. También se
pueden llamar directamente usando el propio demonio init. Por lo tanto, si desea detener su servidor de inmediato, escriba
init 0 en la línea de comando:
# calor 0 15
...
¡El sistema se cae para detener el sistema AHORA!
El comando init acepta cualquiera de los números de nivel de ejecución de la Tabla 15.1, lo que le permite cambiar su
servidor rápidamente de una categoría de nivel de ejecución a otra. Por ejemplo, si necesita
373
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
para solucionar problemas que requieren que la interfaz gráfica esté inactiva, puede escribir init 3 en
la línea de comando:
# init 3 INIT:
El envío procesa la señal TERM comenzando irqbalance:
Iniciando setroubleshootd: Iniciando fuse: Fusible del sistema [ DE ACUERDO ]
de archivos ya disponible.
...
Inicio de los servicios de ratón de la consola: [Aceptar ]
Para ver el nivel de ejecución actual de su servidor Linux, simplemente escriba el comando runlevel. El primer
'
s
elemento que se muestra es el servidor. E l asnterior
egundo neivel
de eqjecución,
lemento que em
ue se muestra n
el siguiente
uestra edjemplo
el nivel es 5.
e ejecución
actual del servidor, que en este ejemplo es 3.
$ nivel de ejecución
5 3
Además del comando init, puede usar el comando telinit, que es funcionalmente el mismo.
En el siguiente ejemplo, el comando telinit se usa para reiniciar el servidor llevándolo al nivel de
ejecución 6:
# telinit 6
INIT: El envío procesa la señal TERM
Apagando smartd: [ DE ACUERDO ]
Apagando el demonio de Avahi: [ DE ACUERDO ]
Deteniendo dhcdbd: [ DE ACUERDO ]
Deteniendo el demonio HAL: [ DE ACUERDO ]
...
Iniciando killall: enviando
a todos los procesos la señal TERM... [ DE ACUERDO ]
Enviando a todos los procesos la señal KILL... [ DE ACUERDO ]
...
Desmontar sistemas de archivos [ DE ACUERDO ]
Espere mientras reinicia el sistema
...
En un servidor Linux recién iniciado, el número de nivel de ejecución actual debe ser el mismo que
el número de nivel de ejecución predeterminado en el archivo /etc/inittab. Sin embargo, observe que
el nivel de ejecución anterior en el ejemplo siguiente es N. La N significa "Inexistente" e indica que el
servidor se inició recientemente en el nivel de ejecución actual.
$ nivel de ejecución
N 5
¿Cómo sabe el servidor qué servicios detener y cuáles iniciar cuando se elige un nivel de ejecución en
particular? Cuando se elige un nivel de ejecución, se ejecutan los scripts ubicados en el directorio /etc/
rc.d/rc#.d (donde # es el nivel de ejecución elegido). Estos scripts se ejecutan si el nivel de ejecución se
elige a través de un arranque del servidor y se usa la configuración predeterminada /etc/inittab init o el
comando init o telinit. Por ejemplo, si se elige el nivel de ejecución 5, todos los
374
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
se ejecutan los scripts en el directorio /etc/rc.d/rc5.d; su lista será diferente, dependiendo de los servicios
que haya instalado y habilitado.
# ls /etc/rc.d/rc5.d K01smolt
K88wpa_supplicant S22messagebus
K02avahidnsconfd k89dund s25bluetooth
Administrador de red K02 K89netplugd fusible S25
K02NetworkManagerDispatcher K89pand s25netfs
k05saslauthd K89rdisco S25pcscd
K10dc_servidor K91capi S26 oculto
K10psacct S00microcódigo_ctl S26udevpost
K12dc_cliente S04readahead_early S28autofs
K15gpm S05kudzu S50hplip
K15httpd S06cpuvelocidad S55tazas
K20nfs S08ip6tables S55sshd
k24irda S08iptables S80 enviar correo
K25calamar S09isdn Kit de consola S90
k30spamassassin Red S10 S90cron
servidor K35vnc S11 auditado S90xfs
K50netconsola S12restaurar segundo S95anacron
K50 S12syslog S95atd
k69rpcsvcgssd equilibrio S13irq S96readahead_later
K73winbind S13mcstrans s97dhcdbd
k73ypbind S13rpcbind S97yumactualizacionesd
K74nscd S13settrobleshoot S98avahidaemon
k74ntpd S14nfslock S98haldaemon
K84btseed Monitor S15md S99primerarranque
pista k84bt S18rpcidmapd S99local
K87multirrutas S19rpcgssd S99 inteligente
Tenga en cuenta que algunas de las secuencias de comandos dentro del directorio /etc/rc.d/rc5.d
comienzan con una K y algunas comienzan con una S. La K se refiere a una secuencia de comandos que
eliminará (detendrá) un proceso. La S se refiere a un script que iniciará un proceso. Además, cada script K
y S tiene un número antes del nombre del servicio o demonio que controla. Esto permite que los servicios se
detengan o inicien en un orden controlado particular. No querrá que los servicios de red de su servidor Linux
se inicien antes de que se inicie la propia red.
Existe un directorio /etc/rc.d/rc#.d para todos los niveles de ejecución estándar de Linux. Cada uno
contiene scripts para iniciar y detener servicios para su nivel de ejecución particular.
# ls d /etc/rc.d/rc?.d /etc/rc.d/rc0.d /
etc/rc.d/rc2.d /etc/rc.d/rc4.d /etc/rc. d/rc6.d /etc/rc.d/rc1.d /etc/rc.d/rc3.d /etc/rc.d/rc5.d
En realidad, los archivos en los directorios /etc/rc.d/rc#.d no son scripts sino enlaces simbólicos a scripts en
el directorio /etc/rc.d/init.d. Por lo tanto, no es necesario tener múltiples copias de scripts particulares. 15
# ls l /etc/rc.d/rc5.d/K15httpd lrwxrwxrwx 1 raíz raíz
15 de octubre de 10 08:15
375
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
/etc/rc.d/rc5.d/K15httpd > ../init.d/httpd
# ls /etc/rc.d/init.d
anacron funciones multipathd fusible rpcidmapd
etc. consola de red rpcsvcgssd
auditado gpm redes saslauthd
autofs haldaemon netplugd detener sendmail
avahidaemon red hidd configurar solucionar
avahidnsconfd Gerente de Redes problemas solo
Bluetooth hplip NetworkManagerDispatcher smartd nfs
BTS hsqldb smolt
bt track httpd nfslock ip6tables nscd spamassassin
capi iptables ntpd irda pand calamar sshd
Kit de consola irqbalance pcscd isdn
velocidad de psacct rdisc esmoquin
cpu crond syslog
cups udevpost
cupsconfigdaemon killall dc_client servidor vnc
Cada script en /etc/rc.d/init.d se ocupa de todo lo que se necesita para iniciar o detener un servicio
en particular en el servidor. El siguiente es un ejemplo parcial del script httpd en un sistema Linux
que usa el demonio SysVinit. Contiene una declaración de caso para manejar el parámetro ($1) que
se le pasó, como inicio, parada, estado, etc.
# cat /etc/rc.d/init.d/httpd #!/bin/bash # #
httpd # # chkconfig: 85 15 # descripción:
Apache es un servidor World Wide Web. #
Se utiliza para servir \ #Script
archivos
de inicio
HTML para
y el servidor Apache HTTP
CGI. # nombre del proceso: httpd # config: /
etc/httpd/conf/httpd.conf # config: /etc/
sysconfig/httpd # pidfile: /var/run/httpd.pid
# Biblioteca de funciones fuente. . /etc/
rc.d/init.d/funciones
...
376
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
# Mira cómo nos llamaron. caso "$1" en
inicio)
comenzar
;;
detener)
detener
;;
estado)
estado $httpd RETVAL=$?
;;
...
esac
salir $RETVAL
Una vez que se ejecutan los scripts de nivel de ejecución vinculados desde el directorio /etc/rc.d/rc#.d
correspondiente, se completa la generación el proceso
del ipnit
roceso
en este
del
pdunto
emonio
es hS
acer
ysVinit.
cualquier
El paso
otra
final
cosa
que
que
toma
se
indique en el archivo /etc/inittab (como generar procesos mingetty para consolas virtuales e iniciar la interfaz
de escritorio, si está en el nivel de ejecución 5).
Descripción de la inicialización de systemd El demonio de
inicialización de systemd es el reemplazo más reciente de los demonios SysVinit y Upstart init. Este
demonio de inicialización moderno se introdujo en Fedora 15 y RHEL 7, y todavía se usa en la
actualidad. Es compatible con SysVinit y Upstart. Systemd reduce el tiempo de inicialización del sistema
porque puede iniciar servicios de forma paralela.
Aprendizaje de los conceptos
básicos de systemd Con el demonio SysVinit, los servicios se detienen y se inician en función de los
niveles de ejecución. El servicio systemd se ocupa de los niveles de ejecución, pero los implementa de
forma diferente con lo que se denominan unidades de destino. Aunque el trabajo principal de systemd es
iniciar y detener servicios, puede administrar otros tipos de cosas denominadas unidades. Una unidad
es un grupo que consta de un nombre, tipo y archivo de configuración, y se centra en un servicio o acción
en particular. Hay 12 tipos de unidades systemd:
■ montaje automático
■ dispositivo
■ montar
■ camino 15
■ servicio
■ instantánea
■ enchufe
377
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
■ objetivo ■
temporizador
■
intercambiar ■ dividir
■ alcance
Las dos unidades primarias de systemd con las que debe preocuparse para manejar los servicios son las
unidades de servicio y las unidades de destino. Una unidad de servicio es para administrar demonios en su
servidor Linux. Una unidad objetivo es simplemente un grupo de otras unidades.
El siguiente ejemplo muestra varias unidades de servicio systemd y unidades de destino. Las unidades
de servicio tienen nombres de demonios familiares, como cups y sshd. Tenga en cuenta que el nombre de cada
unidad de servicio termina con .service. Las unidades de destino que se muestran tienen nombres como sysinit.
(sysinit se usa para iniciar servicios en la inicialización del sistema). Los nombres de las unidades de destino
terminan con .target.
# systemctl listaunidades | grep .servicio
...
tazas.servicio cargado activo en ejecución Servicio de impresión CUPS
dbus.servicio cargado activo en ejecución Bus de mensajes DBus
...
NetworkManager.service cargado activo ejecutando Network Manager prefdm.service
cargado activo ejecutando Display
salido
Manager
Remount
remountrootfs.service
Root FS cargado activo
rsyslog.servicio cargado activo en ejecución Registro del sistema
...
sshd.service cargado activo en ejecución OpenSSH server daemon
systemdlogind.service cargado activo en ejecución Servicio de inicio de sesión
...
# systemctl listaunidades | grep .target basic.target
cryptsetup.target getty.target graphical.target
cargado activo
localfs
activo Sistema básico cargado
pre.target localfs.target multiuser.target
activo activo Volúmenes cifrados cargado activo activo
network.target remotefs.target sockets.target
Indicaciones de inicio de sesión cargado activo activo
Interfaz gráfica cargado activo activo Sistemas de archivos
sound.target swap.target sysinit .objetivo
syslog.objetivo locales (pre) cargado activo activo Sistemas de archivos locales
cargado activo activo Multiusuario cargado activo activo Red
cargado activo activo Sistemas de archivos remotos
cargado activo activo Sockets
cargado activo activo Tarjeta de sonido
cargado activo activo Swap cargado activo
activo Inicialización del sistema cargado activo activo Syslog
378
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Los archivos de configuración de la unidad del sistema Linux se encuentran en los directorios /lib/systemd/system y /etc/
systemd/system. Puede usar el comando ls para buscar en esos directorios, pero el método preferido es usar una opción en el
comando systemctl de la siguiente manera:
# systemctl listunitfiles type=servicio
ARCHIVO DE UNIDAD ESTADO
...
tazas.servicio activado
...
dbus.servicio estático
...
NetworkManager.servicio activado
...
poweroff.servicio estático
...
sshd.servicio activado
sssd.servicio desactivado
...
276 archivos de unidad enumerados.
Los archivos de configuración de la unidad que se muestran en el código anterior están todos asociados con una unidad de
servicio. Los archivos de configuración para las unidades de destino se pueden mostrar a través del siguiente método:
# systemctl listunitfiles type=objetivo
ARCHIVO DE UNIDAD ESTADO
anaconda.objetivo estático
básico.objetivo estático
bluetooth.objetivo estático
cryptsetup.objetivo ctrl estático
altdel.objetivo desactivado
predeterminado.objetivo activado
...
shutdown.target estático
sigpwr.target estático
smartcard.target estático
sockets.target estático
sound.target swap.target estático
sysinit.target estático
syslog.target time estático
sync.target umount.target estático
43 archivos de unidades estático
enumerados. estático
Tenga en cuenta que los dos ejemplos de archivo de las unidades de configuración muestran unidades con un estado 15
estático, habilitado o deshabilitado. El estado habilitado significa que la unidad está actualmente habilitada.
El estado deshabilitado significa que la unidad está actualmente deshabilitada. El siguiente estado, estático, es un poco
confuso. Significa "habilitado estáticamente" y significa que la unidad está habilitada de forma predeterminada y no se puede
deshabilitar, ni siquiera por root.
379
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Los archivos de configuración de la unidad de servicio contienen mucha información, como qué otros servicios se deben
iniciar, cuándo se puede iniciar este servicio, qué archivo ambiental usar, etc. El siguiente ejemplo muestra el archivo de
configuración de la unidad del daemon sshd:
# cat /lib/systemd/system/sshd.service [Unidad]
Descripción=demonio del servidor OpenSSH
Documentación=man:sshd(8) man:sshd_config(5)
After=network.objetivo sshdkeygen.objetivo
[Servicio]
Type=notify
EnvironmentFile=/etc/cryptopolicies/backends/opensshserver.config EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd D $OPTIONS $CRYPTO_POLICY ExecReload=/bin/kill HUP $MAINPID
KillMode=proceso Reiniciar=en caso de error
Reiniciar segundo = 42 s
[Instalar]
WantedBy=multiusuario.objetivo
[Instalar]
WantedBy=multiusuario.objetivo
Este archivo de configuración de la unidad de servicio básico tiene las siguientes opciones:
Descripción: una descripción de formato libre (línea de comentario) del servicio.
Documentación: enumera las páginas man para el demonio sshd y el archivo de configuración.
Después: Configura el pedido. En otras palabras, enumera qué unidades deben activarse
antes de que se inicie este servicio.
Archivo de entorno: Los archivos de configuración del servicio.
ExecStart: El comando utilizado para iniciar este servicio.
ExecReload: El comando utilizado para recargar este servicio.
WantedBy: la unidad de destino a la que pertenece este servicio.
Tenga en cuenta que la unidad de destino, multiuser.target, se utiliza en el archivo de configuración de la unidad de
servicio sshd. La unidad de servicio sshd es solicitada por multiuser.target. En otras palabras, cuando se activa la unidad
objetivo multiusuario, se inicia la unidad de servicio sshd.
Puede ver las diversas unidades que una unidad objetivo activará usando el siguiente comando:
# systemctl show property "Quiere" multiusuario.objetivo Quiere=irqbalance.servicio
firewalld.servicio plymouthquit.service systemdupdateutmprunlevel.service systemdaskpassword
wall.path...
(FIN) q
380
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Desafortunadamente, el comando systemctl no formatea la salida para este pozo. Literalmente se sale
del borde derecho de la pantalla para que no pueda ver los resultados completos. Además, debe ingresar
q para volver al símbolo del sistema. Para solucionar este problema, canalice la salida a través de algunos
comandos de formato para producir una buena visualización ordenada alfabéticamente, como se muestra
en el siguiente ejemplo:
# systemctl show property "Quiere" multiuser.target \ | fmt10 | sed 's/Quiere=//
g' | ordenar atd.servicio
servicio de auditoría
avahidaemon.servicio
chronyd.servicio
crond.servicio
...
Esta pantalla muestra todos los servicios y otras unidades que se activarán (iniciarán), incluido
sshd, cuando se active la unidad objetivo multiusuario. Recuerde que una unidad objetivo es simplemente
una agrupación de otras unidades, como se muestra en el ejemplo anterior. Observe también que las
unidades de este grupo no son todas unidades de servicio. Hay unidades de ruta y otras unidades de
destino también.
Una unidad objetivo tiene deseos y requisitos, llamados requisitos. Un Quiere significa que todas las
unidades enumeradas están activadas para activarse (comenzar). Si fallan o no se pueden iniciar, no
hay problema: la unidad de destino continúa felizmente. El ejemplo anterior es una visualización de Deseos
únicamente.
Un Requiere es mucho más estricto que un Quiere y es potencialmente catastrófico. Un Requiere
significa que todas las unidades enumeradas están activadas para activarse (comenzar). Si fallan o no
se pueden iniciar, se desactiva toda la unidad (grupo de unidades).
Puede ver las diversas unidades que requiere una unidad de destino (debe activarse o la unidad fallará),
usando el comando en el ejemplo siguiente. Tenga en cuenta que la salida Requires es mucho más
corta que Wants para multiuser.target. Por lo tanto, no se necesita un formato especial de la salida.
# systemctl show property "Requiere" multiuser.target Requires=basic.target
Las unidades de destino también tienen archivos de configuración, al igual que las unidades de servicio.
El siguiente ejemplo muestra el contenido del archivo de configuración multiuser.target.
# cat /lib/systemd/system/multiuser.target # Este archivo es
parte de systemd. #
...
15
[Unidad]
Descripción=Documentación
multiusuario=man:systemd.special(7)
Requiere=básico.objetivo
381
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Conflictos = rescate.servicio rescate.objetivo Después
= básico.objetivo rescate.servicio rescate.objetivo AllowIsolate=sí
Este archivo de configuración de la unidad objetivo básica tiene las siguientes opciones:
Descripción: esta es solo una descripción de forma libre del objetivo.
Documentación: muestra la página del manual de systemd adecuada.
Requiere: si este objetivo multiusuario se activa, la unidad de destino enumerada es
también activado. Si la unidad de destino enumerada está desactivada o falla, entonces multiusuario. el
objetivo está desactivado. Si no hay opciones Antes y Después, tanto el objetivo multiusuario como la unidad
objetivo enumerada se activan simultáneamente.
Conflictos: esta configuración evita conflictos en los servicios. Iniciar multiuser.target detiene los objetivos y
servicios enumerados, y viceversa.
Después: este ajuste configura el pedido. En otras palabras, determina qué unidades
debe activarse antes de iniciar este servicio.
AllowIsolate: esta opción es una configuración booleana de sí o no. Si esta opción se establece en sí, esta
unidad de destino, multiuser.target, se activa junto con sus dependencias y todas las demás se desactivan.
Para obtener más información sobre estos archivos de configuración y sus opciones, ingrese man systemd.service,
man systemd.target y man systemd.unit en la línea de comandos.
Para el servidor Linux que usa systemd, el proceso de arranque es más fácil de seguir ahora que comprende las
unidades de destino de systemd. En el arranque, systemd activa la unidad default.target. Esta unidad tiene un alias
multiuser.target o graphical.target. Así, dependiendo del conjunto de alias, se inician los servicios objetivo de la
unidad objetivo.
Si necesita más ayuda para entender el daemon de systemd, puede ingresar man k systemd en la línea de
comando para obtener una lista de la documentación de las diversas utilidades de systemd en las páginas man.
Aprendizaje de la compatibilidad con versiones anteriores de systemd
con SysVinit El demonio systemd ha mantenido la compatibilidad con versiones anteriores del demonio SysVinit. Esto
permite que las distribuciones de Linux tengan tiempo de migrar lentamente a systemd.
Si bien los niveles de ejecución no son realmente parte de systemd, la infraestructura de systemd se ha creado para
proporcionar compatibilidad con el concepto de niveles de ejecución. Hay siete archivos de configuración de la unidad
de destino creados específicamente para la compatibilidad con versiones anteriores de SysVinit:
■ nivel de ejecución0.objetivo
■ nivel de ejecución1.objetivo
■ nivel de ejecución2.objetivo
■ nivel de ejecución3.objetivo
■ nivel de ejecución4.objetivo
382
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
■ nivel5.objetivo ■
nivel6.objetivo
Como probablemente ya se haya dado cuenta, existe un archivo de configuración de la unidad de destino para cada
uno de los siete niveles de ejecución clásicos de SysVinit. Estos archivos de configuración de la unidad de destino
están vinculados simbólicamente a los archivos de configuración de la unidad de destino que más se acercan a la
idea del nivel de ejecución original. En el ejemplo siguiente, los enlaces simbólicos se muestran para unidades de
destino de nivel de ejecución. Observe que las unidades de destino del nivel de ejecución para los niveles de ejecución
2, 3 y 4 están vinculadas simbólicamente a multiuser.target. La unidad de destino multiusuario es similar al modo
multiusuario extendido heredado.
# ls l /lib/systemd/system/runlevel*.objetivo lrwxrwxrwx. 1 raíz raíz 15
9 de abril 04:25 /lib/systemd/system/runlevel0.target > poweroff.target lrwxrwxrwx. 1 raíz raíz 13 9 de abril
04:25 /lib/systemd/system/runlevel1.target
> rescate.objetivo
lrwxrwxrwx. 1 raíz raíz 17 9 de abril 04:25 /lib/systemd/system/runlevel2.target
> multiusuario.objetivo
lrwxrwxrwx. 1 raíz raíz 17 9 de abril 04:25 /lib/systemd/system/runlevel3.target
> multiusuario.objetivo
lrwxrwxrwx. 1 raíz raíz 17 9 de abril 04:25 /lib/systemd/system/runlevel4.target
> multiusuario.objetivo
lrwxrwxrwx. 1 raíz raíz 16 9 de abril 04:25 /lib/systemd/system/runlevel5.target
> gráfico.objetivo
lrwxrwxrwx. 1 raíz raíz 13 9 de abril 04:25 /lib/systemd/system/runlevel6.target
> reiniciar.objetivo
El archivo /etc/inittab aún existe, pero solo contiene comentarios que indican que este archivo de
configuración no se usa y proporciona información básica sobre systemd. El archivo /etc/inittab ya no tiene
ningún uso funcional real. Este es un ejemplo de un archivo /etc/inittab en un servidor Linux que usa
systemd.
# cat /etc/inittab # inittab ya
no se usa. # # AGREGAR CONFIGURACIÓN
AQUÍ NO TENDRÁ EFECTO EN SU
SISTEMA. # # CtrlAltDelete es manejado por # /etc/systemd/system/ctrlaltdel.target # # systemd
usa 'objetivos' en lugar de niveles de ejecución.
# De forma predeterminada, hay dos objetivos principales: # #
multiuser.target: análogo al nivel de ejecución 3 # graphical.target:
análogo al nivel de ejecución 5 # # Para ver el objetivo predeterminado
actual, ejecute: # systemctl getdefault # 15
383
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
# Para establecer un destino predeterminado,
ejecute: # systemctl setdefault TARGET.target
El /etc/inittab explica que si desea algo similar a un nivel de ejecución clásico 3 o 5 como su nivel de ejecución
predeterminado, necesita ejecutar systemctl default.target para establecer el objetivo de nivel de ejecución en el que
desea. Para verificar a qué default.target está actualmente vinculado simbólicamente (o en términos heredados, para
verificar el nivel de ejecución predeterminado), use el comando que se muestra aquí.
Puede ver que en este servidor Linux, el valor predeterminado es iniciar en el nivel de ejecución heredado 3.
# ls l /etc/systemd/system/default.objetivo lrwxrwxrwx. 1 raíz
raíz 36 13 de marzo 17:27 /etc/systemd/system/default.target
> /lib/systemd/system/runlevel3.target
La capacidad de cambiar los niveles de ejecución usando el comando init o telinit todavía está disponible.
Cuando se emite, cualquiera de los comandos se traduce en una solicitud de activación de la unidad de destino de
systemd. Por lo tanto, escribir init 3 en la línea de comando realmente emite el comando systemctl isolated multi
user.target. Además, aún puede usar el comando runlevel para determinar el nivel de ejecución heredado actual,
pero se desaconseja enfáticamente.
El clásico SysVinit /etc/inittab manejó la generación de los procesos getty o mingetty.
systemd init maneja esto a través de la unidad getty.target. El getty.target es activado por la unidad multi
user.target. Puede ver cómo estas dos unidades objetivo están vinculadas por el siguiente comando:
# systemctl show property "Buscado por" getty.objetivo Buscado por=multi
usuario.objetivo
Ahora que tiene una comprensión básica de los demonios de inicio clásicos y modernos, es hora de realizar algunas
acciones prácticas de administrador del servidor que involucran el demonio de inicialización.
Comprobación del estado de los servicios
Como administrador de Linux, debe verificar el estado de los servicios que se ofrecen en su servidor. Por
razones de seguridad, debe deshabilitar y eliminar cualquier servicio del sistema no utilizado descubierto durante
el proceso. Lo más importante para la resolución de problemas es que debe poder saber rápidamente qué debe
y qué no debe ejecutarse en su servidor Linux.
Por supuesto, saber qué servicio de inicialización está utilizando su servidor Linux es la primera información que
debe obtener. La forma de determinar esto se trató en la sección "Comprensión del daemon de inicialización"
anteriormente en este capítulo. Las siguientes secciones están organizadas en subsecciones sobre los diversos
demonios de inicialización.
384
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Comprobación de servicios para sistemas SysVinit Para
ver todos los servicios que ofrece un servidor Linux utilizando el demonio SysVinit clásico, utilice el
comando chkconfig. El ejemplo siguiente muestra los servicios disponibles en un servidor SysVinit
Linux clásico. Tenga en cuenta que cada nivel de ejecución (0–6) se muestra para cada servicio con
un estado de activado o desactivado. El estado indica si un servicio en particular se inicia (activado) o
no (desactivado) para ese nivel de ejecución.
# chkconfig lista
Kit de consola 0:apagado 1:apagado 2:apagado 3:encendido 4:encendido 5:encendido 6:apagado
NetworkManager 0: apagado 1: apagado 2: apagado 3: apagado 4: apagado 5: apagado 6: apagado
...
corona 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
tazas 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
...
sshd 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
esmoquin 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
syslog 0:apagado 1:apagado 2:apagado 3:apagado 4:apagado 5:apagado 6:apagado
udevpost 0:apagado 1:apagado 2:apagado 3:encendido 4:encendido 5:encendido 6:apagado
servidor vnc 0:apagado 1:apagado 2:apagado 3:apagado 4:apagado 5:apagado 6:apagado
winbind 0:apagado 1:apagado 2:apagado 3:apagado 4:apagado 5:apagado 6:apagado
wpa_supplicant 0: apagado 1: apagado 2: apagado 3: apagado 4: apagado 5: apagado 6: apagado
xfs 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
ypbind 0:apagado 1:apagado 2:apagado 3:apagado 4:apagado 5:apagado 6:apagado
yumupdatesd 0:apagado 1:apagado 2:apagado 3:encendido 4:encendido 5:encendido 6:apagado
Algunos servicios del ejemplo nunca se inician, como vncserver. Otros servicios, como el demonio
cups, se inician en los niveles de ejecución 2 a 5.
Usando el comando chkconfig, no puede saber si un servicio se está ejecutando actualmente. Para
hacer eso, necesita usar el comando de servicio. Para ayudar a aislar solo los servicios que se están
ejecutando actualmente, el comando de servicio se canaliza al comando grep y luego se ordena de la
siguiente manera:
# servicio statusall | grep ejecutando... | sort anacron (pid 2162) se está
ejecutando... atd (pid 2172) se está ejecutando... auditd (pid 1653) se está
ejecutando... automount (pid 1952) se está ejecutando... consolekit
daemon (pid 2046) se está ejecutando... crond (pid 2118) se está
ejecutando... cupsd (pid 1988) se está ejecutando...
...
sshd (pid 2002) se está ejecutando... syslogd
(pid 1681) se está ejecutando... xfs (pid 2151) se
está ejecutando... yumupdatesd (pid 2205) se 15
está ejecutando...
385
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
También puede usar los comandos chkconfig y service para ver la configuración de un servicio individual. Usando
ambos comandos en el ejemplo que sigue, puede ver la configuración del daemon cups.
# chkconfig list tazas
cups 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
# #
service cups status cupsd (pid
1988) se está ejecutando...
Puede ver que el daemon cupsd está configurado para iniciarse en todos los niveles de ejecución excepto 0, 1 y 6,
y desde el comando de servicio, puede ver que se está ejecutando actualmente. Además, se proporciona el número
de identificación del proceso (PID) para el daemon.
Para ver todos los servicios que ofrece un servidor Linux usando systemd, use el siguiente comando:
# systemctl listunitfiles type=service | grep v deshabilitado
ARCHIVO DE UNIDAD ESTADO
abrtccpp.servicio abrt activado
oops.servicio abrt activado
vmcore.servicio abrtd.servicio activado
activado
alsarestore.servicio alsa estático
store.servicio estático
anacondashell@.service arp estático
ethers.service atd.service activado
auditd.service activado
activado
avahidaemon.servicio activado
bluetooth.servicio activado
consolakitlogsystemrestart.service consolakitlog estático
systemstart.service consolakitlogsystemstop.service estático
crond.service estático
activado
tazas.servicio activado
...
sshdkeygen.servicio activado
sshd.servicio activado
systemsetupkeyboard.service activado
...
134 archivos de unidad enumerados.
Recuerde que las tres posibilidades de estado para un servicio systemd son habilitado, deshabilitado o estático. No
es necesario incluir disabled para ver qué servicios están configurados para estar activos, lo que se logra de manera
efectiva mediante el uso de la opción v en el comando grep, como se muestra en el ejemplo anterior. El estado de
estática está esencialmente habilitado y, por lo tanto, debe incluirse.
386
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Para ver si un servicio en particular se está ejecutando, use el siguiente comando:
# systemctl status cups.service cups.service
Programador de CUPS
Cargado: cargado (/lib/systemd/system/cups.service; habilitado)
Activo: activo (en ejecución) desde el miércoles 20190918 17:32:27 EDT; Hace 3 días Documentos:
man:cupsd(8)
PID principal: 874 (cupsd)
Estado: "El programador se está ejecutando..."
Tareas: 1 (límite: 12232)
Memoria: 3,1 M
CGroup: /system.slice/cups.service └─874 /usr/sbin/
cupsd l
El comando systemctl se puede utilizar para mostrar el estado de uno o más servicios. En el ejemplo
anterior, se eligió el servicio de impresión. Observe que el nombre del servicio es cups.service. Aquí se
brinda una gran cantidad de información útil sobre el servicio, como el hecho de que está habilitado y activo,
su hora de inicio y su ID de proceso (PID) también.
Ahora que puede verificar el estado de los servicios y determinar alguna información sobre ellos, necesita
saber cómo iniciar, detener y recargar los servicios en su servidor Linux.
Servicios de parada y arranque
Las tareas de iniciar, detener y reiniciar servicios generalmente se refieren a necesidades
inmediatas; en otras palabras, administrar servicios sin reiniciar el servidor. Por ejemplo, si desea
detener un servicio temporalmente, está en el lugar correcto. Sin embargo, si desea detener un servicio y no
permitir que se reinicie al reiniciar el servidor, entonces debe deshabilitar el servicio, lo cual se trata en la
sección "Habilitación de servicios persistentes" más adelante en este capítulo.
Detención e inicio de los servicios de SysVinit El comando
principal para detener e iniciar los servicios de SysVinit es el comando de servicio. Con el
comando de servicio, el nombre del servicio que desea controlar aparece en segundo lugar en la línea de
comando. La última opción es lo que desea hacer con el servicio: detener, iniciar, reiniciar, etc. El siguiente
ejemplo muestra cómo detener el servicio de vasos. Observe que se da un OK, lo que le permite saber que
cupsd se ha detenido por completo con éxito:
# service cups status cupsd (pid
5857) se está ejecutando... # service cups stop
Deteniendo tazas: # service cups status cupsd 15
está detenido [ DE ACUERDO ]
387
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Para iniciar un servicio, simplemente use una opción de inicio en lugar de una opción de detención al final del
comando de servicio, de la siguiente manera:
# service cups start Comenzando
tazas: # service cups status [ DE ACUERDO ]
cupsd (pid 6860) se está
ejecutando...
Para reiniciar un servicio SysVinit, se utiliza la opción de reinicio. Esta opción detiene el servicio y luego lo vuelve
a iniciar inmediatamente:
# service cups restart Stopping
cups: Starting cups: # service cups [ DE ACUERDO ]
status cupsd (pid 7955) se está [ DE ACUERDO ]
ejecutando...
Cuando un servicio ya está detenido, un reinicio genera un estado FAILED al intentar detenerlo. Sin embargo,
como se muestra en el ejemplo siguiente, el servicio se inicia correctamente cuando se intenta reiniciar:
# vasos de servicio se detienen
Deteniendo vasos: # vasos de [ DE ACUERDO ]
servicio reinician Deteniendo vasos:
Comenzando vasos: # estado de [FALLIDO]
vasos de servicio cupsd (pid 8236) [ DE ACUERDO ]
se está ejecutando...
Recargar un servicio es diferente de reiniciar un servicio. Cuando recarga un servicio, el servicio en sí no se
detiene. Solo se vuelven a cargar los archivos de configuración
recargar
del
el sdervicio.
emonio Ecl
ups:
siguiente ejemplo muestra cómo
# service cups status cupsd (pid
8236) se está ejecutando... # service cups
reload Recargando cups: # service cups status
cupsd (pid 8236) se está ejecutando... [Aceptar ]
Si un servicio de SysVinit se detiene cuando intenta volver a cargarlo, obtiene un estado FALLIDO. Esto se
muestra en el siguiente ejemplo:
# estado de vasos de servicio
cupsd está detenido # recarga de
vasos de servicio
Recarga de vasos: [FALLIDO]
Detener e iniciar servicios systemd
Para el demonio systemd, el comando systemctl funciona para detener, iniciar, recargar y reiniciar servicios.
Las opciones del comando systemctl deberían resultarle familiares.
388
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Detención de un servicio con
systemd En el siguiente ejemplo, el estado del demonio cups se verifica y luego se detiene
usando el comando systemctl stop cups.service:
# systemctl status cups.service cups.service
Servicio de impresión de CUPS cargado: cargado (/lib/
systemd/system/cups.service; habilitado)
Activo: activo (en ejecución) desde el lun, 20 abr 2020 12:36:3...
PID principal: 1315 (cupsd)
CGroup: nombre=systemd:/system/cups.service 1315 /usr/sbin/
cupsd f # systemctl stop cups.service # systemctl
status cups.service cups.service Servicio de impresión de CUPS
Cargado: cargado (/lib/systemd/system /cups.service; activado)
Activo: inactivo (muerto) desde mar, 21 abr 2020 04:43:4...
Proceso: 1315 ExecStart=/usr/sbin/cupsd f (código=salido,
estado=0/ÉXITO)
CGroup: nombre=systemd:/system/cups.service
Tenga en cuenta que cuando se toma el estado, después de detener el demonio cups, el servicio está
inactivo (muerto) pero aún se considera habilitado. Esto significa que el daemon cups aún se inicia al
arrancar el servidor.
Iniciar un servicio con systemd
Iniciar el demonio cups es tan fácil como detenerlo. El ejemplo que sigue demuestra esta
facilidad:
# systemctl start cups.service # systemctl status
cups.service cups.service Servicio de impresión
de CUPS cargado: cargado (/lib/systemd/system/
cups.service; habilitado)
Activo: activo (en ejecución) desde el martes 21 de abril de 2020 04:43:5...
PID principal: 17003 (cupsd)
CGroup: nombre=systemd:/system/cups.service └ 17003 /usr/
sbin/cupsd f
Después de iniciar el daemon cups, el uso de systemctl con la opción de estado muestra que el servicio
está activo (en ejecución). Además, se muestra su número de ID de proceso (PID), 17003.
Reiniciar un servicio con systemd
Reiniciar un servicio significa que un servicio se detiene y luego se reinicia. Si el servicio no se
estaba ejecutando actualmente, reiniciarlo simplemente inicia el servicio.
# systemctl restart cups.service # systemctl status 15
cups.service cups.service Servicio de impresión
de CUPS cargado: cargado (/lib/systemd/system/
cups.service; habilitado)
Activo: activo (en ejecución) desde el martes 21 de abril de 2020 04:45:2...
389
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
PID principal: 17015 (cupsd)
CGroup: nombre=systemd:/system/cups.service └ 17015 /usr/sbin/
cupsd f
También puede realizar un reinicio condicional de un servicio utilizando systemctl. Un reinicio
condicional solo reinicia un servicio si se está ejecutando actualmente. Cualquier servicio en un estado
inactivo no se inicia.
# systemctl status cups.service cups.service
Servicio de impresión CUPS
Cargado: cargado (/lib/systemd/system/cups.service; habilitado)
Activo: inactivo (muerto) desde mar, 21 abr 2020 06:03:32...
Proceso: 17108 ExecStart=/usr/sbin/cupsd f (código=salido, estado=0/
ÉXITO)
CGroup: nombre=systemd:/system/cups.service
# systemctl condrestart cups.service # systemctl status
cups.service cups.service Servicio de impresión CUPS
Cargado: cargado (/lib/systemd/system/cups.service; habilitado)
Activo: inactivo (muerto) desde mar, 21 abr 2020 06:03:32...
Proceso: 17108 ExecStart=/usr/sbin/cupsd f (código=salido, estado=0/
ÉXITO)
CGroup: nombre=systemd:/system/cups.service
Observe en el ejemplo que el daemon cups estaba en un estado inactivo. Cuando se emitió el
reinicio condicional, ¡no se generaron mensajes de error! El demonio cups no se inició porque los
reinicios condicionales afectan los servicios activos. Por lo tanto, siempre es una buena práctica
verificar el estado de un servicio después de detenerlo, iniciarlo, reiniciarlo condicionalmente, etc.
Recargar un servicio con systemd
Recargar un servicio es diferente de reiniciar un servicio. Cuando recarga un servicio, el servicio en sí
no se detiene. Solo se vuelven a cargar los archivos no
de tcodos
onfiguración
los servicios
del se
ervicio.
stán implementados
Tenga en cuenta
para
que
usar la función de recarga.
# systemctl status sshd.service sshd.service
Demonio del servidor OpenSSH Cargado: cargado (/usr/lib/
systemd/system/sshd.service; habilitado)
Activo: activo (en ejecución) desde el miércoles 20190918 17:32:27 EDT; Hace 3 días
PID principal: 1675 (sshd)
CGroup: /system.slice/sshd.service └─1675 /usr/sbin/
sshd D # systemctl reload sshd.service #
systemctl status sshd.service sshd.service Demonio del
servidor OpenSSH Cargado: cargado (/lib/systemd/system /
sshd.servicio; habilitado)
Activo: activo (en ejecución) desde el miércoles 20190918 17:32:27 EDT; Hace 3 días Proceso: 21770
ExecReload=/bin/kill HUP $MAINPID (código=salido, estado=0/ÉXITO)
(código=salido, estado=0/ÉXITOd)
390
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
PID principal: 1675 (sshd)
CGroup: /system.slice/sshd.service └─1675 /usr/sbin/
sshd D ...
Recargar un servicio, en lugar de reiniciarlo, evita que se anulen las operaciones de servicio pendientes.
Una recarga es un mejor método para un servidor Linux ocupado.
Ahora que sabe cómo detener e iniciar servicios para solucionar problemas y emergencias, puede aprender
a habilitar y deshabilitar servicios.
Habilitación de servicios persistentes
Utiliza detener e iniciar para necesidades inmediatas, no para servicios que deben ser persistentes.
Un servicio persistente es aquel que se inicia en el momento del arranque del servidor o en un nivel de ejecución particular.
Los servicios que deben configurarse como persistentes suelen ser servicios nuevos que ofrece el servidor
Linux.
Configurando servicios persistentes para SysVinit Una de las mejores
características del daemon SysVinit clásico es que hacer que un servicio en particular sea persistente o
eliminar su persistencia es muy fácil de hacer. Considere el siguiente ejemplo:
# chkconfig list tazas
tazas 0:apagado 1:apagado 2:apagado 3:apagado 4:apagado 5:apagado 6:apagado
En este servidor Linux, el servicio cups no se inicia en ningún nivel de ejecución, como se muestra con el
comando chkconfig. También puede verificar y ver si hay enlaces de símbolo de inicio (S) configurados en
cada uno de los siete directorios de nivel de ejecución, /etc/rc.d/rc?.d. Recuerde que SysVinit mantiene enlaces
simbólicos aquí para iniciar y detener varios servicios en ciertos niveles de ejecución. Cada directorio representa
un nivel de ejecución particular; por ejemplo, rc5.d es para el nivel de ejecución 5. Tenga en cuenta que solo se
enumeran los archivos que comienzan con una K, por lo que hay enlaces para eliminar el demonio cups.
Ninguno aparece con S, lo que es consistente con chkconfig porque el demonio cups no se inicia en ningún
nivel de ejecución en este servidor.
# ls /etc/rc.d/rc?.d/*tazas /etc/rc.d/rc0.d/
K10cups /etc/rc.d/rc3.d/K10cups /etc/rc.d/rc1.d /K10cups /etc/rc.d/rc4.d/
K10cups /etc/rc.d/rc2.d/K10cups /etc/rc.d/rc5.d/K10cups /etc/rc.d/rc6.d/
K10cups
Para hacer que un servicio sea persistente en un nivel de ejecución particular, se usa nuevamente el
comando chkconfig. En lugar de la opción list, se usa la opción level, como se muestra en el siguiente
código:
# chkconfig nivel 3 tazas en # chkconfig lista 15
tazas
tazas 0:apagado 1:apagado 2:apagado 3:encendido 4:apagado 5:apagado 6:apagado
# ls /etc/rc.d/rc3.d/S*cups /etc/rc.d/rc3.d/
S56cups
391
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
La persistencia
del servicio en el nivel de ejecución 3 se verifica usando el comando chkconfig list y buscando
en el directorio rc3.d cualquier archivo que comience con la letra S.
Para hacer que un servicio sea persistente en más de un nivel de ejecución, puede hacer lo siguiente:
# chkconfig nivel 2345 tazas en # chkconfig lista
tazas
tazas 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
# ls /etc/rc.d/rc?.d/S*cups /etc/rc.d/rc2.d/
S56cups /etc/rc.d/rc4.d/S56cups /etc/rc.d/rc3 .d/S56cups /etc/rc.d/rc5.d/S56cups
Deshabilitar un servicio es tan fácil como habilitar uno con SysVinit. Solo necesita cambiar el encendido en el
comando chkconfig a apagado. El siguiente ejemplo demuestra el uso del comando chkconfig para deshabilitar el
servicio cups en el nivel de ejecución 5:
# chkconfig nivel 5 copas desactivadas #
chkconfig lista de copas
cups 0:apagado 1:apagado 2:encendido 3:encendido 4:encendido 5:apagado 6:apagado
# ls /etc/rc.d/rc5.d/S*cups ls: no se puede
acceder a /etc/rc.d/rc5.d/S*cups: No existe tal archivo o directorio
Como era de esperar, ahora no hay un enlace simbólico, que comience con la letra S, para el servicio cups en el
directorio /etc/rc.d/rc5.d.
Para el demonio systemd, nuevamente se usa el comando systemctl. Con él, puede deshabilitar y habilitar
servicios en el servidor Linux.
Habilitación de un servicio con systemd
El uso de la opción habilitar en el comando systemctl configura un servicio para que siempre se inicie en el
arranque (sea persistente). A continuación se muestra exactamente cómo lograr esto:
# systemctl status cups.service cups.service
Servicio de impresión de CUPS cargado: cargado (/lib/
systemd/system/cups.service; deshabilitado)
Activo: inactivo (muerto) desde mar, 21 abr 2020 06:42:38 ...
PID principal: 17172 (código=salido, estado=0/ÉXITO)
CGroup: name=systemd:/system/cups.service # systemctl enable
cups.service Enlace simbólico creado /etc/systemd/system/
printer.target.wants/cups.service
→ /usr/lib/systemd/system/cups.servicio.
Enlace simbólico creado /etc/systemd/system/sockets.target.wants/cups.socket
→ /usr/lib/systemd/system/cups.socket.
Enlace simbólico creado /etc/systemd/system/multiuser.target.wants/cups.path
→ /usr/lib/systemd/system/cups.ruta. # systemctl status
cups.service cups.service Servicio de impresión de CUPS cargado:
cargado (/lib/systemd/system/cups.service; habilitado)
Activo: inactivo (muerto) desde mar, 21 abr 2020 06:42:38...
PID principal: 17172 (código=salido, estado=0/ÉXITO)
CGroup: nombre=systemd:/system/cups.service
392
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Observe que el estado de cups.service cambia de deshabilitado a habilitado después de usar la
opción habilitar en systemctl. Además, observe que la opción habilitar simplemente crea algunos
enlaces simbólicos. Puede sentirse tentado a crear estos enlaces usted mismo. Sin embargo, el
método preferido es usar el comando systemctl para lograr esto.
Deshabilitar un servicio con systemd
Puede usar la opción de deshabilitar en el comando systemctl para evitar que un servicio se
inicie en el arranque. Sin embargo, no detiene inmediatamente el servicio. Debe usar la opción de
detención discutida en la sección "Detener un servicio con systemd". El siguiente ejemplo muestra
cómo deshabilitar un servicio actualmente habilitado:
# systemctl desactivar cups.service rm '/etc/systemd/
system/printer.target.wants/cups.service' rm '/etc/systemd/system/sockets.target.wants/
cups.socket' rm '/etc/systemd /system/multiuser.target.wants/cups.path' # systemctl status
cups.service cups.service Servicio de impresión de CUPS cargado: cargado (/lib/systemd/
system/cups.service; deshabilitado)
Activo: activo (en ejecución) desde el martes 21 de abril de 2020 a las 06:06:41...
PID principal: 17172 (cupsd)
CGroup: nombre=systemd:/system/cups.service 17172 /usr/sbin/
cupsd f
La opción de desactivación simplemente elimina algunos archivos a través del método preferido
del comando ctl del sistema. Observe también en el ejemplo anterior que aunque el servicio cups ahora
está deshabilitado, el daemon cups todavía está activo (en ejecución) y debe detenerse manualmente.
Con systemd, algunos servicios no se pueden deshabilitar. Estos servicios son servicios estáticos.
Considere el siguiente servicio, dbus.service:
# systemctl status dbus.service dbus.service Bus
de mensajes del sistema DBus cargado: cargado (/lib/systemd/
system/dbus.service; estático)
Activo: activo (en ejecución) desde lun, 20 abr 2020 12:35:...
PID principal: 707 (dbusdaemon)
...
# systemctl deshabilitar dbus.service # systemctl
status dbus.service dbus.service Bus de mensajes
del sistema DBus
Cargado: cargado (/lib/systemd/system/dbus.service; estático)
Activo: activo (en ejecución) desde lun, 20 abr 2020 12:35:...
PID principal: 707 (dbusdaemon)
...
Cuando se emite el comando systemctl disabled en dbus.service, simplemente se ignora.
Recuerda que estático significa que el servicio está habilitado por defecto y no puede ser 15
deshabilitado, ni siquiera por root. A veces, deshabilitar un servicio no es suficiente para asegurarse
de que no se ejecute. Por ejemplo, es posible que desee que network.service reemplace a
NetworkMan ager.service para iniciar interfaces de red en su sistema. Deshabilitar NetworkManager
393
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
evitaría que el servicio se iniciara por sí solo. Sin embargo, si algún otro servicio enumerara NetworkManager como
una dependencia, ese servicio intentaría iniciar NetworkManager cuando se inició.
Para deshabilitar un servicio de una manera que evite que se ejecute en su sistema, puede usar la opción de máscara.
Por ejemplo, para configurar el servicio NetworkManager para que nunca se ejecute, escriba lo siguiente:
# systemctl mask NetworkManager.service ln s '/dev/
null' '/etc/systemd/system/NetworkManager.service'
Como muestra el resultado, el archivo NetworkManager.service en /etc está vinculado a /dev/null. Entonces,
incluso si alguien intentara ejecutar ese servicio, no sucedería nada.
Para poder volver a utilizar el servicio, puede escribir systemctl unmask Network Manager.service.
Ahora que comprende cómo permitir que los servicios individuales sean persistentes (y cómo deshabilitar o enmascarar
servicios individuales), debe considerar los grupos de servicios como un todo. A continuación, cubro cómo iniciar grupos
de servicios en el momento del arranque.
Configuración de un nivel de ejecución predeterminado o una unidad de destino
Mientras que un servicio persistente es uno que se inicia en el momento del arranque del servidor, un nivel de ejecución o
unidad de destino persistente (predeterminado) es un grupo de servicios que se inician en el momento del arranque. Tanto
Sys Vinit clásico como Upstart defi ne estos grupos de servicios como niveles de ejecución, mientras que systemd los llama
unidades de destino.
Configuración del nivel de ejecución predeterminado de SysVinit El nivel
de ejecución persistente para un servidor Linux se establece mediante SysVinit en el archivo /etc/inittab.
Una parte de este archivo se muestra aquí:
# gato /etc/inittab # # inittab
Este archivo describe cómo el proceso INIT debe configurar el
# sistema en un determinado nivel de ejecución.
...
id:5:initpredeterminado:
...
La línea initdefault en el ejemplo muestra que el nivel de ejecución predeterminado actual es el nivel de ejecución 5. Para
cambiar esto, simplemente edite el archivo /etc/inittab con su editor favorito y cambie el 5 a uno de los siguientes niveles de
ejecución: 2, 3 o 4 ¡No use los niveles de ejecución 0 o 6 en este archivo! Esto haría que su servidor se detenga o se reinicie
cuando se inicie.
394
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Para systemd, el término unidades de destino se refiere a grupos de servicios que se iniciarán. A continuación se muestran
las diversas unidades de destino que puede configurar para que sean persistentes y sus unidades de destino equivalentes
compatibles con versiones anteriores y específicas del nivel de ejecución:.
■ multiusuario.destino = ■
nivel2.objetivo ■
nivel3.objetivo ■
nivel4.objetivo
■ graphical.target = runlevel5.target
La unidad de destino persistente se establece a través de un enlace simbólico al archivo de unidad default.target.
Considera lo siguiente:
# ls l /etc/systemd/system/default.objetivo lrwxrwxrwx. 1
raíz raíz 36 13 de marzo 17:27
/etc/systemd/system/default.objetivo > /lib/systemd/
system/runlevel5.objetivo
# ls l /lib/systemd/system/runlevel5.objetivo lrwxrwxrwx. 1 raíz
raíz 16 27 de marzo 15:39
/lib/systemd/system/runlevel5.objetivo > gráfico.objetivo
El ejemplo muestra que la unidad de destino persistente actual en este servidor es
runlevel5.target porque default.target es un enlace simbólico al archivo de unidad runlevel5.target.
Sin embargo, observe que runlevel5.target también es un enlace simbólico y apunta a graphical.target.
Por lo tanto, la unidad de destino persistente actual de este servidor es graphical.target.
Para configurar una unidad de destino diferente para que sea persistente, simplemente necesita cambiar el enlace
simbólico por default.target. Para ser coherente, quédese con las unidades de destino de nivel de ejecución si se
utilizan en su servidor.
'
El siguiente ejemplo de systemctl cambia el servidor s unidad objetivo persistente de
graphical.target a multiuser.target:
# systemctl getdefault
graphical.target #
systemctl setdefault runlevel3.target Eliminado /etc/
systemd/system/default.target.
Enlace simbólico creado /etc/systemd/system/default.target →
/usr/lib/systemd/system/multiuser.target. # systemctl get
default multiusuario.objetivo
Cuando se reinicia el servidor, multiuser.target es la unidad de destino persistente. Todos los
servicios de la unidad multiusuario.objetivo se inician (activan) en ese momento. 15
395
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Adición de servicios nuevos o personalizados
Ocasionalmente, necesita agregar un nuevo servicio a su servidor Linux. Además, es posible que deba
personalizar un servicio en particular. Cuando surjan estas necesidades, debe seguir pasos específi cos
'
para su servidor Linux
s
od remonio
econocer
de
la
inicialización
personalización
para dhel
acerse
mismo.
cargo de la gestión del ser
Agregar nuevos servicios a SysVinit Al agregar un
servicio nuevo o personalizado a un servidor Linux SysVinit, debe completar tres pasos para que el
servicio sea administrado por SysVinit:.
1. Cree un archivo de script de servicio nuevo o personalizado.
2. Mueva el script de servicio nuevo o personalizado a la ubicación adecuada para SysVinit
gestión.
3. Establezca el permiso apropiado en el script.
4. Agregue el servicio a un nivel de ejecución específi co.
Paso 1: Cree un archivo de script de servicio nuevo o
personalizado Si está personalizando un script de servicio, simplemente haga una copia del archivo de la
unidad original desde /etc/rc.d/init.d y agregue las personalizaciones que desee.
Si está creando un nuevo script, debe asegurarse de manejar todas las opciones que desea que el
comando de servicio acepte para su servicio, como iniciar, detener, reiniciar, etc.
Para una nueva secuencia de comandos, especialmente si nunca antes ha creado una secuencia de comandos de
servicio, sería conveniente hacer una copia de una secuencia de comandos de servicio actual desde /etc/rc.d/init.d y
modificarla para que cumpla con
del
los
script
requisitos
del servicio
de su cnupsd:
uevo servicio. necesidades. Considere el siguiente ejemplo parcial
# gato /etc/rc.d/init.d/cups #!/bin/sh #
...
# chkconfig: 2345 25 10
...
comenzar () {
echo n $"Iniciando $prog: " # iniciar
daemon daemon $DAEMON
RETVAL=$? echo [ $RETVAL = 0 ]
&& toque /var/lock/subsys/cups return
$RETVAL
396
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
stop () { #
detener daemon
echo n $"Deteniendo $prog: "
killproc $DAEMON RETVAL=$?
eco
[ $RETVAL = 0 ] && rm f /var/lock/subsys/tazas
}
reiniciar()
{ detener iniciar
}
caso $1 en
...
El script del servicio cups comienza creando funciones para cada una de las opciones de inicio,
, ,
detención y reinicio. Si no se siente cómodo con la escritura de scripts de shell, revise el Capítulo 7
"Escribir scripts de shell simples", para mejorar sus habilidades.
Una línea que debe asegurarse de verificar y posiblemente modificar en su nuevo script es
la línea chkconfig que está comentada; Por ejemplo:
# chkconfig: 2345 25 10
Cuando agrega la secuencia de comandos del servicio en un paso posterior, el comando chkconfig lee esa línea para establecer los
niveles de ejecución en los que se inicia el servicio (2, 3, 4 y 5), su orden de ejecución cuando la secuencia de comandos está
configurada para iniciarse (25), y su orden de eliminación cuando está configurado para detenerse (10).
Verifique el orden de inicio en el nivel de ejecución predeterminado antes de agregar su propio script, como se muestra
en este ejemplo:
# ls /etc/rc5.d
...
/etc/rc5.d/S22messagebus /etc/
rc5.d/S23NetworkManager /etc/rc5.d/
S24nfslock /etc/rc5.d/S24openct /etc/
rc5.d/S24rpcgssd /etc/rc5.d/S25blk
disponibilidad /etc/rc5.d/S25cups /etc/
rc5.d/S25netfs /etc/rc5.d/S26acpid /etc/
rc5.d/S26haldaemon /etc/rc5.d/
S26hypervkvpd /etc/rc5.d/S26udevpost
15
...
397
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En este caso, la línea chkconfig en el script S25My_New_Service hará que el script se agregue después de S25cups y
antes de S25netfs en el orden de arranque. Puede cambiar la línea chkconfig en la secuencia de comandos del servicio si
desea que el servicio comience antes (use un número más pequeño) o más tarde (use un número más grande) en la lista
de secuencias de comandos del servicio.
Paso 2: agregue el script de servicio a /etc/rc.d/init.d Después
de modificar o crear y probar el archivo de script de su servicio, puede moverlo a la ubicación adecuada, /etc/rc.d /init.d:
# cp Mi_Nuevo_Servicio /etc/rc.d/init.d # ls /etc/
rc.d/init.d/Mi_Nuevo_Servicio /etc/rc.d/init.d/
Mi_Nuevo_Servicio
Paso 3: establezca el permiso apropiado en el script
El script debe ser ejecutable:
# chmod 755 /etc/rc.d/init.d/Mi_Nuevo_Servicio
Paso 4: agregar el servicio a los directorios de nivel de
ejecución Este último paso configura el script de servicio para que se inicie y se detenga en diferentes niveles de
ejecución y verifica que el script de servicio funcione.
1. Para agregar el script basado en la línea chkconfig en el script de servicio, escriba el
siguiente:
# chkconfig add Mi_nuevo_servicio # ls /
etc/rc?.d/*Mi_nuevo_servicio /etc/rc0.d/
K10Mi_nuevo_servicio /etc/rc4.d/S25Mi_nuevo_servicio /etc/rc1.d/
K10Mi_nuevo_servicio /etc/rc5.d/S25Mi_nuevo_servicio /etc/rc2.d/
S25Mi_Nuevo_Servicio /etc/rc6.d/K10Mi_Nuevo_Servicio /etc/rc3.d/
S25Mi_Nuevo_Servicio
Según el ejemplo anterior (chkconfig: 2345 25 10), los enlaces simbólicos al script configuran el servicio para
que comience en la posición 25 (S25) para los niveles de ejecución 2, 3, 4 y 5.
Además, los enlaces están configurados para detenerse (o no iniciarse) en los niveles de ejecución 0, 1 y 6.
2. Una vez que haya creado los enlaces simbólicos, pruebe que su servicio nuevo o modificado funcione como
se esperaba antes de reiniciar el servidor.
# servicio My_New_Service inicio
Iniciando My_New_Service: # [ DE ACUERDO ]
service My_New_Service stop
Una vez que todo está en su lugar, su servicio nuevo o modificado comienza en cada nivel de ejecución que haya
seleccionado en su sistema. Además, puede iniciarlo o detenerlo manualmente usando el comando de servicio.
398
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
Agregar nuevos servicios a systemd
Al agregar un servicio nuevo o personalizado a un servidor systemd de Linux, debe completar tres pasos para que
systemd administre el servicio:
1. Cree un archivo de unidad de configuración de servicio nuevo o personalizado para el servicio nuevo o personalizado.
servicio izado.
2. Mueva el archivo de la unidad de configuración de servicio nuevo o personalizado a la ubicación adecuada
para la gestión de systemd.
3. Agregue el servicio a una unidad de destino específi ca. Quiere tener el ser nuevo o personalizado.
vice comienza automáticamente con otros servicios.
Paso 1: Cree un archivo de unidad de configuración de servicio nuevo o personalizado
Si está personalizando un archivo de unidad de configuración de servicio, simplemente haga una copia del archivo de
unidad original desde /lib/systemd/system y agregue las personalizaciones deseadas.
Para archivos nuevos, obviamente, está creando un archivo de configuración de unidad de servicio desde cero. Considere
la siguiente plantilla de archivo de unidad de servicio básico. Como mínimo, necesita las opciones Descrip tion y ExecStart
para un archivo de configuración de la unidad de servicio:
# cat Mi_Nuevo_Servicio.servicio
[Unidad]
Descripción=Mi nuevo servicio
[Servicio]
ExecStart=/usr/bin/Mi_Nuevo_Servicio
Para obtener ayuda adicional sobre cómo personalizar o crear un nuevo archivo de unidad de configuración y las diversas
opciones necesarias, puede usar las páginas de manual. En la línea de comandos, escriba man systemd .service para
obtener más información sobre las diversas opciones de archivo de la unidad de servicio.
Paso 2: Mueva el archivo de la unidad de configuración del
servicio Antes de mover el archivo de la unidad de configuración del servicio nuevo o personalizado, debe tener en
cuenta que existen dos ubicaciones potenciales para almacenar los archivos de la unidad de configuración del servicio.
El que elija determina si las personalizaciones surten efecto y si permanecen persistentes a través de las actualizaciones
de software.
Puede colocar el archivo de la unidad de configuración del servicio del sistema en una de las dos ubicaciones siguientes:
■ /etc/systemd/sistema
■ Esta ubicación se utiliza para almacenar archivos de unidades de configuración de servicios locales
personalizados. ■ Las instalaciones o actualizaciones de software no sobrescriben los archivos en esta ubicación.
Los archivos aquí son utilizados por el sistema incluso si hay un archivo con el mismo nombre en el
directorio /lib/systemd/system. 15
■ /lib/systemd/sistema
■ Esta ubicación se utiliza para almacenar archivos de unidades de configuración de servicios
del sistema. ■ Las instalaciones y actualizaciones de software sobrescriben los archivos en esta ubicación.
399
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Los archivos aquí son utilizados por el sistema solo si no hay ningún archivo con el mismo nombre
en el directorio /etc/systemd/system.
Por lo tanto, el mejor lugar para almacenar su archivo de unidad de configuración de servicio nuevo o
personalizado es /etc/systemd/system.
SUGERENCIA Cuando crea un servicio nuevo o personalizado, para que el cambio surta efecto sin reiniciar el servidor,
debe ejecutar un comando especial. En la línea de comando, escriba systemctl daemonreload .
Paso 3: Agregar el servicio al directorio Wants Este
último paso es opcional. Debe hacerse solo si desea que su nuevo servicio comience con una unidad de
destino particular de systemd. Para que un servicio sea activado (iniciado) por una unidad objetivo en particular,
debe estar en el directorio Wants de esa unidad objetivo.
Primero, agregue la línea WantedBy=desired.target al final de su archivo de unidad de configuración de
servicio. El siguiente ejemplo muestra que la unidad de destino deseada para este nuevo servicio es multi
user.target:
# cat /etc/systemd/system/My_New_Service.service [Unidad]
Descripción=Mi nuevo servicio falso [Servicio]
ExecStart=/usr/bin/Mi_Nuevo_Servicio [Instalar]
WantedBy=multiusuario.objetivo
Para agregar una nueva unidad de servicio a una unidad de destino, debe crear un enlace simbólico. El siguiente
ejemplo muestra los archivos ubicados en el directorio Wants de multiuser.target unit. Anteriormente, en la
sección "Comprensión de la inicialización de systemd", el comando systemctl se usaba para enumerar los deseos
y sigue siendo el método preferido. Tenga en cuenta que en este directorio, los archivos son enlaces simbólicos
que apuntan a los archivos de configuración de la unidad de servicio en el directorio /lib/systemd/system.
# ls /etc/systemd/system/multiuser.target.wants abrtccpp.service
cups.path abrtd.service fcoe.service remotefs.target
rsyslog.service
abrtoops.service abrt irqbalance.service sendmail.service
vmcore.service lldpad.service atd.service smcliente.servicio
mcelog.service auditd.service msshd.service
dmonitor.service sshdkeygen.servicio
...
# ls l /etc/systemd/system/multiuser.target.wants total 0 lrwxrwxrwx. 1
raíz raíz 37 2 de noviembre 22:29 abrtccpp.service >
/lib/systemd/system/abrtccpp.servicio lrwxrwxrwx. 1
raíz raíz 33 2 de noviembre 22:29 abrtd.service >
/lib/systemd/system/abrtd.servicio
...
400
Machine Translated by Google
Capítulo 15: Inicio y detención de servicios
lrwxrwxrwx. 1 raíz raíz 32 26 de abril 20:05 sshd.service > /lib/systemd/
system/sshd.service
A continuación, se ilustra el proceso de agregar un archivo de enlace simbólico para My_New_Service:
# ln s /etc/systemd/system/My_New_Service.service /etc/systemd/
system/multiuser.target.wants/My_New_Service.service
Se crea un enlace simbólico en el directorio multiuser.target.wants. Ahora el nuevo servicio, My_New_Service,
se activa (inicia) cuando se activa la unidad de destino multiusuario.
SUGERENCIA Si desea cambiar la unidad de destino de systemd para un servicio, debe cambiar el enlace del símbolo para que apunte
a una nueva ubicación de directorio de deseos de destino. Utilice el comando ln sf para forzar la ruptura de cualquier enlace simbólico
actual y la aplicación del nuevo enlace simbólico designado.
Juntos, los tres pasos hacen que su servicio nuevo o personalizado se agregue a un servidor systemd de
Linux. Recuerde que en este punto, un nuevo servicio no se está ejecutando hasta que se reinicie el servidor.
Para iniciar el nuevo servicio antes de reiniciar, revise los comandos en la sección "Detener e iniciar servicios".
Resumen
La forma en que inicia y detiene los servicios depende del demonio de inicialización que utilice su servidor
Linux: SysVinit, Upstart o Systemd. Antes de realizar cualquier gestión de servicios, asegúrese de utilizar los
'
ejemplos de este capítulo para ayudarle a determinar el demonio de activación de su servidor Linux. aquí
Los conceptos de iniciar y detener servicios van junto con otros conceptos de administración de servicios,
como hacer que un servicio sea persistente, iniciar ciertos servicios en el momento del arranque del servidor,
recargar un servicio y reiniciar un servicio. Comprender estos conceptos es muy útil a medida que aprende a
configurar y administrar un servidor de impresión Linux en el próximo capítulo.
Ejercicios
Consulte el material de este capítulo para completar las tareas siguientes. Si está atascado, las soluciones
a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo hay varias formas de completar una
tarea). Pruebe cada uno de los ejercicios antes de referirse a las respuestas. Estas tareas asumen que está
ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionan en otros
sistemas Linux). 15
1. Determine qué demonio de inicialización está utilizando actualmente su servidor.
2. ¿ Qué comando puede usar para verificar el estado del demonio sshd, según el demonio de inicialización
en uso en su servidor Linux?
401
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
3. Determine el nivel de ejecución anterior y actual de su servidor.
4. ¿Cómo puede cambiar el nivel de ejecución predeterminado o la unidad de destino en su servidor Linux?
5. Para cada demonio de inicialización, ¿qué comandos enumeran los servicios que se ejecutan (o están activos) en
tu servidor?
6. Enumere los servicios en ejecución (o activos) en su servidor Linux.
7. Para cada demonio de inicialización, ¿qué comandos muestran un servicio en particular?
¿estado actual?
8. Muestre el estado del demonio cups en su servidor Linux.
9. Intente reiniciar el demonio cups en su servidor Linux.
10. Intente recargar el demonio cups en su servidor Linux.
402
Machine Translated by Google
CAPÍTULO S
Configuración de un servidor de impresión
EN ESTE CAPÍTULO
Comprender la impresión en Linux
Configuración de impresoras
Uso de comandos de impresión
Gestión de la impresión de documentos
Compartir impresoras
Puede puerto)
configurar su seistema
o que Linux para
stán disponibles pu sar
ara impresoras
imprimir que edstán
a través e la rced.
onectadas directamente
Del mismo a él (a itmpresora
modo, cualquier ravés de uqn
puerto USB).
ue
configure en su sistema local se puede compartir con usuarios en otros sistemas Linux, Windows o Mac.
abriendo su impresora como un servidor de impresión.
Configura una impresora como una impresora Linux nativa en Fedora, RHEL, Ubuntu y otros sistemas Linux con el
Sistema de impresión UNIX común (CUPS). Para configurar una impresora para que funcione como un servidor de
impresión de estilo Microsoft Windows, puede utilizar el servicio Samba en Linux.
Este capítulo se centra en CUPS. En particular, le muestra la interfaz gráfica de CUPS, denominada ventana
Configuración de impresión, que viene con Fedora, Red Hat Enterprise Linux y otras distribuciones de Linux. Usando
Configuración de impresión, también puede configurar sus impresoras como servidores de impresión para que las
personas puedan imprimir en su impresora desde sus propias computadoras.
Si no tiene un escritorio o desea imprimir desde un script de shell, este capítulo le muestra cómo usar los comandos de
impresión. Desde la línea de comandos, los comandos de impresión como lp están disponibles para realizar la
impresión. También existen comandos para consultar colas de impresión (lpq), manipular colas de impresión (cupsenable,
cupsdisable y cupsreject) y eliminar colas de impresión (lprm).
Sistema de impresión UNIX común
CUPS se ha convertido en el estándar para imprimir desde Linux y otros sistemas operativos similares a UNIX. Fue
diseñado para satisfacer las necesidades
Internet.
actuales de definiciones de impresora estandarizadas y uso compartido en
403
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Redes basadas en protocolos (como la mayoría de las redes informáticas en la actualidad). Casi todas las
distribuciones de Linux en la actualidad vienen con CUPS como su servicio de impresión. Estas son algunas de
las características del servicio:
IPP CUPS se basa en el Protocolo de impresión de Internet ( http://www.pwg.org/ipp), un
estándar que se creó para simplificar la forma en que las impresoras se pueden compartir a través de redes IP. En
el modelo IPP, los servidores de impresión y los clientes que desean imprimir pueden intercambiar información
sobre el modelo y las funciones de una impresora mediante el protocolo HTTP (es decir, contenido web). Un
servidor también puede transmitir la disponibilidad de una impresora para que un cliente de impresión pueda
encontrar fácilmente una lista de impresoras disponibles localmente sin configuración.
Drivers CUPS también estandarizó la forma en que se crean los controladores de impresora. La idea era tener un
formato común que pudieran usar los fabricantes de impresoras para que un controlador pudiera funcionar en
todos los diferentes tipos de sistemas UNIX. De esa forma, un fabricante tenía que crear el controlador solo una
vez para que funcionara con Linux, Mac OS X y una variedad de derivados de UNIX.
Clases de impresoras Puede utilizar clases de impresoras para crear varias entradas de servidor de impresión
que apunten a la misma impresora o una entrada de servidor de impresión que apunte a varias impresoras.
En el primer caso, las entradas múltiples pueden permitir diferentes opciones (como señalar una bandeja de papel
en particular o imprimir con ciertos tamaños de caracteres o márgenes). En el segundo caso, puedes tener un pool
de impresoras para que la impresión se distribuya. En este caso, una impresora que funciona mal, o una impresora
que trabaja con documentos muy grandes, no detendrá toda la impresión. CUPS también admite clases implícitas,
que son clases de impresión que se forman al fusionar automáticamente impresoras de red idénticas.
Exploración de impresoras Con la exploración de impresoras, los equipos cliente pueden ver cualquier impresora
CUPS en su red local con la exploración habilitada. Como resultado, los clientes pueden simplemente seleccionar
las impresoras que desean usar de los nombres de las impresoras que se difunden en la red, sin necesidad de
saber de antemano cómo se llaman las impresoras y dónde están conectadas. Puede desactivar la función para
evitar que otras personas en la red local vean una impresora.
Comandos de impresión UNIX Para integrarse en Linux y otros entornos UNIX, CUPS ofrece versiones de comandos
estándar para imprimir y administrar impresoras que se han ofrecido tradicionalmente con los sistemas UNIX.
En lugar de utilizar la ventana Configuración de impresión, también puede configurar la impresión CUPS de otras
formas:
Configuración de CUPS desde un navegador El proyecto CUPS en sí mismo ofrece un
interfaz para agregar y administrar impresoras. Con el servicio cupsd ejecutándose, escriba localhost:631 desde
un navegador web en la computadora que ejecuta el servicio CUPS para administrar la impresión. (Consulte la
sección "Uso de la administración de CUPS basada en web" más adelante en este capítulo).
Configuración manual de CUPS También puede configurar CUPS manualmente (es decir, editar los archivos de
configuración e iniciar el demonio cupsd desde la línea de comandos).
404
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
Los archivos de configuración para CUPS se encuentran en el directorio /etc/cups. En particular, podría
estar interesado en el archivo cupsd.conf, que identifica los permisos, la autenticación y otra información
para el demonio de la impresora y las impresoras. conf, que identifica direcciones y opciones para impresoras
configuradas. Utilice el archivo classes.conf para defi nir clases de impresoras locales.
dieciséis
Impresión directa desde Windows a CUPS
También puede imprimir en CUPS desde sistemas que no sean UNIX. Por ejemplo, puede utilizar un controlador de
impresora PostScript para imprimir directamente desde un sistema Windows a su servidor CUPS. Puede usar CUPS
sin modificarlo configurando la computadora con Windows con un controlador PostScript que use http://
printervername:631/ printers/ targetPrinter como su puerto de impresión.
También puede utilizar los controladores de impresora nativos de Windows para la impresora en lugar del controlador
PostScript. Si el controlador nativo de Windows no funciona inmediatamente en su cola de impresión de CUPS,
puede crear una Cola de impresión sin formato en CUPS y usarla en su lugar. Raw Print Queue pasa directamente a
través de los datos del controlador de impresión nativo de Windows a la impresora.
Para usar CUPS, debe tener instalado el paquete cups en Fedora o RHEL. La mayoría de las distribuciones de
escritorio de Linux incluyen CUPS durante la instalación inicial del sistema. Si no está instalado en una instalación de
Fedora o RHEL, instálelo escribiendo lo siguiente:
# yum instalar cups cupsclient
Configuración de impresoras
Aunque normalmente lo mejor es usar las herramientas de administración de la impresora creadas específi camente
para su distribución, muchos sistemas Linux simplemente confían en las herramientas que vienen con el paquete de
software CUPS.
Las siguientes secciones exploran cómo usar las herramientas de administración basadas en web de CUPS que
vienen con cada distribución de Linux. Luego examina la impresora de configuración del sistema de la herramienta
Configuración de impresión, que está disponible con los sistemas Fedora para permitirle configurar impresoras. En
algunos casos, no es necesaria la configuración, ya que las impresoras conectadas se pueden detectar y configurar
automáticamente. Para instalar la herramienta Configuración de impresión en Fedora, como raíz, ingrese el siguiente
comando dnf (o yum):
# yum install sistemaconfigimpresora
Agregar una impresora automáticamente Las
impresoras CUPS se pueden configurar para transmitir su disponibilidad en la red automáticamente para que un
sistema cliente pueda detectarlas y usarlas sin configuración. Conecte una impresora USB a su computadora, y la
impresora se puede detectar y hacer automáticamente
405
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
disponible. De hecho, si conecta una impresora local en Fedora y el controlador de impresión aún no está instalado,
se le solicitará que instale los paquetes de software necesarios para usar la impresora.
La primera vez que va a imprimir un documento oa ver la herramienta Configuración de impresión, las impresoras están
listas para usar. Se puede realizar una configuración adicional utilizando la herramienta de administración de CUPS basada
en la web o la ventana Configuración de impresión.
Uso de la administración de CUPS basada en web CUPS ofrece su
propia herramienta administrativa basada en web para agregar, eliminar y modificar configuraciones de impresora
en su computadora. El servicio de impresión CUPS (usando el daemon cupsd) escucha en el puerto 631 para proporcionar
acceso a la interfaz administrativa basada en web de CUPS y compartir impresoras.
Si CUPS ya se está ejecutando en su computadora, puede usar inmediatamente la administración basada en web de
CUPS desde su navegador web. Para ver si CUPS se está ejecutando y comenzar a configurar sus impresoras, abra un
navegador web en la computadora local y escriba esto en su cuadro de ubicación: http://localhost:631/.
Puede aparecer una solicitud de nombre de inicio de sesión y contraseña válidos cuando solicite funciones que lo
'
requieran. Si es así, escriba el nombre de inicio de sesión raíz y aparecerá una pantalla dce
s usuario ryaíz
ontraseña similar
clic ean
haga lAa
ceptar. A
que se muestra en la Figura 16.1.
FIGURA 16.1
CUPS proporciona una herramienta de administración basada en web.
Permitir la administración de impresión remota
De forma predeterminada, la administración de CUPS basada en web solo está disponible desde el host local. Para
acceder a la administración de CUPS basada en la web desde otra computadora, desde la página principal de CUPS:
1. Seleccione la pestaña Administración.
406
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
2. Seleccione la casilla de verificación junto a Permitir administración remota.
3. Seleccione el botón Cambiar configuración.
'
Luego abra su computadora el s cortafuegos para permitir conexiones al puerto TCP 631 para permitir el acceso a
servicio. Después de eso, desde cualquier navegador que tenga acceso a su red local, puede acceder a la página dieciséis
de administración de CUPS yendo al puerto 631 en el servidor de CUPS (por ejemplo, http://host.example.com:631).
Es posible que deba reiniciar CUPS para que el cambio surta efecto: systemctl restart cups. servicio. Si aún no está
ejecutando el navegador como usuario raíz, también debe ingresar el nombre de usuario y la contraseña raíz.
Agregar una impresora que no se detecte
automáticamente Para configurar una impresora que no se detecte automáticamente, puede agregar una impresora
desde la pantalla Administración. Con la pantalla Administración mostrada, puede agregar una impresora de la
siguiente manera:
1. Haga clic en el botón Agregar impresora. Aparece la pantalla Agregar nueva impresora.
2. Seleccione el dispositivo al que está conectada la impresora. La impresora se puede conectar localmente a un
puerto paralelo, SCSI, serial o USB directamente en la computadora. Como alternativa, puede seleccionar un
tipo de conexión de red para impresoras Apple (AppSocket o HP JetDirect), Protocolo de impresión de Internet
(http, https, ipps o ipp) o una impresora Windows (usando Samba o SMB).
3. Si se le solicita más información, es posible que deba describir más detalladamente la conexión a la impresora.
Por ejemplo, es posible que se le solicite la dirección de red de una impresora IPP o Samba.
4. Escriba un nombre, una ubicación y una descripción para la impresora; selecciona si quieres compartir
esta impresora y haga clic en Continuar.
5. Seleccione la marca del controlador de impresión. Si no ve el fabricante de su impresora en la lista, elija
PostScript para una impresora PostScript o HP para una impresora PCL. Para el fabricante que elija, puede
seleccionar un modelo específi co.
6. Establecer opciones. Si se le pide que configure opciones para su impresora, puede hacerlo. Luego seleccione
Establecer opciones de impresora para continuar.
7. Su impresora debería estar disponible. Si la impresora se agrega correctamente, haga clic en el nombre de su
impresora para que aparezca la página de la nueva impresora; desde la página de la impresora, puede
seleccionar Mantenimiento o Administración para imprimir una página de prueba o modificar la configuración de
la impresora.
Una vez finalizada la configuración básica de la impresora, ahora puede seguir trabajando con sus impresoras.
Estos son algunos ejemplos de lo que puede hacer:
Enumerar trabajos de impresión Haga clic en Mostrar todos los trabajos para ver qué trabajos de impresión están
actualmente activos desde cualquiera de las impresoras configuradas para este servidor. Haga clic en Mostrar trabajos
completados para ver información sobre los trabajos que ya están impresos.
407
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Crear una clase de impresora Haga clic en la pestaña Administración, elija Agregar clase e identifique un nombre, una descripción
y una ubicación para una clase de impresora. De la lista de Impresoras (Miembros) confi guradas en su servidor, seleccione
las que van a entrar en esta clase.
Cancelar o mover un trabajo de impresión Si imprime un trabajo de 100 páginas por error, o si la impresora arroja basura, la
función Cancelar puede ser muy útil. Del mismo modo, si envió un trabajo de impresión a la impresora equivocada, la
selección Mover trabajo puede ser útil. En la pestaña Administración, haga clic en Administrar trabajos; luego haga clic en
Mostrar trabajos activos para ver qué trabajos de impresión hay actualmente en la cola para la impresora. Seleccione el botón
Cancelar trabajo junto al trabajo de impresión que desea cancelar o seleccione Mover trabajo para mover el trabajo de
impresión a una impresora diferente.
Ver impresoras Puede hacer clic en la pestaña Impresoras desde la parte superior de cualquiera de las páginas web de CUPS.
páginas de administración basadas para ver las impresoras que ha configurado. Para cada impresora que aparece, puede
seleccionar Tareas de mantenimiento o administrativas. En Mantenimiento, haga clic en Pausar impresora (para detener la
impresión de la impresora pero aceptar trabajos de impresión para la cola), Rechazar trabajos (para no aceptar más trabajos
de impresión por el momento), Mover todos los trabajos (para moverlos a otra impresora), Cancelar todos los trabajos (para
eliminar todos los trabajos de impresión) o Imprimir página de prueba (para imprimir una página). La Figura 16.2 muestra la
información en la pestaña Impresoras para una impresora específica.
FIGURA 16.2
Puede realizar tareas de administración desde la pestaña Impresoras.
408
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
Uso de la ventana Configuración de impresión Si está
utilizando Fedora, puede usar la ventana Configuración de impresión para configurar sus impresoras. De hecho, le
recomiendo que lo use en lugar de la administración web de CUPS porque los archivos de configuración de la impresora
resultantes están diseñados para funcionar con la forma en que se inicia el servicio CUPS en esos sistemas en Fedora.
dieciséis
Después de instalar el paquete (dnf install systemconfig printer), para instalar una impresora desde su escritorio GNOME,
inicie la ventana Configuración de impresión escribiendo Configuración de impresión en la pantalla Actividad, o como
usuario raíz escribiendo system configprinter. Esta herramienta le permite agregar y eliminar impresoras y editar las
propiedades de la impresora. También le permite enviar páginas de prueba a esas impresoras para asegurarse de que
funcionan correctamente.
La clave aquí es que está configurando impresoras que son administradas por su daemon de impresión (cupsd para el
servicio CUPS). Después de configurar una impresora, los usuarios de su sistema local pueden usarla. Puede consultar
la sección "Configuración de servidores de impresión" para aprender cómo hacer que el servidor esté disponible para los
usuarios de otras computadoras en su red.
Las impresoras que configure se pueden conectar directamente a su computadora (como en un puerto USB) o a otra
computadora en la red (por ejemplo, desde otro sistema UNIX o sistema Windows).
Con guración de impresoras locales con la ventana Configuración de
impresión Agregue una impresora local (en otras palabras, una impresora conectada directamente a su computadora) con
la ventana Impresoras mediante el siguiente procedimiento.
Adición de una impresora local
Para agregar una impresora local desde un escritorio GNOME en la última versión de Fedora, siga estos
pasos:
1. Escriba lo siguiente para abrir la ventana Configuración de impresión:
# sistemaconfigimpresora &
Aparece la ventana de impresión.
2. Haga clic en Agregar. (Si se le solicita, haga clic en el botón Ajustar firewall para permitir el acceso al puerto de
impresora 631). Aparece una ventana Nueva impresora.
3. Si se detecta la impresora que desea configurar, simplemente selecciónela y haga clic en Adelante. Si no se
detecta, elija el dispositivo al que está conectada la impresora (LPT n.º 1 y el puerto serie n.º 1 son los primeros
puertos paralelo y serie, respectivamente) y haga clic en Adelante. (Escriba /usr/sbin/lpinfo v | less en un shell
para ver los tipos de conexión de la impresora). Se le pedirá que identifique el controlador de la impresora.
4. Para usar un controlador instalado para su impresora, elija Seleccionar impresora de datos
base y, a continuación, seleccione el fabricante de su impresora. Como alternativa, puede seleccionar
Proporcionar archivo PPD y proporcionar su propio archivo PPD (por ejemplo, si tiene
409
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
una impresora que no es compatible con Linux y tiene un controlador que se suministró con la
impresora). (PPD significa Descripción de impresora PostScript). Seleccione Adelante para ver una lista
de modelos de impresora entre los que puede elegir.
SUGERENCIA Si su impresora no aparece en la lista pero es compatible con PCL (lenguaje de control de impresora de HP), intente seleccionar
una de las impresoras HP (como HP LaserJet). Si su impresora es compatible con PostScript, seleccione la impresora PostScript de la lista.
Seleccionar Raw Print Queue le permite enviar documentos que ya están formateados para un tipo de impresora en particular a una impresora
específica.
5. Con su modelo de impresora seleccionado, haga clic en el controlador que desea usar con él y luego
haga clic en Adelante para continuar.
6. Agregue la siguiente información y haga clic en Reenviar:
a. Nombre de la impresora: agregue el nombre que desea dar para identificar la impresora. El nombre
debe comenzar con una letra, pero después de la letra inicial, puede contener una combinación
de letras, números, guiones () y guiones bajos ( ). Por ejemplo, una impresora
_ computadora
HP en una
llamada
arce podría llamarse hpmaple.
b. Descripción: agregue algunas palabras que describan la impresora, como sus características
(por ejemplo, una HP LaserJet 2100M compatible con PCL y PS).
C. Ubicación: agregue algunas palabras que describan la ubicación de la impresora (por ejemplo, "En
Habitación 205 debajo de la cafetera”).
'
7. Cuando se agregue la impresora, haga clic en No o Sí si se le pide que imprima una prueba
página. La nueva entrada de impresora aparece en la ventana Configuración de impresión. Haga doble clic
en la impresora para ver la ventana Propiedades de esa impresora, como se muestra en la Figura 16.3.
FIGURA 16.3
La ventana Propiedades de la impresora después de agregar una impresora
410
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
8. Si desea que la impresora sea su impresora predeterminada, haga clic con el botón derecho en la impresora y seleccione
Establecer como predeterminada. A medida que agrega otras impresoras, puede cambiar la impresora predeterminada
seleccionando la que desee y seleccionando Establecer como predeterminada nuevamente.
9. Asegúrese de que la impresión esté funcionando. Abra una ventana de Terminal y use el comando lp para imprimir un
dieciséis
archivo (como lp /etc/hosts). (Si desea compartir esta impresora con otras computadoras en su red, consulte la sección
“Configuración de servidores de impresión” más adelante en este capítulo).
Edición de una impresora local
Después de hacer doble clic en la impresora que desea configurar, elija entre las siguientes opciones de menú para cambiar su
configuración:
Configuración: la descripción, la ubicación, el URI del dispositivo y la información de marca y modelo que
creados anteriormente se muestran en este cuadro de diálogo.
Políticas: haga clic en Políticas para configurar los siguientes elementos:
Estado: seleccione casillas de verificación para indicar si la impresora imprimirá trabajos que están en la cola
(Habilitado), aceptará nuevos trabajos para imprimir (Aceptar trabajos) y estará disponible para compartirse con
otras computadoras que puedan comunicarse con su computadora (Compartido) . También debe seleccionar
Configuración del servidor y hacer clic en la casilla de verificación "Compartir impresoras publicadas conectadas a
este sistema" antes de que la impresora acepte trabajos de impresión de otras computadoras.
Políticas: en caso de error, la selección de detener la impresora hace que todas las impresiones se
impresora para detener. También puede optar por descartar el trabajo (abortar trabajo) o volver a intentarlo (reintentar
trabajo) en caso de una condición de error.
Pancarta: No hay páginas de pancartas iniciales o finales de forma predeterminada para la impresora.
Elija páginas de encabezado iniciales o finales que incluyan texto como Clasificado, Confidencial, Secreto, etc.
Control de acceso: si su impresora es una impresora compartida, puede seleccionar esta ventana para crear una lista que
permita a los usuarios acceder a la impresora (con todos los demás denegados) o niegue el acceso de los usuarios a la
impresora (con todos los demás permitidos).
Opciones de la impresora: haga clic en Opciones de la impresora para configurar los valores predeterminados de las opciones
relacionadas con el controlador de la impresora. Las opciones disponibles son diferentes para diferentes impresoras.
Muchas de estas opciones se pueden anular cuando alguien imprime un documento. Estos son ejemplos de algunas de las
opciones que podría (o no) tener disponibles: Marca de agua: Hay varias configuraciones de marca de agua disponibles
para permitirle agregar y
cambie las marcas de agua en sus páginas impresas. De manera predeterminada, Marca de agua y Superposición
están desactivadas (Ninguna). Al seleccionar Marca de agua (detrás del texto) o Superposición (sobre el texto), puede
establecer las otras configuraciones de Marca de agua para determinar cómo se realizan las marcas de agua y las
superposiciones. Las marcas de agua pueden ir en todas las páginas (Todas) o solo en la primera página (Solo en la
primera). Seleccione Texto de marca de agua para elegir qué palabras se utilizan para la marca de agua o superposición
(Borrador, Copia, Confidencial, Final, etc.). A continuación, puede seleccionar el tipo de fuente, el tamaño, el estilo y la
intensidad de la marca de agua o la superposición.
411
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Mejora de la resolución: puede usar la configuración actual de la impresora o elegir activar o desactivar la
mejora de la resolución.
Tamaño de página: el valor predeterminado es tamaño carta de EE. UU., pero también puede pedirle a la
impresora que imprima tamaño legal, sobres, estándar ISO A4 u otros tamaños de página.
Fuente de medios: elija desde qué bandeja imprimir. Seleccione la bandeja 1 para insertar
páginas manualmente.
Niveles de gris: elija utilizar los niveles de gris actuales de la impresora o activar los niveles de gris mejorados
o estándar.
Resolución: seleccione la resolución de impresión predeterminada (como 300, 600 o 1200 puntos por
pulgada). Las resoluciones más altas dan como resultado una mejor calidad, pero tardan más en imprimirse.
EconoMode: utilice la configuración actual de la impresora o elija un modo en el que
ahorre tóner o uno donde tenga la mayor calidad posible.
Opciones de trabajo: haga clic en Opciones de trabajo para establecer las opciones predeterminadas comunes que se utilizarán para este
impresora si la aplicación que imprime el trabajo aún no los ha configurado. Estas incluyen Opciones comunes
(número de copias, orientación, escala para ajustar y páginas por lado), Opciones de imagen (escalado,
saturación, tono y gamma) y Opciones de texto (caracteres/pulgada, líneas/pulgada y ajustes de margen). ).
Niveles de tinta/tóner: haga clic en Niveles de tinta/tóner para ver información sobre la cantidad de tinta o tóner.
su impresora se ha ido. (No todas las impresoras informan estos valores).
Haga clic en Aplicar cuando esté satisfecho con los cambios realizados en la impresora local.
Configuración de impresoras remotas
Para usar una impresora que está disponible en su red, debe identificar esa impresora en su sistema Linux. Las
conexiones de impresoras remotas admitidas incluyen impresoras CUPS en red (IPP), impresoras UNIX en red (LPD),
impresoras Windows en red (Samba) e impresoras rectas JetDi. (Por supuesto, tanto los servidores de impresión CUPS
como UNIX se pueden ejecutar desde sistemas Linux, así como desde otros sistemas UNIX).
En cada caso, necesita una conexión de red desde su sistema Linux a los servidores a los que están conectadas
esas impresoras. Para usar una impresora remota, es necesario que alguien configure esa impresora en la computadora
del servidor remoto. Consulte la sección “Configuración de servidores de impresión” más adelante en este capítulo para
obtener información sobre cómo hacerlo en su servidor Linux.
Utilice la ventana Configuración de impresión (systemconfigprinter) para configurar cada uno de los tipos de
impresoras remotas. Así es como se hace:
1. En la pantalla Actividades de GNOME 3, escriba Ajustes de impresión y pulse Intro.
2. Haga clic en Agregar. Aparece la ventana Nueva impresora.
3. Dependiendo del tipo de puertos que tenga en su computadora, seleccione uno de
la siguiente:
a. LPT #1: Use esto para una impresora conectada a su puerto paralelo. b. Puerto
serie n.º 1: use esto para una impresora conectada a su puerto serie.
412
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
C. Impresora de red: bajo este encabezado, puede buscar impresoras de red (por nombre de host o dirección IP)
o escribir el URI para varios tipos de impresoras diferentes: i. Buscar impresora de red: en lugar de ingresar
un URI de impresora, puede proporcionar un nombre de host o una dirección IP para el sistema que tiene
la impresora en la que desea imprimir. Todas las impresoras que se encuentren en ese host aparecerán
dieciséis
en la ventana, listas para que las agregue.
ii. AppleSocket/HP JetDirect: use esto para una impresora JetDirect. iii. Protocolo de
impresión de Internet (IPP): use esto para una impresora CUPS u otra impresora IPP.
La mayoría de las impresoras Linux y Mac OS X entran en esta categoría.
IV. Protocolo de impresión de Internet (HTTPS): use esto para un CUPS u otro IPP
impresora compartida a través de una conexión segura (se requieren certificados válidos).
v. Host o impresora LPD/LPR: use esto para una impresora UNIX.
vi. Impresora de Windows a través de SAMBA: use esto para una impresora del sistema de Windows.
Continúe con los pasos en cualquiera de las siguientes secciones que corresponda.
Adición de una impresora CUPS remota
Si eligió agregar una impresora CUPS (IPP) a la que se pueda acceder a través de su red local desde la ventana
Configuración de impresión, debe agregar la siguiente información a la ventana que aparece:
Host Este es el nombre de host de la computadora a la que está conectada la impresora (o accesible de otra manera).
Puede ser una dirección IP o un nombre de host TCP/IP para la computadora. Se puede acceder al nombre TCP/IP
desde su archivo /etc/hosts oa través de un servidor de nombres DNS.
Cola Este es el nombre de la impresora en el servidor de impresión CUPS remoto. COPAS apoya
instancias de impresora, lo que permite que cada impresora tenga varios conjuntos de opciones. Si la impresora
CUPS remota está configurada de esta manera, puede elegir una ruta particular a una impresora, como hp/300dpi
o hp/1200dpi. Un carácter de barra inclinada separa el nombre de la cola de impresión de la instancia de la
impresora.
Complete el resto del procedimiento como lo haría con una impresora local (consulte la sección "Agregar una impresora local"
anteriormente en este capítulo).
Adición de una impresora UNIX (LDP/LPR) remota
Si eligió agregar una impresora UNIX (LPD/LPR) desde la ventana Configuración de impresión, debe agregar la siguiente
información a la ventana que aparece:
Host Este es el nombre de host de la computadora a la que está conectada la impresora (o accesible de otra manera).
Esta es la dirección IP o el nombre de host de la computadora (se puede acceder al nombre de host desde su archivo /
etc/hosts o a través de un servidor de nombres DNS). Seleccione el botón Sonda para buscar el host.
Cola Este es el nombre de la impresora en la computadora UNIX remota.
Complete el resto del procedimiento como lo haría con una impresora local (consulte la sección "Agregar una impresora local"
anteriormente en este capítulo).
413
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
SUGERENCIA Si se rechaza el trabajo de impresión que envió para probar la impresora, es posible que la computadora del servidor de impresión no le haya
'
s aldministrador
permitido acceder a la impresora. Pida a la impresora para agregar
pstat d de la computadora su
qn
remota ombre
vea el edstado
ue e host
de a l atrabajo
su rchivo /etc/lpd.perms.
de impresión). (Ingresar
Agregar una impresora de Windows
( SMB ) Habilitar su computadora para acceder a una impresora SMB (el servicio de impresión de Windows)
implica agregar una entrada para la impresora en la ventana Seleccionar conexión.
Cuando elija agregar una impresora de Windows a la ventana Configuración de impresión (Impresora de Windows a
través de Samba), seleccione Examinar para ver una lista de computadoras en su red que se han detectado que
ofrecen servicios SMB (archivo y/o servicio de impresión). Puede configurar la impresora desde esta ventana de la
siguiente manera:
1. Escriba el URI de la impresora, excluyendo el smb:// inicial. Por ejemplo, puede escribir /host1/myprinter
o /mygroup/host1/myprinter.
2. Seleccione "Preguntar al usuario si se requiere autenticación" o "Establecer autenticación
detalles ahora.
3. Si eligió "Establecer detalles de autenticación ahora", complete el nombre de usuario y pase
palabra necesaria para acceder a la impresora SMB; luego haga clic en Verificar para comprobar que puede
autenticarse en el servidor.
4. Haga clic en Adelante para continuar.
Como alternativa, puede identificar un servidor que no aparece en la lista de servidores. Escriba la información necesaria
para crear un URI de SMB que contenga la siguiente información:
Grupo de trabajo Este es el nombre del grupo de trabajo asignado al servidor SMB. Usar el nombre del grupo
de trabajo no es necesario en todos los casos.
Servidor Este es el nombre NetBIOS o la dirección IP de la computadora, que puede o puede
no ser el mismo que su nombre TCP/IP. Para traducir este nombre a la dirección necesaria para llegar al
host SMB, Samba verifica varios lugares donde el nombre puede asignarse a una dirección IP. Samba
comprueba lo siguiente (en el orden que se muestra) hasta que encuentra una coincidencia: el archivo local /
etc/hosts, el archivo local /etc/lmhosts, un servidor WINS en la red y las respuestas a las transmisiones en
cada red local. interfaz para resolver el nombre.
Compartir Este es el nombre con el que se comparte la impresora con el equipo remoto.
Puede ser diferente del nombre por el que los usuarios locales de la impresora SMB conocen la impresora.
Usuario El sistema del servidor SMB requiere un nombre de usuario para darle acceso a la impresora SMB. No
es necesario un nombre de usuario si está autenticando la impresora según el nivel de recurso compartido
en lugar del control de acceso a nivel de usuario. Con el acceso de nivel compartido, puede agregar una
contraseña para cada impresora o sistema de archivos compartido.
414
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
Contraseña Utilice la contraseña asociada con el nombre de usuario de SMB o el recurso
compartido, según el tipo de control de acceso que se utilice.
dieciséis
PRECAUCIÓN Cuando ingresa un nombre de usuario y una contraseña para SMB, la información se almacena sin cifrar en
el archivo /etc/cups/printers.conf. Asegúrese de que el archivo siga siendo legible solo por root.
El siguiente es un ejemplo del URI de SMB que podría agregar al cuadro SMB://:
jjones:my9passswd@FSTREET/NS1/hp
'
El URI que se muestra aquí identifica el nombre de usuario ( jjones), el grupo de s contraseña (my9passswd),
trabajo del usuario (FSTREET), el servidor (NS1) y el nombre de la cola de la impresora (hp).
Complete el resto del procedimiento como lo haría con una impresora local (consulte la sección "Agregar una
impresora local" anteriormente en este capítulo).
Si todo está configurado correctamente, puede usar el comando lp estándar para imprimir el archivo en la
impresora. Usando este ejemplo, emplee el siguiente formulario para imprimir:
$ gato archivo1.ps | lp P NS1PS
SUGERENCIA Si recibe mensajes de falla, asegúrese de que la computadora en la que está imprimiendo esté accesible.
Para el ejemplo de la impresora NS1 hp, puede escribir smbclient L NS1 U jjones . Luego escriba la contraseña en este
caso). u
usuario jjones . Si obtiene Ena
l –L
solicita información
respuesta sobre
de consulta el servidor;
de nombre el –dU
positiva jjones de
espués ice
que inicie
ingresar sesión
una en ( my9passswd ,
contraseña, debería ver
una lista de impresoras y archivos compartidos de ese servidor. Verifique los nombres e intente imprimir de nuevo.
Trabajar con la impresión CUPS
Las herramientas como la administración basada en web de CUPS y la ventana Configuración de impresión
ocultan de forma eficaz la función subyacente de CUPS. A veces, sin embargo, querrá trabajar directamente con
las herramientas y los archivos de configuración que vienen con CUPS. Las siguientes secciones describen cómo
usar algunas funciones especiales de CUPS.
Configuración del servidor CUPS (cupsd.conf)
El proceso del demonio cupsd escucha las solicitudes de su servidor de impresión CUPS y responde a esas
solicitudes según la configuración del archivo /etc/cups/cupsd.conf. Las variables de configuración del archivo
cupsd.conf tienen el mismo formato que las del archivo de configuración de Apache (httpd.conf o apache2.conf).
Escriba man cupsd.conf para ver los detalles de cualquiera de las configuraciones.
415
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
La ventana Configuración de impresión agrega información de acceso al archivo cupsd.conf. Para otros
sistemas Linux, o si no tiene un escritorio
cupsd.conf
en su
mservidor,
anualmente.
es posible
Puede
que
recorrer
deba ecl
onfigurar
archivo ceupsd.conf
l archivo para ajustar
aún más su servidor CUPS. La mayoría de las configuraciones son opcionales o pueden dejarse como
'
predeterminadas. Vea algunas de las configuraciones que puede usar en el archivo cupsd.conf. mira
No se establece ninguna clasificación de forma predeterminada. Con la clasifi cación establecida en topsecret,
puede mostrar Top Secret en todas las páginas que pasan por el servidor de impresión:
Clasificación de alto secreto
Otras clasificaciones que puede sustituir por ultrasecreto incluyen clasificado, confidencial, secreto y no
clasificado.
El término navegación se refiere al acto de transmitir información sobre su impresora en su red local y
escuchar la información de otros servidores de impresión. La configuración de exploración de copas se utiliza
para explorar impresoras remotas compartidas. La navegación está activada de forma predeterminada para
todas las redes locales ( @LOCAL). Puede permitir la información del navegador CUPS ( BrowseAllow) para
direcciones seleccionadas adicionales. La información de navegación se transmite, por defecto, en la dirección
255.255.255.255. Estos son ejemplos de varias configuraciones de navegación:
Navegando en
Tazas BrowseProtocols
ExaminarPedir Denegar,Permitir
NavegarPermitir desde @LOCAL
Navegar Dirección 255.255.255.255 Escuchar *: 631
Para habilitar la administración de CUPS basada en web y compartir impresoras con otros en la red, el
demonio cupsd se puede configurar para escuchar en el puerto 631 para todas las interfaces de red de su
computadora según esta entrada: Listen *:631. Por defecto, escucha en la interfaz local solo en muchos sistemas
Linux ( Listen localhost:631). Para Fedora, CUPS escucha en todas las interfaces de forma predeterminada.
Esta es una buena forma de permitir que los usuarios de varias LAN conectadas descubran y utilicen impresoras
en otras LAN cercanas.
Puede permitir o denegar el acceso a diferentes funciones del servidor CUPS. Una definición de acceso para una
impresora CUPS (creada desde la ventana Configuración de impresión) podría aparecer de la siguiente manera:
<Ubicación /impresoras/ns1hp1>
Orden Denegar, Permitir
Negar todo
Permitir desde 127.0.0.1
Tipo de autenticación Ninguno
</Ubicación>
Aquí, la impresión en la impresora ns1hp1 solo está permitida para usuarios en el host local
(127.0.0.1). No se necesita contraseña (AuthType None). Para permitir el acceso a la herramienta de
administración, CUPS debe estar configurado para solicitar una contraseña (AuthType Basic).
416
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
Inicio del servidor CUPS Para los
sistemas Linux que usan secuencias de comandos de inicio de estilo System V (como
versiones anteriores de Fedora y RHEL), iniciar y cerrar el servicio de impresión CUPS es bastante
fácil. Utilice el comando chkconfig para activar CUPS para que se inicie en cada reinicio. Ejecute el
dieciséis
script de inicio de cups para que el servicio CUPS se inicie de inmediato. En RHEL 6.x o anterior,
escriba lo siguiente como usuario raíz:
# tazas de chkconfig en # inicio
de tazas de servicio
Si el servicio CUPS ya se estaba ejecutando, debe usar reiniciar en lugar de iniciar. Usar la opción de
reinicio también es una buena manera de volver a leer cualquier opción de configuración que haya cambiado
en el archivo cupsd.conf (aunque, si CUPS ya se está ejecutando, service cups reload vuelve a leer los
archivos de configuración sin reiniciar).
En Fedora 30 y RHEL 8, usa el comando systemctl en lugar del servicio para iniciar y detener los servicios:
# systemctl status tazas.servicio
* cups.service Servicio de impresión CUPS cargado: cargado (/usr/
lib/systemd/system/cups.service; habilitado)
Activo: activo (en ejecución) desde el sábado 20160723 22:41:05 EDT; hace 18 horas
PID principal: 20483 (cupsd)
Estado: "El programador se está ejecutando..."
CGroup: /system.slice/cups.service ├─ 20483 /usr/sbin/
cupsd f
Puede saber que el servicio CUPS se está ejecutando porque el estado muestra el demonio cupsd
activo con PID 20483. Si ese servicio no se estuviera ejecutando, podría iniciar el servicio CUPS de la
siguiente manera:
# systemctl iniciar tazas.servicio
Consulte el Capítulo 15, "Inicio y detención de servicios", para obtener más información sobre los comandos
systemctl y service para trabajar con servicios.
Configuración manual de las opciones de impresión de CUPS
Si su distribución de Linux no tiene uconfigurar
n medio gráfico
CUPS,
para
puede editar los archivos de configuración
directamente. Por ejemplo, cuando se crea una nueva impresora desde la ventana Configuración de
impresión, se define en el archivo /etc/cups/printers.conf. Así es como se ve una entrada de impresora:
<Impresora predeterminada>
Información HP LaserJet 2100M
Ubicación HP LaserJet 2100M en el armario del pasillo
DispositivoURI paralelo:/dev/lp0
estado inactivo
417
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Aceptando Sí
Nº compartido
Hojas de trabajo ninguno ninguno
Periodo de cuota 0
límite de página 0
KLímite 0
</Impresora>
Este es un ejemplo de una impresora local que sirve como impresora predeterminada para el sistema local.
El valor Shared No se establece porque la impresora actualmente solo está disponible en el sistema local. La
información más interesante se relaciona con DeviceURI, que muestra que la impresora está conectada al
puerto paralelo /dev/lp0. El estado es Inactivo (listo para aceptar trabajos de impresión) y el valor Aceptando es
Sí (la impresora acepta trabajos de impresión de forma predeterminada).
El DeviceURI tiene varias formas de identificar el nombre del dispositivo de una impresora, reflejando dónde está
conectada la impresora. Estos son algunos ejemplos enumerados en el archivo printers.conf:
DeviceURI paralelo:/dev/plp DeviceURI
serial:/dev/ttyd1?baud=38400+size=8+parity=none+flow=soft DeviceURI scsi:/dev/scsi/sc1d6l0 DeviceURI
usb://hostname:puerto DeviceURI socket: //nombre de host:puerto URI de dispositivo tftp://nombre de host/
ruta URI de dispositivo ftp://nombre de host/ruta URI de dispositivo http://nombre de host[:puerto]/ruta URI de
dispositivo ipp://nombre de host/ruta URI de dispositivo smb://nombre de host/impresora
Los primeros cuatro ejemplos muestran el formulario para impresoras locales (paralelo, serie, scsi y usb). Los
otros ejemplos son para hosts remotos. En cada caso, el nombre de host puede ser el nombre o la dirección IP
del host. Los números de puerto o las rutas identifican las ubicaciones de cada impresora en el host. Por ejemplo,
el nombre de host podría ser myhost.example.com:631 y la ruta podría reemplazarse por cualquier nombre que
desee, como impresoras/myprinter.
Uso de comandos de impresión
Para seguir siendo compatible con versiones anteriores de las instalaciones de impresión de UNIX y Linux,
CUPS admite muchos de los comandos antiguos para trabajar con la impresión. La mayoría de las impresiones
de línea de comandos con CUPS se pueden realizar con el comando lp. Las aplicaciones de procesamiento de
textos, como LibreOffice, OpenOffice y AbiWord, están configuradas para usar esta función para imprimir.
Puede usar la ventana Configuración de impresión para defi nir los fi ltros necesarios para cada impresora para
que el texto pueda formatearse correctamente. Las opciones del comando lp pueden agregar fi ltros para procesar
el texto correctamente. Otros comandos para administrar documentos impresos incluyen lpq (para ver el contenido
de las colas de impresión), lprm (para eliminar trabajos de impresión de la cola) y lpstat t (para controlar
impresoras).
418
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
Impresión con lp Puede
usar el comando lp para imprimir documentos en impresoras locales y remotas (siempre y cuando las
impresoras estén configuradas localmente). Los archivos de documentos se pueden agregar al final de la línea
'
de comando lp o se pueden dirigir al comando lp usando una barra vertical (|). Aquí un simple comando
es lp: de
un ejemplo
dieciséis
$ lp doc1.ps
Cuando especifica solo un archivo de documento con lp, la salida se dirige a la impresora predeterminada.
Como usuario individual, puede cambiar la impresora predeterminada configurando el valor de la variable
IMPRESORA. Por lo general, agrega la variable IMPRESORA a uno de sus archivos de inicio, como
$HOME/.bashrc. Agregar la siguiente línea a su archivo .bashrc, por ejemplo, establece su impresora
predeterminada en lp3:
exportar IMPRESORA=lp3
Para anular la impresora predeterminada, especifique una impresora en particular en la línea de comando
lp. El siguiente ejemplo usa la opción P para seleccionar una impresora diferente:
$ lp P cañónps doc1.ps
El comando lp tiene una variedad de opciones que permiten que lp interprete y formatee varios tipos
diferentes de documentos. Estos incluyen # num, donde num se reemplaza por el número de copias para
imprimir (de 1 a 100) y l (que hace que un documento se envíe en modo sin formato, suponiendo que el
documento ya se haya formateado). Para conocer más opciones de lp, escriba man lp.
Listado de estados con lpstat t Utilice el
comando lpstat t para listar el estado de sus impresoras. Aquí hay un ejemplo:
$ /usr/sbin/lpstat t impresora hp
deshabilitada desde el miércoles 10 de julio de 2019 10:53:34 a.m. EDT la impresora
deskjet555 está inactiva. habilitado desde mié 10 jul 2019
10:53:34 a. m. EDT
Esta salida muestra dos impresoras activas. La impresora hp está actualmente deshabilitada (fuera de línea).
La impresora deskjet555 está habilitada.
Eliminación de trabajos de impresión con lprm
Los usuarios pueden eliminar sus propios trabajos de impresión de la cola con el comando lprm. Usado solo en
'
la línea de comando, lprm elimina todos los trabajos eliminados p
s or
el usuario
trabajos de una
de impresión impresora
desde específica,
la impresora use
predeterminada.
A
la opción P, de la siguiente manera:
$ lprm P lp0
Para eliminar todos los trabajos de impresión del usuario actual, escriba lo siguiente:
$ lprm
419
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
El usuario raíz puede eliminar todos los trabajos de impresión de un usuario específi co indicando ese
usuario en la línea de comando lprm. Por ejemplo, para eliminar todos los trabajos de impresión del usuario
mike, el usuario root escribe lo siguiente:
# lprm – U mike
Para eliminar un trabajo de impresión individual de la cola, indique su número de trabajo en la línea
'
de comando lprm. Para encontrar el número de trabajo, escriba el comando lpq. Aes lo
eqse
quí ue
clomando
a salida de
puede verse así:
# la
impresora lpq está lista e imprimiendo
Propietario de rango Archivos de trabajo Tiempo de tamaño total
raíz activa 133 /inicio/jake/pr1 197 /inicio/ 467
2 raíz jake/mydoc 23948
El resultado muestra dos trabajos imprimibles esperando en la cola. (La impresora está lista e
imprimiendo el trabajo como activo). En la columna Trabajo, puede ver el número de trabajo asociado
con cada documento. Para eliminar el primer trabajo de impresión, escriba lo siguiente:
# lprm 133
Configuración de servidores de impresión
'
Tú He configurado una impresora para que usted y los otros usuarios de su computadora puedan imprimir en
él. Ahora desea compartir esa impresora con otras personas en su hogar, escuela u oficina.
Básicamente, eso significa configurar la impresora como un servidor de impresión.
Las impresoras configuradas en su sistema Linux se pueden compartir de diferentes maneras con
otras computadoras en su red. Su computadora no solo puede actuar como un servidor de impresión
Linux (configurando CUPS), sino que también puede aparecer como un servidor de impresión SMB
(Windows) para las computadoras cliente. Después de conectar una impresora local a su sistema
Linux y su computadora a su red local, puede usar los procedimientos en las siguientes secciones para
compartir la impresora con computadoras cliente usando una interfaz Linux (UNIX) o SMB.
Configurar una impresora CUPS compartida Hacer
que la impresora local agregada a su computadora Linux esté disponible para otras computadoras
en su red es bastante fácil. Si existe una conexión de red TCP/IP entre las computadoras que
comparten la impresora, simplemente otorga permiso a todos los hosts, hosts individuales o usuarios
'
de hosts remotos para acceder a su computadora.servicio de imprenta.
Para configurar una entrada de impresora manualmente en el archivo /etc/cups/printers.conf para
aceptar trabajos de impresión de todas las demás computadoras, asegúrese de que la línea Compartido
Sí esté configurada. El siguiente ejemplo de una entrada de printers.conf anterior en este capítulo
demuestra cómo se vería la nueva entrada:
<Impresora predeterminada>
Información HP LaserJet 2100M
Ubicación HP LaserJet 2100M en el armario del pasillo
420
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
DispositivoURI paralelo:/dev/lp0
estado inactivo
Aceptando Sí
Compartido Sí
Hojas de trabajo ninguno ninguno
dieciséis
Periodo de cuota 0
límite de página 0
KLímite 0
</Impresora>
En los sistemas Linux que usan la ventana Configuración de impresión descrita anteriormente en este capítulo, es mejor
configurar su impresora como una impresora compartida usando esa ventana. He aquí cómo hacerlo usando Fedora 30:
1. Desde la pantalla Actividades en un escritorio GNOME 3 en Fedora, escriba Configuración de impresión y
presione Entrar. Aparece la ventana Configuración de impresión.
2. Para permitir que se compartan todas sus impresoras, seleccione Servidor Configuración. Si no es el
usuario root, se le solicitará la contraseña de root. Aparece la ventana emergente Configuración básica del
servidor.
3. Seleccione la casilla de verificación junto a "Publicar impresoras compartidas conectadas a este
sistema” y haga clic en Aceptar. Es posible que se le solicite que modifique su cortafuegos para abrir los
puertos necesarios para que los sistemas remotos accedan a sus impresoras.
4. Para permitir o restringir aún más la impresión de una impresora en particular, haga doble clic en el
nombre de la impresora que desea compartir. (Si la impresora aún no está configurada, consulte la sección
"Configuración de impresoras" anteriormente en este capítulo).
5. Elija el encabezado Políticas y seleccione Compartido para que aparezca una marca de verificación
en el cuadro.
6. Si desea restringir el acceso a la impresora a usuarios seleccionados, seleccione el encabezado Control de
acceso y elija una de las siguientes opciones:
a. Permitir la impresión para todos excepto para estos usuarios. Con esto seleccionado, todos los usuarios
pueden acceder a la impresora. Al escribir nombres de usuario en el cuadro Usuarios y hacer clic en
Agregar, excluye a los usuarios seleccionados.
b. Denegar la impresión a todos excepto a estos usuarios. Con esto seleccionado, todos los usuarios quedan
excluidos del uso de la impresora. Escriba los nombres de usuario en el cuadro Usuarios y haga clic en
Agregar para permitir el acceso a la impresora solo a los nombres que ingrese.
Ahora puede configurar otras computadoras para usar su impresora, como se describe en la sección "Configuración
de impresoras" de este capítulo. Si intenta imprimir desde otra computadora y no funciona, pruebe estos consejos
para solucionar problemas:
Abre tu cortafuegos. Si tiene un cortafuegos restrictivo, es posible que no permita la impresión. Debe habilitar el
acceso al puerto TCP 631 para permitir el acceso a la impresión en su computadora.
Verifique nombres y direcciones. Asegúrese de haber ingresado el nombre de su computadora y
cola de impresión correctamente cuando la configuró en la otra computadora. Prueba a usar la ip
421
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
dirección en lugar del nombre de host. (Si eso funciona, indica un problema de resolución de nombres DNS). Ejecutar
una herramienta como tcpdump le permite ver dónde falla la transacción.
Compruebe en qué direcciones está escuchando cupsd. El daemon cupsd debe estar escuchando fuera del host local
para que los sistemas remotos impriman en él. Use el comando netstat (como usuario raíz) de la siguiente manera
para verificar esto. El primer ejemplo muestra que cupsd solo escucha en el host local (127.0.0.1:631); el segundo muestra
cupsd escuchando en todas las interfaces de red (0 0.0.0.0:631):
# netstattupln | grep 631 tcp 6492/
0
cupsd # netstattupln 0
6131
| grep 27.0.0.1:631
tcp 0.0.0.0:* ESCUCHAR
6492/cupsd
Los cambios de acceso a su impresora compartida se realizan en los archivos cupsd.conf e printers.conf en su directorio /etc/cups.
Configuración de una impresora Samba compartida Sus impresoras
Linux se pueden configurar como impresoras SMB compartidas para que parezcan estar disponibles desde los sistemas
Windows. Para compartir su impresora como si fuera una impresora Samba (SMB), simplemente configure los ajustes básicos del
, “Configuración
servidor Samba como se describe en el Capítulo 19 Servidor Windows File Sharing (Samba)”. Todas sus
impresoras deben
de un
compartirse en su red local de forma predeterminada. La siguiente sección muestra cómo se ven las configuraciones resultantes y
cómo puede cambiarlas.
Comprender smb .conf para imprimir Cuando
configura Samba, el archivo /etc/samba/smb.conf se construye para permitir que todas sus impresoras configuradas se
compartan. Aquí hay algunas líneas del archivo smb.conf que se relacionan con el uso compartido de impresoras:
[global]
...
cargar impresoras = sí cups
options = raw printcap nombre
= /etc/printcap imprimir = cups
...
[impresoras]
comentario = todas las impresoras
ruta = /var/spool/samba navegable =
sí escribible = no
imprimible = si
422
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
Puede leer las líneas de comentarios para obtener más información sobre el contenido del archivo. Las líneas que
comienzan con un punto y coma (;) indican la configuración predeterminada para la opción en una línea de comentario.
Quite el punto y coma para cambiar la configuración.
Las líneas seleccionadas muestran que se cargaron impresoras de /etc/printcap y que se está utilizando el servicio CUPS.
dieciséis
Con las opciones de cups configuradas en raw, Samba asume que los archivos de impresión ya han sido formateados
cuando llegan a su servidor de impresión. Esto permite que los clientes de Linux o Windows proporcionen sus propios
controladores de impresión.
Las últimas líneas son la definición real de las impresoras. Al cambiar la opción navegable de no a sí, brinda a los usuarios
la posibilidad de imprimir en todas las impresoras (imprimible = sí).
También puede almacenar controladores de impresión nativos de Windows en su servidor Samba. Cuando un cliente
de Windows utiliza su impresora, el controlador pasa a estar disponible automáticamente. No necesita descargar un
controlador del sitio web del proveedor. Para habilitar
recurso el
cuompartido
so compartido del controlador
de Samba de la
qimpresora,
llamado print$ ue tenga ea
l sgregue un
iguiente
aspecto:
[imprimir
$] comentario = ruta de los
controladores de impresora = /var/lib/
samba/drivers browserable = sí invitado
ok = no solo lectura = sí lista de escritura
= chris, dduffey
Una vez que tenga el recurso compartido disponible, puede comenzar a copiar los controladores de impresión de
Windows en el directorio /var/lib/samba/drivers.
Configuración de clientes SMB
Es muy probable que si está configurando una impresora Samba en su computadora con Linux, desee compartirla con
clientes de Windows. Si Samba está configurado correctamente en su computadora y las computadoras cliente pueden
comunicarse con usted a través de la red, los usuarios no deberían tener problemas para encontrar y usar su impresora.
Para muchos sistemas Windows 10, haga clic en Inicio Impresoras y escáneres y seleccione la impresora de la lista
para configurarla.
Con Windows Vista, abre el ícono de Red. El nombre de su computadora host (el nombre NetBIOS, que
probablemente también sea su nombre TCP/IP) aparece en la pantalla o dentro de una carpeta de grupo de trabajo en la
pantalla. Abra el icono que representa su computadora. La ventana que se abre muestra sus impresoras y carpetas
compartidas.
'
SUGERENCIA Si su El ícono no aparece en Entorno de red o Mis sitios de red, intente usar la ventana de búsqueda.
computadora es de Windows XP, seleccione Inicio Buscar Computadora o Personas Una computadora en la red. Escriba el nombre de su
' es computadora en el cuadro Nombre de la computadora y haga clic en Buscar. Haga doble clic en su computadora en los resultados de la ventana de búsqueda
panel. Aparece una ventana que muestra las impresoras y carpetas compartidas de su computadora.
423
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Después de que su impresora compartida aparezca en la ventana, configure un puntero a esa impresora
abriendo (haciendo doble clic) el icono de la impresora. Un mensaje le indica que debe configurar la
impresora antes de poder utilizarla. Haga clic en Sí para proceder a configurar la impresora para uso local.
Aparece el Asistente para agregar impresoras. Responda a las preguntas sobre cómo piensa utilizar la
impresora y agregue los controladores apropiados. Cuando haya terminado, la impresora aparecerá en la
ventana de su impresora.
Otra forma de configurar una impresora SMB desde un sistema operativo Windows XP es ir a Inicio
Impresoras y faxes. En la ventana Impresoras y faxes que aparece, haga clic en el icono Agregar una impresora
en la parte superior izquierda de la ventana y seleccione Impresora de red en la primera ventana. Desde allí,
puede buscar y/o configurar su impresora SMB.
Resumen
Proporcionar servicios de impresión en red es esencial en las redes empresariales actuales. Con el uso de
unos pocos dispositivos conectados a la red, puede concentrar el gasto de su impresora en unos pocos
dispositivos de alta calidad que varios usuarios pueden compartir en lugar de numerosos dispositivos de
menor costo. Además, una impresora ubicada en el centro puede facilitar el mantenimiento de la impresora y
al mismo tiempo permitir que todos realicen sus trabajos de impresión.
El servicio de impresión predeterminado en casi todas las principales distribuciones de Linux en la actualidad
es el Sistema de impresión común de UNIX (CUPS). Cualquier sistema Linux que incluya CUPS ofrece la
interfaz administrativa basada en web de CUPS para configurar la impresión de CUPS. También ofrece
archivos de configuración en el directorio /etc/cups para configurar impresoras y el servicio CUPS (cupsd
daemon).
En RHEL, Fedora, Ubuntu y otros sistemas Linux, puede configurar su impresora con las ventanas de
configuración de impresión disponibles en los escritorios KDE y GNOME. Una variedad de controladores
hace posible imprimir en diferentes tipos de impresoras, así como en impresoras que están conectadas a
computadoras en la red.
Puede configurar su computadora como un servidor de impresión Linux y también puede hacer que su
computadora emule un servidor de impresión SMB (Windows). Una vez que su red esté configurada
correctamente y una impresora local instalada, compartir esa impresora a través de la red como un servidor de
impresión UNIX o SMB no es muy complicado.
Ejercicios
Utilice estos ejercicios para poner a prueba sus conocimientos sobre la configuración de impresoras en
Linux. Estas tareas asumen que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque
algunas tareas también funcionan en otros sistemas Linux). Si está atascado, las soluciones a las tareas se
muestran en el Apéndice B (aunque en Linux, a menudo puede completar una tarea de varias maneras).
424
Machine Translated by Google
Capítulo 16: Configuración de un servidor de impresión
1. Use la ventana Configuración de impresión (paquete systemconfigprinter) para agregar una nueva
impresora llamada myprinter a su sistema. (La impresora no tiene que estar conectada para configurar
una cola de impresión para la nueva impresora). Conviértala en una impresora PostScript genérica
conectada a un puerto serie local, LPT u otro puerto.
dieciséis
2. Use el comando lpstat t para ver el estado de todas sus impresoras.
3. Utilice el comando lp para imprimir el archivo /etc/hosts en esa impresora.
4. Verifique la cola de impresión de esa impresora para ver si el trabajo de impresión está allí.
5. Retire el trabajo de impresión de la cola (cancélelo).
6. Usando la ventana de Impresión, establezca la configuración básica del servidor que publica sus
impresoras para que otros sistemas en su red local puedan imprimir en sus impresoras.
7. Permita la administración remota de su sistema desde un navegador web.
8. Demuestre que puede realizar la administración remota de su sistema abriendo un navegador web en
el puerto 631 desde otro sistema al sistema Linux que ejecuta su servidor de impresión.
9. Use el comando netstat para ver en qué direcciones está escuchando el demonio cupsd
(el puerto de impresión es 631).
10. Elimine la entrada de impresora myprinter de su sistema.
425
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Configuración de un servidor web
EN ESTE CAPÍTULO
Instalación de un servidor web Apache
Configuración de Apache
Asegurar Apache con iptables y SELinux
Creación de hosts virtuales
Creación de un sitio web seguro (HTTPS)
Comprobación de Apache en busca de errores
Con diferencia, el servidor web más popular es el servidor web Apache (HTTPD),
Los servidores web spon
patrocinado responsables
or A de F
pache Software servir
el contenido
oundation que ve en Internet
(http://apache.org). Debido taodos
que lA
os días.es un
pache
proyecto de código abierto, está disponible con todas las principales distribuciones de Linux, incluidas
Fedora, RHEL y Ubuntu.
Puede configurar un servidor web básico para que se ejecute en Linux en solo unos minutos. Sin embargo,
puede configurar su servidor web Apache de muchas maneras. Puede configurar un servidor web Apache
para servir contenido para múltiples dominios (alojamiento virtual), proporcionar comunicaciones cifradas
(HTTPS) y proteger parte o la totalidad de un sitio web mediante diferentes tipos de autenticación.
Este capítulo lo lleva a través de los pasos para instalar y configurar un servidor web Apache. Estos pasos
incluyen procedimientos para proteger su servidor, así como el uso de una variedad de módulos para que
pueda incorporar diferentes métodos de autenticación y lenguajes de secuencias de comandos en su servidor
web. Luego describo cómo generar certificados para crear un sitio web HTTPS Secure Sockets Layer (SSL).
Comprender el servidor web Apache
Apache HTTPD (también conocido como Apache HTTPD Server) proporciona el servicio con el que se
comunican los navegadores web del cliente. El proceso daemon (httpd) se ejecuta en segundo plano en su
servidor y espera las solicitudes de los clientes web. Los navegadores web proporcionan esas conexiones
al demonio HTTP y envían solicitudes, que el demonio interpreta, devolviendo los datos apropiados (como
una página web u otro contenido).
427
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Apache HTTPD incluye una interfaz que permite que los módulos se vinculen con el proceso para
manejar partes específicas de una solicitud. Entre otras cosas, hay módulos disponibles para manejar el
procesamiento de lenguajes de secuencias de comandos, como Perl o PHP, dentro de documentos web
y para agregar cifrado a las conexiones entre los clientes y el servidor.
Apache comenzó como una colección de parches y mejoras del Centro Nacional para Aplicaciones de
Supercomputación (NCSA), Universidad de Illinois, UrbanaChampaign, al demonio HTTP. El demonio
HTTP de NCSA era el servidor HTTP más popular en ese momento, pero había comenzado a mostrar su
edad después de que su autor, Rob McCool, dejara NCSA a mediados de 1994.
NOTA
Otro proyecto que surgió de NCSA es Mosaic. La mayoría de los navegadores web modernos pueden rastrear sus orígenes hasta Mosaic.
A principios de 1995, un grupo de desarrolladores formó Apache Group y comenzó a realizar amplias
modificaciones en la base de código HTTPD de NCSA. Apache pronto reemplazó a NCSA HTTPD como
el servidor web más popular, un título que aún conserva.
Más tarde, Apache Group formó la Apache Software Foundation (ASF) para promover el desarrollo
de Apache y otro software libre. Con el inicio de nuevos proyectos en ASF, el servidor Apache se conoció
como Apache HTTPD, aunque los dos términos todavía se usan indistintamente. Actualmente, ASF tiene
más de 350 iniciativas de código abierto, incluyendo Tomcat (que incluye tecnologías Java Servlet y
JavaServer Pages de código abierto), Hadoop (un proyecto que proporciona computación distribuida de
alta disponibilidad) y SpamAssassin (un programa de filtrado de correo electrónico).
Obtener e instalar su servidor web
Aunque Apache está disponible con todas las principales distribuciones de Linux, a menudo se
empaqueta de diferentes maneras. En la mayoría de los casos, todo lo que necesita para iniciar un
servidor web Apache simple es el paquete que contiene el propio demonio Apache (/usr/sbin/httpd) y sus
archivos relacionados. En Fedora, RHEL y otros, el servidor web Apache viene en el paquete httpd.
Entendiendo el paquete httpd
Para examinar el paquete httpd en Fedora o RHEL antes de instalarlo, descargue el paquete
usando el comando yumdownloader y ejecute algunos comandos rpm para ver su contenido:
# yumdownloader httpd # rpm qpi
httpd*rpm : httpd Nombre :
2.4.41 : 1.fc30
Versión
Liberar
Arquitectura: x86_64
Fecha de instalación: (no instalado)
428
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Grupo : Sin especificar :
Tamaño 5070831
Licencia: ASL 2.0 Firma: RSA/
SHA256, lunes 19 de agosto de 2019 06:06:09 a. m. EDT, ID de clave ef3c111fcfc659b9
Fuente RPM: httpd2.4.411.fc30.src.rpm Fecha de compilación:
jueves 15 de agosto de 2019 06:07:29 p. m. EDT Host de compilación:
buildvm30.phx2.fedoraproject.org Reubicaciones: (no reubicable)
empaquetador del p: royecto
Proveedor del
Fedora :
Proyecto Fedora : hhttps://
ttp://httpd.apache.org/ :
URL bugz.fedoraproject.org/httpd Resumen
HTTP : El servidor A
de
pache
la URL
HTTP
del eerror :
s un sDervidor
escripción
potente,
del servidor
eficiente
Apache
y y servidor
web extensible.
17
El comando yumdownloader descarga la última versión del paquete httpd en el directorio actual. El comando
rpm qpi consulta el paquete RPM httpd que acaba de descargar para obtener información. Puede ver que
el paquete fue creado por el proyecto Fedora y que, de hecho, es el paquete del servidor Apache HTTP. A
continuación, mire dentro del paquete para ver los archivos de configuración:
# rpm qpc httpd*rpm /etc/httpd/
conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /
etc/httpd/conf.d/welcome.conf /etc/httpd/
conf .modules.d/00base.conf /etc/httpd/
conf.modules.d/00dav.conf
...
/etc/httpd/conf/httpd.conf /etc/httpd/conf/
magic /etc/logrotate.d/httpd /etc/
sysconfig/htcacheclean
El archivo de configuración principal es /etc/httpd/conf/httpd.conf para Apache. La bienvenida. El archivo
conf defi ne la página de inicio predeterminada para su sitio web, hasta que agregue algún contenido. El
archivo mágico define las reglas que el servidor puede usar para descubrir el tipo
servidor
de archivo
intenta
cuando
abrirlo.
el
El archivo /etc/logrotate.d/httpd defi ne cómo se rotan los archivos de registro producidos por Apache.
El archivo /usr/lib/tmpfiles.d/httpd.conf defi ne un directorio que contiene archivos temporales de tiempo de
ejecución (no es necesario cambiar ese archivo).
Algunos módulos de Apache colocan archivos de configuración (*.conf) en el directorio /etc/httpd/
conf. directorio de módulos.d/. Cualquier archivo en ese directorio que termine en .conf se extrae del
archivo principal httpd.conf y se usa para configurar Apache. La mayoría de los paquetes de módulos que
vienen con archivos de configuración colocan esos archivos de configuración en el directorio /etc/httpd/conf.d. Para
429
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Por ejemplo, los módulos mod_ssl (para servidores web seguros) y mod_python (para interpretar el código
python) tienen archivos de configuración relacionados en el directorio /etc/httpd/conf.d llamados ssl.conf y
python.conf, respectivamente.
Simplemente puede instalar el paquete httpd para comenzar a configurar su servidor web. Sin embargo,
es posible que prefiera agregar algunos otros paquetes que a menudo están asociados con el paquete httpd.
Una forma de hacerlo es instalar todo el servidor web (en Fedora) o el grupo de servidores web básicos
(en RHEL), como en el siguiente ejemplo:
# yum groupinstall "Servidor web"
Además de instalar algunos paquetes que son periféricos a httpd (como rsyslogd, irqbalance y
otros), aquí hay otros paquetes en el grupo de servidores web en Fedora que obtiene por defecto junto
con httpd:
httpdmanual Llena el directorio /var/www/manual con los manuales de documentación de Apache.
Después de iniciar el servicio httpd (como se muestra en los pasos posteriores), puede acceder
a este conjunto de manuales desde un navegador web en la máquina local escribiendo http://
localhost/manual en el cuadro de ubicación.
Externamente, en lugar de localhost, puede usar el nombre de dominio completo o la dirección IP
del sistema. Luego aparece la pantalla de documentación de Apache, como se muestra en la
Figura 17.1 .
FIGURA 17.1
Acceda a la documentación de Apache directamente desde el servidor Apache local.
430
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
mod_ssl Contiene el módulo y el archivo de configuración necesarios para que el servidor web proporcione
conexiones seguras a los clientes que utilizan los protocolos Secure Sockets Layer (SSL) y Transport Layer
Security (TLS). Estas funciones son necesarias si necesita comunicaciones encriptadas para compras en
línea u otros datos que desea mantener en privado.
El archivo de configuración se encuentra en /etc/httpd/conf.d/ssl.conf.
cryptoutils Contiene comandos para generar claves y certificados necesarios para realizar comunicaciones
seguras con el servidor web Apache. mod_perl Contiene el módulo Perl (mod_perl), el archivo de
configuración y los archivos asociados necesarios para permitir que el servidor web Apache ejecute cualquier
código Perl directamente. php Contiene el módulo PHP y el archivo de configuración necesarios para
ejecutar scripts PHP
directamente en Apache. Los paquetes relacionados incluyen phpldap (para ejecutar código PHP que
necesita acceder a bases de datos LDAP) y phpmysql (para agregar soporte de base de datos al servidor
Apache). 17
phpldap Agrega soporte para el Protocolo ligero de acceso a directorios (LDAP) a PHP
módulo, que permite el acceso al servicio de directorio a través de redes.
squid Proporciona servicios de proxy para protocolos específi cos (como HTTP), como se menciona en el
Capítulo 14, "Administración de redes". Areenvía
proxy Squid generalmente unque nso
proporciona
de cclientes
olicitudes ontenido
HTTP
proxy en sí muismo,
a Internet otra rued
n sqervidor
ue
proporciona contenido web. Esto proporciona un medio para controlar o filtrar contenido al que los clientes
pueden acceder desde un hogar, escuela o lugar de trabajo.
webalizer Contiene herramientas para analizar datos del servidor web.
Los paquetes opcionales en el grupo de servidores web provienen del subgrupo de servidores web. Ejecute el
servidor web yum groupinfo para mostrar esos paquetes. Algunos de esos paquetes ofrecen formas especiales de
proporcionar contenido, como wikis (moin), sistemas de administración de contenido (drupal7) y blogs (wordpress).
Otros incluyen herramientas para graficar estadísticas web (awstats) u ofrecen alternativas ligeras de servidor web a
Apache (lighttpd y cherokee).
Instalación de Apache Aunque
solo necesita httpd para comenzar con un servidor web Apache, si recién está aprendiendo sobre Apache,
también debe instalar los manuales (httpdmanual). Si está pensando en crear un sitio seguro (SSL) y posiblemente
generar algunas estadísticas sobre su sitio web, puede instalar todo el grupo en Fedora 30:
# yum groupinstall "Servidor web"
Suponiendo que tiene una conexión de Internet al repositorio de Fedora (o al repositorio de RHEL, si está utilizando
RHEL), todos los paquetes obligatorios y predeterminados de ese grupo están instalados. Dispone de todo el software
necesario para realizar los procedimientos y ejercicios descritos en este capítulo.
431
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Iniciando Apache
Para que el servidor web Apache funcione, desea habilitar el servicio para que se inicie en cada reinicio
y desea iniciarlo de inmediato. En Red Hat Enterprise Linux (hasta RHEL 6) y en distribuciones anteriores
de Fedora, puede escribir lo siguiente como root:
# chkconfig httpd en # inicio de
servicio httpd
A partir de httpd: [Aceptar ]
En los sistemas Fedora 30 y RHEL 8, habilita e inicia httpd usando el comando ctl del sistema:
# systemctl enable httpd.service # systemctl start
httpd.service # systemctl status httpd.service
•httpd.service El Servidor Apache HTTP
Cargado: cargado (/usr/lib/systemd/system/httpd.service; habilitado;
valor preestablecido del proveedor: deshabilitado)
Directo: /usr/lib/systemd/system/httpd.service.d
└─
phpfpm.conf
Activo: activo (en ejecución) desde el lunes 20190902 16:16:56 EDT;
Hace 21
minutos Documentos: man:httpd.service(8)
PID principal: 11773 (/usr/sbin/httpd)
Estado: "Solicitudes totales: 14; Trabajadores inactivos/ocupados 100/0; Solicitudes/seg: 0.0111; Bytes servidos/s>
Tareas: 214 (límite: 2294)
Memoria: 24,6 M
CGroup: /system.slice/httpd.service ├─ 11773 /usr/sbin/httpd
DFOREGROUND ├─ 11774 /usr/sbin/httpd DFOREGROUND
├─ 11775 /usr/sbin/httpd DFOREGROUND ├─ 11776 /usr/
sbin/httpd EN ANTERIOR ├─ 11777 /usr/sbin/httpd EN
ANTERIOR └─ 11778 /usr/sbin/httpd EN ANTERIOR
...
Cuando se inicia el servicio httpd, cinco o seis procesos del demonio httpd se inician de forma predeterminada
(dependiendo de su sistema Linux) para responder a las solicitudes del servidor web. Puede configurar más o
menos demonios httpd para que se inicien en función de la configuración del archivo httpd.conf (descrito en la
sección "Comprensión de los archivos de configuración de Apache" más adelante en este capítulo).
Para cambiar el comportamiento del demonio httpd, puede editar el servicio httpd ejecutando systemctl edit
httpd.
Debido a que existen diferentes versiones de httpd, consulte la página de manual (man httpd) para ver qué
opciones se pueden pasar al demonio httpd. Por ejemplo, ejecute systemctl edit httpd y agregue una entrada de
la siguiente manera:
[Servicio]
Entorno = OPCIONES = 'e depuración'
432
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Guarde los cambios (Ctrl+O, Ctrl+X). Agregar e debug aumenta el nivel de registro para que se
envíe la cantidad máxima de mensajes de Apache a los archivos de registro. Reinicie el servicio httpd
para que los cambios surtan efecto. Escriba el comando ps para asegurarse de que las opciones surtieron
efecto:
$ psef | grephttpd
raíz 14575 1 0 08:49 ? 00:00:01 /usr/sbin/httpd e depuración
EN PRIMER PLANO
apache 14582 14575 0 08:49 ? 00:00:00 /usr/sbin/httpd e depuración
EN PRIMER PLANO
Si agregó una opción de depuración (e debug), recuerde eliminar esa opción ejecutando systemctl edit
httpd nuevamente y eliminando la entrada cuando haya terminado de depurar Apache y reinicie el servicio.
Si deja la depuración activada, sus archivos de registro se llenarán rápidamente.
17
Protección de Apache Para
proteger Apache, debe conocer las características de seguridad estándar de Linux (permisos, propiedad,
cortafuegos y seguridad mejorada de Linux), así como las características de seguridad que son específicas
de Apache. Las siguientes secciones describen las funciones de seguridad relacionadas con Apache.
Permisos y propiedad de los archivos de
Apache El proceso del demonio httpd se ejecuta como el usuario apache y el grupo apache. De forma
predeterminada, el contenido HTML se almacena en el directorio /var/www/html (según lo determinado por el
valor de DocumentRoot en el archivo httpd.conf).
Para que el demonio httpd pueda acceder a ese contenido, se aplican los permisos estándar de Linux: si el
permiso de lectura no está activado para "otros" usuarios, debe estar activado para el usuario o grupo de
apache para que los archivos se lean y sirvan a los clientes. . Del mismo modo, cualquier directorio que deba
atravesar el demonio httpd para llegar al contenido debe tener permiso de ejecución para el usuario de apache,
el grupo de apache u otro usuario.
Aunque no puede iniciar sesión como usuario de apache (/sbin/nologin es el shell predeterminado),
puede crear contenido como root y cambiar su propiedad (comando chown) o permiso (comando chmod).
Sin embargo, a menudo se agregan cuentas separadas de usuarios o grupos para crear contenido que
todos pueden leer (otros) pero que solo puede escribir ese usuario o grupo especial.
Apache y cortafuegos Si
ha bloqueado su cortafuegos en Linux, necesita abrir varios puertos para que los clientes puedan
comunicarse con Apache a través del cortafuegos. Se puede acceder al servicio web estándar (HTTP) a
través del puerto TCP 80; Se puede acceder al servicio web seguro (HTTPS) a través del puerto TCP 443. (El
puerto 443 solo aparece si ha instalado el paquete mod_ssl, como se describe más adelante).
Para verificar qué puertos está utilizando el servidor httpd, use el comando netstat:
# netstattupln | grep httpd tcp6 0 tcp6 0
0 :::80 :::* ESCUCHAR 29169/httpd
0 :::443 :::* ESCUCHAR 29169/httpd
433
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
El resultado muestra que el demonio httpd (ID de proceso 29169) está escuchando en todas las direcciones para el puerto 80
(:::80) y el puerto 443 (:::443). Ambos puertos están asociados al protocolo TCP (tcp6). Para abrir esos puertos en Fedora o
Red Hat Enterprise Linux, debe agregar algunas reglas de firewall.
En un sistema Fedora 30 o RHEL 7 u 8 actual, abra la ventana Firewall (escriba Firewall y presione Entrar en la pantalla
Actividades en el escritorio de GNOME 3). Desde allí, seleccione Permanente como configuración. Luego, con la zona pública
seleccionada, haga clic en las casillas de verificación junto a las casillas de servicio http y https. Esos puertos se abren
inmediatamente.
Para RHEL 6 o versiones anteriores de Fedora, agregue reglas al archivo /etc/sysconfig/iptables (en algún lugar antes de
un DROP o REJECT final) como las siguientes:
A ENTRADA m estado estado NUEVO m tcp p tcp dport 80 j ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 443 j ACEPTAR
Reinicie iptables (service iptables restart) para que las nuevas reglas surtan efecto.
Apache y SELinux Si Security
Enhanced Linux (SELinux) está configurado para hacer cumplir (como está predeterminado en Fedora y Red Hat Enterprise Linux),
SELinux agrega otra capa de seguridad sobre su servicio httpd. En esencia, SELinux en realidad se propone proteger el sistema
para que no sea dañado por alguien que haya descifrado el demonio httpd. SELinux hace esto mediante la creación de políticas
que hacen lo siguiente:
■ Denegar el acceso a archivos que no estén configurados en los contextos de archivo correctos. Para httpd en
SELinux, existen diferentes contextos de archivo para contenido, archivos de configuración, archivos de registro,
scripts y otros archivos relacionados con httpd. Cualquier archivo que no esté configurado en el contexto adecuado no
es accesible para el demonio httpd. ■ Evite que se utilicen funciones no seguras, como la carga de archivos y la
autenticación de texto simple, configurando los valores booleanos para dichas funciones en la posición de apagado. Puede
activar los valores booleanos de forma selectiva según sea necesario, si cumplen con sus requisitos de seguridad.
■ Evite que el demonio httpd acceda a funciones no estándar, como un puerto de salida
lado de los puertos predeterminados que el servicio esperaría usar.
En el Capítulo 24, “Mejora de la seguridad de Linux con SELinux”, se incluye una descripción completa de SELinux. Sin
embargo, aquí hay algunos detalles específicos que debe saber sobre el uso de SELinux con el servicio httpd de Apache:
Apague SELinux No tiene que usar SELinux. Puede configurar SELinux en modo permisivo si cree que es demasiado
difícil e innecesario crear las políticas de SELinux necesarias para que su servidor web funcione con SELinux en
modo de aplicación. Puede cambiar el modo a permisivo editando el archivo /etc/sysconfig/selinux para que el valor
de SELINUX se establezca de la siguiente manera. Con este conjunto, la próxima vez que reinicie el sistema, estará
en modo permisivo. Esto significa que si infringe las políticas de SELinux, ese evento se registra pero no se evita (como
sucedería en el modo de cumplimiento).
SELINUX=permisivo
434
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Lea la página de manual de httpd_selinux Escriba man httpd_selinux desde el shell. Esta página del manual le
muestra los contextos de archivo adecuados y los valores booleanos disponibles. (Si la página de manual no
está allí, instálela con yum install selinuxpolicydoc.)
Usar ubicaciones estándar para archivos Cuando crea archivos nuevos, esos archivos heredan la
contextos de archivo de los directorios en los que se almacenan. Debido a que /etc/httpd está establecido en el
contexto de archivo correcto para archivos de configuración, /var/www/html es adecuado para archivos de
contenido, etc. El simple hecho de copiar archivos o crear nuevos archivos en esas ubicaciones hace que los
contextos de los archivos se establezcan correctamente.
Modifique SELinux para permitir características no estándar Es posible que desee servir contenido web desde el
directorio /mystuff o colocar archivos de configuración en el directorio /etc/whatever. Del mismo modo, es posible
que desee permitir que los usuarios de su servidor carguen archivos, ejecuten scripts o habiliten otras funciones
que SELinux desactiva de forma predeterminada. En esos casos, puede usar los comandos de SELinux para
configurar los contextos de archivo y los valores booleanos que necesita para que SELinux funcione de la 17
manera que desea.
Asegúrese de leer el Capítulo 24, "Mejora de la seguridad de Linux con SELinux", para obtener más información
sobre SELinux.
Comprensión de los archivos de configuración de Apache Los archivos de
configuración de Apache HTTPD son increíblemente flexibles, lo que significa que puede configurar el servidor
para que se comporte de la manera que desee. Esta fl exibilidad tiene el costo de una mayor complejidad en forma
de una gran cantidad de opciones de configuración (llamadas directivas). En la práctica, sin embargo, necesita estar
familiarizado con solo unas pocas directivas en la mayoría de los casos.
NOTA
Consulte http://httpd.apache.org/docs/current/mod/directives.html para obtener una lista completa de las directivas
admitidas por Apache. Si tiene instalado httpdmanual, puede acceder a las descripciones de estas directivas y
otras funciones de Apache abriendo el manual desde el servidor que ejecuta Apache: http://localhost/manual/ .
'
En Fedora y RHEL, el servidor Apache básico conf/ El archivo de configuración principal está en /etc/httpd/
httpd.conf. Además de este archivo, cualquier archivo que termine en .conf en el directorio /etc/httpd/conf.d también se
usa para la configuración de Apache (basado en una línea de inclusión en el archivo httpd.conf). En Ubuntu, la
configuración de Apache se almacena en archivos de texto leídos por el servidor Apache, comenzando con /etc/apache2/
apache2.conf. La configuración se lee de principio a fin, y la mayoría de las directivas se procesan en el orden en que se
leen.
Uso de directivas El
alcance de muchas directivas de configuración se puede modificar según el contexto. En otras palabras, algunos
parámetros pueden configurarse a nivel global y luego cambiarse para un archivo, directorio o host virtual específico.
Otras directivas son siempre de naturaleza global, como las que especifican en qué direcciones IP escucha el servidor.
Aún otros son válidos solo cuando se aplican a una ubicación específica.
435
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Las ubicaciones se configuran en forma de una etiqueta de inicio que contiene el tipo de ubicación y una ubicación
de recursos, seguida de las opciones de configuración para esa ubicación y finaliza con una etiqueta final. Este
formulario a menudo se denomina bloque de configuración y se parece mucho al código HTML. Se utiliza un tipo especial
de bloque de configuración, conocido como bloque de ubicación, para limitar el alcance de las directivas a archivos o
directorios específi cos. Estos bloques toman la siguiente forma:
<especificador de etiqueta de
ubicación> (las opciones específicas de los objetos que coinciden con el especificador van dentro de
este bloque) </etiqueta de ubicación>
Existen diferentes tipos de etiquetas de ubicación y se seleccionan según el tipo de ubicación de recursos que se
especifica. El especificador incluido en la etiqueta de inicio se maneja según el tipo de etiqueta de ubicación. Las etiquetas
de ubicación que generalmente usa y encuentra son Directorio, Archivos y Ubicación, que limitan el alcance de las
directivas a directorios, archivos o ubicaciones específi cos, respectivamente.
■ Las etiquetas de directorio se utilizan para especificar una ruta en función de la ubicación en el sistema de archivos.
Por ejemplo, <Directorio /> se refiere al directorio raíz de la computadora. Los directorios heredan la
configuración de los directorios que se encuentran por encima de ellos, y el bloque de directorio más específico
anula los menos específicos, independientemente del orden en que aparecen en los archivos de configuración.
■ Las etiquetas de archivos se utilizan para especificar archivos por nombre. Las etiquetas de archivos pueden
estar contenidas dentro de un bloque de directorio para limitarlas a los archivos de ese directorio. Las
configuraciones dentro de un bloque de Archivos anulan las de los bloques de Directorio. ■ Las etiquetas de
ubicación se utilizan para especificar el URI utilizado para acceder a un archivo o directorio. Esto es diferente de
Directorio en que se relaciona con la dirección contenida en la solicitud y no con la ubicación real del archivo en
la unidad. Las etiquetas de ubicación se procesan en último lugar y anulan la configuración de los bloques
Directorio y Archivos.
Las versiones de coincidencia de estas etiquetas (DirectoryMatch, FilesMatch y LocationMatch) tienen la misma función,
pero pueden contener expresiones regulares en la especificación de recursos.
Los bloques FilesMatch y LocationMatch se procesan al mismo tiempo que Files y Location, respectivamente. Los
bloques de DirectoryMatch se procesan después de los bloques de Directory.
Apache también se puede configurar para procesar opciones de configuración contenidas en archivos con el nombre
especificado en la directiva AccessFileName (que generalmente se establece en .htaccess). Las directivas de los
archivos de configuración de acceso se aplican a todos los objetos del directorio que contienen, incluidos los
subdirectorios y su contenido. Los archivos de configuración de acceso se procesan al mismo tiempo que los bloques de
Directorio, utilizando un orden similar de "coincidencia más específi ca".
436
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
NOTA
Los archivos de control de acceso son útiles para permitir a los usuarios cambiar configuraciones específicas sin tener
acceso a los archivos de configuración del servidor. Las directivas de configuración permitidas dentro de un archivo de
configuración de acceso están determinadas por la configuración AllowOverride en el directorio en el que están contenidas.
Algunas directivas no tienen sentido en ese nivel y, por lo general, generan un mensaje de ″error interno del servidor″ al
intentar acceder al URI. La opción AllowOverride se cubre en detalle en http://httpd.apache.org/docs/mod/core.html#allowoverride .
Tres directivas que se encuentran comúnmente en bloques de ubicación y archivos de control de acceso son
DirectoryIndex, Options y ErrorDocument:
■ DirectoryIndex le dice a Apache qué archivo cargar cuando el URI contiene una dirección
tory pero no un nombre de archivo. Esta directiva no funciona en bloques de archivos.
■ Las opciones se usan para ajustar cómo Apache maneja los archivos dentro de un directorio. La opción 17
Exec CGI le dice a Apache que los archivos en ese directorio se pueden ejecutar como scripts CGI, y
la opción Incluye le dice a Apache que se permiten las inclusiones del lado del servidor (SSI).
Otra opción común es la opción Índices, que le dice a Apache que genere una lista de archivos si
falta uno de los nombres de archivo que se encuentran en la configuración de DirectoryIndex. Se
puede especificar una lista absoluta de opciones, o se puede modificar la lista de opciones
agregando + o delante del nombre de una opción. Consulte http://httpd. apache.org/docs/mod/
core.html#options para obtener más información. ■ Las directivas ErrorDocument se pueden usar
para especificar un archivo que contiene mensajes para enviar a los clientes web cuando ocurre un error
en particular. La ubicación del archivo es relativa al directorio /var/www. La directiva debe especificar
un código de error y el URI completo para el documento de error. Los posibles códigos de error
incluyen 403 (acceso denegado), 404 (archivo no encontrado) y 500 (error interno del servidor). Puede
encontrar más información sobre la directiva ErrorDocument en http://httpd.apache.org/docs/mod/
core.html#errordocument. Como ejemplo, cuando un cliente solicita una URL del servidor que no se
encuentra, la siguiente línea de ErrorDocument hace que el código de error 404 envíe al cliente un
mensaje de error que se incluye en /var/www/error/HTTP_NOT_FOUND.html. archivo var.
ErrorDocumento 404 /error/HTTP_NOT_FOUND.html.var
Otro uso común de los bloques de ubicación y los archivos de control de acceso es limitar o ampliar el acceso a
un recurso. La directiva Permitir se puede usar para permitir el acceso a hosts coincidentes, y la directiva Denegar
se puede usar para prohibirlo. Ambas opciones pueden ocurrir más de una vez dentro de un bloque y se manejan
según la configuración de Orden. Establecer Orden en Denegar, Permitir permite el acceso a cualquier host que
no figure en una directiva Denegar. Una configuración de Permitir, Denegar deniega el acceso a cualquier host no
permitido en una directiva Permitir.
437
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Al igual que con la mayoría de las otras opciones, se usa la opción Permitir o Denegar más específi ca para un
host, lo que significa que puede Denegar el acceso a un rango y Permitir el acceso a subconjuntos de ese rango.
Al agregar la opción Satisfacer y algunos parámetros adicionales, puede agregar autenticación de
contraseña. Para obtener más información sobre Permitir o Denegar, Satisfacer u otras directivas, consulte
el Índice de directivas de Apache: http://httpd.apache.org/docs/current/mod/directives.html.
Comprender la configuración
predeterminada La razón por la que puede comenzar a usar su servidor web Apache tan pronto como lo instale es
que el archivo httpd.conf incluye configuraciones predeterminadas que le indican al servidor dónde encontrar
contenido web, scripts, archivos de registro y otros elementos. que el servidor necesita para funcionar. También
incluye configuraciones que le indican al servidor cuántos procesos del servidor debe ejecutar a la vez y cómo se
muestran los contenidos del directorio.
Si desea alojar un solo sitio web (como el dominio example.com), simplemente puede agregar contenido al
directorio /var/www/html y agregar la dirección de su sitio web a un servidor DNS para que otros puedan navegar.
lo. A continuación, puede cambiar las directivas, como las descritas en la sección anterior, según sea necesario.
'
Para ayudarlo a comprender las configuraciones que vienen en el archivo httpd.conf predeterminado, y dis
reproduje algunas de esas configuraciones con las descripciones a continuación. Eliminé los comentarios y
arreglé algunos de los ajustes para mayor claridad.
La siguiente configuración muestra las ubicaciones donde el servidor httpd obtiene y coloca contenido de
manera predeterminada:
Raíz del servidor "/etc/httpd"
Incluir conf.d/*.conf ErrorLog
logs/error_log CustomLog "logs/
access_log" combinado DocumentRoot "/var/
www/html"
ScriptAlias /cgibin/ "/var/www/cgibin/"
La directiva ServerRoot identifica /etc/httpd como la ubicación donde se almacenan los archivos de configuración.
En el punto del archivo donde aparece la línea Incluir, todos los archivos que terminan en .conf del directorio /
etc/httpd/conf.d se incluyen en el archivo httpd.conf. Los archivos de configuración a menudo se asocian con
módulos de Apache (y a menudo se incluyen en el paquete de software con un módulo) o con bloques de host
virtual (que puede agregar usted mismo a las configuraciones de host virtual en archivos separados). Consulte
la sección "Agregar un host virtual a Apache" más adelante en este capítulo.
A medida que se encuentran errores y se sirve el contenido, los mensajes sobre esas actividades se colocan en
archivos indicados por las entradas ErrorLog y CustomLog. De las entradas que se muestran aquí, esos registros
se almacenan en los directorios /etc/httpd/logs/error_log y /etc/httpd/logs/access_log, respectivamente. Esos
registros también están vinculados al directorio /var/log/httpd, por lo que también puede acceder al mismo archivo
desde allí.
438
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Las directivas DocumentRoot y ScriptAlias determinan dónde se almacena el contenido que sirve su servidor httpd.
Tradicionalmente, colocaría un archivo index.html en el directorio DocumentRoot (/var/www/html, de forma
predeterminada) como página de inicio y agregaría otro contenido según sea necesario. La directiva ScriptAlias le dice
al demonio httpd que cualquier script solicitado desde el directorio cgibin debe encontrarse en el directorio /var/www/cgi
bin. Por ejemplo, un cliente podría acceder a un script ubicado en /var/www/cgibin/script. cgi ingresando una URL como
http://example.com/cgibin/script.cgi.
Además de las ubicaciones de los archivos, puede encontrar otra información en el archivo httpd.conf. Aquí hay unos
ejemplos:
escucha 80
Usuario apache
Grupo apache
ServerAdmin root@localhost 17
DirectoryIndex index.html index.php
AccessFileName .htaccess
La directiva Listen 80 le dice a httpd que escuche las solicitudes entrantes en el puerto 80 (el puerto
predeterminado para el protocolo de servidor web HTTP). De manera predeterminada, escucha en todas las interfaces
de la red, aunque puede restringirlo a las interfaces seleccionadas por dirección IP (por ejemplo, Escuchar
192.168.0.1:80).
Las directivas de usuario y grupo le dicen a httpd que se ejecute como apache tanto para el usuario como para el grupo.
El valor de ServerAdmin (root@localhost, por defecto) se publica en algunas páginas web para indicar a los
usuarios dónde enviar un correo electrónico si tienen problemas con el servidor.
DirectoryIndex enumera los archivos que httpd servirá si se solicita un directorio. Por ejemplo, si un navegador
web solicita http://host/lo que sea/, httpd vería si existe /var/www/html/lo que sea/index.html y lo serviría si es así. Si no
existiera, en este ejemplo, httpd buscaría index.php. Si no se pudiera encontrar ese archivo, se mostraría
del
el cdontenido
irectorio.
Se puede agregar una directiva AccessFileName para decirle a httpd que use el contenido
existe
del archivo .htaccess
en un directorio spi
ara
leer la configuración que se aplica al acceso a ese directorio. Por ejemplo, el archivo podría usarse para solicitar
protección con contraseña para el directorio o para indicar que el contenido del directorio debe mostrarse de ciertas
formas. Sin embargo, para que este archivo funcione, un contenedor de Directorio (descrito a continuación) debería
tener AllowOverride abierto. (De forma predeterminada, la configuración AllowOverride None evita que el
archivo .htaccess se use para cualquier directiva).
Los siguientes contenedores de directorio defi ne el comportamiento cuando se accede al directorio raíz (/), /
var/www y /var/www/html:
<Directorio/>
Permitir anular ninguno
Requerir todo denegado
</Directorio>
<Directorio "/var/www">
AllowOverride Ninguno
439
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
# Permitir acceso abierto:
Requerir todo concedido
</Directorio>
<Directorio "/var/www/html">
Índices de opciones FollowSymLinks
AllowOverride Ninguno
Requerir todo concedido
</Directorio>
El primer contenedor de directorio (/) indica que si httpd intenta acceder a cualquier archivo en
el sistema de archivos de Linux, se deniega el acceso. La directiva AllowOverride none evita que los
archivos .htaccess anulen la configuración de ese directorio. Esas configuraciones se aplican a
cualquier subdirectorio que no esté definido en otros contenedores de Directorio.
El acceso al contenido se relaja dentro del directorio /var/www. Se otorga acceso al contenido
agregado en ese directorio, pero no se permite anular la configuración.
El contenedor del directorio /var/www/html sigue enlaces simbólicos y no permite anulaciones. Con
el conjunto Requerir todo concedido, httpd no impide ningún acceso al servidor.
Si todas las configuraciones recién descritas funcionan para usted, puede comenzar a agregar el
contenido que desee a los directorios /var/www/html y /var/www/cgibin html. Una de las razones por las
que es posible que no esté satisfecho con la configuración predeterminada es que es posible que desee
publicar contenido para varios dominios (como ejemplo.com, ejemplo.org y ejemplo.net). Para hacer eso,
necesita configurar hosts virtuales. Los hosts virtuales, que se describen con mayor detalle en la siguiente
sección, son una herramienta conveniente (y casi esencial) para brindar diferentes contenidos a los
clientes según la dirección del servidor o el nombre al que se dirige una solicitud. La mayoría de las
opciones de configuración global se aplican a hosts virtuales, pero pueden anularse mediante directivas
dentro del bloque VirtualHost.
Agregar un host virtual a Apache Apache admite
la creación de sitios web separados dentro de un solo servidor para mantener el contenido separado.
Los sitios individuales se configuran en el mismo servidor en lo que se conoce como hosts virtuales.
Los hosts virtuales son realmente solo una forma de tener el contenido de varios nombres de
dominio disponibles desde el mismo servidor Apache. En lugar de tener que tener un sistema
físico para servir contenido para cada dominio, puede servir contenido para múltiples dominios desde
el mismo sistema operativo.
Un servidor Apache que realiza alojamiento virtual puede tener varios nombres de dominio que
se resuelven en la dirección IP del servidor. El contenido que se sirve a un cliente web se basa en el
nombre utilizado para acceder al servidor.
Por ejemplo, si un cliente llegó al servidor solicitando el nombre www.example.com, el cliente
sería dirigido a un contenedor de host virtual que tenía su ServerName establecido en
440
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
responder a www.example.com. El contenedor proporcionaría la ubicación del contenido y posiblemente
diferentes registros de errores o directivas de directorio de la configuración global. De esta forma, cada
host virtual podría administrarse como si estuviera en una máquina separada.
Para usar alojamiento virtual basado en nombres, agregue tantos contenedores VirtualHost como desee.
'
Aquí s cómo configurar un host virtual:
NOTA
Después de habilitar su primer VirtualHost, su DocumentRoot predeterminado (/var/www/html) ya no se usa si alguien
accede al servidor por dirección IP o algún nombre que no está configurado en un contenedor de VirtualHost. En su lugar,
el primer contenedor VirtualHost se utiliza como ubicación predeterminada para el servidor.
1. En Fedora o RHEL, cree un archivo llamado /etc/httpd/conf.d/example.org.
17
conf usando esta plantilla:
<Host virtual *:80>
Administrador del servidor webmaster@example.org
Nombre del servidor www.example.org web.example.org /
ServerAlias var/www/html/example.org/
Raiz del documento DirectoryIndex index.php index.html
index.htm </VirtualHost>
Este ejemplo incluye la siguiente configuración:
■ La especificación *:80 en el bloque VirtualHost indica a qué dirección y puerto se aplica este host
virtual. Con múltiples direcciones IP asociadas con su sistema Linux, el * puede ser reemplazado
por una dirección IP específica. El puerto es opcional para las especificaciones de VirtualHost,
pero siempre debe usarse para evitar interferencias con hosts virtuales SSL (que usan el puerto
443 de manera predeterminada).
■ Las líneas ServerName y ServerAlias le indican a Apache qué nombres debe reconocer este
host virtual, así que reemplácelos con nombres apropiados para su sitio. Puede omitir la línea
ServerAlias si no tiene nombres alternativos para el servidor y puede especificar más de un
nombre por línea ServerAlias o tener varias líneas ServerAlias si tiene varios nombres
alternativos.
■ DocumentRoot especifica dónde se almacenan los documentos web (contenido servido para
este sitio). Aunque se muestra como un subdirectorio que usted crea bajo el DocumentRoot
predeterminado ( /var/www/html), a menudo los sitios se adjuntan a los directorios de inicio de
usuarios específi cos (como /home/chris/public_html) para que cada sitio pueda administrarse.
por un usuario diferente.
441
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
2. Con el host habilitado, use apachectl para verificar la configuración y luego haga
un reinicio elegante:
# apachectl prueba de configuración
Sintaxis OK
# apachectl elegante
Siempre que haya registrado el sistema con un servidor DNS, un navegador web debería poder acceder
a este sitio web utilizando www.example.org o web.example.org. Si eso funciona, también puede
comenzar a agregar otros hosts virtuales al sistema.
Otra forma de ampliar el uso de su sitio web es permitir que varios usuarios compartan su propio
contenido en su servidor. Puede permitir que los usuarios agreguen contenido que deseen compartir
a través de su servidor web en un subdirectorio de sus directorios de inicio, como se describe en la
siguiente sección.
NOTA
Mantener hosts virtuales individuales en archivos separados es una forma conveniente de administrar hosts virtuales. Sin
embargo, debe tener cuidado de mantener su host virtual principal en un archivo que se leerá antes que los demás porque el
primer host virtual recibe solicitudes de nombres
de sitios qwue
hospedaje nco
eb coinciden
omercial, con
es ninguno
común en
crear su
un hcost
onfiguración. En un entorno
virtual predeterminado de
especial
que contiene un mensaje de error que indica que no se configuró ningún sitio con ese nombre.
Permitir a los usuarios publicar su propio contenido web En situaciones en
las que no tiene la capacidad de configurar un host virtual para cada usuario para el que desea
proporcionar espacio web, puede utilizar fácilmente el módulo mod_userdir en Apache. Con este
módulo habilitado (que no está predeterminado), el directorio public_html debajo del directorio de inicio
de cada usuario está disponible para la web en http://servername /~ username /.
Por ejemplo, un usuario llamado wtucker en www.example.org almacena contenido web en /
home/wtucker/public_html. Ese contenido estaría disponible en http://www.example.org/~wtucker.
Realice estos cambios en el archivo /etc/httpd/conf/httpd.conf para permitir que los usuarios publiquen
contenido web desde sus propios directorios de inicio. No todas las versiones de Apache tienen estos
bloques en su archivo httpd.conf, por lo que es posible que deba crearlos desde cero:
1. Cree un bloque <IfModule mod_userdir.c>. Cambie chris a cualquier nombre de usuario que
desee permitir a los usuarios crear su propio directorio public_html. Puede agregar varios
nombres de usuario.
<IfModule mod_userdir.c>
UserDir habilitado chris
UserDir public_html
</IfModule>
442
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
2. Cree un bloque de directivas <Directory /home/*/public_html> y cambie
cualquier configuración que desee. Así es como se verá el bloque:
<Directorio "/home/*/public_html">
Índices de opciones Incluye FollowSymLinks
Requerir todo concedido
</Directorio>
3. Haga que sus usuarios creen sus propios directorios public_html en su propia casa
directorios.
$ mkdir $INICIO/public_html
4. Establezca el permiso de ejecución (como usuario raíz) para permitir que el demonio httpd acceda
el directorio de inicio:
# chmod +x /inicio /inicio/*
17
5. Si SELinux está en modo de aplicación (que es por defecto en Fedora y RHEL),
un contexto de archivo SELinux adecuado (httpd_user_content_t) ya debe estar configurado en los
siguientes directorios para que SELinux permita que el demonio httpd acceda al contenido
automáticamente: /home/*/www, /home/*/web y /home/*/ public_html. Si por alguna razón el contexto
no está configurado, puede configurarlo de la siguiente manera:
ttpd_user_content_t a /home/*/ # chcon R
reference=/var/www/html/ /home/*/public_html
6. Configure el valor booleano de SELinux para permitir que los usuarios compartan contenido HTML desde su hogar
directorios:
# setsebool – P httpd_enable_homedirs verdadero
7. Reinicie o vuelva a cargar el servicio httpd.
En este punto, debería poder acceder al contenido ubicado en el directorio
public_html de un usuario apuntando un navegador web a http: //hostname /~ user .
Asegurar su tráfico web con SSL / TLS Todos los datos que
comparte desde su sitio web mediante el protocolo HTTP estándar se envían en texto claro. Esto significa
que cualquier persona que pueda ver el tráfico en una red entre su servidor y su cliente puede ver sus datos
desprotegidos. Para proteger esa información, puede agregar certificados a su sitio (para que un cliente
pueda validar quién es usted) y encriptar sus datos (para que nadie pueda olfatear su red y ver sus datos).
Las aplicaciones de comercio electrónico, como las compras y la banca en línea, siempre deben cifrarse
utilizando la especificación de Capa de conexión segura (SSL) o Seguridad de la capa de transporte (TLS).
TLS se basa en la versión 3.0 de las especificaciones SSL, por lo que son de naturaleza muy similar. Debido
a esta similitud, y porque SSL es más antiguo, el acrónimo SSL se usa a menudo para referirse a cualquiera
de las dos variedades. Para las conexiones web, primero se establece la conexión SSL y luego se “canaliza” la
comunicación HTTP normal a través de ella.
443
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
NOTA
Debido a que la negociación SSL tiene lugar antes de cualquier comunicación HTTP, el alojamiento virtual basado en nombres
(que ocurre en la capa HTTP) no funciona fácilmente con SSL. Como consecuencia, cada host virtual SSL que configure debe
tener una dirección IP única. (Consulte el sitio de Apache para obtener más información: httpd.apache.org/docs/vhosts/
namebased.html).
Mientras establece una conexión entre un cliente SSL y un servidor SSL, se utiliza criptografía
asimétrica (clave pública) para verificar identidades y establecer los parámetros de sesión y la clave
de sesión. A continuación, se utiliza un algoritmo de cifrado simétrico con la clave negociada para cifrar
los datos que se transmiten durante la sesión. El uso de cifrado asimétrico durante la fase de negociación
permite una comunicación segura sin el uso de una clave precompartida, y el cifrado simétrico es más
rápido y práctico para usar en los datos de la sesión.
Para que el cliente verifique la identidad del servidor, el servidor debe tener una clave privada generada
previamente, así como un certificado que contenga la clave pública e información sobre el servidor.
Este certificado debe ser verificable mediante una clave pública conocida por el cliente.
Los certificados generalmente están firmados digitalmente por una autoridad de certificación (CA) de
terceros que ha verificado la identidad del solicitante y la validez de la solicitud para que se firme el
certificado. En la mayoría de los casos, la CA es una empresa que ha hecho arreglos con el proveedor del
navegador web para tener su propio certificado instalado y confiable para las instalaciones de clientes
predeterminadas. Luego, la CA cobra al operador del servidor por sus servicios.
Las autoridades de certificación comercial varían en precio, características y soporte de navegador, pero
recuerde que el precio no siempre es una indicación de calidad. Algunas CA populares son InstantSSL
'
(https://www.instantssl.com), Let DigiCert (https://www.digicert.com).
s Encrypt ( https://www.letsencrypt.org), y
También tiene la opción de crear certificados autofirmados, aunque estos deben usarse solo para pruebas
o cuando un número muy pequeño de personas accederá a su servidor y no planea tener certificados en
varias máquinas. Las instrucciones para generar un certificado autofirmado se incluyen en la sección
"Generación de una clave SSL y un certificado autofirmado" más adelante en este capítulo.
La última opción es ejecutar su propia autoridad certificadora. Esto probablemente sea práctico solo si
tiene una pequeña cantidad de usuarios esperados y los medios para distribuirles su certificado de CA
(incluida la asistencia para instalarlo en sus navegadores). El proceso para crear una CA es demasiado
elaborado para tratarlo en este libro, pero es una alternativa valiosa a la generación de certificados
autofirmados.
Las siguientes secciones describen cómo se configuran las comunicaciones HTTPS de manera
predeterminada en Fedora y RHEL cuando instala el paquete mod_ssl. Después de eso, describo
cómo configurar mejor las comunicaciones SSL al generar sus propias claves y certificados SSL para
usar con el servidor web (ejecutándose en un sistema Fedora o RHEL) configurado en este capítulo.
444
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Comprender cómo se configura SSL
Si ha instalado el paquete mod_ssl en Fedora o RHEL (que se hace de manera predeterminada
si instaló el grupo Servidor web básico), se crea un certificado autofirmado y una clave privada
cuando se instala el paquete . Esto le permite usar el protocolo HTTPS inmediatamente para
comunicarse con el servidor web.
Aunque la configuración predeterminada de mod_ssl le permite tener comunicaciones cifradas entre su
servidor web y los clientes, debido a que el certificado está autofirmado, se advierte a un cliente que
acceda a su sitio que el certificado no es de confianza. Para comenzar a explorar la configuración de SSL
para su servidor web Apache, asegúrese de que el paquete mod_ssl esté instalado en el servidor que
ejecuta su servicio Apache (httpd):
# yum instalar mod_ssl
El paquete mod_ssl incluye el módulo necesario para implementar SSL en su servidor web (mod_ssl.so) 17
y un archivo de configuración para sus servidores SSL: /etc/httpd/conf.d/ssl.conf.
Hay muchos comentarios en este archivo para ayudarlo a comprender qué cambiar. Esas líneas que no
están comentadas definen algunas configuraciones iniciales y un host virtual predeterminado. Estas son
algunas de esas líneas:
Escuchar 443 https
...
<Host virtual _predeterminado_:443>
Registros de ErrorLog/ssl_error_log
Registros de TransferLog/ssl_access_log
Advertencia de nivel de registro
Motor SSL activado
...
SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /
etc/pki/tls/private/localhost.key
...
</HostVirtual>
'
El servicio SSL está configurado para escuchar en el puerto SSL estándar 443 en todas las s red
interfaces del sistema.
Se crea un bloque VirtualHost que hace que los mensajes de error y los mensajes de acceso se
registren en archivos de registro que son independientes de los registros estándar utilizados por el
servidor (ssl_error_log y ssl_access_log en el directorio /var/log/httpd/). El nivel de mensajes de registro
está configurado para advertir y SSLEngine está activado.
En el código de ejemplo anterior, dos entradas asociadas con certificados SSL en el bloque Virtu alHost
identifican la clave y la información del certificado. Como se mencionó anteriormente, se genera una clave
cuando se instala mod_ssl y se coloca en el archivo /etc/pki/tls/private/localhost.key. Se crea un certificado
autofirmado, /etc/pki/tls/certs/localhost.crt, usando esa clave. Cuando cree su propia clave y certificado más
tarde, debe reemplazar los valores de SSLCertificateFile y SSLCertificateKeyFile en este archivo.
445
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Después de instalar el paquete mod_ssl y recargar el archivo de configuración, puede probar que el
certificado predeterminado funciona siguiendo estos pasos:
1. Abra una conexión al sitio web desde un navegador web, usando HTTPS pro
tocol Por ejemplo, si está ejecutando Firefox en el sistema donde se ejecuta el servidor web, escriba
https://localhost en el cuadro de ubicación y presione Entrar.
La figura 17.2 muestra un ejemplo de la página que aparece.
FIGURA 17.2
Acceder a un sitio web SSL con un certificado predeterminado
2. Esta página le advierte que no hay forma de verificar la autenticidad de este sitio.
Esto se debe a que no hay forma de saber quién creó el certificado que está aceptando.
3. Debido a que está accediendo al sitio a través de un navegador en el host local, haga clic en
Avanzado y luego Ver para ver el certificado que se generó. Incluye su nombre de host, información
sobre cuándo se emitió el certificado y cuándo caduca, y mucha otra información de la organización.
4. Seleccione Aceptar el riesgo y continuar para permitir las conexiones a este sitio.
5. Cierre esa ventana y luego seleccione Confi rmar excepción de seguridad para aceptar la
conexión. Ahora debería ver su página web predeterminada utilizando el protocolo HTTPS. A partir
de ahora, su navegador aceptará conexiones HTTPS al servidor web utilizando ese certificado y
encriptará todas las comunicaciones entre el servidor y el navegador.
446
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Como no quiere que su sitio web asuste a los usuarios, lo mejor que puede hacer es obtener un certificado
válido para usar con su sitio. Lo siguiente que puede hacer es crear un certificado autofirmado que al
menos incluya mejor información sobre su sitio y organización. La siguiente sección describe cómo
hacerlo.
Generación de una clave SSL y un certificado autofirmado
Para comenzar a configurar SSL, utilice el comando openssl, que forma parte del paquete
openssl, para generar su clave pública y privada. Después de eso, puede generar su propio certificado
autofirmado para probar el sitio o usarlo internamente.
1. Si el paquete openssl aún no está instalado, instálelo de la siguiente manera:
# yum instalar abre SSL
2. Genere una clave privada RSA de 2048 bits y guárdela en un archivo:
17
# cd /etc/pki/tls/private # openssl genrsa
out server.key 2048 # chmod 600 server.key
NOTA
Puede usar un nombre de archivo que no sea server.key y debería hacerlo si planea tener más de un host SSL en su
máquina (que requiere más de una dirección IP). Solo asegúrese de especificar el nombre de archivo correcto en la
configuración de Apache más adelante.
O, en entornos de mayor seguridad, es una buena idea cifrar la clave agregando el argumento des3
después del argumento genrsa en la línea de comandos de openssl. Cuando se le solicite una frase de
contraseña, presione Entrar: # openssl genrsa des3 out server.key 1024
3. Si no planea tener su certificado firmado, o si desea probar su configuración, genere un certificado
autofirmado y guárdelo en un archivo llamado server.crt en /etc/pki/tls directorio /certs: # cd /etc/pki/tls/
certs # openssl req new x509 nodes sha1 days 365 \ key /etc/pki/tls/private/server.key \
fuera servidor.crt
Nombre del país (código de 2 letras) [AU]: Nombre de
la provincia o estado de EE. UU. (nombre completo) [Algún estado]: Nombre
de la localidad de NJ (p. ej., ciudad) [Ciudad predeterminada]: Nombre de la
organización de Princeton (p. ej., empresa) [Empresa predeterminada Ltd
Ltd]:PRUEBA DE USO SOLO Nombre de la unidad organizativa (por ejemplo,
sección) []:PRUEBA DE USO SOLO Nombre común (por ejemplo, SU nombre)
[]:secure.example.org Dirección de correo electrónico []:dom@example.org
447
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
4. Edite el archivo /etc/httpd/conf.d/ssl.conf para cambiar la clave y las ubicaciones de certificado para
usar las que acaba de crear. Por ejemplo: SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
5. Reinicie o vuelva a cargar el servidor httpd .
6. Abra https://localhost desde un navegador local nuevamente, repita el procedimiento
para revisar y acepte el nuevo certificado.
Para uso interno o pruebas, un certificado autofirmado podría funcionar para usted. Sin embargo, para los
sitios web públicos, debe usar un certificado que esté validado por una autoridad de certificación (CA). El
procedimiento para hacerlo se cubre a continuación.
Generación de una solicitud de firma de certificado
Si planea que su certificado sea firmado por una CA (incluida una que ejecute usted mismo), puede usar
su clave privada para generar una solicitud de firma de certificado (CSR):
1. Cree un directorio para almacenar su CSR.
# mkdir /etc/pki/tls/ssl.csr # cd /etc/pki/
tls/ssl.csr/
2. Utilice el comando openssl para generar la CSR. El resultado es un archivo CSR en
el directorio actual llamado server.csr. Cuando ingresa la información, la entrada Nombre
común debe coincidir con el nombre que los clientes usarán para acceder a su servidor.
Asegúrese de obtener los demás detalles correctamente para que pueda ser validado por una
CA de terceros. Además, si ingresó una frase de contraseña para su clave, se le solicitará
que la ingrese aquí para usar la clave. # openssl req new key ../private/server.key out
server.csr
Nombre del país (código de 2 letras) [AU]: Nombre
del estado o provincia de EE. UU. (nombre completo) [Algún estado]: Nombre de la
localidad de Washington (p. ej., ciudad) []: Nombre de la organización de Bellingham
(p. ej., empresa) [Internet Widgits Pty Ltd ]: Empresa de ejemplo, LTD.
Nombre de la unidad organizativa (p. ej., sección) []: Nombre común
de operaciones de red (p. ej., SU nombre) []:secure.example.org
Dirección de correo electrónico []:dom@example.org
Ingrese los siguientes atributos 'adicionales' para enviarlos con
su solicitud de certificado
Una contraseña reto []:
Un nombre de empresa opcional []:
3. Visite el sitio web de la autoridad firmante del certificado que elija y
solicitar un certificado firmado. En algún momento, el sitio de CA probablemente le pedirá que
448
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
copie y pegue el contenido de su CSR (archivo server.csr en este ejemplo) en un formulario
necesario para realizar la solicitud.
4. Cuando la CA le envíe el certificado (probablemente por correo electrónico), guárdelo en el
directorio /etc/pki/tls/certs/ con un nombre basado en el sitio que está alojando, por ejemplo,
example.org.crt.
5. Cambie el valor de SSLCertificateFile en /etc/httpd/conf.d/ssl. archivo conf para apuntar a su nuevo
archivo CRT. O bien, si tiene varios hosts SSL, es posible que desee crear una entrada separada
(posiblemente en un archivo .conf separado) similar a la siguiente:
Escuchar 192.168.0.56:443
<Host virtual *:443>
Nombre del servidor secure.example.org
ServerAlias web.example.org /home/ 17
Raiz del documento username/public_html/ DirectoryIndex
index.php index.html index.htm SSLEngine SSLCertificateKeyFile /etc/
En
pki/tls/private/server.key S SLCertificateFile /etc/pki/tls/certs /
ejemplo.org.crt </HostVirtual>
La dirección IP que se muestra en la directiva Escuchar debe reemplazarse por la dirección IP pública que
representa el host SSL que está sirviendo. Recuerde que cada host SSL debe tener su propia dirección IP.
Solución de problemas de su servidor web
En cualquier entorno complejo, de vez en cuando se encuentra con problemas. Las siguientes secciones
incluyen sugerencias para aislar y resolver los errores más comunes que puede encontrar.
Comprobación de errores de configuración
Ocasionalmente puede encontrarse con errores de configuración o problemas de secuencias de comandos
que impiden que Apache se inicie o que impidan el acceso a archivos específicos. La mayoría de estos
problemas se pueden aislar y resolver utilizando dos herramientas proporcionadas por Apache: el programa
apachectl y el registro de errores del sistema.
Cuando encuentre un problema, primero use el programa apachectl con el parámetro configtest para probar
la configuración. De hecho, es una buena idea desarrollar
un
el
chambio
ábito dde
e
ecjecutar
onfiguración:
esto cada vez que realice
# apachectl prueba de configuración
Sintaxis OK #
apachectl graceful /usr/sbin/
apachectl graceful: httpd reiniciado correctamente
449
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En el caso de un error de sintaxis, apachectl indica dónde ocurre el error y también hace todo lo posible
para dar una pista sobre la naturaleza del problema. A continuación, puede utilizar la opción de reinicio
correcto (apachectl graceful) para indicar a Apache que vuelva a cargar su configuración sin desconectar
ningún cliente activo.
NOTA
La opción de reinicio elegante en apachectl prueba automáticamente la configuración antes de enviar la señal de recarga a
apache, pero sigue siendo
cualquier
una bcuena
ambio
idea
en laa
costumbrarse
configuración.a ejecutar la prueba de configuración manual después de realizar
Algunos problemas de configuración pasan las pruebas de sintaxis realizadas por apachectl pero hacen
que el demonio HTTP se cierre inmediatamente después de recargar su configuración. Si esto sucede,
use el comando tail para verificar el registro
de F
sistemas errores
edora yd e
RA pache
el rpegistro
HEL, ara obtener información
de errores útil. En
se encuentra elos
n /
var/log/httpd/error.log. En otros sistemas, puede encontrar la ubicación buscando la directiva ErrorLog en
su configuración de Apache.
Es posible que encuentre un mensaje de error similar a este:
[crit] (98) Dirección ya en uso: make_sock: no se pudo vincular al puerto
80
Este error a menudo indica que algo más está vinculado al puerto 80, que ya se está ejecutando otro
proceso de Apache (apachectl generalmente detecta esto), o que le ha dicho a Apache que vincule la
misma combinación de dirección IP y puerto en más de un lugar.
Puede usar el comando netstat para ver la lista de programas (incluido Apache) con
Puertos TCP en estado LISTEN:
# netstatnltp
Conexiones a Internet activas (solo servidores)
Proto Dirección local Dirección extranjera Estado PID/Nombre del programa
tcp6 :::80 :::* ESCUCHA 2105/httpd
La salida de netstat (que se acortó para que encaje aquí) indica que una instancia del proceso httpd
con un ID de proceso de 2105 está escuchando (como lo indica el estado LISTEN) para conexiones a
cualquier dirección IP local (indicado por ::: 80) en el puerto 80 (el puerto HTTP estándar). Si un programa
diferente está escuchando el puerto 80, se muestra allí. Puede usar el comando kill para finalizar el
proceso, pero si es algo diferente a httpd, también debe averiguar por qué se está ejecutando.
Si no ve ningún otro proceso escuchando en el puerto 80, es posible que accidentalmente le haya
dicho a Apache que escuche en la misma combinación de dirección IP y puerto en más de un lugar.
Se pueden usar tres directivas de configuración para esto: BindAddress, Port y Listen:
■ BindAddress le permite especificar una única dirección IP en la que escuchar, o puede especificar
todas las direcciones IP mediante el comodín *. Nunca debe tener más de una instrucción
BindAddress en su archivo de configuración.
450
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
■ Port especifica en qué puerto TCP escuchar, pero no le permite especificar la dirección
IP. Por lo general, el puerto no se usa más de una vez en la configuración. ■ Escuchar
le permite especificar una dirección IP y un puerto al que vincularse. la propiedad intelectual
La dirección puede tener la forma de un comodín, y puede tener múltiples declaraciones de
escucha en su archivo de configuración.
Para evitar confusiones, generalmente es una buena idea usar solo uno de estos tipos de directivas. De los
tres, Listen es el más fl exible, por lo que probablemente sea el que más desee utilizar.
Un error común al usar Escuchar es especificar un puerto en todas las direcciones IP (*:80), así como ese
mismo puerto en una dirección IP específica (1.2.3.4:80), lo que genera el error de make_sock.
Los errores de configuración relacionados con SSL suelen hacer que Apache se inicie incorrectamente.
Asegúrese de que todos los archivos de claves y certificados existan y que estén en el formato adecuado
(utilice openssl para examinarlos). 17
Para otros mensajes de error, intente realizar una búsqueda en la web para ver si alguien más ha encontrado
el problema. En la mayoría de los casos, puede encontrar una solución en las primeras coincidencias.
'
Si tiene más Si no obtiene suficiente información en ErrorLog, puede configurarlo para registrar
información utilizando la directiva LogLevel. Las opciones disponibles para esta directiva, en orden creciente
de verbosidad, son emerg, alert, crit, error, warn, Notice, Info y Debug. Seleccione solo uno de estos.
Cualquier mensaje que sea al menos tan importante como el LogLevel que seleccione se almacena en
ErrorLog. En un servidor típico, LogLevel está configurado para advertir. No debe configurarlo en ningún
valor inferior a crit, y debe evitar dejarlo configurado para depurar porque eso puede ralentizar el servidor y
generar un ErrorLog muy grande.
Como último recurso, también puede intentar ejecutar httpd X manualmente para verificar si hay
bloqueos u otros mensajes de error. El X ejecuta httpd para que muestre mensajes de depuración y
superiores en la pantalla.
Acceso prohibido y errores internos del servidor Los dos tipos comunes de
errores que puede encontrar al intentar ver páginas específicas en su servidor son errores de permisos y
errores internos del servidor. Normalmente, ambos tipos de errores se pueden aislar utilizando la información
del registro de errores. Después de realizar cualquiera de los cambios descritos en la siguiente lista para
intentar resolver uno de estos problemas, intente la solicitud nuevamente y verifique el registro de errores
para ver si el mensaje ha cambiado (por ejemplo, para mostrar que la operación se completó con éxito).
NOTA
Los errores de ″Archivo no encontrado″ se pueden verificar de la misma manera que ″Acceso prohibido″ y ″Errores internos del
servidor″. A veces puede encontrar que Apache no está buscando un archivo específico donde cree que está. Generalmente, la ruta
completa al archivo aparece en el registro de errores. Asegúrese de que está accediendo al host virtual correcto y verifique si hay alguna
configuración de alias que pueda estar dirigiendo su ubicación a un lugar que no espera.
451
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Permisos de archivo El error "Los permisos de archivo impiden el acceso" indica que el proceso de Apache se está
ejecutando como un usuario que no puede abrir el archivo solicitado. De forma predeterminada, el usuario y el grupo de
Apache ejecutan httpd. Asegúrese de que la cuenta tenga permisos de ejecución en el directorio y en todos los directorios
superiores, así como permisos de lectura en los propios archivos. Los permisos de lectura en un directorio también son
necesarios si desea que Apache genere un índice de archivos. Consulte la página del manual de chmod para obtener
más información sobre cómo ver y cambiar los permisos.
NOTA
Los permisos de lectura no son necesarios para los binarios compilados, como los escritos en C o C++, pero se pueden agregar de forma
segura a menos que exista la necesidad de mantener en secreto el contenido del programa.
Acceso denegado El error "Cliente denegado por la configuración del servidor" indica que Apache se configuró para
denegar el acceso al objeto. Verifique los archivos de configuración para las secciones Ubicación y Directorio que
podrían afectar el archivo al que está tratando de acceder. Recuerde que la configuración aplicada a una ruta también
se aplica a cualquier ruta debajo de ella. Puede anularlos cambiando los permisos solo para la ruta más específica a la
que desea permitir el acceso.
Índice no encontrado El error "Índice de directorio prohibido por regla" indica que
Apache no pudo encontrar un archivo de índice con un nombre especificado en la directiva DirectoryIndex y se
configuró para no crear un índice que contuviera una lista de archivos en un directorio. Asegúrese de que su página de
índice, si tiene una, tenga uno de los nombres especificados en la directiva DirectoryIndex relevante, o agregue una
línea de índices de opciones a la sección apropiada de Directorio o Ubicación para ese objeto.
La secuencia de comandos se bloqueó Los errores de "Finalización prematura de los encabezados de la secuencia de
comandos" pueden indicar que una secuencia de comandos se está bloqueando antes de que finalice. En ocasiones,
los errores que causaron esto también aparecen en el registro de errores. Al usar suexec o suPHP, este error también
puede deberse a un error de propiedad o permisos del archivo. Estos errores aparecen en los archivos de registro en
el directorio /var/log/httpd.
Errores de SELinux Si los permisos de archivo están abiertos pero aparecen mensajes que niegan el permiso en los
archivos de registro, SELinux podría estar causando el problema. Establezca SELinux en modo permisivo
temporalmente (setenforce 0) e intente acceder al archivo nuevamente. Si ahora se puede acceder al archivo, configure
SELinux en modo de aplicación nuevamente (setenforce 1) y verifique los contextos del archivo y los valores booleanos.
Los contextos de archivo deben ser correctos para que httpd pueda acceder a un archivo. Un valor booleano puede
evitar que un archivo se sirva desde un directorio montado de forma remota o evitar que una página envíe un correo
electrónico o cargue un archivo. Escriba man httpd_selinux para obtener detalles sobre los ajustes de configuración de
SELinux asociados con los servicios httpd. (Instale el paquete selinuxpolicydevel para agregar esa página man a su
sistema).
452
Machine Translated by Google
Capítulo 17: Configuración de un servidor web
Resumen
El proyecto Apache de código abierto es el servidor web más popular del mundo. Si bien Apache ofrece una
gran fl exibilidad, seguridad y complejidad, se puede configurar un servidor web Apache básico en solo unos
minutos en Fedora, RHEL y la mayoría de las demás distribuciones de Linux.
El capítulo describe los pasos para instalar, configurar, proteger y solucionar problemas de un servidor web
Apache básico. Aprendió cómo configurar el alojamiento virtual y los hosts SSL seguros. También aprendió cómo
configurar Apache para permitir que cualquier cuenta de usuario en el sistema publique contenido desde su propio
directorio public_html.
Continuando con el tema de la configuración del servidor, en el Capítulo 18 , “Configuración de un servidor FTP,”
aprenderá cómo configurar un servidor FTP en Linux. Los ejemplos ilustran cómo configurar un servidor FTP
utilizando el paquete vsftpd.
17
Ejercicios
Los ejercicios de esta sección cubren temas relacionados con la instalación y configuración de un servidor web
Apache. Como de costumbre, le recomiendo que use un sistema Fedora o Red Hat Enterprise Linux de repuesto
'
No
ahrchivos
para hacer los ejercicios. No modifique los ago estos
de ceonfiguración
jercicios en uyna
el m áquina
dde
servicio e
Appache,
roducción
ya qpue
orque
estosdañar
podrían
los servicios que tiene configurados actualmente. Trate de usar una máquina virtual o encuentre una computadora
donde no haga daño interrumpir los servicios en el sistema.
Estos ejercicios asumen que está comenzando con una instalación de Fedora o RHEL en la que el servidor
Apache (paquete httpd) aún no está instalado.
Si está atascado, las soluciones a las tareas se muestran en el Apéndice B. Estos le muestran un enfoque
para cada tarea, aunque Linux puede ofrecer varias formas de completar una tarea.
1. Desde un sistema Fedora, instale todos los paquetes asociados con Basic Web
grupo de servidores.
2. Cree un archivo llamado index.html en el directorio asignado a DocumentRoot en el archivo de
configuración principal de Apache. El archivo debe tener las palabras “My Own Web Server” adentro.
3. Inicie el servidor web Apache y configúrelo para que se inicie automáticamente en el momento del
arranque. Verifique que esté disponible desde un navegador web en su host local. (Debería ver las
palabras "My Own Web Server" en pantalla si funciona correctamente).
4. Use el comando netstat para ver en qué puertos está escuchando el servidor httpd.
5. Intente conectarse a su servidor web Apache desde un navegador web que esté fuera del sistema local.
Si falla, corrija cualquier problema que encuentre investigando el cortafuegos, SELinux y otras funciones
de seguridad.
453
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
6. Con el comando openssl o similar, cree su propia clave RSA privada y
certificado SSL firmado.
7. Configure su servidor web Apache para usar su clave y certificado autofirmado para
servir contenido seguro (HTTPS).
8. Use un navegador web para crear una conexión HTTPS a su servidor web y ver el
contenido del certificado que ha creado.
9. Cree un archivo llamado /etc/httpd/conf.d/example.org.conf, que activa el alojamiento
virtual basado en nombres y crea un host virtual que hace lo siguiente: ■ Escucha en el
puerto 80 en todas las interfaces ■ Tiene un administrador de servidor de
joe@example.org ■ Tiene un nombre de servidor de joe.example.org ■ Tiene un
DocumentRoot de /var/www/html/example.org ■ Tiene un DirectoryIndex que incluye al
menos index.html
Cree un archivo index.html en DocumentRoot que contenga las palabras "Bienvenido a
la Casa de Joe" dentro.
10. Agregue el texto joe.example.org al final de la entrada localhost en su /etc/
hosts archivo en la máquina que está ejecutando el servidor web. Luego escriba http://joe.
example.org en el cuadro de ubicación de su navegador web. Debería ver "Bienvenido a la
Casa de Joe" cuando se muestre la página.
454
Machine Translated by Google
CAPÍTULO S
Configuración de un servidor FTP
EN ESTE CAPÍTULO
Aprendiendo cómo funciona FTP
Cómo instalar un servidor vsftpd
Elegir la configuración de seguridad para vsftpd
Configuración de archivos de configuración de vsftpd
Ejecución de clientes FTP
T
El Protocolo de transferencia de archivos (FTP) es uno de los protocolos más antiguos que existen para compartir archivos a través de
redes Aunque existen protocolos más seguros para compartir archivos en la red, todavía se usa FTP
muy a menudo para hacer que los archivos estén disponibles gratuitamente en Internet.
Varios proyectos de servidor FTP están disponibles con Linux hoy. Sin embargo, el que se usa a menudo
con Fedora, Red Hat Enterprise Linux, CentOS, Ubuntu y otras distribuciones de Linux es el demonio FTP
muy seguro (paquete vsftpd). Este capítulo describe cómo instalar, configurar, usar y asegurar un servidor
FTP usando el paquete vsftpd.
Entendiendo FTP
FTP opera en un modelo cliente/servidor. Un demonio del servidor FTP escucha las solicitudes entrantes (en el puerto TCP 21) de los clientes
FTP. El cliente presenta un nombre de usuario y contraseña. Si el servidor acepta la información de inicio de sesión, el cliente puede atravesar
de forma interactiva el sistema de archivos, enumerar archivos y directorios y luego descargar (y, a veces, cargar) archivos.
Lo que hace que FTP sea inseguro es que todo lo que se envía entre el cliente FTP y el servidor se realiza en texto claro. El protocolo FTP
se creó en un momento en que la mayoría de las comunicaciones informáticas se realizaban a través de líneas privadas o de acceso telefónico,
donde la encriptación no se consideraba crítica. Si usa FTP en una red pública, alguien que olfatee la línea entre el cliente y el servidor podría
ver no solo los datos que se transfieren, sino también el proceso de autenticación (información de inicio de sesión y contraseña).
Por lo tanto, FTP no es bueno para compartir archivos de forma privada (use comandos SSH como sftp, scp o rsync si necesita
transferencias de archivos cifradas y privadas). Sin embargo, si está compartiendo documentos públicos, repositorios de software de código
abierto u otros datos disponibles abiertamente, FTP es una buena opción. Independientemente del sistema operativo que usen las personas,
seguramente tienen una aplicación de transferencia de archivos FTP disponible para obtener los archivos que ofreces desde tu servidor FTP.
455
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Cuando los usuarios se autentican en un servidor FTP en Linux, sus nombres de usuario y contraseñas
se autentican con las cuentas y contraseñas de usuario estándar de Linux. También hay una cuenta
especial no autenticada utilizada por el servidor FTP llamada anónima. Cualquiera puede acceder a la
cuenta anónima porque no requiere una contraseña válida. De hecho, el término servidor FTP anónimo se
usa a menudo para describir un servidor FTP público que no requiere (ni siquiera permite) la autenticación
de una cuenta de usuario legítima.
NOTA
Aunque la capacidad de iniciar sesión en el servidor vsftpd utilizando una cuenta de usuario normal de Linux está habilitada de forma predeterminada en Fedora y
Red Hat Enterprise Linux, si SELinux está configurado en modo de aplicación, evita que los inicios de sesión y las transferencias de archivos se realicen
correctamente. Si desea mantener SELinux en modo obligatorio y aún así permitir los inicios de sesión de Linux, puede cambiar un valor booleano (consulte la
sección “Configuración de SELinux para su servidor FTP” más adelante en este capítulo) para permitir que los inicios de sesión de usuarios normales tengan éxito.
Después de la fase de autenticación (en el puerto de control, puerto TCP 21), se realiza una segunda
conexión entre el cliente y el servidor. FTP admite tipos de conexión activa y pasiva. Con una conexión
FTP activa, el servidor envía datos desde su puerto TCP 20 a algún puerto aleatorio que el servidor
elija por encima del puerto 1023 en el cliente. Con una conexión FTP pasiva, el cliente solicita la
conexión pasiva y solicita un puerto aleatorio del servidor.
Muchos navegadores admiten el modo FTP pasivo para que, si el cliente tiene un firewall, no bloquee
el puerto de datos que el servidor FTP podría usar en modo activo. Admitir el modo pasivo requiere algo
'
de trabajo adicional en el servidor por encima ds e
1023 en epl
cortafuegos servidor.
ara Lca
permitir sección a"Apertura
onexiones leatorias ad e spu
los uertos
cortafuegos para FTP", más adelante en este capítulo, describe lo que debe hacer con su cortafuegos de
Linux para que funcionen las conexiones FTP pasivas y activas.
Una vez establecida la conexión entre el cliente y el servidor, se establece el directorio actual del
cliente. Para el usuario anónimo, el directorio /var/ftp es el directorio principal de Fedora o RHEL, y
es /srv/ftp para Ubuntu y la mayoría de las
puede
distribuciones
salir de lba
asadas
estructura
en Ddebian.
e directorios /var/ftp.
El usuario anónimo no
Si un usuario habitual, digamos joe, inicia sesión en el servidor FTP, /home/joe es el directorio actual de
joe, pero joe puede cambiar a cualquier parte del sistema de archivos para el que tenga permiso.
Los clientes FTP orientados a comandos (como los comandos lftp y ftp) pasan a un modo interactivo
después de conectarse al servidor. Desde el indicador que ve, puede ejecutar muchos comandos que
son similares a los que usaría desde el shell. Puede usar pwd para ver su directorio actual, ls para
enumerar el contenido del directorio y cd para cambiar de directorio.
Cuando vea un archivo que desee, use los comandos get y put para descargar archivos o cargarlos en el
servidor, respectivamente.
Con herramientas gráficas para acceder a servidores FTP (como un navegador web), escribe la URL del
sitio que desea visitar (como ftp://docs.example.com) en el cuadro de ubicación del navegador. Si no agrega
un nombre de usuario directorio
o contraseña,
de inicio
se realiza
del sitio.
una
Hcaga
onexión
clic en
anónima
enlaces
ya s d
e
irectorios
muestran plara
os ccontenidos
ambiar a edsos
el
directorios. Haga clic en enlaces a archivos para mostrar o descargar esos archivos en su sistema local.
456
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
Armado con cierta comprensión de cómo funciona FTP, ahora está listo para instalar un servidor
FTP (paquete vsftpd) en su sistema Linux.
Instalación del servidor FTP vsftpd
La configuración del servidor FTP muy seguro requiere solo un paquete en Fedora, RHEL y otras
distribuciones de Linux: vsftpd. Suponiendo que tiene una conexión a su repositorio de software,
simplemente escriba lo siguiente como root para Fedora o RHEL para instalar vsftpd:
# yum instalar vsftpd
Si está utilizando Ubuntu (u otra distribución de Linux basada en el paquete Debian), escriba lo
siguiente para instalar vsftpd:
$ sudo aptget install vsftpd
Aquí hay algunos comandos que puede ejecutar después de instalar el paquete vsftpd para
familiarizarse con el contenido de ese paquete. Desde Fedora o RHEL, ejecute este comando para
obtener información general sobre el paquete:
# rpm qi vs ftpd
...
Empaquetador : Proyecto Fedora :
Proveedor Proyecto Fedora :
URL
Descripción
https://security.appspot.com/vsftpd.html : Daemon FTP muy
seguro
18
resumida: vsftpd es un demonio FTP muy seguro. Fue escrito completamente desde cero.
Si desea obtener más información sobre vsftpd, siga la URL que aparece en el sitio web
relacionado (https://security.appspot.com/vsftpd.html). Puede obtener documentación e información
adicional sobre las últimas revisiones de vsftpd.
Puede ver el contenido completo del paquete vsftpd ( rpm ql vsftpd), o puede ver solo los
archivos de documentación (qd) o de configuración (qc). Para ver los archivos de documentación
en el paquete vsftpd, use lo siguiente:
# rpm qd vsftpd /usr/
share/doc/vsftpd/EXAMPLE/INTERNET_SITE/README
...
/usr/share/doc/vsftpd/EXAMPLE/PER_IP_CONFIG/README
...
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_HOSTS/README /
usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/README
...
/usr/share/doc/vsftpd/FAQ
...
/usr/share/doc/vsftpd/vsftpd.xinetd /usr/share/man/
man5/vsftpd.conf.5.gz /usr/share/man/man8/vsftpd.8.gz
457
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
En la estructura de directorios /usr/share/doc/vsftpd/EXAMPLE, se incluyen archivos de configuración de muestra para
ayudarlo a configurar vsftpd de manera adecuada para un sitio de Internet, un sitio de varias direcciones IP y hosts virtuales.
El directorio principal /usr/share/doc/vsftpd contiene FAQ (preguntas frecuentes), consejos de instalación e información
sobre la versión.
Las páginas de manual pueden tener la información más útil cuando se dispone a configurar el servidor vsftpd. Escriba
man vsftpd.conf para leer sobre el archivo de configuración y man vsftpd para leer sobre el proceso daemon y cómo
administrarlo como un servicio systemd.
Para enumerar los archivos de configuración, escriba lo siguiente:
# rpm qc vsftpd /etc/
logrotate.d/vsftpd /etc/pam.d/
vsftpd /etc/vsftpd/ftpusers /
etc/vsftpd/user_list /etc/vsftpd/
vsftpd.conf
El archivo de configuración principal es /etc/vsftpd/vsftpd.conf (en RHEL y Fedora) o /etc/vsftpd.conf (en Ubuntu).
Los archivos ftpusers y la lista de usuarios (Fedora y RHEL, pero no Ubuntu) en el _
mismo
información
directorio
sobre
almacenan
las cuentas
de usuario que tienen acceso restringido al servidor. El archivo /etc/pam.d/vsftpd establece cómo se realiza la autenticación
en el servidor FTP. El archivo /etc/logrotate.d/vsftpd configura cómo se rotan los archivos de registro con el tiempo.
Ahora tiene vsftpd instalado y ha echado un vistazo rápido a su contenido. El siguiente paso es iniciar y probar el servicio
vsftpd.
Inicio del servicio vsftpd
No se requiere configuración para iniciar el servicio vsftpd si solo desea utilizar la configuración predeterminada. Si inicia
vsftpd tal como se entrega con Fedora, obtendrá lo siguiente:
■ El servicio vsftpd inicia el demonio vsftpd, que se ejecuta en segundo plano. ■ El puerto estándar en el que
escucha el demonio vsftpd es el puerto TCP 21. De forma predeterminada, los datos se transfieren al usuario,
después de establecer la conexión, en el puerto TCP 20. El puerto TCP 21 debe estar abierto en el cortafuegos
para permitir nuevas conexiones para acceder al servicio.
Tanto las conexiones IPv4 como las IPv6 están disponibles de forma predeterminada. Este procedimiento cambia
al servicio TCP IPv4. (Consulte la sección "Seguridad de su servidor FTP" más adelante en este capítulo para
obtener detalles sobre cómo abrir puertos, habilitar el seguimiento de conexión necesario para FTP pasivo y
configurar otras reglas de firewall relacionadas con FTP). ■ El demonio vsftpd lee vsftpd.conf para determinar
que caracteristicas tiene el ser
el vicio permite.
■ Las cuentas de usuario de Linux (excepto los usuarios administrativos) pueden acceder al servidor FTP. La cuenta
de usuario anónimo (no se requiere contraseña) se puede habilitar. (Si SELinux está en modo de aplicación, debe
configurar un valor booleano para permitir que los usuarios regulares inicien sesión en el servidor FTP. Consulte
la sección "Protección de su servidor FTP" para obtener más información).
458
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
■ El usuario anónimo solo tiene acceso al directorio /var/ftp y sus subdirectorios. Un usuario normal
comienza con su directorio de inicio como el directorio actual, pero puede acceder a cualquier
directorio al que el usuario pueda acceder a través de un inicio de sesión regular o una sesión SSH.
Las listas de usuarios en la lista /etc/vsftpd/ y los archivos /etc/vsftpd/ftpusers defi ne algunos
usuario _
y usuarios especiales que no tienen acceso al servidor FTP (root, bin, daemon y otros).
■ De forma predeterminada, el usuario anónimo puede descargar archivos del servidor pero no
subirlos Un usuario normal puede cargar o descargar archivos, según los permisos regulares de
Linux.
■ Los mensajes de registro que detallan las cargas o descargas de archivos se escriben en el
archivo /var/log/xferlogs. Esos mensajes de registro se almacenan en un formato xferlog estándar.
Si está listo para iniciar su servidor usando los valores predeterminados que se acaban de describir, los
siguientes ejemplos le muestran cómo hacerlo. Si desea cambiar algunas configuraciones adicionales
primero, vaya a la sección "Configuración de su servidor FTP", más adelante en este capítulo, finalice sus
configuraciones y luego regrese aquí para obtener instrucciones sobre cómo habilitar e iniciar su servidor.
1. Compruebe el servicio vsftpd. Antes de iniciar el servicio vsftpd, puede verificar si ya se está
ejecutando. En Fedora o Red Hat Enterprise Linux 7 u 8, haga lo siguiente:
# systemctl status vsftpd.service vsftpd.service
Vsftpd ftp daemon
Cargado: cargado (/usr/lib/systemd/system/vsftpd.
18
servicio; desactivado)
Activo: inactivo (muerto)
En Red Hat Enterprise Linux 6, necesita dos comandos para ver la misma información:
# servicio vsftpd status vsftpd está
detenido # chkconfig list vsftpd
vsftpd 0:apagado 1:apagado 2:apagado
3:apagado 4:apagado 5:apagado 6:apagado
En los ejemplos anteriores de Fedora y RHEL, los comandos service, chkconfig y systemctl
muestran el estado como detenido. También puede ver que está desactivado en Fedora y
RHEL 7 u 8 y desactivado en cada nivel de ejecución para RHEL 6. Desactivado (desactivado)
significa que el servicio no se activará automáticamente cuando inicie el sistema.
2. Para iniciar y habilitar vsftpd en Fedora o RHEL 7 u 8 (luego verifique el estado), escriba
la siguiente:
# systemctl iniciar vsftpd.servicio # systemctl
habilitar vsftpd.servicio
459
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
ln s '/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi
user.target.wants/vsftpd.
servicio'
# systemctl status vsftpd.service vsftpd.service
Vsftpd ftp daemon
Cargado: cargado (/usr/lib/systemd/system/vsftpd.
servicio;
valor preestablecido del proveedor habilitado: deshabilitado))
Activo: activo (en ejecución) desde el miércoles, 20190918
00:09:54 EDT; hace 22s
PID principal: 4229 (vsftpd)
Tareas: 1 (límite: 12232)
Memoria: 536.0K
CGroup: /system.slice/vsftpd.service └ 4229 /usr/sbin/
vsftpd /etc/vsftpd/vsftpd.conf
En Red Hat Enterprise Linux 6, inicie y active (habilite) vsftpd (luego verifique el estado), de la siguiente manera:
# inicio del servicio vsftpd
Iniciando vsftpd para vsftpd: [Aceptar] #
chkconfig vsftpd activado; chkconfig list vsftpd vsftpd 1: apagado 2: encendido 4:
encendido 0: apagado 3: encendido 5: encendido
6: apagado
3. Ahora, en cualquier sistema, puede verificar que el servicio se está ejecutando utilizando la red
comando de estadísticas:
# netstattupln | grep vs ftpd tcp 0
0 0.0.0.0:21 0.0.0.0:* ESCUCHAR 4229/vsftpd
Desde la salida de netstat, puede ver que el proceso vsftpd (ID de proceso de 4229) está
escuchando (ESCUCHAR) en todas las direcciones IP para las conexiones entrantes en el puerto 21
(0.0.0.0:21) para el protocolo TCP (tcp).
4. Una forma rápida de comprobar que vsftpd funciona es colocar un archivo en el directorio /var/ftp e
intentar abrirlo desde su navegador web en el host local:
# echo "Hola desde su servidor FTP" > /var/ftp/hello.txt
Desde un navegador web en el sistema local, escriba lo siguiente en el cuadro de ubicación de
Firefox u otro navegador:
ftp://localhost/hola.txt
Si aparece el texto Hola desde su servidor FTP en el navegador web, el servidor vsftpd está funcionando y es
accesible desde su sistema local. Luego, intente esto nuevamente desde un navegador web en otro sistema,
reemplazando localhost con la dirección IP de su host o completamente
460
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
nombre de host calificado. Si eso funciona, el servidor vsftpd es de acceso público. Si no es así, lo
cual es muy posible que no sea así, consulte la siguiente sección, "Protección de su servidor FTP". Esa
sección le dice cómo abrir cortafuegos y modificar otras características de seguridad para permitir el
acceso y proteger su servidor FTP.
Asegurar su servidor FTP
Aunque es fácil iniciar un servidor FTP vsftpd, eso no significa que sea inmediatamente accesible.
Si tiene un cortafuegos en su sistema Linux, probablemente esté bloqueando el acceso a todos los
servicios en su sistema excepto aquellos que ha permitido explícitamente.
Si decide que la configuración predeterminada de vsftpd funciona para usted como se describe en
la sección anterior, puede establecer que funcione permitiendo el acceso apropiado y brindando
seguridad para su servicio vsftpd. Para ayudarlo a proteger su servidor vsftpd, las siguientes secciones
describen cómo configurar su cortafuegos y SELinux (booleanos y contextos de archivos).
Apertura de su cortafuegos para FTP Si tiene un
cortafuegos implementado en su sistema, necesita agregar reglas de cortafuegos que permitan
solicitudes entrantes a su sitio FTP y permitan que los paquetes regresen a su sistema en conexiones
establecidas. Los cortafuegos se implementan mediante las reglas de iptables y se administran con
el servicio iptables o el servicio firewalld (consulte el Capítulo 25, “Seguridad para
de Linux
obtener
en udna
etalles
red”,
18
sobre los servicios de cortafuegos).
En Fedora y Red Hat Enterprise Linux, las reglas del firewall se almacenaban tradicionalmente en el
archivo /etc/sysconfig/iptables y el servicio subyacente era iptables (RHEL 6) o iptables.service (Fedora).
Los módulos se cargan en su cortafuegos desde el archivo /etc/sys config/iptablesconfig. En RHEL 7
y Fedora 21 o posterior, el nuevo servicio firewalld administra esas reglas y las reglas se almacenan en
el directorio /etc/firewalld/zones.
NOTA
Es mejor trabajar en su cortafuegos directamente desde una consola del sistema, si es posible, en lugar de un inicio de
sesión remoto (como ssh) porque un pequeño error puede bloquearlo inmediatamente de su servidor. Después de eso, debe
ir a la consola para volver al servidor y solucionar el problema. Debe agregar algunas cosas a su firewall para permitir el
acceso a su servidor FTP sin abrir el acceso a otros servicios. Primero, debe permitir que su sistema acepte solicitudes en el
puerto TCP 21; entonces debe asegurarse de que el módulo de seguimiento de conexión esté cargado.
En RHEL 7 y Fedora 20 o posterior, puede usar la ventana Configuración de firewall para habilitar su
firewall y abrir el acceso a su servicio FTP. Instale el paquete firewallconfig y ejecute firewallconfig
para iniciar la ventana de Configuración de Firewall, como se muestra en la Figura 18.1 .
461
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
FIGURA 18.1
Abra el acceso a su servicio FTP desde la ventana Configuración del cortafuegos.
A continuación, para abrir el acceso de forma permanente a su servicio FTP, haga clic en el cuadro
Configuración y seleccione Permanente. Luego seleccione la casilla de verificación junto a ftp en la pestaña
Servicios. Esto abre automáticamente el puerto TCP 21 (FTP) en su cortafuegos y carga los módulos del núcleo
necesarios para permitir el acceso al servicio FTP pasivo. Seleccione Opciones Recargar Firewalld para aplicar la
regla de firewall de forma permanente.
Para RHEL 6 y sistemas anteriores, agregue reglas directamente al archivo /etc/sysconfig/iptables.
Si está utilizando un firewall predeterminado, las reglas al principio abren el acceso a las solicitudes de cualquier
servicio proveniente del host local y permiten la entrada de paquetes que están asociados o relacionados con las
conexiones establecidas. En el medio hay reglas que abren puertos para solicitudes de servicio que ya ha permitido,
como el servicio de shell seguro (sshd en el puerto TCP 22). Al final de las reglas, una regla final generalmente
descarta o rechaza cualquier solicitud que no se haya permitido explícitamente.
Para permitir el acceso público a alguien que solicita su servidor FTP, desea permitir nuevas solicitudes al
puerto TCP 21. Por lo general, desea agregar la regla en algún lugar antes de la regla FINAL DROP o REJECT. El
siguiente resultado muestra contenido parcial del archivo /etc/sysconfig/iptables con la regla que permite el acceso a
su servidor FTP en negrita:
462
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
*filtrar
:ENTRADA ACEPTAR [0:0]
:ADELANTE ACEPTAR [0:0]
: SALIDA ACEPTAR [0:0]
A ENTRADA m estado estado ESTABLECIDO, RELACIONADO j ACEPTAR
A ENTRADA i lo j ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 22 j ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 21 j ACEPTAR
...
A INPUT j REJECT rejectwith icmphostprohibited
COMPROMETERSE
Este ejemplo muestra que, para la tabla de filtros, el cortafuegos acepta paquetes de conexiones establecidas,
conexiones de hosts locales y cualquier solicitud nueva en el puerto TCP 22 (servicio SSH). La línea que
acabamos de agregar (dport 21) permite aceptar cualquier paquete en nuevas conexiones al puerto TCP 21.
NOTA
Es importante tener la línea ESTABLECIDO, RELACIONADO en las reglas del cortafuegos de iptables. Sin esa
línea, los usuarios podrían conectarse a sus servicios SSH (puerto 22) y FTP (puerto 21), pero no podrían comunicarse
después de eso. Por lo tanto, un usuario podría autenticarse pero no poder transferir datos.
Lo siguiente que debe hacer en RHEL 6 y sistemas anteriores es configurar el módulo de seguimiento de
18
conexión FTP para que se cargue cada vez que se inicie el cortafuegos. Edite esta línea al comienzo del
archivo /etc/sysconfig/iptablesconfig para que aparezca de la siguiente manera:
IPTABLES_MODULES="nf_conntrack_ftp"
En este punto, puede reiniciar su cortafuegos (teniendo en cuenta que un error podría bloquearlo si está
conectado de forma remota). Use uno de los siguientes dos comandos para reiniciar su firewall, dependiendo
de si su sistema está usando el servicio iptables más antiguo o el servicio firewalld más nuevo:
# servicio de reinicio de iptables
o
# systemctl reiniciar firewalld.servicio
Vuelva a intentar acceder a su servidor FTP desde un sistema remoto (utilizando un navegador web o
algún otro cliente FTP).
Configuración de SELinux para su servidor FTP Si SELinux está
configurado como permisivo o deshabilitado, no bloquea el acceso al servicio vsftpd de ninguna manera. Sin
embargo, si SELinux está en modo de aplicación, algunos problemas de SELinux podrían hacer que su
servidor vsftpd no se comporte como le gustaría. Use los siguientes comandos para verificar el estado de
SELinux en su sistema:
463
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
# hacer cumplir
Hacer cumplir
# grep ^SELINUX= /etc/sysconfig/selinux
SELINUX=hacer cumplir
El comando getenforce muestra cómo está configurado actualmente SELinux. (Aquí, está en modo de
ejecución.) La variable SELINUX= en /etc/sysconfig/selinux muestra cómo se configura SELinux cuando se
activa el sistema. Si está en modo de aplicación, como aquí, consulte la página del manual de ftpd selinux _
para obtener información sobre la configuración de SELinux que puede afectar el funcionamiento de su servicio
vsftpd. Instale el paquete selinuxpolicydoc para obtener la página de manual de ftpd selinux, así como las _
páginas de manual para otros servicios con políticas de SELinux.
Estos son algunos ejemplos de contextos de archivo que se deben configurar para que SELinux permita
que vsftpd acceda a archivos y directorios:
■ Para compartir contenido para que pueda descargarse a clientes FTP, ese contenido debe estar marcado
con un contexto de archivo public_content_t. Los archivos creados en el directorio /var/ftp o sus
subdirectorios heredan automáticamente el contexto del archivo public_content_t. (Asegúrese de crear
contenido nuevo o copiar el contenido existente en los directorios /var/ftp. Es posible que mover los
archivos allí no cambie el contexto del archivo correctamente). ■ Para permitir que usuarios anónimos
carguen archivos, el contexto del archivo en el directorio al que carga debe establecerse en
public_content_rw_t. (Otros permisos, SELinux Booleans y configuraciones de vsftpd.conf deben estar
en su lugar para que esto funcione también).
Si tiene archivos en la estructura de directorios /var/ftp que tienen contextos de archivos incorrectos (lo que
puede ocurrir si mueve archivos allí desde otros directorios en lugar de copiarlos), puede cambiar o restaurar el
contexto de archivos en esos directorios. archivos para que puedan ser compartidos. Por ejemplo, para cambiar
recursivamente el contexto del archivo del directorio /var/ftp/pub/stuff para que el contenido pueda leerse desde
el servidor FTP a través de SELinux, ingrese lo siguiente:
# semanage fcontext a t public_content_t "/var/ftp/pub/stuff(/.*)?" # restaurarcon F R v /var/ftp/
pub/cosas
Si desea permitir que los usuarios también escriban en un directorio y lean de él, deberá asignar el público
_ contenido
al que desea permitir las cargas. Este ejemplo _ rw q_ue
le dice a SELinux t
pfile
ermita
context
cargar
al dairectorio
rchivos e
pn
ara
el directorio /
var/ftp/pub/uploads:
# semanage fcontext a t public_content_rw_t\ "/var/ftp/pub/
uploads(/.*)?" # restaurarcon F R v /var/ftp/pub/uploads
Las características del servidor FTP que SELinux considera inseguras tienen valores booleanos que le
permiten permitir o rechazar esas características. Aquí hay unos ejemplos:
■ Para que SELinux permita a los usuarios anónimos leer y escribir archivos y directorios, escriba (RHEL
necesita activar el permiso _ _ luego _ 6) o ftpd _ luego _
escritura ftpd (RHEL 7 o posterior) Booleano:
# setsebool P ftpd_anon_write en
464
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
■ Para poder montar sistemas de archivos compartidos NFS o CIFS (Windows) remotos y
compartirlos desde su servidor vsftpd, debe activar los dos valores booleanos siguientes,
respectivamente:
# setsebool P allow_ftpd_use_nfs en # setsebool P
allow_ftpd_use_cifs en
Si alguna vez descubre que no puede acceder a archivos o directorios desde su servidor FTP que cree que
deberían estar accesibles, intente apagar SELinux temporalmente:
# setpenforce 0
Si puede acceder a los archivos o directorios con SELinux ahora en modo permisivo, vuelva a poner el
sistema en modo obligatorio (setenforce 1). Ahora sabe que tiene que volver a la configuración de SELinux y
averiguar qué impide el acceso. (Consulte el Capítulo 24, "Mejora de la seguridad de Linux con SELinux", ,
para obtener más información sobre SELinux).
Relación de los permisos de archivo de Linux con vsftpd El servidor
vsftpd se basa en los permisos de archivo estándar de Linux para permitir o denegar el acceso a archivos y
directorios. Como era de esperar, para que un usuario anónimo vea o descargue un archivo, al menos el permiso
de lectura debe estar abierto para otro (r). Para acceder a un directorio, al menos el permiso de ejecución
debe estar activado para otros (x).
Para las cuentas de usuario regulares, la regla general es que si un usuario puede acceder a un archivo desde el
shell, ese usuario puede acceder al mismo archivo desde un servidor FTP. Por lo tanto, por lo general, los usuarios
18
regulares al menos deberían poder obtener (descargar) y colocar (cargar) archivos hacia y desde sus propios
directorios de inicio, respectivamente. Una vez que los permisos y otras disposiciones de seguridad estén vigentes
para su servidor FTP, es posible que desee considerar otros ajustes de configuración para su servidor FTP.
Configuración de su servidor FTP
La mayor parte de la configuración del servicio vsftpd se realiza en el archivo /etc/vsftpd/vsftpd .conf. En el
directorio /usr/share/doc/vsftpd se incluyen ejemplos de vsftpd.conf para diferentes tipos de sitios. Dependiendo
de cómo desee utilizar su sitio FTP, las siguientes secciones analizan algunas formas de configurar su servidor
FTP.
Recuerde reiniciar el servicio vsftpd después de realizar cambios en la configuración.
Configuración del acceso de usuarios
El servidor vsftpd viene con todos los usuarios locales de Linux (aquellos enumerados en el archivo /etc/passwd)
configurados para acceder al servidor y el usuario anónimo prevenido. Esto se basa en la siguiente configuración
de vsftpd.conf:
anonymous_enable=NO
local_enable=SÍ
465
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Algunas empresas de servidores web permiten que los usuarios usen FTP para cargar el contenido para sus
propios servidores web. En algunos casos, los usuarios tienen cuentas solo de FTP, lo que significa que no pueden
iniciar sesión en un shell, pero pueden iniciar sesión a través de FTP para administrar su contenido. La creación de una
cuenta de usuario que no tenga un shell predeterminado (en realidad, /sbin/nologin) es la forma en que puede evitar
que un usuario inicie sesión en un shell y aún permitir el acceso FTP. Por ejemplo, la entrada /etc/passwd para la factura
de la cuenta de usuario de solo FTP podría tener un aspecto similar al siguiente:
factura:x:1000:1000:Bill Jones:/home/factura:/sbin/nologin
Con la cuenta de usuario configurada con /sbin/nologin como shell predeterminado, se deniega cualquier intento
de iniciar sesión desde una consola o mediante ssh como la factura del usuario. Sin embargo, siempre que Bill
tenga una contraseña y el acceso de la cuenta local al servidor FTP esté habilitado, Bill debería poder iniciar
sesión en el servidor FTP a través de un cliente FTP.
No todos los usuarios con una cuenta en el sistema Linux tienen acceso al servidor FTP. La configuración
userlist enable=YES en _ vsftpd.conf
enumeradas
indica
en /etc/vsftpd/user
que se deniegue ie strative
l acceso
users
al servidor
root, bin,
FTP
daemon,
a todas aldm,
as cluentas
p y otros.
archivo
Puede agregar a esa lista otros usuarios a los que le gustaría n_egar de lista. Esa lista incluye admin
el acceso.
Si cambia la lista de usuarios, el habilitar
de alista
_archivo NO,
el
se cu suario en una
onvierte _lista de solo aquellos usuarios que tienen
acceso al servidor. En otras palabras, configurar userlist enable=NO, eliminar todos los nombres de usuario
_
de los nombres de usuario chris, joe y mary en ese archivo hace que
_ earchivo
l servidor
plista
de ermita
y aq ue solo eesos
gregando tres
l usuario
usuarios inicien sesión en el servidor.
No importa cómo el valor de la lista de usuarios _ habilitado, el archivo /etc/vsftpd/ftpusers
siempre incluye a los usuarios a los que se les niega el acceso al servidor. Al igual que el archivo _ permitir
de lista de usuarios, el archivo ftpusers incluye una lista de usuarios administrativos. Puede agregar más
usuarios a ese archivo si desea que se les niegue el acceso FTP.
Una forma de limitar el acceso a los usuarios con cuentas de usuario regulares en su sistema es usar la
configuración chroot. Aquí hay ejemplos de algunas configuraciones chroot:
chroot_local_user=SÍ
chroot_list_enable=SÍ
chroot_list_file=/etc/vsftpd/chroot_list
Con la configuración que se acaba de mostrar sin comentar, puede crear una lista de usuarios locales y
agregarlos al archivo de lista /etc/vsftpd/chroot.
_Después
usuario dne
o qpue
uno
ir dae
odría esos usuarios
lugares iniciara
en el sistema sesión,
que ese fuera
estaban
'
de la estructura del directorio de inicio de ese usuario. s
Si las cargas a su servidor FTP están permitidas, los directorios que un usuario intente cargar deben poder ser
escritos por ese usuario. Sin embargo, las cargas se pueden almacenar con un nombre de usuario que no sea
el del usuario que cargó el archivo. Esta es una de las características que se analizan a continuación, en la sección
"Permitir la carga".
466
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
Permitir la carga Para permitir
cualquier forma de escritura en el servidor vsftpd, debe tener un conjunto de escritura en _ habilitar = SÍ
el archivo vsftpd.conf (que es, por defecto). Por eso, si las cuentas locales están habilitadas, los usuarios
pueden iniciar sesión e inmediatamente comenzar a cargar archivos en sus propios directorios de inicio. Sin
embargo, a los usuarios anónimos se les niega la posibilidad de cargar archivos de forma predeterminada.
Para permitir cargas anónimas con vsftpd, debe tener la primera opción en el siguiente código de
ejemplo, y es posible que también desee la segunda línea de código (ambas pueden habilitarse
descomentándolas del archivo vsftpd.conf). El primero permite que usuarios anónimos carguen
archivos; el segundo les permite crear directorios:
anon_upload_enable=SÍ
anon_mkdir_write_enable=SÍ
El siguiente paso es crear un directorio donde los usuarios anónimos puedan escribir. Un usuario
anónimo puede escribir en cualquier directorio bajo el directorio /var/ftp que tenga permisos de escritura
para el usuario ftp, el grupo ftp u otro. Una cosa común es crear un directorio de cargas con permiso
abierto para escribir. Los siguientes son ejemplos de comandos para ejecutar en el servidor:
# mkdir /var/ftp/uploads # chown
ftp:ftp /var/ftp/uploads # chmod 775 /var/ftp/uploads
Siempre que el cortafuegos esté abierto y los valores booleanos de SELinux estén configurados correctamente,
' 18
un usuario anónimo puede usar un cd para acceder al directorio de carga ys
csolocar
istema local
un en ldas
archivo cargas
esde
el
directorio del usuario. En el servidor, el archivo sería propiedad del usuario ftp y del grupo ftp. Los permisos
establecidos en el directorio (775) le permitirían ver los archivos que se cargaron pero no cambiarlos ni
sobrescribirlos.
Una razón para permitir FTP anónimo y luego habilitarlo para cargas anónimas es permitir que
personas que no conoces
pueda
suelten
encontrar
archivos
el esn
ervidor
tu carpeta
puede
de
ecscribir
argas.
en
Debido
este dairectorio,
que cualquiera
es necesario
que
implementar alguna forma de seguridad. Desea evitar que un usuario anónimo vea archivos cargados
por otros usuarios, tome archivos o elimine archivos cargados por otros usuarios de FTP anónimos.
Una forma de seguridad es la característica chown de FTP.
Al establecer los siguientes dos valores, puede permitir cargas anónimas. El resultado de esta
configuración es que cuando un usuario anónimo carga un archivo, ese archivo se asigna
inmediatamente a la propiedad de un usuario diferente. El siguiente es un ejemplo de algunas
configuraciones de chown que podría poner en su archivo vsftpd.conf para usar con su directorio de carga anónimo:
chown_uploads=SÍ
chown_username=joe
Si un usuario anónimo cargara un archivo después de reiniciar vsftpd con esta configuración, el archivo
cargado sería propiedad del usuario joe y del grupo ftp. Los permisos serían de lectura/escritura para el
propietario y nada para nadie más (rw).
467
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Hasta ahora, ha visto opciones de configuración para funciones individuales en su servidor vsftpd.
Algunos conjuntos de variables de vsftp.conf pueden funcionar juntas de formas apropiadas para
ciertos tipos de sitios FTP. La siguiente sección contiene uno de estos ejemplos, representado por un
archivo de configuración vsftpd.conf de muestra que viene con el paquete vsftpd. Ese archivo se puede
copiar desde un directorio de archivos de muestra al archivo /etc/vsftpd/vsftpd.conf para usarlo en un
servidor FTP que está disponible en Internet.
Configuración de vsftpd para Internet Para compartir
archivos desde su servidor FTP de forma segura a Internet, puede bloquear su servidor limitándolo para
que solo permita descargas y solo de usuarios anónimos. Para comenzar con una configuración diseñada
para compartir archivos vsftpd de forma segura a través de Internet, haga una copia de seguridad de su
archivo /etc/vsftpd/vsftpd.conf actual y copie este archivo para sobrescribir su vsftpd.conf:
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/vsftpd.conf
Los siguientes párrafos describen el contenido de ese vsftpd.conf. La configuración en la primera sección
establece los derechos de acceso para el servidor:
# Derechos de acceso
anonymous_enable=SÍ
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
Activar la habilitación anónima
_ (NO)
habilitar
garantiza
(SÍ) y qaue
pagar
nadie
local
pueda iniciar sesión en
_ el servidor FTP utilizando
una cuenta de usuario normal de Linux. Todo el mundo debe entrar a través de la cuenta anónima. Nadie
puede cargar archivos (escribir Entonces, el usuario anónimo no puede cargar archivos _( anon directorios
activar=NO).
_ esubir
(anon enable=NO), o de otra manera escribir en el servidor (anon nable=NO).
_ habilitar=NO),
Aquí están las ccrear
onfiguraciones
de seguridad: otra _ mkdir _ escribir _
_ _ escribir _
# Seguridad
anon_world_readable_only=SÍ
connect_from_port_20=SÍ hide_ids=SÍ
pasv_min_port=50000 pasv_max_port=60000
Debido a que el demonio vsftpd puede leer archivos asignados al usuario y grupo ftp, configurar
luego _ mundo _ legible _ only=YES asegura que los usuarios anónimos puedan ver archivos donde
el bit de permiso de lectura está activado para otros (r), pero no para escribir archivos. la conexión
_ de _ port _ 20=La configuración SÍ otorga al demonio vsftpd un poco más de permiso
para enviar datos de la forma en que un cliente podría solicitarlo al permitir comunicaciones de datos de estilo PORT.
Usando hide _ ids=YES oculta los permisos reales establecidos en los archivos, por lo que para el usuario que accede al
FTP site, todo parece ser propiedad del usuario ftp. Las dos configuraciones pasv restringen el rango de
puertos que se pueden usar con FTP pasivo (donde el servidor elige un número de puerto más alto para
enviar datos) entre 50000 y 60000.
468
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
La siguiente sección contiene características del servidor vsftpd:
# Características
xferlog_enable=SÍ
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=SÍ
Con el archivo _ enable=YES, todas las transferencias de archivos hacia y desde el servidor se registran
xferlog /var/log/xferlog. La configuración de _ recurse _ en enable=NO evita que los usuarios se repitan
ls enumera de forma selectiva el contenido de un directorio FTP (en otras palabras, evita el tipo de listado
que podría obtener con el comando ls R) porque en un sitio grande, eso podría agotar los recursos.
Deshabilitar las descargas ASCII obliga a que todas las descargas estén en modo binario (lo que evita que los
archivos se traduzcan a ASCII, lo cual no es apropiado para archivos binarios). La configuración enable=YES
asíncrono _ abortar _ garantiza que algunos clientes FTP, que podrían bloquearse
al abortar una transferencia, no se colgará.
Los siguientes ajustes tienen un impacto en el rendimiento:
# Actuación
one_process_model=SÍ
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60 connect_timeout=60
anon_max_rate=50000
18
Con uno _ proceso _ model=YES configurado, el rendimiento puede mejorar debido a la sesión
lanza un proceso por conexión. Reducir los 300 segundos _ vsftpd _ tiempo de espera desde el
predeterminados de inactividad a 120 segundos hace que los clientes FTP que estén inactivos más de 2 minutos
se desconecten. Por lo tanto, se dedica menos tiempo a administrar sesiones FTP que ya no están en uso.
_ conexión
Si una transferencia de datos se detiene durante más de segundos _espera de datos (300 segundos
de tiempo de
aquí), se interrumpe la conexión con el cliente.
El accept _ la configuración de tiempo de espera de 60 segundos permite 1 minuto para que una conexión PASV sea el
aceptado por el cliente remoto. La conexión para _ tiempo de espera establece cuánto tiempo tiene un cliente remoto
responder a una solicitud para establecer una conexión de datos de estilo PORT. Limitar la tasa de
transferencia a 50000 (bytes por segundo) con anonimato
del servidor
_ máximo al lpimitar
_ la tasa la
uede m cantidad
ejorar de ancho
gd
el rendimiento e
eneral
banda que puede consumir cada cliente.
Uso de clientes FTP para conectarse a su servidor
Muchos programas cliente vienen con Linux, que puede usar para conectarse a su servidor FTP.
Si simplemente desea realizar una descarga anónima de algunos archivos desde un servidor FTP, su
navegador web Firefox proporciona una interfaz sencilla para hacerlo. Para interacciones más complejas
entre su cliente FTP y el servidor, puede usar clientes FTP de línea de comandos. Las siguientes secciones
describen algunas de estas herramientas.
469
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Acceder a un servidor FTP desde Firefox El navegador web
Firefox proporciona una forma rápida y fácil de probar el acceso a su servidor FTP o acceder a cualquier servidor
FTP público. En su propio sistema, escriba ftp://localhost en el cuadro de ubicación. Se le pedirá que inicie
sesión, lo que puede hacer como usuario normal o como usuario anónimo si se puede acceder a su servidor a
través de FTP anónimo. Como usuario anónimo, debería ver algo similar al ejemplo que se muestra en la Figura
18.2 .
FIGURA 18.2
Acceder a un servidor FTP desde Firefox
Para iniciar sesión en un servidor FTP como un usuario particular de Firefox, puede preceder el nombre de host
con una notación de nombre de usuario: contraseña @, como se muestra en el siguiente ejemplo:
ftp://chris:MicontraseñaWd5@localhost
Si proporciona el nombre de usuario y la contraseña correctos, debería ver inmediatamente el contenido de su
directorio de inicio. Haga clic en una carpeta para abrirla. Haga clic en un archivo para descargar o ver el archivo.
Acceder a un servidor FTP con el comando lftp
Para probar su servidor FTP desde la línea de comandos, puede usar el comando lftp. Para instalar el comando
lftp en Fedora o RHEL, ingrese lo siguiente desde la línea de comando:
# yum instalar lftp
Si usa el comando lftp con solo el nombre del servidor FTP al que intenta acceder, el comando intenta
conectarse al servidor FTP como usuario anónimo. Al agregar el nombre de usuario u, puede ingresar el
'
servidor FTP del usuario como el usuario con el que is
nició
contraseña
sesión. cuando se le solicite y obtener acceso a la
470
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
Una vez que haya agregado su información de usuario y contraseña, obtendrá un indicador de lftp, listo para
que comience a escribir comandos. La conexión se establece con el servidor cuando escribe su primer comando.
Puede usar los comandos para moverse por el servidor FTP y luego usar los comandos get y put para descargar
y cargar archivos.
El siguiente ejemplo muestra cómo usar los comandos como se acaba de describir. Asume que el servidor FTP
(y las medidas de seguridad asociadas) se han configurado para permitir que los usuarios locales se conecten
y lean y escriban archivos:
# lftp u chris servidor local
Contraseña:
********
lftp chris@localhost:~> pwd ftp://chris@localhost/
%2Fhome/chris lftp chris@localhost:~> cd cosas/estado/ lftp
chris@localhost:~/cosas/estado> ls
18
Fotos enviado
Descargas Público encuesta20141023.txt
lftp chris@localhost:~/cosas/estado> salir
Después de proporcionar el nombre de usuario (u chris), lftp solicita la contraseña de usuario de Linux de chris.
Escribir pwd muestra que chris está conectado al host local y que /home/chris es el directorio actual. Tal como
lo haría desde un shell de línea de comandos normal de Linux, puede usar cd para cambiar a otro directorio y ls
para enumerar el contenido de ese directorio.
Para que el sistema cliente interprete los comandos que ejecute, simplemente coloque un signo de exclamación
(!) delante de un comando. Por ejemplo, ejecutar !pwd muestra que el directorio actual en el sistema que inició el
lftp es /root. Es bueno saber esto porque si obtiene un archivo del servidor sin especificar su destino, va al
directorio actual del cliente (en este caso, /root). Otros comandos que puede ejecutar para que sean interpretados
por el
sistema cliente incluyen !cd (para cambiar directorios) y !ls (para listar archivos).
471
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Suponiendo que tiene permiso de lectura para un archivo en el servidor y permiso de escritura
del directorio actual en el sistema de inicio, puede usar el comando get para descargar un
archivo del servidor (obtener encuesta20141023.txt). Si tiene permiso de escritura y carga en
el directorio actual del servidor, puede usar put para copiar un archivo en el servidor (put /etc/
hosts).
Ejecutar un comando ls muestra que el archivo /etc/hosts se cargó en el servidor.
Ejecutar el comando !ls le permite ver que el archivo Survey20141023.txt se descargó del
servidor al sistema de inicio.
Uso del cliente gFTP Muchos
otros clientes FTP también están disponibles con Linux. Otro cliente FTP que podrías probar
es gFTP. El cliente gFTP proporciona una interfaz que le permite ver tanto el lado local como
el remoto de su sesión FTP. Para instalar gFTP en Fedora, ejecute el siguiente comando para
instalar el paquete gftp:
# yum instalar gftp
Para iniciar gFTP, inícielo desde el menú de aplicaciones o ejecute gftp & desde el shell. Para
usarlo, escriba la URL del servidor FTP al que desea conectarse, ingrese el nombre de
usuario que desea usar (como anónimo) y presione Entrar. La Figura 18.3 muestra un ejemplo
del uso de gFTP para conectarse al sitio gnome.org: ftp.gnome.org.
FIGURA 18.3
El cliente FTP gFTP le permite ver ambos lados de una sesión FTP.
472
Machine Translated by Google
Capítulo 18: Configuración de un servidor FTP
Para atravesar el sitio FTP desde gFTP, simplemente haga doble clic en las carpetas (tal como lo haría desde una
ventana del administrador de archivos). Las rutas completas al directorio local (a la izquierda) y al directorio remoto (a la
derecha) se muestran arriba de las listas de archivos y carpetas a continuación.
Para transferir un archivo desde el lado remoto al lado local, seleccione el archivo que desee desde la derecha y haga
clic en la flecha en el medio de la pantalla que apunta hacia la izquierda. Mire el progreso de la transferencia de archivos
desde los mensajes en la parte inferior de la pantalla. Cuando se completa la transferencia, el archivo aparece en el panel
izquierdo.
Puede marcar la información de la dirección que necesita para conectarse a un sitio FTP. Esa dirección se agrega a un
conjunto de marcadores ya almacenados en el menú Marcadores. Puede seleccionar sitios de la lista para probar el gFTP.
La mayoría de los sitios son para distribuciones de Linux y otros sitios de software de código abierto.
Resumen
Configurar un servidor FTP es una manera fácil de compartir archivos a través de una red TCP. El demonio FTP muy
seguro (paquete vsftpd) está disponible para Fedora, Red Hat Enterprise Linux, Ubuntu y otros sistemas Linux.
Un servidor vsftpd predeterminado permite que los usuarios anónimos descarguen archivos del servidor y que los
usuarios regulares de Linux carguen o descarguen archivos (siempre que se apliquen las configuraciones de seguridad
correctas). Moverse por un servidor FTP es similar a moverse por un sistema de archivos Linux.
Se mueve hacia arriba y hacia abajo en la estructura de directorios para encontrar el contenido que desea. 18
Hay clientes FTP gráficos y basados en texto. Un popular cliente basado en texto para Linux es lftp. En cuanto a los
clientes FTP gráficos, puede utilizar un navegador web normal, como Firefox, o clientes FTP dedicados, como gFTP.
Los servidores FTP no son la única forma de compartir archivos a través de una red desde Linux. El servicio Samba
proporciona una forma de compartir archivos a través de una red para que el directorio compartido de Linux parezca un
, uarchivos
directorio compartido de un sistema Windows. El Capítulo 19, "Configuración de n servidor
de
dWe u
indows
so compartido
(Samba),"
de
describe cómo utilizar Samba para ofrecer el uso compartido de archivos al estilo de Windows.
Ejercicios
Los ejercicios de esta sección describen tareas relacionadas con la configuración de un servidor FTP en RHEL o Fedora
y la conexión a ese servidor mediante un cliente FTP. Si está atascado, las soluciones a las tareas se muestran en el
Apéndice B. Tenga en cuenta que las soluciones que se muestran en el Apéndice B suelen ser solo una de las múltiples
formas de completar una tarea.
No haga estos ejercicios en un sistema Linux que ejecute un servidor FTP público porque es casi seguro que interferirán
con ese servidor.
1. Determine qué paquete proporciona el servicio Daemon FTP muy seguro.
2. Instale el paquete Very Secure FTP Daemon en su sistema y busque los archivos de configuración en ese
paquete.
473
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
3. Habilite el FTP anónimo y deshabilite el inicio de sesión de usuario local para el servicio Daemon
FTP muy seguro.
4. Inicie el servicio Very Secure FTP Daemon y configúrelo para que se inicie cuando se inicie el sistema.
5. En el sistema que ejecuta su servidor FTP, cree un archivo llamado prueba en el directorio FTP anónimo que
contenga las palabras "Bienvenido a su servidor vsftpd".
6. Desde un navegador web en el sistema que ejecuta su servidor FTP, abra el archivo de prueba desde
el directorio de inicio de FTP anónimo. Asegúrese de que puede ver el contenido de ese archivo.
7. Desde un navegador web fuera del sistema que ejecuta el servidor FTP, intente acceder al archivo de
prueba en el directorio de inicio de FTP anónimo. Si no puede acceder al archivo, verifique que su firewall,
SELinux y contenedores TCP estén configurados para permitir el acceso a ese archivo.
8. Configure su servidor vsftpd para permitir la carga de archivos por parte de usuarios anónimos a una dirección
tory nombrado en.
9. Instale el cliente FTP lftp (si no tiene un segundo sistema Linux, instale lftp en el mismo host que ejecuta el
servidor FTP). Si no puede cargar archivos en el directorio de entrada, verifique que su firewall, SELinux y
contenedores TCP estén configurados para permitir el acceso a ese archivo.
10. Usando cualquier cliente FTP que elija, visite el directorio /pub/debianmeetings en el sitio ftp.gnome.org y
enumere el contenido de ese directorio.
474
Machine Translated by Google
CAPÍTULO S
Configuración de un teléfono con Windows
Servidor compartido (Samba)
EN ESTE CAPÍTULO
Obtener e instalar Samba
Uso de las características de seguridad de Samba
Edición del archivo de configuración smb.conf
Acceso a Samba desde clientes Linux y Windows
Usando Samba en la empresa
e impresoras entre sistemas Windows, así como autenticar usuarios y restringir hosts. Samba ofrece
Samba
es el proyecto
varias formas qdue
e ciompartir
mplementa versiones
archivos de csódigo
entre abierto
istemas de protocolos
Windows, Linux yu
tilizados
MacOS pqara
ue csompartir
on bien acrchivos
onocidas
y están fácilmente disponibles para los usuarios de esos sistemas.
Este capítulo lo guía a través del proceso de instalación y configuración de un servidor Samba. Describe las
funciones de seguridad que debe conocer para compartir sus recursos de archivos e impresoras y describe
cómo acceder a esos recursos desde los sistemas Linux y Windows.
Entendiendo Samba
Samba (https://samba.org) es un conjunto de programas que permite que Linux, UNIX y otros sistemas interoperen con los
protocolos de uso compartido de archivos e impresoras de Microsoft Windows. Windows, MacOS y otros sistemas cliente
pueden acceder a los servidores Samba para compartir archivos e impresoras de la misma manera que lo harían desde los
servidores de archivos e impresión de Windows.
Con Samba, puede utilizar redes TCP/IP estándar para comunicarse con los clientes. Para el servicio de nombres,
Samba admite nombres de host TCP/IP regulares, así como nombres NetBIOS. Por esa razón, Samba no requiere el
protocolo NetBEUI (Microsoft Raw NetBIOS frame). El uso compartido de archivos se realiza mediante el protocolo
Bloque de mensajes del servidor (SMB), que a veces se denomina Sistema de archivos de Internet común (CIFS).
El proyecto Samba ha hecho todo lo posible para que su software sea seguro y robusto. De hecho, muchas personas prefieren
usar servidores Samba en lugar de servidores de archivos de Windows debido a la seguridad adicional inherente a la ejecución
de servicios de uso compartido de archivos al estilo de Windows en Linux u otros sistemas operativos similares a UNIX.
475
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Sin embargo, más allá de todo el galimatías técnico, el resultado final es que Samba facilita el intercambio de
archivos e impresoras entre servidores Linux y sistemas de escritorio Windows.
Para el servidor, solo se necesitan unos pocos archivos de configuración y herramientas para administrar
Samba. Para los clientes, los recursos compartidos simplemente aparecen en la selección de Red en la
aplicación Explorador de archivos (anteriormente Explorador de Windows) o en el Entorno de red en sistemas
Windows más antiguos.
Para configurar el servicio Samba, edite directamente los archivos de configuración de Samba (particularmente
smb.conf) y ejecute algunos comandos. Las interfaces gráficas y basadas en web, como systemconfigsamba
y Samba SWAT, ya no se incluyen con los últimos sistemas Fedora y RHEL.
Para comenzar a usar Samba en su sistema Linux, debe instalar algunos paquetes de software, como se
describe en la siguiente sección.
Instalando Samba
En Red Hat Enterprise Linux y Fedora, para configurar un archivo Samba y un servidor de impresión, la
instalación del paquete samba le brinda todo lo que necesita para comenzar. Entre otros componentes, el
paquete samba incluye el demonio de servicio Samba (/usr/sbin/smbd) y el demonio del servidor de nombres
NetBIOS (/usr/sbin/nmbd). La instalación del paquete samba extrae el paquete sambacommon, que contiene
archivos de configuración del servidor (smb.conf, lmhosts y otros) y comandos para agregar contraseñas y probar
archivos de configuración, junto con otras funciones de Samba.
En este capítulo se hace referencia a las funciones de otros paquetes, por lo que también describo cómo
instalar esos paquetes. Esos paquetes incluyen lo siguiente:
Paquete sambaclient: contiene herramientas de línea de comandos como smbclient (para conectarse
a recursos compartidos de Samba o Windows), nmblookup (para buscar direcciones de host) y
findsmb (para encontrar hosts SMB en la red).
Paquete sambawinbind: incluye componentes que permiten que su servidor Samba
Linux para convertirse en un miembro completo de un dominio de Windows, incluido el uso de cuentas de
usuario y grupo de Windows en Linux.
Para instalar todos los paquetes que acabamos de mencionar (sambacommon se instala como una
dependencia de samba, por lo que
desde no
la es ndecesario
línea anotarlo
e comando específicamente),
en Fedora
o RHEL: ingrese lo siguiente como root
# yum install samba sambacliente sambawinbind
...
Última comprobación de caducidad de metadatos: hace 0:01:44 el domingo 24 de enero de 2020
11:35:37 a.m.EST.
Dependencias resueltas.
476
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
================================================== ===================
Instalación:
samba x86_64 4.10.4101.el8_1 rhel8parax86_64baseos
rpm 739 k
sambawinbind x86_64 4.10.4101.el8_1 rhel8parax86_64baseos
rpm 570 k
Instalación de dependencias: samba
commontools
x86_64 4.10.4101.el8_1 rhel8parax86_64baseos
rpm 469 k
sambalibs x86_64 4.10.4101.el8_1 rhel8parax86_64baseos
rpm 185 k
sambawinbindmodules
x86_64 4.10.4101.el8_1 rhel8parax86_64baseos
rpm 122 k
sambacliente x86_64 4.10.4101.el8_1 rhel8parax86_64baseos
rpm 658 k
Resumen de Transacciones
================================================== ===================
Instalar 6 paquetes
Tamaño total de descarga: 2,5 M
Tamaño instalado: 6,8 M ¿Está bien
[s/d/N]: sí
Después de haber instalado los paquetes de Samba, mire los archivos de configuración en el paquete
común de samba:
# rpm qc sambacommon /etc/
logrotate.d/samba /etc/samba/lmhosts /
etc/samba/smb.conf /etc/sysconfig/
samba
19
Los archivos /etc/logrotate.d/samba y /etc/sysconfig/samba normalmente no se modifican. El primero
establece cómo se rotan los archivos en /var/log/samba log (se copian a otros archivos y se eliminan) a lo
largo del tiempo. El segundo es un archivo en el que puede poner opciones que se pasan al demonio
smbd, nmbd o winbindd, para que pueda desactivar funciones como la depuración.
La mayoría de los archivos de configuración que modificaría para Samba están en el directorio /etc/
samba. El archivo smb.conf es el archivo de configuración principal donde coloca la configuración
global para el servidor Samba, así como la información compartida de archivos e impresoras individuales
(más sobre esto más adelante). El archivo lmhosts permite asignar el nombre de host Samba NetBIOS a
direcciones IP.
477
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Aunque no existe de forma predeterminada, puede crear un archivo llamado /etc/samba/smbusers para
asignar nombres de usuario de Linux a nombres de usuario de Windows. Mientras configura su servidor
Samba, puede consultar la página de manual de smb.conf (man smb.conf). También hay páginas del manual
para los comandos de Samba, como smbpasswd (para cambiar contraseñas), smbclient (para conectarse a
un servidor Samba) y nmblookup (para buscar información de NetBIOS).
Una vez que haya instalado los paquetes de Samba y completado una encuesta rápida de lo que contienen,
intente iniciar el servicio de Samba y vea lo que obtiene en una configuración predeterminada.
Iniciar y detener Samba
Con samba y sambacommon instalados, puede iniciar el servidor e investigar cómo se ejecuta en la
configuración predeterminada. Dos servicios principales están asociados con un servidor Samba, cada uno de
los cuales tiene su propio demonio de servicio:
smb: este servicio controla el proceso del demonio smbd, que proporciona el archivo y la impresión
compartir servicios a los que pueden acceder los clientes de Windows.
nmb: este servicio controla el demonio nmbd. Al proporcionar el servicio de nombres NetBIOS
asignación de nombre a dirección, nmbd puede asignar solicitudes de clientes de Windows para
nombres NetBIOS para que puedan resolverse en direcciones IP.
Para compartir archivos e impresoras con otros sistemas Linux con Samba, solo se requiere el servicio smb.
La siguiente sección describe cómo iniciar y habilitar el servicio smb.
Iniciar el servicio Samba (smb) El servicio smb es lo
que inicia el servidor smbd y hace que los archivos e impresoras estén disponibles desde su sistema local para
otras computadoras en la red. Como de costumbre, los servicios se habilitan y se inician de manera diferente
en diferentes sistemas Linux. Para diferentes sistemas Linux, necesita encontrar el nombre del servicio y la
herramienta correcta para iniciar el demonio smbd.
En Fedora y RHEL, para permitir que Samba se inicie inmediatamente cuando se inicia el sistema, ingrese
lo siguiente desde la línea de comando como root:
# systemctl enable smb.service # systemctl start
smb.service # systemctl status smb.service
smb.service Samba SMB Daemon
Cargado: cargado (/usr/lib/systemd/system/smb.service; habilitado)
Activo: activo (en ejecución) desde Vie 20200131 07:23:37 EDT; Hace 6 s
Documentos: hombre: smbd
(8) hombre: samba
(7) hombre: smb.conf (5)
Estado: "smbd: listo para servir conexiones..."
Tareas: 4 (límite: 12216)
Memoria: 20,7 M PID
principal: 4838 (smbd)
CGroup: /system.slice/smb.service
478
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
├ 4838 /usr/sbin/smbd primer plano grupo sin procesos └ 4840 /usr/sbin/smbd
primer plano grupo sin procesos
El primer comando systemctl habilita el servicio, el segundo lo inicia inmediatamente y el tercero
muestra el estado. Para investigar más, observe que el archivo de servicio se encuentra en /usr/lib/
systemd/system/smb.service. Mira el contenido de ese archivo:
# cat /usr/lib/systemd/system/smb.service [Unidad]
Descripción=Samba SMB Daemon
Documentación=man:smbd(8) man:samba(7) man:smb.conf(5)
Wants=networkonline.target
After=network.target networkonline.target nmb.service winbind. servicio [Servicio]
Type=notify
NotifyAccess=all PIDFile=/
run/smbd.pid LimitNOFILE=16384
EnvironmentFile=/etc/sysconfig/
samba ExecStart=/usr/sbin/smbd foreground noprocess
group $SMBDOPTIONS ExecReload=/bin /kill HUP $MAINPID LimitCORE=infinity
Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba [Instalar]
WantedBy=multiusuario.objetivo
El proceso del demonio Samba (smbd) se inicia después de los objetivos network, networkonline,
nmb y winbind. El archivo /etc/sysconfig/samba contiene variables que se pasan como argumentos
a los demonios smbd, nmbd y winbindd cuando se inician. No hay opciones configuradas de forma
predeterminada para ninguno de esos demonios. La línea WantedBy indica que smb.service debe
iniciarse cuando el sistema arranca en modo multiusuario (multiuser. target), lo que hace de forma
predeterminada.
En RHEL 6 y versiones anteriores, puede iniciar el servicio Samba de la siguiente manera:
19
# service smb start Iniciando
servicios SMB: # chkconfig smb [ DE ACUERDO ]
on # service smb status smbd (pid
28056) se está ejecutando... #
chkconfig list smb smb
0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado
Ya sea que esté ejecutando su servidor Samba en RHEL, Fedora u otro sistema Linux, puede
verificar el acceso al servidor Samba usando el comando smbclient (del paquete del cliente samba).
Puede obtener información básica de un servidor Samba usando el siguiente comando:
# smbclient L servidor local
Ingrese la contraseña de SAMBA\root: <ENTRAR>
479
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Inicio de sesión anónimo exitoso
Tipo de nombre compartido Comentario
grupo de trabajo Maestro
La salida de smbclient le permite ver qué servicios están disponibles desde el servidor. De forma predeterminada, se
permite el inicio de sesión anónimo al consultar el servidor (así que simplemente presioné Enter cuando se me solicitó
una contraseña).
Puede discernir una serie de cosas sobre la configuración predeterminada del servidor Samba a partir de este resultado:
■ Todas las impresoras que se comparten a través del servidor CUPS en su sistema Linux son, por
predeterminado, también disponible desde el servidor Samba que se ejecuta en ese mismo sistema. ■ Aún
no se comparten directorios desde el servidor. ■ Aún no se está ejecutando ningún servicio de nombres
NetBIOS desde el servidor Samba.
A continuación, puede decidir si desea ejecutar el servicio de nombres NetBIOS en su servidor Samba.
Inicio del servidor de nombres NetBIOS (nmbd) Si no hay ningún servidor
de dominio de Windows ejecutándose en la red, como es el caso aquí, puede iniciar el servicio nmb en el host Samba
para proporcionar ese servicio. Para iniciar el servicio nmb (daemon nmbd) en Fedora o RHEL 7, escriba lo siguiente:
# systemctl habilitar nmb.servicio # systemctl
iniciar nmb.servicio # systemctl estado
nmb.servicio
En RHEL 6 y versiones anteriores, escribiría lo siguiente para iniciar el servicio nmb:
# inicio de servicio nmb #
estado de servicio nmb #
chkconfig nmb en # chkconfig
list nmb
Independientemente de cómo se inició el servicio NetBIOS, el daemon nmbd ahora debería estar ejecutándose
y listo para servir la asignación de nombre a dirección de NetBIOS. Ejecute el comando smbclient L nuevamente,
seguido de la dirección IP del servidor. Esta vez, las últimas líneas de
480
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
el resultado debe mostrar la información obtenida del servidor NetBIOS que ahora se ejecuta en el servidor
Samba. En este caso, las últimas líneas se ven así:
# smbclient L servidor local
...
Maestro de grupo de trabajo
SAMBA FEDORA30
Puede ver que el nombre del nuevo servidor NetBIOS es FEDORA30 y que es el servidor maestro
para el grupo de trabajo. Para consultar el servidor nmbd por la dirección IP de FEDORA30, debe
ingresar lo siguiente:
# nmblookup U localhost FEDORA30 consultando
FEDORA30 en 127.0.0.1
192.168.122.81 FEDORA30<00>
Debería poder ver su servidor Samba ejecutándose desde el sistema local ahora. El nombre de host
asignado al sistema (en este caso FEDORA30) se asigna por defecto.
Sin embargo, si tiene un cortafuegos configurado o SELinux habilitado, es posible que aún no pueda
acceder completamente al servidor Samba desde un sistema remoto. La siguiente sección le ayudará a
abrir Samba a sistemas fuera del sistema local, así como a permitir algunas funciones de Samba que
SELinux puede desactivar.
Detención de los servicios Samba (smb) y NetBIOS (nmb) Para detener los servicios
smb y nmb en Fedora o RHEL, puede usar el mismo comando systemctl que usó para iniciarlos. Puede
usar el mismo comando para deshabilitar los servicios también para que no se inicien nuevamente
cuando se inicie el sistema. Aquí hay ejemplos de cómo detener los servicios smb y nmb inmediatamente:
# systemctl detener smb.servicio # systemctl
detener nmb.servicio
En RHEL 6 y versiones anteriores, ingresaría lo siguiente para detener los servicios smb y nmb:
19
# parada de servicio smb #
parada de servicio nmb
Para evitar que los servicios smb y nmb se inicien la próxima vez que se reinicie el sistema, ingrese los
siguientes comandos en Fedora o RHEL:
# systemctl deshabilitar smb.servicio # systemctl
deshabilitar nmb.servicio
En Red Hat Enterprise Linux 6 y versiones anteriores, ingrese los siguientes comandos para deshabilitar
los servicios smb y nmb:
# chkconfig smb desactivado
# chkconfig nmb desactivado
481
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Por supuesto, solo desea detener o deshabilitar los servicios smb y nmb si ya no desea utilizar el servicio Samba. Si está listo
para continuar con la configuración de su servicio Samba, puede continuar y comenzar a configurar sus características de
seguridad de Linux para permitir que el servicio Samba esté disponible para otros en su red.
Asegurando Samba
Si no puede acceder a su servidor Samba inmediatamente después de iniciarlo, probablemente tenga que hacer algún
trabajo de seguridad. Debido a que muchas instalaciones predeterminadas de Linux impiden, en lugar de permitir, el acceso
al sistema, tratar con la seguridad de un servicio como Samba generalmente tiene más que ver con hacerlo disponible que
hacerlo seguro.
Estas son las características de seguridad que debe tener en cuenta al configurar su
sistema samba:
Cortafuegos El cortafuegos predeterminado para Fedora, RHEL y otros sistemas Linux impide el acceso a los servicios
locales desde sistemas externos. Por lo tanto, para permitir que los usuarios de otras computadoras accedan a su
servicio Samba, debe crear reglas de firewall que abran uno o más puertos para los protocolos seleccionados (TCP
en particular).
SELinux Muchas características de Samba están designadas como potencialmente inseguras por SELinux.
Debido a que los valores booleanos predeterminados de SELinux (interruptores de encendido/apagado para
ciertas funciones) están configurados para proporcionar el menor acceso requerido, debe activar los valores
booleanos para funciones tales como permitir que los usuarios accedan a sus propios directorios de inicio con
Samba. En otras palabras, puede configurar Samba para compartir directorios de inicio de usuario, pero SELinux
prohíbe que alguien intente usar esa función a menos que configure explícitamente SELinux para permitir esa
función.
Restricciones de host y usuario Dentro de los propios archivos de configuración de Samba, puede indicar qué hosts y
usuarios pueden tener acceso al servidor Samba como un todo oa directorios compartidos particulares.
Las siguientes secciones describen cómo configurar las funciones de seguridad que acabamos de mencionar para Samba.
Configurando cortafuegos para Samba Si un cortafuegos
de iptables o cortafuegos está configurado para su sistema cuando lo instala por primera vez, el cortafuegos normalmente
permite cualquier solicitud de servicios de usuarios locales pero ninguna de usuarios externos. Por eso, al final de la sección
de instalación dsistema
e este capítulo,
local. debería haber podido probar que Samba funcionaba usando el comando smbclient del
Sin embargo, si la solicitud se originó en otro sistema, habría sido rechazada.
La configuración de las reglas del cortafuegos para Samba consiste principalmente en abrir los puertos entrantes en los que
escuchan los demonios smbd y nmbd. Estos son los puertos que debe abrir para obtener un servicio Samba que funcione en
su sistema Linux:
Puerto TCP 445: este es el puerto principal en el que escucha el demonio smbd de Samba. Su cortafuegos debe admitir
solicitudes de paquetes entrantes en este puerto para que funcione Samba.
482
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
Puerto TCP 139: el demonio smbd también escucha en el puerto TCP 139 para manejar
sesiones asociadas con nombres de host NetBIOS. Es posible usar Samba sobre TCP sin abrir este
puerto, pero no se recomienda.
Puertos UDP 137 y 138: el demonio nmbd utiliza estos dos puertos para las solicitudes NetBIOS entrantes.
Si está utilizando el daemon nmbd, estos dos puertos deben estar abiertos para nuevas solicitudes de
paquetes para la resolución de nombres de NetBIOS.
Para Fedora y RHEL, permitir el acceso entrante a esos cuatro puertos es fácil. Simplemente abra la ventana
Configuración de Firewall y seleccione las casillas de verificación junto a las entradas de samba y cliente samba
en la zona pública, pestaña Servicios. Esos puertos se vuelven inmediatamente accesibles (no se requiere reiniciar
el servicio firewalld).
Para los sistemas anteriores de Fedora y RHEL que usan iptables directamente en lugar del servicio de
firewall, abrir el firewall es un proceso más manual. Considere un firewall predeterminado de Fedora que permita
la entrada de paquetes desde el host local, desde conexiones establecidas y relacionadas con conexiones
establecidas, pero niega todos los demás paquetes entrantes. El siguiente ejemplo representa un conjunto de
reglas de cortafuegos en el archivo /etc/sysconfig/iptables, con cuatro nuevas reglas (resaltadas en el siguiente
ejemplo) agregadas para abrir puertos para Samba:
*filtrar
:ENTRADA ACEPTAR [0:0]
:ADELANTE ACEPTAR [0:0]
: SALIDA ACEPTAR [0:0]
A ENTRADA m estado estado ESTABLECIDO, RELACIONADO j ACEPTAR
A ENTRADA p icmp j ACEPTAR
A ENTRADA i lo j ACEPTAR
I ENTRADA m estado estado NUEVO m udp p udp dport 137 j ACEPTAR
I ENTRADA m estado estado NUEVO m udp p udp dport 138 j ACEPTAR
I ENTRADA m estado estado NUEVO m tcp p tcp dport 139 j ACEPTAR
I ENTRADA m estado estado NUEVO m tcp p tcp dport 445 j ACEPTAR
A INPUT j REJECT rejectwith icmphostprohibited
A FORWARD j REJECT rejectwith icmphostprohibited
COMPROMETERSE 19
Su firewall puede incluir reglas adicionales para permitir solicitudes de paquetes entrantes para otros
servicios, como Secure Shell (sshd) o servicios web (httpd). Puedes dejarlos en su lugar. El punto principal
es tener las reglas de Samba ubicadas en algún lugar antes de las reglas finales de REJECT.
Si su cortafuegos de iptables está activado, puede reiniciarlo para que las nuevas reglas entren en vigor.
Para hacerlo, escriba systemctl restart iptables.service (en sistemas Fedora más antiguos) o service restart iptables
(en RHEL 6 o anterior). Intente conectarse al servicio Samba usando el comando smbclient nuevamente, o usando
otras técnicas descritas en la sección “Acceder a los recursos compartidos de Samba” más adelante en este
capítulo.
Consulte el Capítulo 25, "Seguridad de Linux en una red", para obtener más información sobre el uso de iptables.
483
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Configuración de SELinux para Samba Hay
consideraciones booleanas y de contexto de archivo relacionadas con el uso de Samba con
SELinux en modo de aplicación. Los contextos de archivo deben configurarse correctamente en un
directorio compartido por Samba. Los valores booleanos le permiten anular el enfoque seguro por defecto
para ciertas funciones de Samba.
Puede encontrar información sobre cómo SELinux confi na Samba en el samba _ hombre selinux
página (hombre samba _ selinux). Debe instalar el paquete selinuxpolicydoc para obtener esa página de manual. Para
una comprensión más profunda de SELinux, consulte el Capítulo 24, "Mejora de la seguridad de Linux con SELinux".
Configuración de valores booleanos de SELinux
para Samba Una manera fácil de enumerar y cambiar los valores booleanos de SELinux para Samba es desde la línea de
comandos. Para usar el comando semanage para enumerar los booleanos relacionados con Samba, ingrese lo siguiente:
# semanage booleano l | egrep "smb|samba"
La siguiente es una lista de los booleanos de SELinux que se aplican a Samba y sus descripciones. La mayoría de los valores
booleanos le permiten establecer qué archivos y directorios puede leer y escribir el servidor Samba en nombre de los usuarios de
Samba. Otros le permiten habilitar funciones potencialmente inseguras:
samba_run_unconfined: permite que samba ejecute scripts no confi nados desde
Samba comparte.
smbd_anon_write: permite que Samba permita a usuarios anónimos modificar archivos públicos utilizados para
servicios de transferencia de archivos públicos. Los archivos y directorios deben tener la etiqueta public_
content_rw_t. samba_enable_home_dirs: permite a Samba compartir los directorios de inicio de los usuarios.
samba_export_all_ro: permite a Samba compartir cualquier archivo y directorio de solo lectura. use_samba_home_dirs:
permite que un servidor Samba remoto acceda a los directorios de inicio en la máquina local.
samba_create_home_dirs: permite a Samba crear nuevos directorios de inicio (por ejemplo, a través de PAM).
samba_export_all_rw: permite a Samba compartir cualquier archivo o directorio de lectura/escritura.
Los siguientes valores booleanos afectan la capacidad de Samba para compartir directorios que están montados desde
otros servicios remotos (como NFS) o para actuar como un controlador de dominio de Windows:
samba_share_fusefs: permite a Samba exportar volúmenes ntfs/fusefs. samba_share_nfs: permite a
Samba exportar volúmenes NFS. samba_domain_controller: permite que Samba actúe como controlador
de dominio, agregue
usuarios y grupos, y cambiar contraseñas.
El comando setsebool se utiliza para activar o desactivar los valores booleanos de SELinux. Usado con la opción P,
setsebool establece el booleano que indiques de forma permanente. Por ejemplo, para permitir
484
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
Samba para compartir cualquier archivo o directorio con permiso de solo lectura del servidor, puede
escribir lo siguiente desde un shell como usuario root:
# setsebool P samba_export_all_ro activado #
getsebool samba_export_all_ro samba_export_all_ro
> activado
El comando setsebool activa el booleano en este caso. El getsebool le permite ver el valor del booleano.
Configuración de contextos de archivos de
SELinux para Samba SELinux limita los archivos a los que puede acceder el servicio Samba. En lugar de permitir
que el servidor Samba comparta cualquier archivo con el permiso adecuado de lectura y escritura, SELinux (cuando
está en modo de aplicación) requiere que los archivos y directorios tengan los contextos de archivo correctos
establecidos antes de que el servicio Samba pueda siquiera ver que los archivos existen.
Para que el servicio Samba funcione con SELinux inmediatamente, algunos archivos y directorios vienen
predeterminados con los contextos de archivo adecuados. Por ejemplo, los archivos de configuración de
Samba (/etc/samba/*), los archivos de registro (/var/log/samba/*) y las bibliotecas (/var/lib/samba/*) tienen
reglas asignadas para garantizar que los contextos de archivo apropiados. Para buscar archivos y directorios
asociados con el servicio Samba y el demonio smbd que tienen contextos de archivo preestablecidos, ejecute
lo siguiente:
# semanage fcontext l | grep i samba # semanage
fcontext l | grep i smb
La parte del contexto del archivo que le interesa termina con etc. _ t: por ejemplo, samba t _
_ t, samba _ registro _ t, y samba _ era _ para /etc/samba, /var/log/
samba y /var/lib/samba, respectivamente.
Es posible que descubra que necesita cambiar los contextos de los archivos, por ejemplo, cuando
coloca archivos en ubicaciones no estándar (como mover el archivo smb.conf a /root/smb.conf) o cuando
desea compartir un directorio ( que no sean directorios de inicio, que se pueden activar configurando un
valor booleano). A diferencia de los servidores vsftpd (FTP) y httpd (web) que vienen con Linux, Samba
no tiene directorios de contenido compartido predeterminados (los que acabamos de mencionar usaban / 19
var/ftp y /var/www/html).
Puede cambiar el contexto de un archivo de forma permanente creando una nueva regla de contexto
de archivo y luego aplicando esa regla al archivo o directorio para el que está destinada. Puede hacerlo con
el comando semanage (para crear la regla) y el comando restorecon (para aplicar la regla). Por ejemplo, si
desea compartir un directorio, /mystuff, debe crear ese directorio con los permisos adecuados y ejecutar el
siguiente comando para que esté disponible para acceso de lectura/escritura desde Samba:
# semanage fcontext a t samba_share_t "/mystuff(/.*)?" #restorecon v /
micosas
Después de ejecutar esos comandos, el directorio /mystuff, junto con cualquier archivo y directorio
debajo de ese punto, tienen el contexto de archivo de samba_share _ t. entonces depende de ti
485
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
para asignar la propiedad de Linux correcta y los permisos de archivo para permitir el acceso a los usuarios que
elija. La próxima sección "Configuración de Samba" proporciona un ejemplo de cómo crear un recurso compartido y le
muestra cómo agregar permisos y propiedad a un directorio compartido usando comandos estándar de Linux.
Configuración de permisos de host/usuario de Samba Dentro del propio
archivo smb.conf, puede permitir o restringir el acceso a todo el servidor Samba oa recursos compartidos específi cos en
función de los hosts o usuarios que intentan obtener acceso. También puede restringir el acceso al servidor Samba
brindando el servicio solo en interfaces particulares.
Por ejemplo, si tiene una tarjeta de interfaz de red conectada a Internet y otra conectada a la red local, puede decirle a
Samba que atienda solicitudes solo en la interfaz de red local. La siguiente sección describe cómo configurar Samba,
incluyendo cómo identificar qué hosts, usuarios o interfaces de red pueden acceder a su servidor Samba.
Configurando Samba
Dentro del archivo /etc/samba/smb.conf hay configuraciones para configurar su servidor Samba, definir impresoras
compartidas, configurar cómo se realiza la autenticación y crear directorios compartidos. El archivo consta de las
siguientes secciones predefinidas:
[global] Las configuraciones que se aplican al servidor Samba como un todo se colocan en esta sección. Aquí
es donde configuras el servidor. 's descripción, su grupo de trabajo (dominio), la ubicación
de los archivos de registro, el tipo predeterminado de seguridad y otras configuraciones.
[casas] Esta sección determina si los usuarios con cuentas en el servidor Samba pueden ver sus directorios de
inicio (navegables) o escribir en ellos. [impresoras] En esta sección, la configuración le dice a Samba si debe
hacer que las impresoras estén disponibles a través de Samba que están configuradas para impresión Linux
(CUPS).
[print$] Esta sección configura un directorio como una carpeta de controladores de impresora compartidos.
Dentro del archivo smb.conf, las líneas que comienzan con signos de almohadilla (#) o punto y coma (;) son comentarios.
La eliminación de los puntos y comas le permite configurar diferentes tipos de información compartida rápidamente. El
signo # también se puede usar para comentar una línea.
Cuando comience a editar su archivo smb.conf, haga una copia de seguridad a la que pueda volver si algo sale mal.
Puede comenzar copiando el archivo smb.conf.example a smb. conf, si desea comenzar con algunos ejemplos.
Configuración de la sección [global] Aquí hay un ejemplo
de una sección [global] del archivo smb.conf:
[global]
grupo de trabajo =
seguridad SAMBA = usuario
486
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
passdb backend = tdbsam
impresión = cups printcap name
= cups load printers = sí cups
options = raw
; netbios name = MYSERVER interfaces
; = lo eth0 192.168.12.2/24 192.168.13.2/24 hosts allow = 127. 192.168.12. 192.168.13.
;
El grupo de trabajo (también utilizado como nombre de dominio) se establece en SAMBA en este ejemplo. Cuando
un cliente se comunica con el servidor Samba, este nombre le dice al cliente en qué grupo de trabajo se encuentra el
servidor Samba.
El tipo de seguridad predeterminado se establece en usuario (nombres de usuario y contraseñas de Samba).
El passdb backend = tdbsam especifica usar una base de datos backend Samba para almacenar
'
contraseñas. Puede usar el comando smbpasswd para configurar cada usuario que se describe más
s contraseña
(como
adelante).
La configuración de impresión = cups y printcap name = cups indica que se debe usar la tapa de impresión creada
por el servicio de impresión CUPS. Cuando configura cargar impresoras = yes, Samba sabe compartir cualquier
impresora configurada por su servicio de impresión CUPS local de Samba.
Las opciones de cups le permiten pasar cualquier opción que desee a las impresoras CUPS servidas por su servidor
Samba. De forma predeterminada, solo se establece sin formato, lo que permite a los clientes de Windows utilizar sus
propios controladores de impresión. Las impresoras en su servidor Samba imprimen las páginas que se presentan en forma cruda.
'
De forma predeterminada, el s El nombre de host DNS (ingrese el nombre de host para ver cuál es) se usa como su
nombre NetBIOS de su servidor Samba también. Puede anular eso y establecer un nombre de NetBIOS
separado quitando los comentarios de la línea de nombre de netbios y agregando el nombre del servidor que desee.
Por ejemplo, nombre de netbios = myownhost. localhost se usa como su nombre NetBIOS si no se ha configurado
de otra manera.
Si desea restringir el acceso al servidor Samba para que solo responda en ciertas interfaces, puede descomentar la
línea de interfaces y agregar la dirección IP o el nombre (lo, eth0, eth1, etc.) de las interfaces de red que desee. 19
desear.
También puede restringir el acceso al servidor Samba a hosts específi cos. Descomente la línea de permisos de los
hosts (elimine el punto y coma) e inserte las direcciones IP de los hosts que desea permitir. Para ingresar un rango de
direcciones, simplemente termine la parte de la subred de la dirección, seguida de un punto. Por ejemplo, 127. está
asociado con direcciones IP que apuntan al host local. El 192.168.12. la entrada coincide con todas las direcciones IP
de 192.168.12.1 a 192.168.12.254.
Configuración de la sección [homes] La sección [homes]
está configurada, de forma predeterminada, para permitir que cualquier cuenta de usuario de Samba pueda acceder
a su propio directorio de inicio a través del servidor Samba. Así es como se ve la entrada de casas predeterminada:
487
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
[casas]
comentario = Inicio Directorios
usuarios válidos = %S, %D%w%S
navegable = No
solo lectura = No
heredar acls = Sí
Establecer usuarios válidos en %S sustituye el nombre del servicio actual, lo que permite que cualquier usuario
válido del servicio acceda a sus directorios de inicio. Los usuarios válidos también se identifican por dominio o
grupo de trabajo (%D), separador winbind (%w) y nombre del servicio actual (%S).
La opción "browseable = No" evita que el servidor Samba muestre la disponibilidad de los directorios de
inicio compartidos. Los usuarios que pueden proporcionar sus propios nombres de usuario y contraseñas de
Samba pueden leer y escribir en sus propios directorios de inicio (solo lectura = no). Con heredar acls establecido
en Sí, las listas de control de acceso se pueden heredar para agregar otra capa de seguridad en los archivos
compartidos.
Si después de iniciar el servicio smb no puede iniciar sesión con una cuenta de usuario válida, es posible
que deba cambiar algunas funciones de seguridad en su sistema. En los sistemas Fedora y RHEL, en
particular, las características de SELinux deben cambiarse para permitir que los usuarios accedan a sus
directorios de inicio si está en el modo de aplicación de SELinux.
Por ejemplo, si intentara usar smbclient para iniciar sesión en su directorio de inicio, el inicio de sesión se
realizaría correctamente, pero cuando intentara enumerar el contenido del directorio de inicio, es posible que
vea el siguiente mensaje:
Listado NT_STATUS_ACCESS_DENIED \*
Para indicarle a SELinux que permita a los usuarios de Samba acceder a sus directorios de inicio como recursos compartidos de
Samba, active el permitirde directorios
_booleano _ hogar de _samba ingresando lo siguiente como root desde un shell:
# setsebool P samba_enable_home_dirs en
El comando setsebool activa la capacidad de Samba para compartir directorios de inicio (que está
desactivado de forma predeterminada). Primero cree una contraseña para el usuario con smbpasswd y
luego inicie sesión con smbclient. El formulario para usar el comando smbclient para verificar el acceso al
'
usuario El directorio de inicio de s, nuevamente para el usuario chris, sería el siguiente (reemplazando el
dirección IP con el nombre o dirección de su servidor Samba):
$ smbpasswd a chris Nueva
contraseña de SMB: ********* Vuelva a
escribir la nueva contraseña de SMB: ********* Usuario
agregado chris.
$ smbclient U chris //192.168.0.119/chris
Ingrese la contraseña de SAMBA\chris:
Intente "ayuda" para obtener una lista de posibles comandos. smb: \> ls
archivo.txt
archivo.txt 149946368 dom 4 de enero 09:28:53 2020
39941 bloques de tamaño 524288. 28191 bloques disponibles
smb:\> salir
488
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
El punto principal a recordar es que, aunque el recurso compartido no es navegable, puede solicitarlo dando el
'
servidor Samba (aquí, chris), para acceder al usuario s nombre de host o dirección IP, seguido por el usuario ' nombre de
'directorio de inicio de s.
Configuración de la sección [impresoras] Cualquier
impresora que configure para la impresión CUPS en su sistema Linux se comparte automáticamente con otros a
través de Samba, según la sección [impresoras] que se agrega de forma predeterminada.
La configuración global cups options = raw hace que todas las impresoras sean impresoras raw (lo que significa que el
cliente de Windows necesita proporcionar el controlador de impresora adecuado para cada impresora compartida).
'
Aquí Así es como se ve la sección de impresoras predeterminadas en el archivo smb.conf:
[impresoras]
comentario = Todas las impresoras
ruta = /var/tmp imprimible
= Sí crear máscara =
0600
navegable = No
La ruta le dice a Samba que almacene archivos de impresión temporales en /var/tmp. La línea printable = Yes hace
que Samba comparta todas sus impresoras CUPS en el sistema local. Las impresoras se pueden escribir y permiten
la impresión de invitados de forma predeterminada. La configuración de creación de máscara = 0600 utilizada aquí tiene
el efecto de eliminar los bits de escritura y ejecución para el grupo y otros, dentro de la ACL, cuando se crean archivos
en el directorio de ruta.
Para ver que las impresoras locales están disponibles, puede ejecutar el comando smbclient L desde un sistema
Linux, como se muestra anteriormente. En un sistema Windows, puede seleccionar Red desde la ventana del
Explorador de archivos y seleccionar el icono que representa su servidor Samba. Todas las impresoras y carpetas
compartidas aparecen en esa ventana. (Consulte la sección "Acceder a recursos compartidos de Samba" más adelante
en este capítulo para obtener detalles sobre cómo ver y usar impresoras compartidas).
Creación de una carpeta compartida de
Samba Antes de poder crear una carpeta compartida, esa carpeta (directorio) debe existir y tener los permisos
19
adecuados establecidos. En este ejemplo, se comparte el directorio /var/salesdata. Desea que los datos puedan ser
escritos por el usuario llamado chris pero visibles para cualquier persona en su red. Para crear ese directorio y
establecer los permisos adecuados y los contextos de archivos de SELinux, escriba lo siguiente como usuario root:
# mkdir /var/salesdata # chmod
775 /var/salesdata # chown chris:chris /
var/salesdata # semanage fcontext a t samba_share_t /
var/salesdata # restorecon v /var/salesdata # touch /var/salesdata/test # ls lZ /var/
datosventas/prueba
rwrr. 1 raíz raíz
unconfined_u:object_r:samba_share_t:s0 0 24 de diciembre 14:35 /var/salesdata/test
489
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Agregando la carpeta compartida a Samba
Con el directorio /var/salesdata creado y correctamente configurado para ser compartido por Samba, así es
como se vería la carpeta compartida (llamada salesdata) en el archivo smb. archivo confi:
[salesdata]
comentario = datos de ventas para la ruta del año actual = /
var/salesdata solo lectura = no navegable = sí usuarios
válidos = chris
;
Antes de que se creara este recurso compartido, se creó el directorio /var/salesdata, con chris asignado como
usuario y grupo, y chris configuró el directorio para que pudiera leer y escribir. (El contexto del archivo de SELinux
también debe configurarse si SELinux está en modo de aplicación). El nombre de usuario de Samba, chris, debe
presentarse junto con la contraseña asociada para acceder al recurso compartido. Una vez que Chris se conecta
al recurso compartido, Chris tiene acceso de lectura y escritura (solo lectura = no).
Ahora que ha visto la configuración predeterminada para Samba y un ejemplo de un directorio (carpeta)
compartido simple, lea las siguientes secciones para ver cómo configurar los recursos compartidos aún más.
En particular, los ejemplos demuestran cómo hacer que los recursos compartidos estén disponibles para usuarios,
hosts e interfaces de red específicos.
Comprobación del recurso
compartido de Samba Para que los cambios en la configuración de Samba surtan efecto, debe reiniciar el
servicio smb. Una vez hecho esto, verifique que el recurso compartido de Samba que creó esté disponible y
que cualquier usuario que haya asignado al recurso compartido pueda acceder a él. Para hacer esas cosas,
ingrese lo siguiente como usuario raíz desde un shell en el servidor Samba:
# systemctl restart smb.service # smbclient L
localhost U chris Ingrese SAMBA\contraseña de
chris: ******* Comentario
Nombre compartido Tipo
grupo de trabajo Maestro
SAMBA FEDORA30
...
490
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
Aquí puede ver el nombre del recurso compartido (datos de ventas), el dominio establecido en el nombre
del grupo de trabajo SAMBA y la descripción ingresada anteriormente (datos de ventas del año actual). A
continuación, una forma rápida de probar el acceso al recurso compartido es usar el comando smbclient.
Puede usar el nombre de host o la dirección IP con smbclient para acceder al recurso compartido. Debido a
que estoy en el sistema local en este ejemplo, solo uso el nombre localhost y el usuario que agregué (chris):
# smbclient U chris //localhost/salesdata Ingrese la contraseña de
SAMBA\chris: ******** Intente "ayuda" para obtener una lista de posibles
comandos. smb: \> lcd /etc smb: \> poner hosts colocando hosts de archivos
como \hosts (43,5 kb/s) (promedio de 43,5 kb/s) smb: \> ls
. D 0 dom 29 dic 09:52:51 2020
.. D 0 dom 29 dic 09:11:50 2020
Hospedadores A 89 dom 29 dic 09:52:51 2020 39941 bloques de
tamaño 524288. 28197 bloques disponibles
smb: \> salir
Un recurso compartido de Samba tiene el formato //host/share o \\host\share. Sin embargo, cuando
identifica un recurso compartido de Samba desde un shell de Linux en el último caso, las barras
invertidas deben escaparse. Entonces, como argumento, el primer ejemplo del recurso compartido
debería aparecer como \\\\localhost\\salesdata. Por lo tanto, la primera forma es más fácil de usar.
NOTA
El escape de un carácter que escribe desde el shell se realiza colocando una barra invertida ( \ ) delante de ese carácter. Le dice al
shell que use el carácter que sigue a la barra invertida literalmente, en lugar de darle al carácter un significado especial para el shell.
(Los caracteres * y ? son ejemplos de caracteres con un significado especial). Debido a que la barra invertida en sí tiene un
significado especial para el shell, si desea usar una barra invertida literalmente, debe precederla con una barra invertida. Es por eso
que cuando desea escribir una dirección de Samba que incluye dos barras invertidas, en realidad debe ingresar cuatro barras invertidas.
Cuando se le solicite, ingrese la contraseña de Samba para ese usuario (puede ser diferente de la
' '
usuario de linux contraseña). El ejemplo de usuario
19
La contraseña se configuró anteriormente con smbpasswd en este
de Samba. Verá el indicador smb: \> después de eso.
En este punto, tiene una sesión abierta en el host Samba que es similar a una sesión ftp para atravesar un
servidor FTP. El comando lcd /etc convierte a /etc en el directorio actual del sistema local. El comando put
hosts carga el archivo de hosts del sistema local al directorio compartido. Escribir ls muestra que el archivo
existe en el servidor. El comando quit finaliza la sesión.
Restricción del acceso a Samba por interfaz de red
Para restringir el acceso a todos sus recursos compartidos, puede establecer la configuración de interfaces
globales en el archivo smb. archivo conf. Samba está diseñado más para compartir archivos locales que para
compartir a través de redes de área amplia. Si su computadora tiene una interfaz de red conectada a una red
local y otra conectada a Internet, considere permitir el acceso solo a la red local.
491
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Para establecer en qué interfaces escucha Samba, elimine el comentario de la línea de interfaces que se muestra en
un ejemplo anterior en la sección [global] del archivo smb.conf. Luego agregue los nombres de interfaz o rangos de
direcciones IP de aquellas computadoras a las que desea permitir el acceso a su computadora. Aquí hay un ejemplo:
interfaces = lo 192.168.22.15/24
Esta entrada de interfaz permite el acceso al servicio Samba a todos los usuarios en el sistema local (lo). También
permite el acceso a cualquier sistema en la red 192.168.22. Consulte la descripción de smb.conf s de las diferentes
'
página man formas de identificar hosts e interfaces de red.
Restricción del acceso a Samba por parte del
host El acceso del host al servidor Samba se puede configurar para todo el servicio o para recursos compartidos individuales.
Estos son algunos ejemplos de hosts que permiten y deniegan entradas:
los hosts permiten = 192.168.22. EXCEPTO 192.168.22.99
hosts permitidos = 192.168.5.0/255.255.255.0 hosts
permitidos = .example.com market.example.net hosts deny =
evil.example.org 192.168.99.
Estas entradas se pueden colocar en la sección [global] o en cualquier sección del directorio compartido. El primer
ejemplo permite el acceso a cualquier host en el 192.168.22. red excepto 192.168.22.99, que está denegada. Tenga en
cuenta que se requiere un punto al final del número de red. El ejemplo 192.168.5.0/255.255.255.0 utiliza la notación de
máscara de red para identificar 192.168.5 como el conjunto de direcciones permitidas.
En la tercera línea del código de ejemplo, se permite cualquier host de la red .example.com, al igual que el host individual
market.example.net. El ejemplo de denegación de hosts muestra que puede usar el mismo formulario para identificar
nombres y direcciones IP para evitar el acceso de ciertos hosts.
Restricción del acceso a Samba por parte
del usuario Se puede permitir el acceso de determinados usuarios y grupos de Samba a recursos compartidos específi
cos de Samba identificando esos usuarios y grupos dentro de un recurso compartido en el archivo smb.conf. Además de
los usuarios invitados, que puede permitir o no, la autenticación de usuario predeterminada para Samba requiere que
agregue una cuenta de usuario de Samba (Windows) que se asigna a una cuenta de usuario local de Linux.
Para permitir que un usuario acceda al servidor Samba, debe crear una contraseña para el usuario. Aquí hay un ejemplo
de cómo agregar una contraseña de Samba para el usuario jim:
# smbpasswd un jim
Nueva contraseña SMB: *******
Vuelva a escribir la nueva contraseña de SMB: *******
Después de ejecutar ese comando smbpasswd, Jim puede usar ese nombre de usuario y contraseña para acceder
al servidor Samba. El archivo /var/lib/samba/private/passdb.tdb contiene la contraseña recién ingresada para jim.
Después de eso, el usuario jim puede cambiar la contraseña simplemente escribiendo smbpasswd cuando haya iniciado
sesión. El usuario root puede cambiar la contraseña volviendo a ejecutar el comando que se muestra en el ejemplo pero
eliminando la opción a.
492
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
Si quisiera darle acceso a Jim a un recurso compartido, podría agregar una línea de usuarios válida a ese bloque
compartido en el archivo smb.conf. Por ejemplo, para proporcionar a chris y jim acceso a un recurso compartido, puede
agregar la siguiente línea: usuarios válidos = jim, chris
Si la opción de solo lectura se establece en no para el recurso compartido, ambos usuarios podrían escribir archivos en el
recurso compartido (dependiendo de los permisos de archivo). Si solo lectura está configurado en sí, aún podría permitir el
acceso a jim y chris para escribir archivos agregando una línea de lista de escritura de la siguiente manera:
escribir lista = jim, chris
La lista de escritura puede contener grupos (es decir, grupos de Linux contenidos en el archivo /etc/group) para otorgar
permiso de escritura a cualquier usuario de Linux que pertenezca a un grupo de Linux en particular. Puede agregar permiso
de escritura para un grupo poniendo un carácter más (+) delante de un nombre. Por ejemplo, lo siguiente agrega acceso de
escritura para el grupo de mercado al recurso compartido con el que está asociada esta línea:
escribir lista = jim, chris, +mercado
Hay muchas formas de cambiar y ampliar las características de sus recursos compartidos de Samba.
Para obtener más información sobre la configuración de Samba, asegúrese de examinar el propio archivo smb.conf (que
incluye muchos comentarios útiles) y la página de manual de smb.conf.
Acceso a recursos compartidos de Samba
Después de haber creado algunos directorios compartidos en Samba, muchas herramientas de cliente están disponibles tanto
en Linux como en Windows para acceder a esos recursos compartidos. Las herramientas de línea de comandos en Linux
incluyen el comando smbclient, demostrado anteriormente en este capítulo. Para obtener un medio gráfico de acceder a los
recursos compartidos, puede usar los administradores de archivos disponibles tanto en Windows (Explorador de archivos)
como en Linux (Nautilus, con el escritorio GNOME).
Acceder a los recursos compartidos de Samba en Linux Una
vez que un recurso compartido de Samba está disponible, se puede acceder a él desde sistemas Linux y Windows remotos
utilizando administradores de archivos o comandos de montaje remoto.
19
Acceder a los recursos compartidos de Samba desde un administrador
de archivos de Linux Abrir un administrador de archivos en Linux puede brindarle acceso a los directorios compartidos desde
Linux (Samba) y Windows (SMB). La forma de acceder al administrador de archivos es diferente en diferentes escritorios
Linux. En GNOME 3, puede hacer clic en el icono Archivos. En otros escritorios, abra la carpeta Inicio.
Con el administrador de ventanas de Nautilus en pantalla, seleccione Otra ubicación en la barra de navegación izquierda.
Deberían aparecer las redes disponibles (como la red de Windows). Mire el cuadro en la parte inferior de la ventana identificado
como Conectar al servidor y luego ingrese la ubicación de un recurso compartido de Samba disponible. Teniendo en cuenta los
ejemplos anteriores, podría utilizar cualquiera de estos recursos compartidos:
smb://192.168.122.119/chris
smb://192.168.122.119/datos de ventas
493
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
La ventana debe aparecer similar a la Figura 19.1 :
FIGURA 19.1
Identifique un recurso compartido de Samba en el cuadro Conectar al servidor de Nautilus.
Haga clic en Conectar. Desde la ventana que aparece, puede seleccionar conectarse como usuario
registrado. Si lo hace, puede ingresar su nombre de usuario, el nombre de dominio de Samba y la
contraseña de su usuario. También puede seleccionar si guardar o no esa contraseña. La figura 19.2
muestra un ejemplo de esa ventana:
FIGURA 19.2
Agregue sus credenciales de Samba.
494
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
Haga clic en Conectar.
Si se aceptan el usuario y la contraseña, debería ver el contenido del directorio remoto.
Si tiene acceso de escritura al recurso compartido, puede abrir otra ventana de Nautilus y arrastrar y soltar
archivos entre los dos sistemas. La figura 19.3 muestra un ejemplo de la ventana de Nautilus después de
conectarme al recurso compartido de datos de ventas.
FIGURA 19.3
Visualización de un recurso compartido de Samba desde Connect to Server en Nautilus
Montar un recurso compartido de Samba desde una línea de
comandos de Linux Debido a que un directorio compartido de Samba se puede ver como un sistema de
archivos remoto, puede usar herramientas comunes de Linux para conectar un recurso compartido de
Samba (temporal o permanentemente) a su sistema Linux. Con el comando de montaje estándar (con cifsutils
instalado), puede montar un recurso compartido Samba remoto como un sistema de archivos CIFS en Linux.
Este ejemplo monta el recurso compartido de datos de ventas desde el host en la dirección IP 192.168.0.119 en
19
el directorio local / mnt/sales:
# yum install cifsutils y # mkdir /mnt/
sales # mount t cifs o user=chris \ //
192.168.0.119/salesdata /mnt/sales
Contraseña para chris@//192.168.122.119/
salesdata: ** ***** # ls /mnt/sales hosts memos test whitepapers
Cuando se le solicite, ingrese la contraseña de Samba para Chris. Dado que el usuario chris en este ejemplo
tiene permiso de lectura y escritura en el directorio compartido, los usuarios de su sistema deberían poder leer y
escribir en el directorio montado. Independientemente de quién guarde los archivos en el
495
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
directorio, en el servidor esos archivos son propiedad del usuario chris. Este montaje dura hasta que se
reinicia el sistema o ejecuta el comando umount en el directorio. Si desea que el recurso compartido se monte
de forma permanente (es decir, cada vez que se inicia el sistema) en la misma ubicación, puede realizar una
configuración adicional. Primero, abra el archivo /etc/fstab y agregue una entrada similar a la siguiente:
//192.168.0.119/salesdata /mnt/sales cifs credentials=/root/cif.txt 0 0
A continuación, cree un archivo de credenciales (en este ejemplo, /root/cif.txt). En ese archivo, ponga el nombre
'
del usuario y el usuario monta ecl ontraseña
s sistema de
archivos.
que desea A quí hay ucn
presentar ejemplo
el sdistema
uando el contenido
intentede ese archivo:
usuario = chris
pass=mypass
Antes de reiniciar para verificar que la entrada sea correcta, intente montarlo desde la línea de comandos.
Un comando mount a intenta montar cualquier sistema de archivos listado en el archivo /etc/fstab que no
esté ya montado. El comando df muestra información sobre el espacio en disco para el directorio montado,
como en el siguiente ejemplo:
# mount a # df
h /mnt/ sistema de archivos
de ventas //192.168.0.119/ Tamaño Usado Disponibilidad Ues% Montado en
datos de ventas 20G 5,7G 14G 30% /mnt/ventas
Ahora debería poder usar el directorio compartido de Samba como lo hace con cualquier directorio en el
sistema local.
Acceso a los recursos compartidos de Samba en Windows Al
igual que con Linux, puede acceder a los recursos compartidos de Samba desde la ventana del administrador
de archivos, en este caso, el Explorador de archivos de Windows. Para hacer esto, abra cualquier carpeta en
Windows y seleccione Red en el panel izquierdo. En la pantalla debería aparecer un icono que representa el
servidor Samba. Haga clic en ese icono e ingrese una contraseña si se le solicita. Debería ver todas las impresoras
y carpetas compartidas de ese servidor (consulte la Figura 19.4).
En la Figura 19.4,
puede ver que hay dos carpetas compartidas (directorios): chris y salesdata. También hay
varias impresoras compartidas. Para usar las carpetas, haga doble clic en ellas e ingrese la información de
autenticación requerida. Debido a que las impresoras están configuradas para usar controladores sin
procesar de forma predeterminada, debe obtener controladores de Windows para usar cualquiera de las
impresoras Samba.
496
Machine Translated by Google
Capítulo 19: Configuración de un servidor de uso compartido de archivos de Windows (Samba)
FIGURA 19.4
Acceder a recursos compartidos de Samba desde Windows
Usando Samba en la empresa
Aunque está más allá del alcance de este libro, compartir archivos e impresoras de Windows a través de
servidores Samba es una aplicación muy popular en las grandes empresas. A pesar de que Linux ha
comenzado a dominar el mercado de servidores de calidad empresarial, los sistemas Microsoft Windows
siguen siendo los sistemas predominantes utilizados en el escritorio.
Las principales funciones necesarias para integrar servidores Samba en una gran empresa con muchos
escritorios de Microsoft Windows están relacionadas con la autenticación. La mayoría de las grandes
empresas utilizan servidores de Microsoft Active Directory Services (ADS) para la autenticación. En el lado
de Linux, eso significa configurar Kerberos en el sistema Linux y usar ADS (en lugar de usuario) para el tipo
de seguridad en el archivo smb.conf. 19
La ventaja de la autenticación central es que los usuarios deben recordar solo un conjunto de credenciales
en toda la empresa y los administradores del sistema deben administrar menos cuentas de usuario y
contraseñas.
Resumen
Debido a la popularidad de los escritorios de Windows, los servidores Samba se han vuelto populares
para compartir archivos e impresoras entre sistemas Windows y Linux. Samba proporciona una forma de
interoperar con sistemas Windows al implementar el protocolo Server Message Block (SMB) o Common
Internet File (CIFS) para compartir recursos a través de una red.
497
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Este capítulo repasó el proceso de instalación, inicio, protección, configuración y acceso a los servidores Samba en un
sistema Linux. Usando herramientas de línea de comandos, demostré cómo configurar un servidor Samba. Le mostré
las herramientas de línea de comandos y de escritorio para acceder a recursos compartidos de Samba desde sistemas
Linux y Windows.
El siguiente capítulo describe la función Sistema de archivos de red (NFS). NFS es la instalación nativa de
Linux para compartir y montar sistemas de archivos a través de redes con otros sistemas Linux y UNIX.
Ejercicios
Los ejercicios de esta sección describen tareas relacionadas con la configuración de un servidor Samba en Linux y el
acceso a ese servidor mediante un cliente Samba. Como de costumbre, a menudo hay varias formas de realizar
algunas de las tareas aquí. Así que no se preocupe si no
realiza
se los een
muestra jercicios exactamente
las respuestas,
mismos de lya
siempre cmuando
resultados. isma
m anera
el qlue
Consulte
obtenga os
Apéndice B para conocer las soluciones sugeridas.
No realice estos ejercicios en un sistema Linux que ejecute un servidor Samba porque es casi seguro que
interferirán con ese servidor. Estos ejercicios fueron probados en un sistema Fedora.
Algunos de los pasos pueden ser ligeramente diferentes en otro sistema Linux.
1. Instale los paquetes samba y sambaclient.
2. Inicie y habilite los servicios smb y nmb.
3. Establezca el grupo de trabajo del servidor Samba en TESTGROUP, el nombre de netbios en MYTEST,
y la cadena del servidor a Samba Test System.
4. Agregue un usuario de Linux llamado phil a su sistema y agregue una contraseña de Linux y
Samba contraseña para phil.
5. Configure la sección [homes] para que los directorios de inicio sean navegables (sí) y escriba
capaz (sí), y phil es el único usuario válido.
6. Establezca cualquier booleano de SELinux que sea necesario para que phil pueda acceder a su directorio
de inicio a través de un cliente Samba, luego reinicie los servicios smb y nmb.
7. Desde el sistema local, use el comando smbclient para enumerar las casas que comparten
está disponible.
8. Desde una ventana de Nautilus (administrador de archivos) en el sistema local, conéctese al recurso
compartido de hogares para el usuario phil en el servidor Samba local de una manera que le permita arrastrar
y soltar archivos en esa carpeta.
9. Abra el cortafuegos para que cualquiera que tenga acceso al servidor pueda acceder al
Servicio Samba (daemons smbd y nmbd).
10. Desde otro sistema en su red (Windows o Linux), intente abrir el recurso compartido de hogares nuevamente
como el usuario phil, y nuevamente asegúrese de que puede arrastrar y soltar archivos en él.
498
Machine Translated by Google
CAPÍTULO S
Configuración de un archivo NFS S
EN ESTE CAPÍTULO
Obtención del software del servidor NFS
Activación e inicio de NFS
Exportación de directorios NFS
Configuración de funciones de seguridad para NFS
Montaje de directorios compartidos NFS remotos
I
En lugar de representar los dispositivos de almacenamiento como letras de unidad (A, B, C, etc.), como ocurre en los sistemas
operativos de Microsoft, los sistemas Linux conectan de forma invisible los sistemas de archivos de varios discos duros,
unidades USB, CDROM y otros dispositivos locales. dispositivos para formar un único sistema de archivos Linux. El archivo de red
La función System (NFS) le permite ampliar su sistema de archivos Linux para conectar sistemas de archivos en otras computadoras
a su estructura de directorio local.
Un servidor de archivos NFS proporciona una manera fácil de compartir grandes cantidades de datos entre los usuarios y
las computadoras de una organización. Un administrador de un sistema Linux que está configurado para compartir sus sistemas
de archivos mediante NFS debe realizar las siguientes tareas para configurar NFS:
1. Configure la red. NFS se usa normalmente en redes privadas en lugar de redes públicas, como Internet.
2. Inicie el servicio NFS. Varios demonios de servicio deben iniciarse y ejecutarse para tener un funcionamiento completo.
servicio NFS operativo. En Fedora y Red Hat Enterprise Linux, puede iniciar el servicio del servidor nfs.
3. Elija qué compartir desde el servidor. Decida qué directorios (carpetas) en su servidor Linux NFS poner a disposición
de otras computadoras. Puede elegir cualquier punto en el sistema de archivos y hacer que todos los archivos y
directorios debajo de ese punto sean accesibles para otras computadoras.
4. Configure la seguridad en el servidor. Puede utilizar varias características de seguridad diferentes para aplicar el nivel de
seguridad con el que se sienta cómodo. La seguridad a nivel de montaje le permite restringir los equipos que pueden
montar un recurso y, para aquellos que pueden montarlo, le permite especificar si se puede montar como lectura/escritura
o solo lectura. En NFS, la seguridad a nivel de usuario se implementa asignando usuarios de los sistemas cliente a usuarios
en el servidor NFS (basado en
499
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
UID y no nombre de usuario) para que puedan confiar en los permisos estándar de Linux de lectura/escritura/
ejecución, propiedad de archivos y permisos de grupo para acceder y proteger archivos.
5. Monte el sistema de archivos en el cliente. Cada computadora cliente a la que se le permite acceder al
el servidor 'sistema de archivos compartidos NFS puede montarlo en cualquier lugar que elija el cliente.
Por ejemplo, puede montar un sistema de archivos desde una computadora llamada oak en el
directorio /mnt/oak en su sistema de archivos local. Una vez montado, puede ver el contenido de ese
directorio escribiendo ls /mnt/oak.
Aunque a menudo se usa como servidor de archivos (u otro tipo de servidor), Linux es un sistema operativo
de propósito general, por lo que cualquier sistema Linux puede compartir o exportar sistemas de archivos
'
s
como servidor o usar o filesystems
tra (montar)
computadora como
y Fedora cliente.
30 W De ihncluir
orkstation. echo, tanto
el Red
servicio Hat Enterprise
en sus Linux 8
nfsserver
instalaciones predeterminadas.
NOTA
Un sistema de archivos suele ser una estructura de archivos y directorios que existe en un único dispositivo (como una partición del disco
duro o un CDROM). El término sistema de archivos de Linux se refiere a la estructura de directorios completa (que puede incluir sistemas
de archivos de varias particiones de disco, NFS o una variedad de recursos de red), comenzando desde la raíz (/) en una sola computadora.
' de computadora en el árbol de directorios) a otra computadora
Un directorio compartido en NFS puede representar todo o parte de un directorio
s filesystem, que se puede adjuntar (desde el archivo compartido
'
sistema de archivos s.
Si ya tiene los servicios NFS y Cockpit ejecutándose en su sistema, puede montar recursos compartidos NFS y ver
'
es como hacer eso:
recursos compartidos montados desde la interfaz de usuario web de Cockpit. Aquí
1. Inicie sesión en su interfaz de Cockpit (puerto 9090) a través de su navegador web y seleccione
Almacenamiento. La URL para acceder al almacenamiento en el servicio Cockpit en su sistema local
debe ser algo así como https://host1.example.com:9090/storage.
2. Si hay recursos compartidos NFS montados en su sistema, deberían aparecer en la sección Montajes NFS.
La Figura 20.1 muestra un ejemplo que contiene dos recursos compartidos NFS montados.
3. Para montar un recurso compartido NFS remoto, seleccione el signo más (+) en la línea NFS Mounts. Complete
la dirección o el nombre de host del servidor NFS, el directorio compartido en el recurso compartido NFS y el
punto en el sistema de archivos local donde montará ese recurso compartido. Luego seleccione Agregar,
como se muestra en la Figura 20.2 .
En este punto, debería poder acceder al contenido del recurso compartido NFS remoto desde el punto
de montaje en su sistema de archivos local. De manera predeterminada, la información de montaje de
NFS se agrega al archivo /etc/fstab, por lo que el recurso compartido de NFS estará disponible cada vez
que se reinicie el sistema. Ahora que ha visto la manera fácil de usar NFS, el resto del capítulo describe
cómo usar NFS desde cero.
500
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
FIGURA 20.1
Ver los recursos compartidos de NFS montados localmente mediante la interfaz de usuario web de Cockpit
FIGURA 20.2
Agregue un nuevo montaje NFS usando la interfaz de usuario web de Cockpit
20
501
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Instalación de un servidor NFS
Para ejecutar un servidor NFS, necesita un conjunto de módulos de kernel (que se entregan con el propio kernel)
además de algunas herramientas de nivel de usuario para configurar el servicio, ejecutar procesos de daemon y
consultar el servicio de varias maneras.
Para versiones anteriores de Fedora y RHEL, los componentes que necesita y que aún no están en el kernel se
pueden agregar instalando el paquete nfsutils. En RHEL 8 y Fedora 30, los componentes necesarios se incluyen
en la siguiente instalación predeterminada:
# yum instala nfsutils
Además de algunos documentos en el directorio /usr/share/doc/nfsutils, la mayoría de la documentación en el
paquete nfsutils incluye páginas man para sus diversos componentes. Para ver la lista de documentación, escriba
lo siguiente:
# rpm qd nfsutils | menos
Hay herramientas y páginas man tanto para el lado del servidor NFS (para compartir un directorio con otros)
como para el lado del cliente (para montar un directorio NFS remoto localmente). Para configurar un servidor,
puede consultar la página del manual de exportaciones (para configurar el archivo /etc/exports para compartir
sus directorios). La página de manual del comando exportfs describe cómo compartir y ver la lista de directorios
que comparte desde el archivo /etc/exports. La página de manual de nfsd describe las opciones que puede
pasar al demonio del servidor rpc.nfsd, que le permite hacer cosas como ejecutar el servidor en modo de
depuración.
Las páginas de manual en el lado del cliente incluyen la página de manual de mount.nfs (para ver qué opciones de
montaje puede usar al montar directorios NFS remotos en su sistema local). También hay una página de manual
de nfsmount.conf, que describe cómo usar el archivo /etc/nfsmount.conf para configurar cómo se comporta su
sistema cuando monta recursos remotos localmente. La página de manual de show mount describe cómo usar el
comando showmount para ver qué directorios compartidos están disponibles desde los servidores NFS.
Para obtener más información sobre el paquete nfsutils, puede ejecutar los siguientes comandos para ver
información sobre el paquete, los archivos de configuración y los comandos, respectivamente:
# rpm qi nfsutils # rpm qc
nfsutils # rpm ql nfsutils |
contenedor de grep
Inicio del servicio NFS
Iniciar el servidor NFS implica lanzar varios demonios de servicio. El servicio NFS básico en Fedora y RHEL 8 se
llama nfsserver. Para iniciar ese servicio, habilítelo (para que se inicie cada vez que se inicie su sistema) y
verifique el estado ejecutando los siguientes tres comandos:
# systemctl iniciar nfsserver.service # systemctl
habilitar nfsserver.service
502
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
# systemctl status nfsserver.service •nfsserver.service
Servidor y servicios NFS
Cargado: cargado (/lib/systemd/system/nfsserver.service; preajuste de proveedor habilitado: deshabilitado)
Activo: activo (salido) desde el lunes 2019902 15:15:11 EDT; 24s
atrás
PID principal: 7767 (código=salido, estado=0/ÉXITO)
Tareas: 0 (límite: 12244)
Memoria: 0B
CGroup: /system.slice/nfsserver.service
Puede ver en el estado que el servicio del servidor nfs está habilitado y activo. El servicio NFS también
requiere que se esté ejecutando el servicio RPC (rpcbind). El servicio nfsserver inicia automáticamente
el servicio rpcbind, si aún no se está ejecutando.
En Red Hat Enterprise Linux 6, necesita los comandos service y chkconfig para verificar, iniciar y
habilitar el servicio NFS (nfs). Los siguientes comandos muestran que el servicio nfs no se está
ejecutando actualmente y está deshabilitado:
# estado del servicio nfs
rpc.svcgssd está detenido rpc.mountd
está detenido nfsd está detenido #
chkconfig list nfs nfs 0: apagado 1:
apagado 2: apagado 3: apagado 4:
apagado 5: apagado 6: apagado
Como se mencionó anteriormente, el servicio rpcbind debe estar ejecutándose para que NFS
funcione. En RHEL 6, puede usar los siguientes comandos para iniciar y habilitar permanentemente los
servicios rpcbind y nfs:
# servicio rcpbind inicio
Iniciando rpcbind: # inicio [ DE ACUERDO ]
de servicio nfs
Iniciar servicios NFS: [ DE ACUERDO ]
Cuotas iniciales de NFS: [ DE ACUERDO ]
Iniciando el demonio NFS: [ DE ACUERDO ]
Iniciando NFS mountd: # [ DE ACUERDO ]
chkconfig rpcbind on # chkconfig nfs
on
Una vez que se ejecuta el servicio, los comandos (mount, exportfs, etc.) y los archivos (/etc/
exports, /etc/fstab, etc.) para configurar NFS son básicamente los mismos en todos los sistemas
Linux. Entonces, una vez que haya instalado y ejecutado NFS, simplemente siga las instrucciones de
este capítulo para comenzar a usar NFS.
20
Compartir sistemas de archivos NFS
Para compartir un sistema de archivos NFS desde su sistema Linux, debe exportarlo desde el sistema
del servidor. La exportación se realiza en Linux agregando entradas en el archivo /etc/exports. Cada
503
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
La entrada identifica un directorio en su sistema de archivos local que desea compartir con otras
computadoras. La entrada también identifica las otras computadoras que pueden acceder al recurso (o lo
abre a todas las computadoras) e incluye otras opciones que reflejan los permisos asociados con el directorio.
Recuerde que cuando comparte un directorio, también está compartiendo todos los archivos y
subdirectorios debajo de ese directorio (de forma predeterminada). Debe asegurarse de que desea
compartir todo en esa estructura de directorios. Todavía puede restringir el acceso dentro de esa estructura
de directorios de muchas maneras; estos se discuten más adelante en este capítulo.
Configuración del archivo /etc/exports Para que un
directorio de su sistema Linux esté disponible para otros sistemas, necesita exportar ese directorio. La
exportación se realiza de forma permanente agregando información sobre un directorio exportado al archivo /
etc/exports.
Este es el formato del archivo /etc/exports:
Directorio Host(Opciones...) Host(Opciones...) # Comentarios
En este ejemplo, Directorio es el nombre del directorio que desea compartir y Host indica el equipo
cliente al que se restringe el uso compartido de este directorio.
Las opciones pueden incluir una variedad de opciones para defi nir las medidas de seguridad adjuntas al
directorio compartido para el host. (Puede repetir los pares de host y opción). Los comentarios son
comentarios opcionales que desea agregar (después del signo #).
La página de manual de exportaciones (exportaciones man) contiene detalles sobre la sintaxis
del archivo /etc/exports. En particular, puede ver las opciones que puede usar para limitar el acceso
y asegurar cada directorio compartido.
Como usuario raíz, puede usar cualquier editor de texto para configurar /etc/exports para modificar las entradas del
'
directorio compartido o agregar otras nuevas. Aquí Es un ejemplo de un archivo /etc/exports:
/cal *.linuxtoys.net(rw) /pub # eventos de empresa
*(ro,insecure,all_squash) /home
arce(rw,root_squash) # Public dir
abeto(rw,root_squash)
La entrada /cal representa un directorio que contiene información sobre eventos relacionados con la
'
empresa. Cualquier equipo de la empresa comparte N s FS.
Los u(*.linuxtoys.net)
dominio suarios pueden peuede
scribir
ma rchivos
ontar esoen el
directorio así como leerlos (indicado por la opción rw). El comentario (#Eventos de la empresa) simplemente
sirve para recordarle lo que contiene el directorio.
La entrada /pub representa un directorio público. Permite a cualquier computadora y usuario leer
archivos del directorio (indicado por la opción ro) pero no escribir archivos. La opción insegura permite que
cualquier computadora, incluso una que no use un puerto NFS seguro, acceda al directorio. La opción all
_
squash hace que todos los usuarios
que (UID)
les otorga yp germiso
un rupos (m
GID) se
paara
ínimo signen al usuario
archivos de nadie (UID 65534), lo
y directorios.
504
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
La entrada /home permite que un conjunto de usuarios tengan el mismo directorio /home en diferentes
equipos. Suponga, por ejemplo, que está compartiendo /home desde una computadora llamada oak.
Las computadoras llamadas maple y spruce podrían montar ese directorio en sus propios directorios /home.
Si les dio a todos los usuarios el mismo nombre de usuario/UID en todas las máquinas, podría tener el mismo
directorio /home/usuario disponible para cada usuario, independientemente de la computadora en la que hayan
_ squash
iniciado sesión. La computadora raíz tiene se udsa
privilegios e rpaíz
ara
een
xcluir al usuario
el directorio root de otro
compartido.
Estos son solo ejemplos; puede compartir cualquier directorio que elija, incluido todo el sistema de
archivos (/). Por supuesto, hay implicaciones de seguridad al compartir todo el sistema de archivos o
partes sensibles del mismo (como /etc). Las opciones de seguridad que puede agregar a su archivo /etc/
exports se describen en las secciones siguientes.
Nombres de host en /etc/exports
Puede indicar en el archivo /etc/exports qué equipos host pueden tener acceso a su directorio compartido. Si
desea asociar varios nombres de host o direcciones IP con un directorio compartido en particular, asegúrese
de dejar un espacio antes de cada nombre de host. Sin embargo, no agregue espacios entre un nombre de
host y sus opciones. Aquí hay un ejemplo:
/usr/arce local(rw) picea(ro,root_squash)
Observe que hay un espacio después de (rw) pero ninguno después de maple. Puede identificar hosts de
varias maneras:
Host individual Introduzca uno o más nombres de host TCP/IP o direcciones IP. Si el anfitrión es
en su dominio local, simplemente puede indicar el nombre de host. De lo contrario, utilice el formato
host.domain completo. Estas son formas válidas de indicar equipos host individuales:
arce
arce.handsonhistory.com
10.0.0.11
Red IP Permita el acceso a todos los hosts desde una dirección de red particular indicando un número
de red y su máscara de red, separados por una barra inclinada (/). Estas son formas válidas de
designar números de red:
10.0.0.0/255.0.0.0 172.16.0.0/255.255.0.0
192.168.18.0/255.255.255.0 192.168.18.0/24
Dominio TCP/IP Mediante comodines, puede incluir todos o algunos equipos host de un
nivel de dominio particular. Estos son algunos usos válidos de los comodines asterisco y signo de
interrogación:
*.handsonhistory.com
*craft.handsonhistory.com ???.handsonhistory.com
20
505
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
El primer ejemplo coincide con todos los hosts del dominio handsonhistory.com. El segundo ejemplo
coincide con woodcraft, basketcraft o cualquier otro nombre de host que termine en craft en el dominio
handsonhistory.com. El ejemplo final coincide con cualquier nombre de host de tres letras en el dominio.
Grupos NIS Puede permitir el acceso a hosts contenidos en un grupo NIS. Para indicar un grupo NIS, preceda
el nombre del grupo con un signo de arroba (@) (por ejemplo, @grupo).
Acceda a las opciones en /etc/exports
No tiene que
regalar scus
directorios archivos
uando y un directorio con NFS. En la parte de opciones de cada entrada en /etc/exports,
exporta
puede agregar opciones que permiten o limitan el acceso configurando el permiso de lectura/escritura. Estas opciones,
que se pasan a NFS, son las siguientes:
ro: el cliente puede montar este sistema de archivos exportado en modo de solo lectura. El valor predeterminado es montar el
lectura/escritura del sistema de archivos.
rw: pide explícitamente que un directorio compartido se comparta con permisos de lectura/escritura. (Si
el cliente elige, aún puede montar el directorio como de solo lectura).
Opciones de mapeo de usuarios en /etc/exports
Además de las opciones que defi ne cómo se manejan los permisos en general, puede usar opciones para
establecer los permisos que los usuarios específi cos tienen para los sistemas de archivos compartidos NFS.
Un método que simplifica este proceso es hacer que cada usuario con múltiples cuentas de usuario tenga el
mismo nombre de usuario y UID en cada máquina. Esto facilita la asignación de usuarios para que tengan los
mismos permisos en un sistema de archivos montado que en los archivos almacenados en sus discos duros locales.
Si ese método no es conveniente, las ID de usuario se pueden asignar de muchas otras maneras. Estos son algunos
métodos para configurar los permisos de usuario y la opción /etc/exports que utiliza para cada método:
usuario raíz El usuario raíz del cliente se asigna de forma predeterminada al nombre de usuario nadie.
'
(UID 65534). Esto evita que una computadora cliente s usuario root de poder cambiar
tenga todos los archivos y directorios en el sistema de archivos compartido. Si desea que el usuario root del
cliente tenga permiso de root en el servidor, use la opción no_root_squash.
CONSEJO
Tenga en cuenta que aunque la raíz esté aplastada, el usuario raíz del cliente aún puede convertirse en cualquier otra cuenta de usuario y acceder
a los archivos de esas cuentas de usuario en el servidor. Por lo tanto, asegúrese de confiar en la raíz con todos sus datos de usuario antes de
compartirlos en lectura/escritura con un cliente.
nfsnadie o usuario/grupo de nadie Al usar el ID de usuario y el ID de grupo 65534, esencialmente crea un
usuario/grupo con permisos que no permiten el acceso a archivos que pertenecen a ningún usuario real
en el servidor, a menos que esos usuarios abran permiso para todos . Sin embargo, los archivos creados
por el usuario o grupo 65534 están disponibles para cualquier persona.
506
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
asignado como el usuario o grupo 65534. Para establecer todos los usuarios remotos en el usuario/
grupo 65534, use el _ opción de calabaza.
Los UID y GID 65534 se utilizan para evitar que el ID se encuentre con un ID de usuario o grupo
válido. Usando las opciones anonuid o anongid, puede cambiar el usuario o grupo 65534,
respectivamente. Por ejemplo, anonuid=175 establece todos los usuarios anónimos en UID 175 y
anongid=300 establece el GID en 300. (Solo se muestra el número cuando lista el permiso de archivo
a menos que agregue entradas con nombres a /etc/passwd y /etc /group para los nuevos UID y GID).
Asignación de usuarios Si un usuario tiene cuentas de inicio de sesión para un conjunto de computadoras (y tiene la
mismo ID), NFS, por defecto, mapea ese ID. Esto significa que si el usuario llamado mike (UID 110)
en arce tiene una cuenta en pine (mike, UID 110), puede usar sus propios archivos montados de
forma remota en cualquier computadora desde cualquier computadora.
Si un usuario cliente que no está configurado en el servidor crea un archivo en el directorio NFS
montado, el archivo se asigna al UID y GID del cliente remoto. UID
(Un d
ls
l
peropietario).
el n el servidor muestra el
Exportación de los sistemas de archivos compartidos
Después de agregar entradas a su archivo /etc/exports, ejecute el comando exportfs para exportar esos
directorios (que estén disponibles para otras computadoras en la red).
Reinicie su computadora o reinicie el servicio NFS, y el comando exportfs se ejecutará automáticamente
para exportar sus directorios. Si desea exportarlos inmediatamente, ejecute exportfs desde la línea de
comando (como root).
CONSEJO
Ejecutar el comando exportfs después de cambiar el archivo de exportación es una buena idea. Si hay algún error en el
archivo, exportfs lo identifica por usted.
'
Aquí Es un ejemplo del comando exportfs:
# /usr/sbin/exportfs a r v exportando
arce:/pub exportando abeto:/pub
exportando arce:/casa exportando
abeto:/casa exportando *:/mnt/win
La opción a indica que se deben exportar todos los directorios enumerados en /etc/exports.
El r resincroniza todas las exportaciones con el archivo /etc/exports actual (deshabilitando aquellas exportaciones
que ya no aparecen en el archivo). La opción v dice que se imprima la salida detallada. En este ejemplo, los
directorios /pub y /home del servidor local están inmediatamente disponibles para que los monten las computadoras 20
cliente que se nombran (maple y spruce). El directorio /mnt/win está disponible para todas las computadoras cliente.
507
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Protección de su servidor NFS
La instalación de NFS se creó en un momento en que el cifrado y otras medidas de seguridad no se integraban de
forma rutinaria en los servicios de red (como el inicio de sesión remoto, el uso compartido de archivos y la ejecución
remota). Por lo tanto, NFS (incluso hasta la versión 3) sufre algunos problemas de seguridad bastante evidentes.
Los problemas de seguridad de NFS lo convirtieron en una instalación inapropiada para usar en redes públicas e
incluso dificultaron su uso seguro dentro de una organización. Estos son algunos de los problemas:
Usuarios raíz remotos Incluso con root_squash predeterminado (que evita que los usuarios raíz tengan acceso raíz
a los recursos compartidos remotos), el usuario raíz en cualquier máquina con la que comparta directorios NFS
puede obtener acceso a cualquier otra cuenta de usuario. Por lo tanto, si está haciendo algo como compartir
directorios de inicio con permiso de lectura/escritura, el usuario root en cualquier cuadro con el que esté
compartiendo tiene acceso completo al contenido de esos directorios de inicio.
Comunicaciones no encriptadas Debido a que el tráfico NFS no está encriptado, cualquiera que busque
su red puede ver los datos que se están transfiriendo.
Asignación de usuarios Los permisos predeterminados para los recursos compartidos de NFS se asignan por ID de usuario. Entonces, para
Por ejemplo, un usuario con UID 1000 en un cliente NFS tiene acceso a archivos propiedad de UID 1000
en el servidor NFS. Esto es independientemente de los nombres de usuario utilizados.
Estructura del sistema de archivos expuesta Hasta NFSv3, si compartía un directorio a través de NFS, su
'
expuso la ubicación de ese directorio en el servidor con el que sistema de archivos. (En otras palabras, si
compartió el directorio /var/stuff, los clientes sabrían que /var/stuff era su ubicación exacta en su servidor).
Esa es la mala noticia. La buena noticia es que la mayoría de estos problemas se abordan en NFSv4, pero requieren
una configuración adicional. Al integrar la compatibilidad con Kerberos, NFSv4 le permite configurar el acceso de los
usuarios en función de que cada usuario obtenga un ticket de Kerberos. Para usted, el trabajo extra es configurar un
servidor Kerberos. En cuanto a la exposición de ubicaciones compartidas de NFS, con NFSv4 puede vincular directorios
compartidos a un directorio /exports, de modo que cuando se comparten, la ubicación exacta de esos directorios no se
expone.
Visite https://help.ubuntu.com/community/NFSv4Howto para obtener detalles sobre las características de NFSv4 en
Ubuntu.
En cuanto a las funciones de seguridad estándar de Linux asociadas con NFS, los cortafuegos de iptables, los
contenedores TCP y SELinux pueden desempeñar un papel en la protección y el acceso a su servidor NFS desde
clientes remotos. En particular, lograr que las funciones del cortafuegos funcionen con NFS puede ser particularmente
desafiante. Estas funciones de seguridad se describen en las secciones siguientes.
Apertura de su cortafuegos para NFS El servicio NFS se
basa en varios demonios de servicio diferentes para su funcionamiento normal, y la mayoría de estos demonios escuchan
en diferentes puertos para acceder. Para el NFSv4 predeterminado utilizado en Fedora, los puertos TCP y UDP 2049
(nfs) y 111 (rpcbind) deben estar abiertos para un servidor NFS
508
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
para desempeñarse correctamente. El servidor también debe abrir los puertos TCP y UDP 20048 para
que el comando show mount pueda consultar los directorios compartidos NFS disponibles desde rpc.mountd
en el servidor.
Para RHEL 8, Fedora 30 y otros sistemas que usan el servicio firewalld, puede usar la ventana
Configuración de firewall (yum install firewallconfig) para abrir el firewall para su servicio NFS.
Escriba firewallconfig, luego asegúrese de que mountd, nfs y rpc bind estén marcados en la
ventana para abrir los puertos apropiados para permitir el acceso a su servicio NFS. La Figura 20.3
muestra un ejemplo de esta ventana:
FIGURA 20.3
Utilice la ventana de configuración del cortafuegos para abrir su cortafuegos y permitir el acceso
al servicio NFS.
Para RHEL 6 y otros sistemas que usan el servicio iptables directamente (antes de agregar
'
firewalld), para abrir puertos en el servidor NFS y cs
omenzar
firewall, acsegúrese
on reglas
dqe
de firewall
ue similares
iptables a
esté habilitado
las siguientes agregadas al archivo /etc/sysconfig/iptables:
20
A ENTRADA m estado estado NUEVO m tcp p tcp dport 111 j ACEPTAR
A ENTRADA m estado estado NUEVO m udp p udp dport 111 j ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 2049 j ACEPTAR
509
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
A ENTRADA m estado estado NUEVO m udp p udp dport 2049 j ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 20048 j ACEPTAR
A ENTRADA m estado estado NUEVO m udp p udp dport 20048 j ACEPTAR
En Red Hat Enterprise Linux 6.xy versiones anteriores, el problema del cortafuegos es un poco más
complejo. El problema, en lo que respecta a los cortafuegos, es que varios servicios diferentes están
asociados con NFS que escuchan en diferentes puertos, y esos puertos se asignan aleatoriamente. Para
solucionar ese problema, debe bloquear los números de puerto que usan esos servicios y abrir el firewall
para que esos puertos sean accesibles.
Para facilitar el proceso de bloqueo de los puertos del servidor NFS, se pueden agregar entradas en el
archivo /etc/syscon fig/nfs para asignar números de puerto específicos a los servicios. Los siguientes son
ejemplos de opciones en el archivo /etc/sysconfig/nfs con números de puerto estáticos establecidos:
RCUOTAD_PORT=49001
LOCKD_TCPPORT=49002
LOCKD_UDPPORT=49003
PUERTO_MONTAJE=49004
STATD_PORT=49005
STATD_OUTGOING_PORT=49006
PUERTO_RDMA=49007
Con esos puertos configurados, reinicié el servicio nfs (servicio de reinicio de nfs). Usando el comando
netstat, puede ver los procesos resultantes que están escuchando en esos puertos asignados:
4698/rpc.montado
:::*
:::* 4698/rpc.montado
Con esos números de puerto configurados y siendo utilizados por varios servicios, ahora puede agregar
reglas de iptables, como lo hizo con los puertos 2049 y 111 para el servicio NFS básico.
Permitir acceso NFS en contenedores TCP Para servicios
como vsftpd y sshd, los contenedores TCP en Linux le permiten agregar información a los archivos /etc/
hosts.allow y /etc/hosts.deny para indicar qué hosts pueden o no acceder al servicio. Aunque el propio
demonio del servidor nfsd no está habilitado para contenedores TCP, el servicio rpcbind sí lo está.
Para NFSv3 y versiones anteriores, simplemente agregar una línea como la siguiente al
archivo /etc/hosts.deny denegaría el acceso al servicio rpcbind, pero también denegaría el acceso a su
servicio NFS:
rpcbind: TODOS
510
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
Sin embargo, para los servidores que ejecutan NFSv4 de forma predeterminada, la línea rpcbind: ALL que se
acaba de mostrar evita que los hosts externos obtengan información sobre los servicios RPC (como NFS)
mediante comandos como showmount. Sin embargo, no le impide montar un directorio compartido NFS.
Configurando SELinux para su servidor NFS Con SELinux
configurado como permisivo o deshabilitado, no bloquea el acceso al servicio NFS. Sin embargo, en el modo de
aplicación, debe comprender algunos booleanos de SELinux. Para verificar el estado de SELinux en su sistema,
ingrese lo siguiente:
# hacer cumplir
Hacer cumplir
# grep ^SELINUX= /etc/sysconfig/selinux
SELINUX=hacer cumplir
_ anual de nfs selinux para
Si su sistema está en modo de aplicación, como está aquí, consulte la página del m
obtener información sobre la configuración de SELinux que puede afectar el funcionamiento de su servicio
vsftpd. Aquí hay algunos contextos de archivos de SELinux asociados con NFS que quizás necesite conocer:
nfs_export_all_ro: Con este valor booleano activado, SELinux le permite compartir archivos con permiso de
solo lectura usando NFS. El uso compartido de archivos de solo lectura NFS está permitido con esto
independientemente del contexto de archivo de SELinux establecido en los archivos y directorios
compartidos. nfs_export_all_rw: Con este valor booleano activado, SELinux le permite compartir archivos con
permiso de lectura/escritura mediante NFS. Al igual que con el booleano anterior, esto funciona
independientemente del contexto de archivo establecido en los archivos y directorios compartidos.
use_nfs_home_dirs: para permitir que el servidor NFS comparta sus directorios de inicio a través de
NFS, active este valor booleano.
De los booleanos que acabamos de describir, los dos primeros están activados de forma predeterminada. El
booleano use_nfs_home_dirs está desactivado. Para activar el directorio use_nfs_home_dirs, puede escribir lo
siguiente:
# setsebool P use_nfs_home_dirs en
Sin embargo, puede ignorar todos los valores booleanos relacionados con el uso compartido de archivos NFS
cambiando los contextos de archivo en los archivos y directorios que desea compartir a través de NFS. Los
contextos de archivo public_content_t y public_content_rw_t se pueden configurar en cualquier directorio que desee
compartir a través de NFS (u otros protocolos para compartir archivos, como HTTP, FTP y otros).
Por ejemplo, para configurar la regla para permitir que el directorio /lo que sea y sus subdirectorios se compartan
en lectura/escritura a través de NFS, y luego aplicar esa regla, ingrese lo siguiente:
# semanage fcontext a t public_content_rw_t "/lo que sea(/.*)?" # restaurarcon F R v /lo
que sea
20
511
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Si quisiera permitir que los usuarios solo pudieran leer archivos de un directorio, pero no escribir en él, podría
asignar el contexto de archivo public_content_t al directorio en su lugar.
Uso de sistemas de archivos NFS
Después de que un servidor exporta un directorio a través de la red usando NFS, una computadora cliente
conecta ese directorio a su propio sistema de archivos usando el comando de montaje. Es el mismo comando
que se usa para montar sistemas de archivos desde discos duros locales, DVD y unidades USB, pero con
opciones ligeramente diferentes.
El comando de montaje permite que un cliente monte directorios NFS agregados al archivo /etc/fstab
automáticamente, tal como lo hace con los discos locales. Los directorios NFS también se pueden agregar al
archivo /etc/fstab de tal manera que no se monten automáticamente (para que pueda montarlos manualmente
cuando lo desee). Con una opción noauto, un directorio NFS enumerado en /etc/fstab está inactivo hasta que se
usa el comando de montaje, una vez que el sistema está en funcionamiento, para montar el sistema de archivos.
Además del archivo /etc/fstab, puede configurar las opciones de montaje mediante el archivo /etc/nfs
mount.conf. Dentro de ese archivo, puede establecer opciones de montaje que se aplican a cualquier
directorio NFS que monte o solo aquellos asociados con puntos de montaje específicos o servidores NFS.
Sin embargo, antes de comenzar a montar directorios compartidos de NFS, probablemente desee verificar qué
directorios compartidos están disponibles a través de NFS usando el comando showmount.
Ver recursos compartidos de NFS
Desde un sistema cliente Linux, puede usar el comando showmount para ver qué directorios compartidos
están disponibles desde una computadora seleccionada, como en este ejemplo:
$ showmount e server.example.com /export/
myshare client.example.com /mnt/public
*
El resultado de showmount muestra que el directorio compartido llamado /export/myshare está disponible
solo para el host client.example.com. Sin embargo, el directorio compartido /mnt/public está disponible para
cualquiera.
Montaje manual de un sistema de archivos NFS Después de
saber que el directorio de una computadora en su red ha sido exportado (es decir, está disponible para el
montaje), puede montar ese directorio manualmente usando el comando mount. Esta es una buena manera
de asegurarse de que esté disponible y funcionando antes de configurarlo para que se monte de forma
permanente. El siguiente es un ejemplo de cómo montar el directorio /stuff desde una computadora llamada
maple en su computadora local:
# mkdir /mnt/maple #
montar arce:/cosas /mnt/maple
512
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
El primer comando (mkdir) crea el directorio del punto de montaje. (/mnt es un lugar común para colocar discos
montados temporalmente y sistemas de archivos NFS). El comando mount identifica la computadora remota y el
sistema de archivos compartido, separados por dos puntos (maple:/stuff) y el directorio del punto de montaje local
(/ mnt/arce) sigue.
NOTA
'
Si el montaje falla, asegúrese de que el servicio NFS se esté ejecutando en el servidor y que el servidor Las reglas del cortafuegos no
niegue el acceso al servicio. Desde el servidor, escriba ps ax | grep nfsd para ver una lista de procesos del servidor nfsd.
Si no ve la lista, intente iniciar sus demonios NFS como se describe anteriormente en este capítulo. Para ver las reglas de su cortafuegos,
escriba iptables vnL . De forma predeterminada, el demonio nfsd escucha las solicitudes de NFS en el puerto número 2049. Su
cortafuegos debe aceptar solicitudes de udp en los puertos 2049 ( nfs ) y 111 ( rpc ). En Red Hat Enterprise Linux 6 y versiones anteriores
de Fedora, es posible que deba configurar puertos estáticos para servicios relacionados y luego abrir puertos para esos servicios en el firewall.
Consulte la sección "Asegurar su servidor NFS" anteriormente en este capítulo para revisar cómo superar estos problemas de
seguridad.
Para asegurarse de que se haya realizado el montaje NFS, escriba mount t nfs4. Este comando enumera
todos los sistemas de archivos NFS montados. Aquí hay un ejemplo del comando de montaje y su salida (con los
sistemas de archivos que no son pertinentes a esta discusión editados):
# mount t nfs4
192.168.122.240:/mnt en /mnt/fed tipo nfs4
(rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard, proto=tcp,timeo=600,retrans
=2,seg=sys,direccióncliente=192.168.122.63, bloqueo_local=ninguno,dirección=192.168.122.240)
El resultado del comando mount t nfs4 muestra solo los sistemas de archivos montados desde servidores de
archivos NFS. El sistema de archivos NFS es el directorio /mnt de 192.168.122.240 (192.168.122.240:/mnt).
Está montado en /mnt/fed y su tipo de montaje es nfs4. El sistema de archivos se montó en lectura/escritura (rw),
y la dirección IP de arce es 192.168.122.240 (addr=192.168.122.240). También se muestran muchas otras
configuraciones relacionadas con el montaje, como los tamaños de lectura y escritura de los paquetes y el
número de versión de NFS.
La operación de montaje que se acaba de mostrar monta temporalmente un sistema de archivos NFS en el sistema local.
La siguiente sección describe cómo hacer que el montaje sea más permanente (usando el archivo /etc/
fstab) y cómo seleccionar varias opciones para montajes NFS.
Montaje de un sistema de archivos NFS en el momento del arranque
Para configurar un sistema de archivos NFS para que se monte automáticamente en un punto de montaje
específico cada vez que inicie su sistema Linux, debe agregar una entrada para ese sistema de archivos NFS al
archivo /etc/fstab le. Ese archivo contiene información sobre todos los diferentes tipos de sistemas de archivos
montados (y disponibles para ser montados) para su sistema. 20
'
Aquí s el formato para agregar un sistema de archivos NFS a su sistema local:
513
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
El primer elemento (host:directorio) identifica la computadora del servidor NFS y el directorio compartido.
mountpoint es el punto de montaje local en el que se monta el directorio NFS. Le sigue el tipo de sistema
de archivos (nfs). Cualquier opción relacionada con el montaje aparece a continuación en una lista separada
por comas. (Los dos últimos ceros configuran el sistema para que no descargue el contenido del sistema de
archivos y no ejecute fsck en el sistema de archivos).
Los siguientes son ejemplos de entradas NFS en /etc/fstab:
maple:/stuff /mnt/maple nfs bg,rsize=8192,wsize=8192 0 0 oak:/apps /oak/apps nfs noauto,ro
0 0
En el primer ejemplo, el directorio remoto /stuff de la computadora llamada maple (maple:/stuff) está
montado en el directorio local /mnt/maple (el directorio local ya debe existir). Si el montaje falla porque el
recurso compartido no está disponible, bg hace que el intento de montaje pase al segundo plano y vuelva a
intentarlo más tarde.
El tipo de sistema de archivos es nfs, y los tamaños de búfer de lectura (rsize) y escritura (wsize)
(discutidos en la sección "Uso de las opciones de montaje", más adelante en este capítulo) se establecen
en 8192 para acelerar la transferencia de datos asociada con esta conexión. En el segundo ejemplo, el
directorio remoto es /apps en la computadora llamada oak. Está configurado como un sistema de archivos
NFS (nfs) que se puede montar localmente en el directorio /oak/apps. Sin embargo, este sistema de archivos
no se monta automáticamente (noauto) y solo se puede montar como de solo lectura (ro) usando el comando
de montaje después de que el sistema ya se esté ejecutando.
CONSEJO
El valor predeterminado es montar un sistema de archivos NFS como lectura/escritura. Sin embargo, el valor predeterminado para exportar un sistema de archivos es de solo lectura.
Si no puede escribir en un sistema de archivos NFS, compruebe que se exportó como lectura/escritura desde el servidor.
Montaje de sistemas de archivos
no automáticos Su archivo /etc/fstab también puede contener dispositivos para otros sistemas de archivos
que no se montan automáticamente. Por ejemplo, es posible que tenga varias particiones de disco en su disco
duro o un sistema de archivos compartido NFS que desea montar solo ocasionalmente. Un sistema de archivos
noauto se puede montar manualmente. La ventaja es que cuando escribe el comando de montaje, puede
escribir menos información y hacer que el resto se llene con el contenido del archivo /etc/fstab.
Entonces, por ejemplo, podría escribir
# montar /roble/aplicaciones
Con este comando, mount sabe verificar el archivo /etc/fstab para obtener el sistema de archivos para
montar (oak:/apps), el tipo de sistema de archivos (nfs) y las opciones para usar con el montaje (en este caso
ro , para solo lectura). En lugar de escribir el punto de montaje local (/oak/apps), podría haber escrito el
nombre del sistema de archivos remoto (oak:/apps) y haber completado otra información.
514
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
SUGERENCIA Al nombrar los puntos de montaje, incluir el nombre del servidor NFS remoto en ese nombre puede ayudarlo a
recordar dónde se almacenan realmente los archivos. Es posible que esto no sea posible si comparte directorios de inicio ( /
home ) o directorios de correo ( /var/spool/mail ). Por ejemplo, puede montar un sistema de archivos desde una máquina llamada
pato en el directorio /mnt/duck .
Uso de las opciones
de montaje Puede agregar varias opciones de montaje al archivo /etc/fstab (oa una línea de
comandos de montaje en sí) para influir en cómo se monta el sistema de archivos. Cuando
agrega opciones a /etc/fstab, deben estar separadas por comas. Por ejemplo, aquí se usan las
opciones noauto, ro y hard cuando se monta oak:/apps:
Las siguientes son algunas opciones que son valiosas para montar sistemas de archivos NFS. Puede leer
sobre estas y otras opciones de montaje de NFS que puede colocar en el archivo /etc/fstab desde la página
de manual de nfs (man 5 nfs):
hard Si se usa esta opción y el servidor NFS se desconecta o se cae mientras un proceso está esperando
para acceder a él, el proceso se bloquea hasta que el servidor vuelve a funcionar. Esto es útil si es
fundamental que los datos con los que está trabajando permanezcan sincronizados con los programas
que acceden a ellos. (Este es el comportamiento predeterminado.)
suave Si el servidor NFS se desconecta o deja de funcionar, un proceso que intenta acceder a los datos
del servidor se agota después de un período establecido cuando esta opción está activada. Se envía
un error de entrada/salida al proceso que intenta acceder al servidor NFS.
rsize Este es el tamaño de los bloques de datos (en bytes) que el cliente NFS solicitará cuando lea datos
de un servidor NFS. El valor predeterminado es 1024. El uso de un número mayor (como 8192) le
brinda un mejor rendimiento en una red que es rápida (como una LAN) y está relativamente libre de
errores (es decir, una que no tiene mucho ruido o colisiones). wsize Este es el tamaño
de datos
de los
(en
bbloques
ytes)
que el cliente NFS solicitará que se utilicen cuando esté escribiendo datos en un servidor NFS. El valor
predeterminado es 1024. Los problemas de rendimiento son los mismos que con la opción rsize.
timeo=# Esto establece el tiempo después de que se agote el tiempo de espera de RPC en que se realiza
una segunda transmisión, donde # representa un número en décimas de segundo. El valor
predeterminado es siete décimas de segundo. Cada tiempo de espera sucesivo hace que el valor del
tiempo de espera se duplique (hasta un máximo de 60 segundos). Aumente este valor si cree que se
están produciendo tiempos de espera debido a una respuesta lenta del servidor o una red lenta.
retrans=# Esto establece el número de tiempos de espera menores y retransmisiones que necesitan 20
antes de que ocurra un tiempo fuera mayor.
515
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
retry=# Esto establece cuántos minutos continuar para reintentar las solicitudes de montaje fallidas,
donde # se reemplaza por la cantidad de minutos para volver a intentarlo. El valor predeterminado es 10.000 minutos
(que es aproximadamente una semana).
bg Si se agota el tiempo de espera del primer intento de montaje, intente todos los montajes subsiguientes en el
fondo. Esta opción es muy valiosa si está montando un sistema de archivos NFS lento o disponible
esporádicamente. Cuando coloca solicitudes de montaje en segundo plano, su sistema puede continuar
montando otros sistemas de archivos en lugar de esperar a que se complete el actual.
NOTA
Si falta un punto de montaje anidado, se produce un tiempo de espera para permitir que se agregue el punto de
montaje necesario. Por ejemplo, si monta /usr/trip y /usr/trip/extra como sistemas de archivos NFS y /usr/trip aún no
'
está montado cuando /usr/trip/extra intenta montarse, /usr/trip/extra expira. Si con
utiliza/viaja/monta
suerte, aparece /usr/trip
extra en eyl /próximo
reintento.
Si se agota el tiempo de espera del primer intento de montaje, pruebe los montajes subsiguientes en primer plano.
Este es el comportamiento predeterminado. Use esta opción si es imperativo que el montaje sea exitoso
antes de continuar (por ejemplo, si estaba montando /usr).
No todas las opciones de montaje de NFS deben ir al archivo /etc/fstab. En el lado del cliente, el archivo /etc/
nfsmount.conf se puede configurar para las secciones Mount, Server y Global. En la sección Montaje, puede indicar
qué opciones de montaje se utilizan cuando un sistema de archivos NFS se monta en un punto de montaje particular.
La sección Servidor le permite agregar opciones a cualquier sistema de archivos NFS montado desde un servidor NFS
en particular. Las opciones globales se aplican a todos los montajes NFS de este cliente.
La siguiente entrada en el archivo /etc/nfsmount.conf establece un tamaño de bloque de lectura y escritura de 32
KB para cualquier directorio NFS montado desde el sistema denominado thunder.example.com:
[Servidor "thunder.example.com"] rsize=32k
wtamaño=32k
Para configurar las opciones predeterminadas para todos los montajes de NFS para sus sistemas, puede
_MGlobal
protocolos ount _ descomentar el bloque Opciones de NFS. En ese bloque, puede configurar cosas como
y versiones de NFS, así como velocidades de transmisión y configuraciones de reintento. Aquí hay un ejemplo de un
NFSMount _ Global _ Bloque de opciones:
[ NFSMount_Global_Options ]
# Esto establece la versión predeterminada en NFS 4
Valores predeterminados=4
# Establece el número de veces que se volverá a intentar una solicitud antes de # generar un
tiempo de espera
Retransmitir=2
# Establece la cantidad de minutos antes de volver a intentar un # montaje fallido en 2
minutos
Reintentar=2
516
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
En el ejemplo que se acaba de mostrar, la versión predeterminada de NFS es 4. Los datos se retransmiten
dos veces (2) antes de generar un tiempo de espera. El tiempo de espera es de 2 minutos antes de volver a
intentar una transmisión fallida. Puede anular cualquiera de estos valores predeterminados agregando opciones
de montaje a /etc/fstab o a la línea de comandos de montaje cuando se monta el directorio NFS.
Uso de autofs para montar sistemas de archivos NFS bajo demanda Las mejoras en
la detección automática y el montaje de dispositivos extraíbles significan que puede simplemente insertar o
conectar esos dispositivos para que sean detectados, montados y mostrados.
Sin embargo, para que el proceso de detección y montaje de sistemas de archivos NFS remotos sea más
automático, aún necesita utilizar una función como autofs (abreviatura de sistemas de archivos montados
automáticamente).
La función autofs monta sistemas de archivos de red a pedido cuando alguien intenta usar los sistemas de
archivos. Con la función autofs configurada y activada, puede hacer que cualquier directorio compartido NFS
disponible se monte bajo demanda. Para utilizar la función autofs, debe tener instalado el paquete autofs. (Para
Fedora y RHEL, puede escribir yum install autofs o para Ubuntu o Debian aptget install autofs para instalar el
paquete desde la red).
Montaje automático en el directorio /net
Con autofs habilitado, si conoce el nombre de host y el directorio compartido por otra computadora host,
simplemente cambie (cd) al directorio de montaje de autofs (/net o /var/autofs por defecto). Esto hace que el
recurso compartido se monte automáticamente y sea accesible para usted.
Los siguientes pasos explican cómo activar la función autofs en Fedora o RHEL:
1. En Fedora o RHEL, como usuario root desde una ventana de Terminal, abra el archivo /
etc/auto.master y busque la siguiente línea:
/net hosts
Esto hace que el directorio /net actúe como punto de montaje para los directorios compartidos de NFS
a los que desea acceder en la red. (Si hay un carácter de comentario al comienzo de esa línea,
elimínelo).
2. Para iniciar el servicio autofs en un sistema Fedora 30, RHEL 7 o posterior, escriba lo siguiente como
usuario root:
# systemctl iniciar autofs.servicio
3. En un sistema Fedora 30, RHEL 7 o posterior, configure el servicio autofs para que se reinicie cada
vez que inicie su sistema:
# systemctl habilitar autofs 20
Lo creas o no, eso es todo lo que tienes que hacer. Si tiene una conexión de red a los servidores NFS desde
los que desea compartir directorios, intente acceder a un directorio NFS compartido. Para
517
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Por ejemplo, si sabe que el directorio /usr/local/share se comparte desde la computadora de su red
llamada shuttle, puede hacer lo siguiente:
$ cd /net/lanzadera/
Si esa computadora tiene directorios compartidos que están disponibles para usted, puede cambiar con éxito
a ese directorio.
También puede escribir lo siguiente:
$ ls
usuario
Debería poder ver que el directorio usr es parte de la ruta a un directorio compartido. Si hubiera directorios
compartidos de otros directorios de nivel superior (como /var o /tmp), los vería. Por supuesto, ver cualquiera de
esos directorios depende de cómo esté configurada la seguridad en el servidor.
Intente ir directamente al directorio compartido, como se muestra en este ejemplo:
$ cd /net/shuttle/usr/local/share $ ls info man
música televisión
En este punto, el ls debería revelar el contenido del directorio /usr/local/share en la computadora llamada
shuttle. Lo que puede hacer con ese contenido depende de cómo fue configurado para compartir por el
servidor.
Esto puede ser un poco desconcertante porque no ve ningún archivo o directorio hasta que realmente
intenta usarlos, como cambiar a un directorio montado en la red. El comando ls, por ejemplo, no muestra
nada en un directorio montado en la impresión
red hasta q
due
e qsue
e m
a onta
el
veces edstá
irectorio,
ahí y al
o que pnuede
veces generar la cambie
o. Simplemente
a un directorio montado en la red, o acceda a un archivo en dicho directorio, y autofs se encargará del resto.
En el ejemplo que se muestra, se utiliza el transbordador de nombre de host. Sin embargo, puede usar
cualquier nombre o dirección IP que identifique la ubicación de la computadora del servidor NFS. Por ejemplo,
en lugar de shuttle, podría haber usado shuttle.example.com o una dirección IP como 192.168.0.122.
Automontaje de directorios de inicio
En lugar de simplemente montar un sistema de archivos NFS en el directorio /net, es posible que desee
configurar autofs para montar un directorio NFS específico en una ubicación específica. Por ejemplo, podría
'
configurar un usuario montado desde
s directorio
una mdáquina
e inicio
diferente
de un servidor
cuando cuentralizado
n usuario inicia
que psodría
esión.
ser
Asimismo,
automático
podría usar un mecanismo de autenticación central, como LDAP (como se describe en el Capítulo 11,
"Administración de cuentas de usuario"), para ofrecer cuentas de usuario.
518
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
El siguiente procedimiento ilustra cómo configurar una cuenta de usuario en un servidor NFS y compartir el
directorio de inicio de un usuario llamado joe desde ese servidor para que pueda montarse automáticamente
cuando joe inicie sesión en una computadora diferente. En este ejemplo, en lugar de utilizar un servidor de
autenticación central, se crean cuentas coincidentes en cada sistema.
1. En el servidor NFS ( mynfs.example.com) que proporciona un directorio de inicio de usuario
centralizado para el usuario llamado joe, cree una cuenta de usuario para joe con un directorio
de inicio de /home/shared/joe como nombre. Busque también el número de ID de usuario de joe
en el archivo /etc/passwd (tercer campo) para que pueda compararlo cuando configure una
cuenta de usuario para joe en otro sistema.
# mkdir /home/shared #
useradd c "Joe Smith" d /home/shared/joe joe # grep joe /etc/passwd
joe:x:1000:1000:Joe Smith:/home/shared/joe:/bin /intento
2. En el servidor NFS, exporte el directorio /home/shared/ a cualquier sistema de su
red local (utilizo 192.168.0.* aquí), para que pueda compartir el directorio de inicio de joe y
cualquier otro usuario que cree agregando esta línea al archivo /etc/exports:
# /etc/exporta el archivo para compartir directorios en /home/shared # solo a otros sistemas
en la red 192.168.0.0/24: /home/shared 192.168.0.*(rw,insecure)
NOTA
En el ejemplo de archivo de exportación anterior, la opción insegura permite a los clientes usar puertos por encima del puerto 1024 para realizar
solicitudes de montaje. Algunos clientes de NFS requieren esto porque no tienen acceso a los puertos reservados de NFS.
3. En el servidor NFS, reinicie el servicio del servidor nfs o, si ya se está ejecutando,
puede simplemente exportar el directorio compartido de la siguiente manera:
# exportfs a r v
4. En el servidor NFS, asegúrese de que los puertos apropiados estén abiertos en el cortafuegos.
Consulte la sección "Seguridad de su servidor NFS" anteriormente en este capítulo para obtener más detalles.
5. En el sistema cliente NFS, agregue una entrada al archivo /etc/auto.master que identifique el
punto de montaje donde desea que se monte el directorio NFS remoto y un archivo (de su
elección) donde identificar la ubicación del directorio NFS remoto. Agregué esta entrada al archivo
auto.master:
/inicio/remoto /etc/auto.joe
6. En el sistema cliente NFS, agregue una entrada al archivo que acaba de anotar (/etc/auto.joe
es lo que usé) que contiene una entrada como la siguiente:
José rw mynfs.example.com:/home/compartido/joe 20
7. En el sistema cliente NFS, reinicie el servicio autofs:
# systemctl reiniciar autofs.servicio
519
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
8. En el sistema cliente NFS, cree un usuario llamado joe mediante el comando useradd.
Para esa línea de comando, debe obtener el UID para joe en el servidor (507 en este ejemplo) para que joe en
el sistema cliente sea el propietario de los archivos del directorio de inicio NFS de joe. Cuando ejecuta el
siguiente comando, se crea la cuenta de usuario joe, pero verá un mensaje de error que indica que el directorio
de inicio ya existe (lo cual es correcto):
# useradd u 507 c "Joe Smith" d /home/remote/joe joe # passwd joe Cambio
de contraseña para el usuario joe.
Nueva contraseña: ********
Vuelva a escribir la nueva contraseña: ********
9. En el sistema cliente NFS, inicie sesión como joe. Si todo funciona correctamente,
cuando joe inicie sesión e intente acceder a su directorio principal (/home/remote/
joe), el directorio /home/share/joe debe montarse desde el servidor mynfs.example.com.
El directorio NFS se compartió y se montó como lectura/escritura con el propietario en
el UID 507 (joe en ambos sistemas), por lo que el usuario joe en el sistema local debería
poder agregar, eliminar, cambiar y ver archivos en ese directorio. .
Después de que Joe cierra la sesión (en realidad, cuando deja de acceder al directorio) durante un período de tiempo de
espera (10 minutos, de forma predeterminada), el directorio se desmonta.
Desmontar sistemas de archivos NFS
Después de montar un sistema de archivos NFS, desmontarlo es sencillo. Utilice el comando umount con el
punto de montaje local o el nombre del sistema de archivos remoto. Por ejemplo, hay dos formas de desmontar maple:/
stuff del directorio local /mnt/maple:
# desmontar arce:/cosas #
desmontar /mnt/arce
Cualquiera de las dos formas funciona. Si maple:/stuff se monta automáticamente (a partir de una lista en /etc/fstab), el
directorio se vuelve a montar la próxima vez que inicie Linux. Si fue un montaje temporal (o aparece como noauto en /
etc/fstab), no se vuelve a montar en el momento del arranque.
CONSEJO
El comando es desmontar , no desmontar. Esto es fácil de equivocarse.
Si recibe el mensaje El dispositivo está ocupado cuando intenta desmontar un sistema de archivos, significa que el
desmontaje falló porque se está accediendo al sistema de archivos. Lo más probable es que uno de los directorios en el
sistema de archivos NFS sea el directorio actual de su shell (o el shell de otra persona en su sistema). La otra posibilidad es
que un comando tenga un archivo
520
Machine Translated by Google
Capítulo 20: Configuración de un servidor de archivos NFS
abierto en el sistema de archivos NFS (como un editor de texto). Verifique sus ventanas de Terminal y otros shells, y luego
cd fuera del directorio si está en él, o simplemente cierre las ventanas de Terminal.
Si un sistema de archivos NFS no se desmonta, puede forzarlo (umount f /mnt/maple) o desmontarlo y limpiarlo más
tarde (umount l /mnt/maple). La opción l suele ser la mejor elección porque un desmontaje forzado puede interrumpir
una modificación de archivo que está en curso.
Otra alternativa es ejecutar fuser v mountpoint para ver qué usuarios mantienen abierto su recurso compartido NFS
montado y luego fuser k mountpoint para eliminar todos esos procesos.
Resumen
Network File System (NFS) es uno de los productos de uso compartido de archivos informáticos más antiguos que
existen en la actualidad. Sigue siendo el más popular para compartir directorios de archivos entre sistemas UNIX y Linux.
NFS permite que los servidores designen directorios específicos para ponerlos a disposición de los hosts designados y
luego permite que los sistemas cliente se conecten a esos directorios montándolos localmente.
NFS se puede proteger mediante reglas de cortafuegos (iptables), contenedores TCP (para permitir y denegar el
acceso al host) y SELinux (para confinar cómo los protocolos de intercambio de archivos pueden compartir recursos NFS).
Aunque NFS era intrínsecamente inseguro cuando se creó (los datos se comparten sin cifrar y el acceso de los usuarios es
bastante abierto), las características de la versión 4 de NFS han ayudado a mejorar la seguridad general de NFS.
Este capítulo de NFS es el último de los capítulos de servidor del libro. El Capítulo 21, “Resolución de problemas de
Linux”, cubre una amplia gama de temas de escritorio y servidor, ya que lo ayuda a comprender las técnicas para
solucionar problemas de su sistema Linux.
Ejercicios
Los ejercicios de esta sección lo guiarán a través de tareas relacionadas con la configuración y el uso de un servidor NFS
en Linux. Si es posible, tenga dos sistemas Linux disponibles que estén conectados en una red local. Uno de esos sistemas
Linux actuará como un servidor NFS mientras que el otro será un cliente NFS.
Para aprovechar al máximo estos ejercicios, le recomiendo que no utilice un servidor Linux que ya tenga NFS en
'
funcionamiento. Puede utilizar un servicio NFS que ya se
t ehstá
acer
ejecutando
todos los eyjercicios
compartiendo
aquí sin
recursos.
interrumpir
Consulte el Apéndice B para conocer las soluciones sugeridas.
1. En el sistema Linux que desea utilizar como servidor NFS, instale los paquetes necesarios
para configurar un servicio NFS. 20
2. En el servidor NFS, enumere los archivos de documentación que vienen en el paquete que pro
proporciona el software del servidor NFS.
521
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
3. En el servidor NFS, determine el nombre del servicio NFS e inícielo.
4. En el servidor NFS, verifique el estado del servicio NFS que acaba de iniciar.
5. En el servidor NFS, cree el directorio /var/mystuff y compártalo desde su servidor NFS con los
siguientes atributos: disponible para todos, solo lectura y el usuario raíz en el cliente tiene acceso
raíz al recurso compartido.
6. En el servidor NFS, asegúrese de que todos los hosts puedan acceder al recurso compartido que creó.
abriendo contenedores TCP, iptables y SELinux.
7. En un segundo sistema Linux (cliente NFS), vea los recursos compartidos disponibles desde el
servidor NFS. (Si no tiene un segundo sistema, puede hacerlo desde el mismo sistema).
Si no ve el directorio NFS compartido, vuelva a la pregunta anterior y vuelva a intentarlo.
8. En el cliente NFS, cree un directorio llamado /var/remote y monte temporalmente el directorio /var/
mystuff desde el servidor NFS en ese punto de montaje.
9. En el cliente NFS, desmonte /var/remote, agregue una entrada para que el mismo montaje se realice
automáticamente cuando reinicie (con una opción de montaje bg) y pruebe que la entrada que creó
funciona correctamente.
10. Desde el servidor NFS, copie algunos archivos en el directorio /var/mystuff. Desde el cliente NFS,
asegúrese de que puede ver los archivos recién agregados a ese directorio y asegúrese de que puede
'
t escribir archivos en ese directorio desde el cliente.
522
Machine Translated by Google
CAPÍTULO S
Solución de problemas de Linux
EN ESTE CAPÍTULO
Solución de problemas de los cargadores de arranque
Solución de problemas de inicialización del sistema
Solucionar problemas de empaquetado de software
Comprobación de problemas de interfaz de red
Lidiando con problemas de memoria
Uso del modo de rescate
En
cualquier
está sfuera
usted istema oeperativo
de spacio ecn
omplejo, muchas
disco. Una cosas
aplicación pueden
puede salir
fallar mal.
porque ePl uede
fallar
sistema no atiene
l guardar
un archivo
memoria. porque
El sistema
puede fallar al arrancar correctamente por, bueno, muchas razones diferentes.
En Linux, la dedicación a la apertura y el enfoque en hacer que el software se ejecute con la máxima eficiencia ha
dado lugar a una increíble cantidad de herramientas que puede usar para solucionar todos los problemas imaginables.
De hecho, si el sistema operativo no funciona como le
código
gustaría,
usted
incluso
mismo
tiene
(aunque
la última
no coubro
portunidad
cómo hdacerlo
e reescribir
aquí).el
Este capítulo aborda algunos de los problemas más comunes con los que puede encontrarse en un sistema Linux y
describe las herramientas y los procedimientos que puede utilizar para superar esos problemas. Los temas se
desglosan por áreas de solución de problemas, como el proceso de arranque, los paquetes de software, las redes,
los problemas de memoria y el modo de rescate.
Solución de problemas de arranque
Antes de que pueda comenzar a solucionar los problemas de un sistema Linux en ejecución, ese sistema debe iniciarse.
Para que un sistema Linux arranque, tienen que pasar una serie de cosas. Un sistema Linux instalado directamente
en una computadora con arquitectura de PC sigue los siguientes pasos para arrancar:
■ Encender la alimentación ■
Iniciar el hardware (desde BIOS o fi rmware UEFI) ■ Encontrar la
ubicación del cargador de arranque e iniciarlo
523
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
■ Elegir un sistema operativo desde el cargador de
arranque ■ Iniciar el kernel y el disco RAM inicial para el sistema operativo
seleccionado ■ Iniciar el proceso de inicialización (init o systemd) ■ Iniciar todos los
servicios asociados con el nivel de actividad seleccionado (nivel de ejecución o destino
predeterminado )
Las actividades exactas que ocurren en cada uno de estos puntos han sufrido una transformación en los últimos
años. Los cargadores de arranque están cambiando para adaptarse a nuevos tipos de hardware. El proceso de
inicialización está cambiando para que los servicios puedan iniciarse de manera más eficiente, en función de las
dependencias y en reacción al estado del sistema (como qué hardware está conectado o qué archivos existen) en
lugar de un orden de arranque estático.
La solución de problemas del proceso de arranque de Linux comienza cuando enciende su computadora y
finaliza cuando todos los servicios están en funcionamiento. En ese momento, por lo general, un indicador de
inicio de sesión gráfico o basado en texto está disponible desde la consola, listo para que inicie sesión.
Después de leer las breves descripciones de los métodos de inicio, vaya a la sección "Comenzar desde el fi
rmware (BIOS o UEFI)" para comprender qué sucede en cada etapa del proceso de inicio y dónde puede necesitar
solucionar problemas. Debido a que la estructura general del proceso de inicio de Linux es la misma para los tres
sistemas Linux presentados aquí (Fedora, RHEL y Ubuntu), revisaré el proceso de inicio solo una vez, pero
describiré las diferencias entre ellos a medida que avance. .
Comprensión de los métodos de inicio Depende de la
distribución individual de Linux cómo se inician los servicios asociados con el sistema Linux en ejecución.
Después de que el gestor de arranque inicia el kernel, el proceso de inicialización administra el resto de las
actividades (montaje de sistemas de archivos, configuración de opciones del kernel, ejecución de servicios, etc.).
Mientras describo el proceso de arranque, me concentro en dos tipos diferentes de inicialización: System V init
y systemd.
Comenzar con scripts de inicio de System
V La función de inicio de System V consiste en el proceso de inicio (el primer proceso que se ejecuta después del
propio kernel), un archivo /etc/inittab que dirige todas las actividades de inicio y un conjunto de scripts de shell que
inicia cada uno de los servicios individuales. Las primeras versiones de Fedora, y hasta RHEL 5, usaban el proceso
System V init. RHEL 6 contiene una especie de híbrido de System V init, con el propio proceso de inicio reemplazado
por el proceso de inicio Upstart.
System V init se desarrolló para UNIX System V en AT&T a mediados de la década de 1980, cuando los
sistemas UNIX incorporaron por primera vez la puesta en marcha de las interfaces de red y los servicios
conectados a ellas. Ha sido suplantado solo durante la última década por Upstart y systemd para adaptarse mejor
a las demandas de los sistemas operativos modernos.
En System V init, los conjuntos de servicios se asignan a lo que se conoce como niveles de ejecución. Por
ejemplo, el nivel de ejecución multiusuario puede iniciar servicios básicos del sistema, interfaces de red,
524
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
y servicios de red. El modo de usuario único inicia lo suficiente del sistema Linux básico para que alguien pueda iniciar
sesión desde la consola del sistema sin iniciar interfaces o servicios de red.
Después de que un sistema System V init esté en funcionamiento, puede usar comandos como reiniciar, apagar e init para
cambiar los niveles de ejecución. Puede usar comandos como service y chkconfig para iniciar/detener servicios individuales
21
o habilitar/deshabilitar servicios, respectivamente.
Los scripts de inicio de System V están configurados para ejecutarse en un orden específi co, y cada script debe
completarse antes de que pueda comenzar el siguiente. Si un servicio falla, no existe ninguna disposición para que ese
servicio se reinicie automáticamente. Por el contrario, systemd fue diseñado para abordar estas y otras deficiencias de inicio
de System V.
Comenzando con systemd La
instalación de systemd se está convirtiendo rápidamente en el presente y el futuro del proceso de inicialización para
muchos sistemas Linux. Fue adoptado en Fedora 15 y en RHEL 7 y reemplazó a Upstart en Debian y Ubuntu 15.04.
Aunque systemd es más complejo que System V init, también ofrece muchas más funciones, como estas:
Objetivos En lugar de niveles de ejecución, systemd se centra en los objetivos. Un objetivo puede iniciar un conjunto
de servicios, así como crear o iniciar otros tipos de unidades (como montajes de directorio, sockets, áreas de
intercambio y temporizadores).
Compatibilidad con System V Hay objetivos que se alinean con los niveles de ejecución de System V, si está
acostumbrado a manejar niveles de ejecución. Por ejemplo, graphical.target se alinea con el nivel de ejecución 5,
mientras que multiuser.target es esencialmente el nivel de ejecución 3. Sin embargo, hay muchos más objetivos
que niveles de ejecución, lo que le brinda la oportunidad de administrar conjuntos de unidades con mayor precisión.
Del mismo modo, systemd admite scripts y comandos de inicio de System V, como chkconfig y service para
manipular esos servicios si los servicios de inicio de System V están instalados.
Inicio basado en dependencias Cuando el sistema se inicia, puede iniciarse cualquier servicio en el destino
predeterminado ( graphical.target para escritorios y multiuser.target para la mayoría de los servidores) que haya
cumplido con sus dependencias. Esta función puede acelerar el proceso de inicio al garantizar que un solo servicio
detenido no detenga el inicio de otros servicios si no necesitan el servicio detenido.
Uso de recursos Con systemd, puede usar cgroups para limitar la cantidad de recursos de su sistema que consume
un servicio. Por ejemplo, puede limitar la cantidad de memoria, CPU u otros recursos que puede consumir un
servicio completo, por lo que un proceso que se escapa o un servicio que genera una cantidad irrazonable de
procesos secundarios no puede consumir más de lo que permite el servicio completo.
Cuando se inicia un sistema Linux habilitado para systemd, el primer proceso en ejecución (PID 1) es el demonio
systemd (en lugar del demonio init). Posteriormente, el comando principal para administrar los servicios systemd es el
comando systemctl. La gestión de los mensajes de diario (registro) de systemd se realiza con el comando journalctl.
También tiene la capacidad de usar los comandos de inicio de System V de estilo antiguo, como init, poweroff, reboot,
runlevel y shutdown para administrar los servicios.
525
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
A partir del fi rmware (BIOS o UEFI )
Cuando enciende físicamente una computadora, se carga el firmware para inicializar el hardware y encontrar un sistema
operativo para arrancar. En las arquitecturas de PC, ese fi rmware se conoce tradicionalmente como BIOS (Sistema básico de
entrada y salida). En los últimos años, un nuevo tipo de fi rmware llamado UEFI (Interfaz de firmware extensible unificada) ha
estado disponible para reemplazar el BIOS en algunas computadoras. Los dos son mutuamente exclusivos.
UEFI se diseñó para permitir una función de arranque seguro, que se puede usar para garantizar que solo los sistemas
operativos cuyos componentes se hayan firmado se puedan usar durante el proceso de arranque. UEFI aún se puede usar
con sistemas operativos no firmados al deshabilitar la función de arranque seguro.
Para Ubuntu, el arranque seguro se admitió por primera vez en 12.04.2. RHEL 7 y versiones posteriores también admiten
oficialmente el arranque seguro. El trabajo principal del fi rmware BIOS y UEFI es inicializar el hardware y luego transferir el
control del proceso de arranque a un cargador de arranque. El cargador de arranque luego encuentra e inicia el sistema
operativo. Después de instalar un sistema operativo, normalmente debe dejar que el fi rmware haga su trabajo y no interrumpirlo.
Sin embargo, hay ocasiones en las que desea interrumpir el fi rmware. Para esta discusión, nos enfocamos en cómo
funciona BIOS en general. Inmediatamente después de encender, debería ver una pantalla de BIOS que generalmente incluye
algunas palabras que indican cómo ingresar al modo de configuración y cambiar el orden de inicio. Si presiona la tecla de
función indicada (a menudo F1, F2 o F12) para elegir uno de esos dos elementos, esto es lo que puede hacer:
Utilidad de configuración La utilidad de configuración le permite cambiar la configuración en el BIOS. Estas
configuraciones se pueden usar para habilitar o deshabilitar ciertos componentes de hardware o activar o desactivar
funciones de hardware seleccionadas.
Orden de inicio Las computadoras pueden iniciar un sistema operativo o más
específicamente, un cargador de arranque que puede iniciar un sistema operativo, desde varios dispositivos
diferentes conectados a la computadora. Esos dispositivos pueden incluir una unidad de CD, una unidad de DVD,
un disco duro, un controlador USB o una tarjeta de interfaz de red. El orden de arranque defi ne el orden en que se
comprueban esos dispositivos. Al modificar el orden de inicio, puede indicarle a la computadora que ignore
temporalmente el orden de inicio predeterminado e intente iniciar desde el dispositivo que seleccione.
Para mi estación de trabajo Dell, después de ver la pantalla del BIOS, presiono inmediatamente la tecla de función F2 para
ingresar a Configuración o F12 para cambiar el orden de arranque temporalmente. Las siguientes secciones exploran lo que
puede solucionar desde las pantallas Configuración y Orden de inicio.
Solución de problemas de configuración
del BIOS Como ya señalé, normalmente puede dejar que el BIOS se inicie sin interrupción y hacer que el sistema se inicie
en el dispositivo de inicio predeterminado (probablemente el disco duro). Sin embargo, aquí hay algunos casos en los que es
posible que desee ingresar al modo de configuración y cambiar algo en el BIOS:
Para ver una descripción general de su hardware Si su problema de solución de problemas está relacionado con el
hardware, la configuración del BIOS es un excelente lugar para comenzar a examinar su sistema. La puesta en marcha
526
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
pantalla le dice el tipo de sistema, su versión de BIOS, sus procesadores, sus ranuras y tipos de memoria,
si es de 32 bits o de 64 bits, qué dispositivos hay en cada ranura y muchos detalles sobre los tipos de
dispositivos conectados a la sistema.
'
Si puede, la Para arrancar un sistema operativo, la pantalla de configuración del BIOS puede estar
única forma de determinar el modelo del sistema, el tipo de procesador y otra información 21
tú Necesitaré buscar ayuda o llamar para obtener soporte.
Para deshabilitar/habilitar un dispositivo La mayoría de los dispositivos conectados a su computadora están
habilitados y disponibles para que los use el sistema operativo. Para solucionar un problema, es posible
que deba desactivar un dispositivo.
Por ejemplo, supongamos que su computadora tiene dos tarjetas de interfaz de red (NIC).
Quiere usar la segunda NIC para instalar Linux a través de una red, pero el instalador sigue intentando
usar la primera NIC para conectarse a la red. Puede deshabilitar la primera NIC para que el instalador ni
siquiera la vea cuando intente conectarse a la red.
O bien, puede mantener la NIC visible para la computadora pero simplemente deshabilitar la capacidad de la NIC para
el arranque PXE.
Tal vez tenga una tarjeta de audio y desee desactivar el audio integrado en la placa base. Eso también
se puede hacer en el BIOS. Por el contrario, a veces desea habilitar un dispositivo que ha sido
deshabilitado. Quizás le dieron una computadora que tenía un dispositivo deshabilitado en el BIOS. Desde
el sistema operativo, por ejemplo, puede parecer que no tiene puertos USB frontales o una unidad de CD.
Mirar el BIOS le dice sen
i esos
el BdIOS.
ispositivos no están disponibles simplemente porque se han desactivado
Para cambiar la configuración de un dispositivo A veces, la configuración predeterminada que viene en su
BIOS no funciona para su situación. Es posible que desee cambiar las siguientes configuraciones en el
BIOS:
Configuración de arranque de NIC PXE La mayoría de las NIC modernas pueden arrancar desde servidores
encontrado en la red. Si necesita hacer eso y descubre que la NIC no aparece como un dispositivo
de inicio en la pantalla Orden de inicio, es posible que deba habilitar esa función en el BIOS.
Configuración de virtualización Si desea ejecutar un sistema Linux como host virtual, la CPU de la
computadora debe incluir tecnología virtual Intel o compatibilidad con Máquina virtual segura (SVM)
de AMD. Sin embargo, es posible que incluso si su CPU viene con este soporte, no esté habilitado
en el BIOS. Para habilitarlo, vaya a la pantalla de configuración del BIOS y busque una selección de
virtualización (posiblemente en la categoría Rendimiento). Asegúrese de que esté activado.
Solución de problemas del orden
de inicio Según el hardware conectado a su computadora, un orden de inicio típico podría iniciar primero una
unidad de CD/DVD, luego el disco duro, luego un dispositivo USB y finalmente la tarjeta de interfaz de red. El
BIOS iría a cada dispositivo, buscando un cargador de arranque en el registro de arranque maestro del dispositivo.
Si el BIOS encuentra un cargador de arranque, lo inicia. Si no se encuentra ningún cargador de arranque, el BIOS
pasa al siguiente dispositivo hasta que se prueben todos. Si no se encuentra un cargador de arranque, la computadora
no puede arrancar.
527
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Un problema que podría ocurrir con el orden de inicio es que el dispositivo que desea iniciar no aparezca en absoluto
en el orden de inicio. En ese caso, ir a la pantalla Configuración, como se describe en la sección anterior, ya sea para
habilitar el dispositivo o cambiar una configuración para que sea de arranque, puede ser lo que debe hacer.
Si el dispositivo desde el que desea iniciar aparece en el orden de inicio, normalmente solo tiene que mover la tecla
de flecha para resaltar el dispositivo que desea y presionar Entrar. Las siguientes son razones para seleccionar su
propio dispositivo para arrancar:
Modo de rescate Si Linux no arranca desde el disco duro, seleccionar la unidad de CD o una unidad USB le
permite arrancar en un modo de rescate (descrito más adelante en este capítulo) que puede ayudarlo a
reparar el disco duro en un sistema que no puede arrancar. Consulte la sección "Resolución de problemas
en el modo de rescate" más adelante en este capítulo para obtener más información.
Instalación nueva A veces, el orden de arranque incluye el disco duro en primer lugar. Si decide que necesita
realizar una instalación nueva del sistema operativo, debe seleccionar el dispositivo de inicio que contiene
su medio de instalación (CD, DVD, unidad USB o NIC).
Suponiendo que supere cualquier problema que tenga con el BIOS, el siguiente paso es que el BIOS inicie el
cargador de arranque.
Solución de problemas del cargador de arranque GRUB
Normalmente, el BIOS encuentra el registro de arranque maestro en el primer disco duro y comienza a cargar ese
cargador de arranque por etapas. El Capítulo 9,
que
"Instalación
se usa con
de lL
a
inux",
mayoría
describe
de los
esl istemas
cargador
Linux
de arranque
modernos,
GRUB
incluidos
RHEL, Fedora y Ubuntu. El cargador de arranque GRUB en RHEL 6, que se describe aquí, es una versión anterior
al cargador de arranque GRUB 2 incluido con RHEL 7 y versiones posteriores, Fedora y Ubuntu. (Más adelante en
este capítulo, también le presentaré el cargador de arranque GRUB 2).
En esta discusión, estoy interesado en el cargador de arranque desde la perspectiva de qué hacer si el cargador
de arranque falla o de qué formas podría querer interrumpir el cargador de arranque para cambiar el comportamiento
del proceso de arranque.
El cargador de arranque GRUB Legacy
Aquí hay algunas formas en que el cargador de arranque puede fallar en RHEL 6 y algunas formas en que puede
superar esas fallas:
No se pudo ubicar la partición activa Cuando se instala un cargador de arranque en un almacenamiento
medio, la partición suele estar marcada como de arranque. Si ve este mensaje, significa que no se
encontró ninguna partición de arranque. Si está seguro de que el cargador de arranque está en el disco,
intente usar el comando fdisk (probablemente desde un medio de rescate) para hacer que la partición sea
de arranque y vuelva a intentarlo. Consulte la sección "Particionamiento de discos duros" del Capítulo 12,
"Administración de discos y sistemas de archivos", para obtener más información sobre el comando fdisk.
El dispositivo de inicio seleccionado no está disponible Es posible que vea un mensaje como este cuando el
registro de inicio maestro se eliminó del disco duro, o puede ser simplemente que
528
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
el contenido del disco duro espera cargarse desde otro cargador de arranque, como un CD de arranque.
Primero, intente ver si el sistema se iniciará desde otros medios. Si resulta que el registro de inicio maestro se
borró, puede intentar iniciar el medio de rescate para intentar recuperar el contenido del disco. Sin embargo,
si se pierde el registro de arranque maestro, es posible que otros datos del disco también se borren o requieran
análisis forense del disco para encontrarlos. Si simplemente se sobrescribió el registro de arranque maestro 21
(lo que podría suceder si instaló otro sistema operativo en una partición de disco diferente), es posible que se
pueda volver a instalar el registro de arranque maestro desde el modo de rescate (descrito en la sección
"Resolución de problemas en el modo de rescate" más adelante en este capítulo).
Aparece un indicador de GRUB basado en texto Es posible que el BIOS inicie GRUB y vaya directamente a
un indicador de GRUB sin selecciones de sistema operativo disponibles. Esto probablemente signifique
que se encontró la parte del registro de arranque maestro de GRUB, pero cuando GRUB buscó en el disco
duro para encontrar la siguiente etapa del proceso de arranque y un menú de sistemas operativos para
cargar, no pudo encontrarlos. A veces, esto sucede cuando el BIOS detecta los discos en el orden incorrecto
y busca el archivo grub.conf en la partición incorrecta.
Una solución a este problema, asumiendo que grub.conf está en la primera partición del primer disco, es listar
el contenido de este archivo e ingresar las líneas raíz, kernel e initrd manualmente. Para enumerar el archivo,
ingrese cat (hd0,0)/grub/grub.conf.
Si eso no funciona, intente hd0,1 para acceder a la siguiente partición en ese disco (y así sucesivamente)
o hd1,0 para probar la primera partición del siguiente disco (y así sucesivamente). Cuando encuentre las
líneas que representan el archivo grub.conf, escriba manualmente las líneas root, kernel e initrd para la
entrada que desea (reemplazando la ubicación del disco duro que encontró en la línea raíz) y luego escriba
boot . El sistema debería iniciarse y usted puede reparar manualmente los archivos del cargador de arranque.
Consulte el Capítulo 9 para obtener más información sobre el cargador de arranque GRUB.
Si el BIOS encuentra el cargador de arranque en el registro de arranque maestro del disco y ese cargador de arranque
encuentra los archivos de configuración de GRUB en el disco, el cargador de arranque inicia una cuenta regresiva de
unos segundos, según lo determine el valor de tiempo de espera en / boot/grub/grub.conf (son 5 segundos
6).
eDn
urante
RHEL
esa cuenta regresiva, puede interrumpir el cargador de arranque (antes de que arranque el sistema operativo
predeterminado) presionando cualquier tecla.
Cuando interrumpa el cargador de arranque, debería ver un menú de entradas disponibles para arrancar.
Esas entradas pueden representar diferentes núcleos disponibles para arrancar. Sin embargo, también pueden
representar sistemas operativos totalmente diferentes (como Windows, BSD o Ubuntu).
Aquí hay algunas razones para interrumpir el proceso de inicio desde el menú de inicio para solucionar
problemas de Linux:
Para comenzar en un nivel de ejecución diferente, los sistemas RHEL 6 generalmente comienzan en el nivel de
ejecución 3 (inicio desde el indicador de texto) o 5 (inicio desde la interfaz gráfica). Puede anular el nivel de
ejecución predeterminado resaltando la línea del kernel en el menú de inicio y colocando un número de nivel
de ejecución diferente al final. Para hacer esto, resalte la entrada del sistema operativo que desea,
529
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
escriba e, resalte el núcleo, escriba e y agregue el nuevo nivel de ejecución al final de la línea (por
ejemplo, agregue un espacio y el número 1 para pasar al modo de usuario único). Luego presione
Entrar y escriba b para iniciar la nueva entrada.
¿Por qué iniciaría en diferentes niveles de ejecución para la resolución de problemas? El nivel de
ejecución 1 omite la autenticación, por lo que arranca directamente en un indicador de raíz. Esto es
bueno si ha olvidado la contraseña de root y necesita cambiarla (escriba passwd para hacerlo). Ejecutar
el nivel 3 pasa por alto el inicio de la interfaz de su escritorio. Vaya al nivel de ejecución 3 si tiene
problemas con su controlador de video y desea intentar depurarlo sin que intente iniciar la interfaz
gráfica automáticamente.
Para seleccionar un kernel diferente Cuando RHEL instala un kernel nuevo, siempre conserva al
menos un kernel anterior. Si el nuevo kernel falla, siempre puede iniciar el kernel anterior, que
probablemente funcione. Para iniciar un kernel diferente desde el menú de GRUB, solo use la
tecla de flecha para resaltar el que desea y presione Entrar para iniciarlo.
Para seleccionar un sistema operativo diferente Si tiene otro sistema operativo instalado en su disco
duro, puede seleccionar iniciar ese en lugar de RHEL. Por ejemplo, si tiene Fedora y RHEL en la
misma computadora, y RHEL no funciona, puede iniciar Fedora, montar los sistemas de archivos
RHEL que necesita e intentar solucionar el problema.
Para cambiar las opciones de arranque En la línea del núcleo, observe que hay muchas opciones
siendo pasado al núcleo. Como mínimo, esas opciones deben contener el nombre del núcleo (como
vmlinuz2.6.32.el6.x86_64) y la partición que contiene el sistema de archivos raíz (como /dev/mapper/
abcroot). Si lo desea, puede agregar otras opciones a la línea del kernel.
Es posible que desee agregar opciones de kernel para agregar características al kernel o
deshabilitar temporalmente el soporte de hardware para un componente en particular. Por ejemplo,
agregar init=/bin/bash hace que el sistema omita el proceso de inicio y vaya directamente a un shell
(similar a ejecutar init 1). En RHEL 7, no se admite agregar 1 como opción de kernel, por lo que init=/
bin/bash es la mejor manera de entrar en una especie de modo de usuario único.
Agregar nousb deshabilitaría temporalmente los puertos USB (presumiblemente para asegurarse de
que todo lo conectado a esos puertos también se deshabilitaría).
Suponiendo que haya seleccionado el kernel que desea, el cargador de arranque intenta ejecutar el kernel,
incluido el contenido del disco RAM inicial (que contiene controladores y otro software necesario para
arrancar su hardware en particular).
Cargador de arranque GRUB 2
Las técnicas para solucionar problemas de Linux desde el indicador de arranque de GRUB 2 son similares
a las del indicador de arranque de GRUB heredado. Siga estas instrucciones para interrumpir el indicador de
inicio de GRUB para los sistemas Fedora, RHEL y Ubuntu más recientes:
1. Después de encender la computadora y justo después de ver la pantalla del BIOS, presione cualquier
tecla (como la flecha hacia arriba). Debería ver varios elementos de menú que representan diferentes
núcleos para arrancar.
530
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
2. De las entradas disponibles, el valor predeterminado es iniciar el último kernel disponible, que debe
estar resaltado y listo para iniciar. Sin embargo, puede elegir una entrada diferente si se aplica alguna
de las siguientes situaciones: ■ El kernel actual no funciona y desea elegir un kernel más antiguo que
sabe que funciona. ■ Quiere ejecutar una entrada que represente un sistema operativo totalmente
diferente 21
que está instalado en su disco. ■
Quiere ejecutar un kernel de rescate.
3. Suponiendo que desea ejecutar un kernel de Linux, resalte el kernel que desea (usando
flechas arriba y abajo) y escriba e. Verá los comandos que se ejecutan para iniciar el sistema, como
se muestra en la Figura 21.1.
FIGURA 21.1
Interrumpa el cargador de arranque GRUB para modificar el proceso de arranque.
4. Para agregar argumentos al núcleo, mueva el cursor al final de la línea que comienza con "linux" y
escriba los argumentos que desee. Consulte https://www.kernel.org/doc/Documentation/adminguide/
kernelparameters.txt para obtener una lista de parámetros del kernel. Aquí hay dos ejemplos:
■ selinux: si hay un problema con SELinux que inutiliza su sistema,
puede desactivarlo de la siguiente manera:
selinux=0
■ smt: los subprocesos múltiples simultáneos (smt) permiten que un único núcleo de CPU ejecute
varios subprocesos. Para corregir algunas fallas del microprocesador, debe desactivar esa
función. Puede hacerlo en el momento del arranque pasando el argumento smt=1 o nosmt en la
línea de comandos del kernel.
5. Una vez que haya terminado de agregar argumentos, presione Ctrlx para iniciar el sistema con el
argumentos del núcleo que agregó.
531
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Iniciando el núcleo
Después de que se inicia el núcleo, no hay mucho que hacer, excepto estar atento a posibles problemas.
Para RHEL, verá una pantalla de Red Hat Enterprise Linux con un icono que gira lentamente. Si desea ver los
mensajes que detallan el proceso de arranque, presione la tecla Esc.
En este punto, el núcleo intenta cargar los controladores y módulos necesarios para usar el hardware en la
computadora. Lo principal que debe buscar en este punto (aunque es posible que se desplace rápidamente) son
fallas de hardware que pueden impedir que algunas funciones funcionen correctamente.
Aunque es mucho más raro de lo que solía ser, es posible que no haya un controlador disponible para una
pieza de hardware o que se cargue el controlador incorrecto y provoque errores.
Además de desplazarse por la pantalla, los mensajes producidos cuando se inicia el kernel se copian en el
búfer de anillo del kernel. Como su nombre lo indica, el búfer de anillo del núcleo almacena los mensajes del
núcleo en un búfer y descarta los mensajes más antiguos una vez que el búfer está lleno. Después de que la
computadora arranque por completo, puede iniciar sesión en el sistema e ingresar el siguiente comando para
capturar estos mensajes del kernel en un archivo (luego verlos con el comando less):
# dmesg > /tmp/kernel_msg.txt # menos /
tmp/kernel_msg.txt
Me gusta dirigir los mensajes del kernel a un archivo (elija el nombre que desee) para que los mensajes puedan
examinarse más tarde o enviarse a alguien que pueda ayudar a solucionar cualquier problema. Los mensajes
aparecen a medida que se detectan componentes, como su CPU, memoria, tarjetas de red, discos duros, etc.
En los sistemas Linux que admiten systemd, los mensajes del kernel se almacenan en el diario de systemd.
Entonces, además del comando dmesg, también puede ejecutar journalctl para ver los mensajes del kernel
desde el momento del arranque hasta el presente. Por ejemplo, estos son los mensajes del núcleo generados por
un sistema RHEL 7:
# diarioctl k
Los registros comienzan el sábado 20191123 10:36:31 EST,
finaliza el dom 20191208 08:09:42 EST.
23 de noviembre 10:36:31 kernel rhel81: versión de Linux 4.18.0147.0.3.el8_1.x86_64
(mockbuild@x86vm09.build.eng.bos.redhat.com)
(gcc versión 8.3.1 20190507 (Red Hat 8.3.14)
(GCC)) #1 SMP lunes 11 de noviembre 12:58:36 UTC 2019 23 de
noviembre 10:36:31 rhel81 kernel: Línea de comando:
BOOT_IMAGE=(hd0,msdos1)/vmlinuz4.18.0147.0.3.el8_1.x86_64 root=/dev/mapper/
rhelroot ro resume=/dev/mapper/rhelswap rd.lvm.lv=rhel/ root rd.lvm.lv=rhel/swap
rhgb silencioso
...
23 de noviembre 10:36:31 kernel rhel81: hipervisor detectado: KVM 23 de
noviembre 10:36:31 kernel rhel81: kvmclock: usando msrs 4b564d01 ...
Lo que desea buscar son controladores que no se cargan o mensajes que muestran que ciertas características
del hardware no se habilitan. Por ejemplo, una vez tuve una tarjeta sintonizadora de TV (para ver la televisión en
la pantalla de mi computadora) que configuró el tipo de sintonizador incorrecto para la tarjeta que se detectó.
Usando información sobre el número de modelo de la tarjeta de TV y el tipo de falla, encontré
532
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
que pasar una opción al controlador de la tarjeta me permitió probar diferentes configuraciones hasta encontrar
la que coincidía con mi tarjeta sintonizadora.
Al describir cómo ver los mensajes de inicio del núcleo, me he adelantado un poco.
Antes de que pueda iniciar sesión y ver los mensajes del kernel, el kernel debe terminar de abrir el sistema. Tan
pronto como el kernel termina de detectar inicialmente el hardware y cargar los controladores, pasa el control de
21
todo lo demás que debe hacerse para iniciar el sistema en el sistema de inicialización.
Resolución de problemas del sistema de
inicialización El primer proceso que se ejecuta en un sistema en el que el kernel acaba de iniciarse depende de
la función de inicialización que esté utilizando el sistema. Para System V init, el primer proceso que se ejecuta
es el proceso init. Para systemd, el primer proceso es systemd. Según lo que vea ejecutándose en su sistema
(escriba ps ef | head para verificar), siga las descripciones de System V o systemd a continuación. RHEL 6, que
contiene un híbrido de Upstart y System V init, se usa en el ejemplo de inicialización de System V.
Solución de problemas de inicialización de
System V Hasta hace algunos años, la mayoría de los sistemas Linux usaban System V init para inicializar los
servicios en el sistema Linux. En RHEL 6, cuando el kernel entrega el control del proceso de inicio al proceso init,
el proceso init verifica el archivo /etc/inittab para obtener instrucciones sobre cómo iniciar el sistema.
El archivo inittab le dice al proceso de inicio cuál es el nivel de ejecución predeterminado y luego apunta a
archivos en el directorio /etc/init para hacer cosas como reasignar algunas pulsaciones de teclas (como
Ctrl+Alt+Supr para reiniciar el sistema), iniciar virtual consolas e identifique la ubicación del script para inicializar
los servicios básicos en el sistema: /etc/rc.sysinit.
'
Cuando los volver a solucionar problemas de Linux que ocurren después de que el proceso init se hace cargo,
dos posibles culpables son el procesamiento del archivo rc.sysinit y los scripts de nivel de ejecución.
Solución de problemas de
rc.sysinit Como su nombre lo indica, el script /etc/rc.sysinit inicializa muchas funciones básicas del sistema.
Cuando init ejecuta ese archivo, rc.sysinit configura el nombre de host del sistema, configura los sistemas de
archivos /proc y /sys, configura SELinux, configura los parámetros del kernel y realiza docenas de otras acciones.
Una de las funciones más críticas de rc.sysinit es configurar el almacenamiento en el sistema. De hecho,
si el proceso de inicio falla durante el procesamiento de rc.sysinit, es muy probable que el script no haya podido
encontrar, montar o descifrar los dispositivos de almacenamiento locales o remotos necesarios para que el sistema
funcione.
La siguiente es una lista de algunas fallas comunes que pueden ocurrir a partir de tareas que se ejecutan desde
el rc. sysinit y formas de lidiar con esas fallas.
533
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Los montajes locales fallan: si una entrada en /etc/fstab no se monta, el proceso de arranque
finaliza antes de que comiencen los servicios de nivel de ejecución. Esto suele suceder cuando agrega una
entrada a /etc/fstab que tiene un error, pero se olvidó de probarla antes de reiniciar. Cuando el archivo fstab
falla, se le coloca en un shell para el usuario raíz con el sistema de archivos raíz montado en modo de solo
lectura. Para solucionar el problema, debe volver a montar el sistema de archivos raíz, corregir el archivo
fstab, montar la entrada del sistema de archivos para asegurarse de que ahora funciona y reiniciar. Aquí se
'
ve como: es lo que esa secuencia de comandos
# montar o volver a montar,rw /
# vim /etc/fstab # montar a
# reiniciar
NOTA
El comando vim se usa particularmente cuando se edita el archivo /etc/fstab porque conoce el formato de ese archivo.
, las
Cuando usa vim, el campo Opciones dee
columnas montaje
stán se
y sve
en color uelve verde
realizan cuando
algunas son válidos
de eyrrores.
comprobaciones negro cuando
Por no
ejemplo, lo
esntradas
las on. en el
Nombre de host no configurado Si su nombre de host no está configurado correctamente, puede verificar el
procesamiento de rc.sysinit para ver qué pudo haber salido mal. Para establecer el nombre de host del
sistema, rc.sysinit usa el valor de HOSTNAME= en el archivo /etc/syscon fig/network. Si eso no está
configurado, se usa el nombre localhost en su lugar. El valor del nombre de host también se puede obtener
del servidor DHCP.
No se puede descifrar el sistema de archivos El script rc.sysinit busca en el archivo /etc/crypttab la información
necesaria para descifrar los sistemas de archivos cifrados. Si ese archivo se corrompe, es posible que deba
encontrar una copia de seguridad del archivo para poder descifrar su sistema de archivos.
Si se le solicita una contraseña y no sabe cuál es, es posible que no tenga suerte.
El archivo rc.sysinit también configura otras funciones. El script rc.sysinit establece el modo SELinux y carga los
módulos de hardware. El script construye matrices RAID de software y configura volúmenes y grupos de volúmenes de
Logical Volume Management. Los problemas que ocurren en cualquiera de estas áreas se reflejan en mensajes de error
que aparecen en la pantalla después de que se inicia el kernel y antes de que se inicien los procesos de nivel de
ejecución.
Resolución de problemas de procesos de nivel
de ejecución En Red Hat Enterprise Linux 6.xy versiones anteriores, cuando el sistema se inicia por primera vez, los
servicios se inician según el nivel de ejecución predeterminado. Hay siete niveles de ejecución diferentes, del 0 al 6. El
nivel de ejecución predeterminado suele ser 3 (para un servidor) o 5 (para un escritorio). Aquí hay descripciones de los
niveles de ejecución en sistemas Linux hasta RHEL 6:
0: nivel de ejecución de apagado. Todos los procesos se detienen y la computadora se apaga.
1: nivel de ejecución de un solo usuario. Solo aquellos procesos que son necesarios para arrancar la computadora
(incluido el montaje de todos los sistemas de archivos) y tener el sistema disponible desde la consola
534
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
se ejecutan. La red y los servicios de red no se inician. Este nivel de ejecución pasa por alto la autenticación
normal y se inicia en un indicador de usuario raíz (llamado sulogin). Si arranca en este modo, puede usarlo para
convertirse en usuario root inmediatamente para cambiar una contraseña de root olvidada. (También puede usar
la palabra single en lugar de 1 para llegar al nivel de ejecución de un solo usuario. La diferencia entre single y 1
es que single no inicia scripts en el directorio /etc/rc1.d). 21
2: nivel de ejecución multiusuario. Este nivel de ejecución rara vez se usa hoy en día. El significado original de este
nivel de ejecución se ha perdido. Los primeros sistemas UNIX usaban este nivel de ejecución para iniciar procesos
tty para sistemas donde había múltiples terminales tontas conectadas al sistema para que las personas las usaran.
Esto permitió que muchas personas accedieran a un sistema simultáneamente desde terminales basadas en
caracteres (muchas personas trabajaban desde un shell sin interfaz gráfica). Las interfaces de red no se iniciaron,
generalmente porque las interfaces de red siempre activas no eran comunes. Actualmente, el nivel de ejecución 2
generalmente inicia las interfaces de red, aunque no todos los servicios de red se inician.
3: Nivel de ejecución multiusuario más red. Este nivel de ejecución generalmente se usa en servidores Linux
que no arrancan en una interfaz gráfica, sino solo en un indicador de texto sin formato en la consola. La red
se inicia, al igual que todos los servicios de red. Un entorno de escritorio gráfico puede instalarse o no
(normalmente no) en máquinas que arrancan en el nivel de ejecución 3, pero los entornos gráficos deben
iniciarse después del tiempo de arranque para poder utilizarlos.
4: Indefinido. Este nivel de ejecución tiende a iniciar los mismos servicios que el nivel de ejecución 3. Se puede
usar si desea tener diferentes servicios disponibles desde el nivel de ejecución 3 y el nivel de ejecución 4. Este
nivel de ejecución normalmente no se usa. En su lugar, se utiliza el nivel de ejecución 3 o el nivel de ejecución
5 para iniciar, con un administrador simplemente activando o desactivando los servicios según sea necesario para
el sistema en ejecución.
5: Multiusuario, red, más nivel de ejecución de interfaz gráfica. Este es el nivel de ejecución
generalmente se usa con sistemas Linux de escritorio. Por lo general, inicia la creación de redes y todos los
servicios en red; además, inicia un indicador de inicio de sesión gráfico en la consola. Cuando los usuarios inician
sesión, ven un entorno de escritorio gráfico.
6: reiniciar el nivel de ejecución. Esto es como el nivel de ejecución 0 en el sentido de que detiene todos los servicios
y detiene todos los procesos. Sin embargo, el nivel de ejecución 6 vuelve a iniciar el sistema.
Los niveles de ejecución están destinados a establecer el nivel de actividad en un sistema Linux. Se establece un nivel de
ejecución predeterminado en el archivo /etc/inittab, pero puede cambiar el nivel de ejecución en cualquier momento usando
el comando init. Por ejemplo, como usuario root, puede escribir init 0 para apagar, init 3 si desea eliminar la interfaz gráfica
(desde el nivel de ejecución 5) pero dejar todos los demás servicios activos, o init 6 para reiniciar.
Los niveles de ejecución predeterminados normales (en otras palabras, el nivel de ejecución en el que arranca) son
3 (para un servidor) y 5 (para un escritorio). A menudo, los servidores
arrancan
no tienen
en el
enscritorios
ivel de ejecución
instalados,
3 ppara
or lq
o
ue
que
no incurran
en la sobrecarga de procesamiento o lservidores
os riesgos w
de
eb
seguridad
o servidores
adicionales
de archivos.
por tener un escritorio ejecutándose en sus
Puede subir o bajar con los niveles de ejecución. Por ejemplo, un administrador que realiza el mantenimiento de un
sistema puede iniciar en el nivel de ejecución 1 y luego escribir init 3 para iniciar al máximo.
535
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
servicios necesarios en un servidor. Alguien que esté depurando un escritorio puede arrancar en el nivel de
ejecución 5 y luego bajar al nivel de ejecución 3 para intentar arreglar el escritorio (como instalar un nuevo
controlador o cambiar la resolución de la pantalla) antes de escribir init 5 para volver al escritorio.
El nivel de servicios en cada nivel de ejecución está determinado por los scripts de nivel de ejecución
que están configurados para iniciarse. Hay directorios rc para cada nivel de ejecución: /etc/rc0.d/, /etc/
rc1.d/, /etc/rc2.d/, /etc/rc3.d/, etc. Cuando una aplicación tiene un script de inicio asociado, ese script se coloca
en el directorio /etc/init.d/ y luego se vincula simbólicamente a un archivo en cada directorio /etc/rc?.d/.
Las secuencias de comandos vinculadas a cada directorio /etc/rc?.d comienzan con la letra K o S, seguidas de
dos números y el nombre del servicio. Un script que comienza con K indica que el servicio debe detenerse, mientras
que uno que comienza con S indica que debe iniciarse. Los dos números que siguen indican el orden en que se
inicia el servicio. Aquí hay algunos archivos que puede encontrar en el directorio /etc/rc3.d/, que están configurados
para iniciarse (con una descripción de cada uno a la derecha):
S01sysstat: Comience a recopilar estadísticas del sistema.
S08iptables: inicia el cortafuegos de iptables.
S10network: Iniciar interfaces de red.
S12rsyslog: iniciar el registro del sistema.
S28autofs: inicia el montador automático.
S50bluetooth: inicia el servicio Bluetooth.
S55sshd: inicie el servicio de shell seguro.
S58ntpd: iniciar el servicio de sincronización de hora NTP.
S85httpd: inicie el servicio web de Apache.
S90crond: inicia el servicio crond.
S91smb: inicia el servicio Samba.
S97rhnsd: Inicie el servicio Red Hat Network.
S99local: inicia comandos locales definidos por el usuario.
Este ejemplo de algunos servicios iniciados desde el directorio /etc/rc3.d debería darle una idea del orden en
que los procesos se inician cuando ingresa al nivel de ejecución 3. Tenga en cuenta que el servicio sysstat (que
recopila estadísticas del sistema) y el servicio iptables (que crea el sistema). Esos son seguidos por rsyslog
'
(servicio de registro s
del sistema)
se yinician
firewall) luego
alos
diversos
de que sservicios
ntes eln
e inicien red.
as interfaces de red.
Para cuando se inicien los scripts de nivel de ejecución, ya debería tener un sistema que básicamente esté
funcionando. A diferencia de otros sistemas Linux que inician todos los scripts para el nivel de ejecución 1, luego
2, luego 3 y así sucesivamente, RHEL va directamente al directorio que representa el nivel de ejecución, primero
detiene todos los servicios que comienzan con K e inicia todos aquellos que comience con S en ese directorio.
536
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
A medida que se ejecuta cada secuencia de comandos S, debería ver un mensaje que indique si se inició el servicio.
Aquí hay algunas cosas que podrían salir mal durante esta fase de inicio del sistema:
Un servicio puede fallar. Un servicio puede requerir acceso a interfaces de red para iniciarse correctamente o
acceso a una partición de disco que no está montada. La mayoría de los servicios expiran, fallan y permiten
que se ejecute el siguiente script. Una vez que pueda iniciar sesión, puede depurar el servicio. Algunas técnicas
21
para depurar servicios incluyen agregar una opción de depuración al proceso del daemon para que arroje más
datos en un archivo de registro o ejecutar el proceso del daemon manualmente para que los mensajes de error
aparezcan directamente en su pantalla. Ver Capítulo 15
, “Inicio y detención de servicios”, para obtener más información sobre cómo iniciar el servicio.
vicios manualmente.
Un servicio puede colgarse. Algunos servicios que no obtienen lo que necesitan para comenzar pueden bloquearse
indefinidamente, lo que le impide iniciar sesión para depurar el problema. Algunos procesos tardan más en
aparecer la primera vez después de una instalación nueva, por lo que es posible que desee esperar unos minutos
para ver si el script sigue funcionando y no gira para siempre.
Si no puede pasar un servicio colgado, puede reiniciar en un modo de inicio interactivo, donde se le preguntará antes de
iniciar cada servicio. Para ingresar al modo de inicio interactivo en RHEL, reinicie e interrumpa el cargador de arranque
(presione cualquier tecla cuando vea la cuenta regresiva de 5 segundos). Resalte la entrada que desea iniciar y escriba
e. Resalte la línea del kernel y escriba e. Luego agregue la palabra confirm al final de la línea del kernel, presione Enter
y escriba b para iniciar el nuevo kernel.
La Figura 21.2 muestra un ejemplo de los mensajes que aparecen cuando RHEL se inicia en el modo de inicio interactivo.
FIGURA 21.2
Confirme cada servicio en el modo de inicio interactivo de RHEL.
networkpre.target
NetworkManager.service (859ms)
network.target
cups.service (1.493s)
rhsmcertd.service (1.092s)
sshd.service (946ms)
iscsishutdown.service
remotefspre.target
remotefs.target
httpd.service (4.456s)
systemdusersessions.service (1.239s)
tuned.service (20.089s)
NetworkManagerwaitonline.service (20.539s)
gdm.service (1.155s)
atd.service
plymouthquitwait.service (1min 4.217s)
crond.service
libvirtd.servicio (4.219s)
537
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
La mayoría de los mensajes que se muestran en la Figura 21.2 se generan desde rc.sysinit.
Después del mensaje de bienvenida, se inicia udev (para observar si hay nuevo hardware conectado al sistema y cargar
los controladores según sea necesario). Se establece el nombre de host, se activan los volúmenes de administración de
volúmenes lógicos (LVM), se verifican todos los sistemas de archivos (con los volúmenes LVM agregados), se montan los
sistemas de archivos que aún no están montados, se vuelve a montar el sistema de archivos raíz para lectura y escritura, y
cualquier LVM los intercambios están habilitados. Consulte el Capítulo
para o1btener
2, "Administración
más información
de discos
sobre
yL sVM
istemas
y otros
de
tipos
archivos",
de
particiones y sistemas de archivos.
El último mensaje "Ingresando al inicio interactivo" le indica que rc.sysinit ha finalizado y que los servicios para el nivel de
ejecución seleccionado están listos para iniciarse. Debido a que el sistema está en modo interactivo, aparece un mensaje
que le pregunta si desea iniciar el primer servicio (sysstat). Escriba Y para iniciar ese servicio y pasar al siguiente. Después
de ver el servicio roto que solicita iniciarse, escriba N para evitar que ese servicio se inicie. Si en algún momento siente que
el resto de los servicios son seguros para iniciar, escriba C para continuar iniciando el resto de los servicios. Después de
que su sistema muestre los servicios rotos que no se iniciaron, puede regresar e intentar depurar esos servicios individuales.
Un último comentario sobre los scripts de inicio: el archivo /etc/rc.local es uno de los últimos servicios que se ejecuta
en cada nivel de ejecución. En el nivel de ejecución 5, está vinculado a /etc/rc5.d/S99local. Cualquier comando que
desee ejecutar cada vez que se inicie su sistema puede colocarse en el archivo rc.local.
Puede usar rc.local para enviar un mensaje de correo electrónico o ejecutar una regla rápida de firewall de iptables
cuando se inicia el sistema. En general, es mejor usar un script de inicio existente o crear uno nuevo (para que pueda
administrar el comando o los comandos como un servicio). Sepa que el archivo rc.local es una forma rápida y fácil de
ejecutar algunos comandos cada vez que se inicia el sistema.
Solución de problemas de inicialización de systemd
Las últimas versiones de Fedora, RHEL y Ubuntu utilizan systemd en lugar de System V init como sistema de inicialización.
Aunque systemd es más complejo que System V init, systemd también ofrece más formas de analizar lo que sucede
durante la inicialización.
Comprender el proceso de arranque de systemd
Cuando se inicia el demonio systemd (/usr/lib/systemd/systemd) después de que se inicia el kernel, pone en marcha
todos los demás servicios que están configurados para iniciarse. En particular, se desconecta del contenido del archivo /
etc/systemd/system/default.target, como en este ejemplo:
# cat /etc/systemd/system/default.objetivo
...
[Unidad]
Descripción=Documentación de interfaz
gráfica=man:systemd.special(7)
Requires=multiuser.target
Wants=displaymanager.service
538
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Conflictos = rescate.servicio rescate.objetivo Después
= multiusuario.objetivo rescate.servicio rescate.objetivo displaymanager.servicio AllowIsolate=sí
El archivo default.target es en realidad un enlace simbólico a un archivo en el directorio del
sistema /lib/systemd/. Para un servidor, puede estar vinculado al archivo multiuser.target; para un 21
escritorio, está vinculado al archivo graphical.target (como se muestra aquí).
A diferencia de la función de inicio de System V, que solo ejecuta scripts de servicio en orden
alfanumérico, el servicio systemd necesita trabajar hacia atrás desde el objetivo predeterminado para
determinar qué servicios y otros objetivos se ejecutan. En este ejemplo, default.target es un enlace
simbólico al archivo graphical.target. Cuando lista el contenido de ese archivo, puede ver lo siguiente:
■ Se requiere el destino multiusuario para comenzar primero.
■ El servicio displaymanager.se inicia después de eso.
Al continuar descubriendo lo que requieren esas dos unidades, puede encontrar qué más se requiere.
Por ejemplo, multiuser.target requiere basic.target (que inicia una variedad de servicios básicos) y
displaymanager.service (que inicia el administrador de pantalla, gdm) para iniciar una pantalla gráfica
de inicio de sesión.
Para ver los servicios que inicia multiuser.target, enumere el contenido del directorio /etc/systemd/
system/multiuser.target.wants, como en este ejemplo:
# ls /etc/systemd/system/multiuser.target.wants/ atd.service ksm.service
rhsmcertd.servicio
auditd.service rpcbind.service avahidaemon.service
ksmtuned.servicio libstoragemgmt.service
rsyslog.service chronyd.service libvirtd.service smartd.service crond.service
mcelog.service sshd.service mdmonitor.service
cups.path sssd.servicio
dnfmakecache.timer ModemManager.service firewalld.service sintonizado.servicio
NetworkManager.service vdo.service
irqbalance.service
client.target nfs
kdump.service remotefs.target
vmtoolsd.servicio
Estos archivos son enlaces simbólicos a archivos que defi nen qué comienza para cada uno de esos
servicios. En su sistema, estos pueden incluir shell remoto (sshd), impresión (tazas), auditoría (auditd),
redes (NetworkManager) y otros. Esos enlaces se agregaron a ese directorio cuando se instaló el
paquete para un servicio o cuando se habilitó el servicio desde un comando systemctl enable.
Tenga en cuenta que, a diferencia de System V init, systemd puede iniciar, detener y administrar archivos
de unidades que representan más que solo servicios. Puede administrar dispositivos, montajes
automáticos, rutas, sockets y otras cosas. Después de que systemd haya iniciado todo, puede iniciar
sesión en el sistema para investigar y solucionar cualquier problema potencial.
539
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Después de iniciar sesión, ejecutar el comando systemctl le permite ver cada archivo de unidad que sys
temd intentó iniciar. Aquí hay un ejemplo:
# systemctl
UNIDAD CARGAR SUB ACTIVO
DESCRIPCIÓN
procsysfsbinfmt_misc.automount cargado activo en espera Formatos de archivos ejecutables arbitrarios Sistema de
archivos sysdevicespc...:00:1b.0soundcard0.device cargado activo conectado Sistema de control de audio
de alta definición 631xESB/632xESB dispositivospc...:00:1d.2usb44\x2d2.dispositivo cargado activo conectado
Deskjet 5550
...
.montar cargado activo montado Root Mount
boot.mount cargado activo montado /arranque
...
autofs.service Automonta cargado activo corriendo
sistemas de archivos a pedido cups.service
cargado activo corriendo
Programador de CUPS
httpd.service El servidor cargado fallido fallido
Apache HTTP
Desde la salida de systemctl, puede ver si algún archivo de unidad falló. En este caso, puede ver que el
servicio httpd (su servidor web) no pudo iniciarse. Para investigar más, puede ejecutar journalctl u para
ese servicio para ver si se informaron mensajes de error:
# journalctl u httpd.servicio
...
08 de diciembre 09:30:36 rhel81bible systemd[1]: Inicio de Apache HTTP
Servidor...
08 de diciembre 09:30:36 rhel81bible httpd[16208]: httpd: error de sintaxis
en la línea 105 de /etc/httpd/conf/httpd.conf: /etc/httpd/conf/httpd.conf:105:
<Directorio> no se cerró.
08 de diciembre 09:30:36 rhel81bible systemd[1]: httpd.service: Proceso principal cerrado, código=salido, estado=1/FALLO
08 de diciembre 09:30:36 rhel81bible systemd[1]: httpd.service:
Error con el resultado 'código de salida'.
08 de diciembre 09:30:36 rhel81biblia systemd[1]:
No se pudo iniciar el servidor Apache HTTP.
A partir de la salida, puede ver que hubo una falta de coincidencia de las directivas en el archivo httpd.
archivo conf (no pude cerrar una sección del Directorio). Después de corregir eso, pude iniciar el servicio
(systemctl start httpd). Si aparecen más archivos de unidad como fallidos, puede ejecutar el comando
journalctl u nuevamente, usando esos nombres de archivo de unidad como argumentos.
Análisis del proceso de inicio de
systemd Para ver exactamente lo que sucedió durante el proceso de inicio de un sistema que usa el
servicio systemd, systemd proporciona la herramienta systemdanalyze. Si quieres ver si hay
540
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
son servicios que se están estancando, o si desea buscar un lugar para instalar su propio servicio
de sys temcd, puede usar este comando para analizar todo el proceso de inicio. Aquí hay unos ejemplos:
# systemdanalyze time El inicio
finalizó en 1.775s (kernel) + 21.860s (initrd) + 1min 42.414s (espacio de 21
usuario) = 2min 6.051s graphical.target alcanzado después de 1min
42.121s en el espacio de usuario
La opción de tiempo le permite ver cuánto tiempo tomó cada fase del proceso de inicio, desde el inicio
del kernel hasta el final del objetivo predeterminado. Puede usar plot para crear un gráfico SVG de cada
componente del proceso de inicio (aquí muestro eog para mostrar el resultado):
# diagrama systemdanalyze > /tmp/systemdplot.svg # eog /tmp/
systemdplot.svg
La figura 21.3 muestra un pequeño fragmento de salida del gráfico mucho más grande.
FIGURA 21.3
Fragmento del diagrama de inicio systemdanalyze
A partir de este fragmento, puede ver los servicios que se inician después de que se inicie
NetworkManager.service. Las partes en rojo oscuro muestran el tiempo que tarda en iniciarse el servicio
o el destino. Si el servicio continúa ejecutándose, se muestra en rojo claro. En este ejemplo, el servicio
httpd falló después de intentar iniciarse durante 4,456 segundos. Puede darse cuenta de esto porque la
barra a la derecha es blanca, lo que muestra que el servicio no se está ejecutando. En este punto, puede
usar el comando journalctl, como se describió anteriormente, para depurar el problema.
La siguiente sección describe cómo solucionar problemas que pueden surgir con sus paquetes de
software.
541
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Solución de problemas de paquetes de software
Las funciones de empaquetado de software (como yum para RPM y aptget para paquetes DEB) están
, y
diseñadas para facilitarle la administración del software de su sistema. (Consulte el Capítulo 10, “Obtención
administración de software”, para obtener información básica sobre cómo administrar paquetes de software). Sin
embargo, a pesar de los esfuerzos para que todo funcione, a veces el paquete de software puede fallar.
NOTA
La función dnf reemplazó a yum en los sistemas Fedora y RHEL recientes. Esta sección a menudo usa el comando yum, ya que
funcionará en sistemas Fedora y RHEL tanto antiguos como nuevos en la mayoría de los casos, porque yum tiene un alias de dnf .
El comando dnf se muestra cuando se requiere explícitamente.
Las siguientes secciones describen algunos problemas comunes que puede encontrar con los paquetes
RPM en un sistema RHEL o Fedora y cómo puede solucionar esos problemas.
A veces, cuando intenta instalar o actualizar un paquete con el comando yum, los mensajes de
error le indican que los paquetes dependientes que necesita para realizar la instalación que
desea no están disponibles. Esto puede suceder a pequeña escala (cuando intenta instalar un
paquete) o a gran escala (cuando intenta actualizar todo el sistema).
Debido a los cortos ciclos de lanzamiento y los repositorios más grandes de Fedora y Ubuntu, es más
probable que ocurran inconsistencias en las dependencias de paquetes que en repositorios más
estables y selectivos (como los que ofrece Red Hat Enterprise Linux). Para evitar fallas de dependencia,
aquí hay algunas buenas prácticas que puede seguir:
Use repositorios recientes y bien probados. Hay miles de paquetes de software en Fedora. Si usa
los repositorios principales de Fedora para instalar el software de la versión actual, es raro que
tenga problemas de dependencia.
Cuando se agregan paquetes al repositorio, siempre que los mantenedores del repositorio
ejecuten los comandos correctos para configurar el repositorio (y no use rtodo
epositorios
lo que n
eecesita
xternos),
para instalar un paquete seleccionado debería estar disponible.
Sin embargo, cuando comienza a usar repositorios de terceros, esos repositorios pueden tener
'
dependencias en repositorios que pueden crear una control
nueva
de
versión
t. Por edjemplo,
e su propio
si un
software
depósitoque
requiere versiones posteriores de software básico (como bibliotecas), las versiones que necesitan
pueden no estar disponible en el repositorio de Fedora.
Actualice constantemente su sistema. Ejecutar la actualización de dnf todas las noches (o yum
actualización en sistemas más antiguos) hace que sea menos probable que encuentre problemas
importantes de dependencia que si actualiza su sistema solo cada pocos meses. En los sistemas
con un escritorio GNOME, la ventana Software le permite buscar y aplicar actualizaciones a los
paquetes de software instalados. En los sistemas Fedora 22 y RHEL 8 (y posteriores), puede
agregar actualizaciones automáticas (https://fedoraproject.org/wiki/AutoUpdates). Aut oUpdates
descarga automáticamente paquetes actualizados cuando están disponibles y,
542
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
si está configurado, también puede instalarlos. Otro enfoque es crear un trabajo cron para verificar o
ejecutar actualizaciones nocturnas. Consulte la barra lateral "Uso de cron para actualizaciones de software"
para obtener detalles sobre cómo hacerlo.
Ocasionalmente actualice su sistema. Fedora y Ubuntu tienen nuevos lanzamientos cada 6
meses. Fedora deja de proporcionar paquetes actualizados para cada versión, 13 meses después de su 21
lanzamiento. Por lo tanto, aunque no tiene que actualizar a la nueva versión cada 6 meses, debe actualizar
una vez al año o enfrentar posibles problemas de dependencia y seguridad cuando Fedora deje de
proporcionar actualizaciones.
Para obtener una versión completamente nueva de esas distribuciones (como Fedora 30 a Fedora 31),
haga lo siguiente:
1. Actualice al software más reciente para su versión actual:
# actualización de dnf refresh y
2. Instale el complemento dnfpluginsystemupgrade:
# dnf install dnfpluginsistemaactualización y
3. Comience a actualizar a la nueva versión:
# descarga de actualización del sistema dnf releasever=31
4. Reinicie el proceso de actualización:
# reinicio de actualización del sistema dnf
Si está buscando un sistema estable, Red Hat Enterprise Linux es una mejor opción porque
proporciona actualizaciones para cada versión importante durante siete años o más.
NOTA
Si usa el comando aptget en Ubuntu para actualizar sus paquetes, tenga en cuenta que hay diferentes
significados para las opciones de actualización y mejora en Ubuntu con aptget que con el comando dnf o yum
(Fedora y RHEL).
En Ubuntu, aptget update hace que los últimos metadatos del paquete (nombres de paquete, números de versión, etc.) se
descarguen en el sistema local. La ejecución de aptget upgrade hace que el sistema actualice cualquier paquete instalado
que tenga nuevas versiones disponibles, según los últimos metadatos descargados.
Por el contrario, cada vez que ejecuta un comando dnf o yum en Fedora o RHEL, se descargan los metadatos más recientes
sobre los nuevos paquetes para la versión actual. Cuando ejecuta yum update , obtiene los últimos paquetes disponibles
para la versión actual de Fedora o RHEL. Para pasar a la próxima versión, debe ejecutar la actualización del sistema dnf,
como se describió anteriormente.
543
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Si encuentra un problema de dependencia, aquí hay algunas cosas que puede hacer para tratar de resolver el
problema:
Usa repositorios estables. Para versiones recientes de distribuciones conocidas (RHEL, Fedora o Ubuntu, por
ejemplo), los problemas de dependencia son raros y, a menudo, se solucionan rápidamente. Sin embargo, si
confía en repositorios para versiones anteriores o repositorios orientados al desarrollo (como el repositorio
Rawhide de Fedora),
menudo
espere
peueden
ncontrar
solucionar
más problemas
los problemas
de dependencia.
de dependencia.
La reinstalación o la actualización a
Solo use aplicaciones y repositorios de terceros cuando sea necesario. Cuanto más lejos esté del núcleo de una
distribución de Linux, más probabilidades tendrá de tener problemas de dependencia algún día. Siempre busque
en los repositorios principales para su distribución antes de buscar un paquete en otro lugar o intentar construir
uno usted mismo.
Incluso si funciona cuando lo instala por primera vez, es posible que un paquete que alguien le acaba de entregar
no tenga forma de actualizarse. Un paquete de un repositorio de terceros puede romperse si los creadores no
proporcionan una nueva versión cuando cambian los paquetes dependientes.
Resolver dependencias relacionadas con el kernel. Si obtiene paquetes RPM de terceros para cosas
como tarjetas de video o tarjetas de red inalámbrica que contienen controladores de kernel e instala un kernel
posterior, esos controladores ya no funcionarán. El resultado podría ser que la pantalla gráfica de inicio de sesión
no se inicie cuando se inicia el sistema o que su tarjeta de red no se cargue, por lo que no tiene una red inalámbrica.
Debido a que la mayoría de los sistemas Linux conservan los dos núcleos más recientes, puede reiniciar,
interrumpir GRUB y seleccionar el núcleo anterior (todavía en funcionamiento) desde el que puede iniciar. Eso
pone a su sistema en funcionamiento, con el núcleo antiguo y los controladores en funcionamiento, mientras busca
una solución más permanente.
La solución a más largo plazo es obtener un nuevo controlador que haya sido reconstruido para su núcleo
actual. Sitios como rpmfusion.org construyen paquetes de controladores de código abierto de terceros y
actualizan esos controladores cuando hay un nuevo kernel disponible. Con el repositorio rpmfusion.org habilitado,
su sistema debería recoger los nuevos controladores cuando se agregue el nuevo kernel.
Como alternativa a sitios como rpmfusion.org, puede ir directamente al sitio web del fabricante e intentar
descargar sus controladores de Linux (Nvidia ofrece controladores de Linux para sus tarjetas de video), o si el
código fuente está disponible para el controlador, puede puede intentar construirlo usted mismo.
Excluye algunos paquetes de la actualización. Si está actualizando muchos paquetes a la vez, puede excluir los
paquetes que no logran que los demás funcionen mientras soluciona el problema con los dañados. Aquí
's cómo actualizar todos los paquetes que necesitan una actualización,
excepto un paquete llamado somepackage (reemplace somepackage con el nombre del paquete que desea
excluir):
# yum y exclude=actualización de algún paquete
544
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Uso de cron para actualizaciones de software
La función cron proporciona un medio para ejecutar comandos en tiempos e intervalos predeterminados. Puede
establecer el minuto, la hora, el día o el mes exactos en que se ejecuta un comando. Puede configurar un comando para
que se ejecute cada cinco minutos, cada tres horas o en un momento determinado el viernes por la tarde.
21
Si desea usar cron para configurar actualizaciones de software nocturnas, puede hacerlo como usuario raíz
ejecutando el comando crontab e. Eso abre un archivo usando su editor predeterminado (comando vi por defecto)
que puede configurar como un archivo crontab.
que cEree:
ste es un ejemplo del aspecto que podría tener el archivo crontab
# min hora día/mes mes día/semana comando dnf y update | mail
* * * root@localhost Un archivo crontab consta de cinco
59 23
campos, que designan el día y la hora, y un sexto campo, que contiene la línea de comando para ejecutar. Agregué la
línea de comentarios para indicar los campos. Aquí, se ejecuta el comando de actualización dnf y , y su salida se envía
por correo al usuario root@localhost. El comando se ejecuta a los 59 minutos después de la hora 23 (11:59 p. m.). Los
asteriscos (*) son obligatorios como marcadores de posición, lo que le indica a cron que ejecute el comando todos los
días del mes, mes y día de la semana.
Cuando cree una entrada cron, asegúrese de dirigir la salida a un archivo o canalizar la salida a un comando que pueda
manejar la salida. Si no lo hace, cualquier salida se envía al usuario
raíz).
que ejecutó el comando crontab e (en este caso,
En un archivo crontab, puede tener un rango de números o una lista de números, o puede omitir números. Por ejemplo,
1, 5 o 17 en el primer campo hace que el comando se ejecute 1, 5 y 17 minutos después de la hora.
Un */3 en el segundo campo hace que el comando se ejecute cada tres horas (medianoche, 3 am, 6 am, etc.). Un 13
en el cuarto campo le dice a cron que ejecute el comando en enero, febrero y marzo. Los días de la semana y los meses
se pueden ingresar como números o palabras.
Para obtener más información sobre el formato de un archivo crontab, escriba man 5 crontab. Para leer
sobre el comando crontab, escriba man 1 crontab.
Reparación de bases de datos RPM y caché
La información sobre todos los paquetes RPM en su sistema se almacena en su
base de datos RPM local. Aunque sucede con mucha menos frecuencia que con
versiones anteriores de Fedora y RHEL, es posible que la base de datos RPM se dañe.
Esto le impide instalar, eliminar o listar paquetes RPM.
Si descubre que sus comandos rpm y yum se cuelgan o fallan y devuelven un mensaje de
falla de apertura de rpmdb, puede intentar reconstruir la base de datos RPM. Para verificar
que hay un problema en su base de datos RPM, puede ejecutar el comando yum check.
Aquí hay un ejemplo de cómo se ve la salida de ese comando con una base de datos dañada:
# yum check
error: db4 error(11) from dbenv>open: Recurso temporalmente no disponible
error: no se puede abrir el índice de paquetes usando db4 Recurso temporalmente no
disponible (11)
545
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
el error no puede abrir la base de datos de paquetes en /var/lib/rpm CRÍTICO:
yum.main: Error: la apertura de rpmdb falla
La base de datos RPM y otra información sobre los paquetes RPM instalados se almacenan en el directorio /var/lib/rpm.
Puede eliminar los archivos de la base de datos que comienzan con __db* y reconstruirlos a partir de los metadatos
almacenados en otros archivos en ese directorio.
Antes de comenzar, es una buena idea hacer una copia de seguridad del directorio /var/lib/rpm. Luego, debe eliminar los
archivos __db* antiguos y reconstruirlos. Escriba los siguientes comandos para hacer eso:
# cp r /var/lib/rpm /tmp # cd /var/lib/rpm
# rm __db* # rpm initdb
Los nuevos archivos __db* deberían aparecer después de unos segundos en ese directorio. Pruebe con un simple
comando rpm o yum para asegurarse de que las bases de datos estén ahora en orden.
Así como RPM tiene bases de datos de paquetes instalados localmente, la instalación de Yum almacenó información
asociada con los repositorios de Yum en el directorio local /var/cache/yum. Con la introducción de dnf, el directorio de
caché ahora es /var/cache/dnf. Los datos almacenados en caché incluyen metadatos, encabezados, paquetes y datos
de complementos de yum.
Si alguna vez hay un problema con los datos almacenados en caché por yum, puede limpiarlos. La próxima vez que ejecute
un comando yum, los datos necesarios se descargarán nuevamente. Aquí hay un par de razones para limpiar su caché de
yum:
Los metadatos están obsoletos. La primera vez que se conecta a un repositorio de Yum (descargando un paquete
o consultando el repositorio), los metadatos se descargan en su sistema. Los metadatos consisten en
información sobre todos los paquetes disponibles del repositorio.
A medida que se agregan y eliminan paquetes del repositorio, los metadatos deben actualizarse o su
sistema funcionará a partir de la información de paquetes anterior. De manera predeterminada, si ejecuta un
comando dnf, dnf busca nuevos metadatos si los metadatos antiguos tienen más de 48 horas (o por la cantidad
de minutos en que metadata_expire= esté configurado en el archivo /etc/dnf/dnf.conf).
Si sospecha que los metadatos están obsoletos pero no se ha alcanzado el tiempo de caducidad, puede ejecutar dnf
clean metadata para eliminar todos los metadatos, forzando la carga de nuevos metadatos con la próxima carga.
Alternativamente, puede ejecutar dnf makecache para obtener metadatos de todos los repositorios actualizados.
Te estás quedando sin espacio en disco. Normalmente, yum puede almacenar en caché tanto como unos pocos
cien megabytes de datos en los directorios /var/cache/dnf. Sin embargo, según la configuración de su archivo /
etc/dnf/dnf.conf (como keepcache=1, que conserva todos los RPM descargados incluso después de instalarlos),
los directorios de caché pueden contener varios gigabytes de datos.
Para limpiar todos los paquetes, metadatos, encabezados y otros datos almacenados en el directorio /var/
cache/dnf, escriba lo siguiente:
# ñam limpiar todo
546
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
En este punto, su sistema obtiene información actualizada de los repositorios la próxima vez que se
ejecute un comando yum.
La siguiente sección cubre información sobre la solución de problemas de red.
21
Solución de problemas de redes
Con más y más información, imágenes, videos y otros contenidos que usamos todos los días ahora
disponibles fuera de nuestras computadoras locales, se requiere una conexión de red que funcione en casi
'
todos los sistemas informáticos. Por lo tanto, si pierde su conexión de red o los sistemas con los no
que desea
alcanzar
comunicarse, es bueno saber que hay muchas herramientas en Linux para analizar el problema.
Para las computadoras cliente (portátiles, de escritorio y dispositivos de mano), desea conectarse a la red
para llegar a otros sistemas informáticos. En un servidor, desea que sus clientes puedan comunicarse con
usted. Las siguientes secciones describen diferentes herramientas para solucionar problemas de
conectividad de red para sistemas de servidor y cliente Linux.
Solución de problemas de conexiones salientes Supongamos
que abre su navegador web pero no puede acceder a ningún sitio web. Sospecha que no está conectado
a la red. Tal vez el problema sea con la resolución de nombres, pero puede ser con la conexión fuera de su
red local.
Para verificar si sus conexiones de red salientes funcionan, puede usar muchos de los comandos
descritos en el Capítulo 14, "Administración dcomando
e redes". P uede
Pp
ping. robar
ara la
si cla
ver onectividad
cdon
resolución e nuombre
n simple
a
dirección funciona, use host y dig.
Las siguientes secciones cubren los problemas que puede encontrar con la conectividad de red para las
conexiones salientes y qué herramientas usar para descubrir los problemas.
Ver interfaces de red Para
ver el estado de sus interfaces de red, use el comando ip. El siguiente resultado muestra que la interfaz
loopback (lo) está activa (por lo que puede ejecutar comandos de red en su sistema local), pero eth0
(su primera tarjeta de red cableada) está inactiva (estado DOWN). Si la interfaz hubiera estado activa,
una línea de entrada mostraría la dirección IP de la interfaz. Aquí, solo la interfaz loopback tiene una
dirección inet (127.0.0.1).
# ip addr show 1: lo:
<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state DESCONOCIDO link/loopback
00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0. 0.1/8 host de alcance lo inet6 ::1/128 host de
alcance valid_lft para siempre preferido_lft para siempre 2: eth0: <SIN CARRIER, BROADCAST,
MULTICAST, UP> mtu 1500 state DOWN qlen
1000
enlace/éter f0:de:f1:28:46:d9 brd ff:ff:ff:ff:ff:ff
547
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
De forma predeterminada en RHEL 8 y Fedora, las interfaces de red ahora se nombran en función de
cómo están conectadas al hardware físico. Por ejemplo, en RHEL 8, es posible que vea una interfaz de
red de enp11s0. Eso indicaría que la NIC es una tarjeta Ethernet cableada (en) en la placa PCI 11 (p11) y
la ranura 0 (s0). Una tarjeta inalámbrica comenzaría con wl en lugar de en.
La intención es hacer que los nombres de las NIC sean más predecibles, porque cuando se reinicia el
sistema, no se garantiza qué interfaces se llamarán eth0, eth1, etc. por el sistema operativo.
Verifique las conexiones físicas
Para una conexión por cable, asegúrese de que su computadora esté enchufada en el puerto de su
conmutador de red. Si tiene varias NIC, asegúrese de que el cable esté enchufado en la correcta. Si conoce el
nombre de una interfaz de red (eth0, p4p1 u otra), para encontrar qué NIC está asociado con la interfaz,
ingrese ethtool p eth0 en la línea de comando y mire detrás de su computadora para ver qué NIC está
parpadeando ( Ctrl+C detiene el parpadeo). Enchufe el cable en el puerto correcto.
Si en lugar de ver una interfaz que no funciona, el comando ip no muestra ninguna interfaz, verifique que el
hardware no esté deshabilitado. Para una NIC
asentada cson
en u rcanura
able, oe s
posible
que que
la NIC la
se tarjeta
haya no esté completamente
desactivado en el BIOS.
En una conexión inalámbrica, puede hacer clic en el icono NetworkManager y no ver una interfaz inalámbrica
disponible. Nuevamente, podría desactivarse en el BIOS. Sin embargo, en una computadora portátil, verifique si
'
he veisto
hay un pequeño interruptor que desactive la NIC. Estuve trabajando a varias personas
n configuraciones solo pdara
estrozar
su red
descubrir
que
este pequeño interruptor en la parte frontal o lateral de sus computadoras portátiles se había cambiado a la posición
de apagado.
Verificar rutas
'
Si su interfaz de red está activa pero aún puede verificar Para llegar al host al que desea llegar, intente
la ruta a ese host. Comience por verificar su ruta predeterminada. Luego intente llegar al dispositivo de
puerta de enlace de la red local a la siguiente red. Finalmente, intente hacer ping a un sistema en algún lugar
de Internet:
# ip route show
default via 192.168.122.1 dev ens3 proto dhcp metric 100 192.168.122.0/24
dev ens3 proto kernel scope link src 192.168.122.194 metric 100
La línea predeterminada muestra que la puerta de enlace predeterminada está en la dirección
192.168.122.1 y que se puede acceder a la dirección a través de la tarjeta ens3. Debido a que aquí solo
existe la interfaz ens3 y solo se muestra una ruta a la red 192.168.122.0, todas las comunicaciones que no
estén dirigidas a un host en la red 192.168.122.0/24 se envían a través de la puerta de enlace predeterminada (192.168.122.1).
La puerta de enlace predeterminada se conoce más correctamente como un enrutador.
Para asegurarse de que puede comunicarse con su enrutador, intente hacer ping, como en este ejemplo:
# ping c 2 192.168.122.1 PING
192.168.122.1 (192.168.122.1) 56(84) bytes de datos. 64 bytes de
192.168.122.1: icmp_seq=1 ttl=64 tiempo=0,757 ms 64 bytes de 192.168.122.1:
icmp_seq=2 ttl=64 tiempo=0,538 ms
548
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Estadísticas de ping 192.168.122.1 2 paquetes
transmitidos, 2 recibidos, 0 % de pérdida de paquetes, tiempo 65 ms rtt min/avg/max/mdev =
0,538/0,647/0,757/0,112 ms
Un mensaje de "Host de destino inalcanzable" le indica que el enrutador está apagado o no está conectado
físicamente a usted (tal vez el enrutador no está conectado al conmutador que comparte). 21
Si el ping tiene éxito y puede comunicarse con el enrutador, el siguiente paso es probar una dirección más allá de su
enrutador.
Intente hacer ping a una dirección IP ampliamente accesible. Por ejemplo, la dirección IP del servidor DNS público de
Google es 8.8.8.8. Intente hacer ping a eso (ping c2 8.8.8.8). Si ese ping tiene éxito, su red probablemente esté bien,
y lo más probable es que su resolución de nombre de host a dirección no esté funcionando correctamente.
Si puede llegar a un sistema remoto pero la conexión es muy lenta, puede usar el comando traceroute para
seguir la ruta al host remoto. Por ejemplo, este comando muestra cada salto realizado en ruta a http://
www.google.com:
# rastrear ruta www.google.com
El resultado muestra el tiempo necesario para realizar cada salto en el camino al sitio de Google.
En lugar de traceroute, puede usar el comando mtr (yum install mtr) para ver la ruta que se lleva a un host. Con
mtr, la ruta se consulta continuamente, por lo que puede ver el rendimiento de cada tramo del viaje a lo largo del
tiempo.
Comprobar la resolución del nombre de host
Si no puede comunicarse con los hosts remotos por nombre, pero puede comunicarse con ellos haciendo ping a las
direcciones IP, su sistema tiene un problema con la resolución del nombre de host. Los sistemas conectados a Internet
realizan la resolución de nombre a dirección comunicándose con un servidor de sistema de nombres de dominio (DNS)
que puede proporcionarles las direcciones IP de los hosts solicitados.
El servidor DNS que usa su sistema puede ingresarse manualmente o tomarse automáticamente de un servidor
DHCP cuando inicia sus interfaces de red. En cualquier caso, los nombres y las direcciones IP de uno o más
servidores DNS terminan en su archivo /etc/resolv.conf. Aquí hay un ejemplo de ese archivo:
buscar ejemplo.com servidor
de nombres 192.168.0.254
servidor de nombres 192.168.0.253
Cuando solicita conectarse a un nombre de host en Fedora o Red Hat Enterprise Linux, se busca el archivo /etc/
hosts; luego, las entradas del servidor de nombres en resolv.conf se consultan en el orden en que aparecen. Estas
son algunas formas de depurar la resolución de nombre a dirección:
Compruebe si se puede acceder al servidor DNS. Conociendo las direcciones del servidor de nombres, puede
'
intente hacer ping a cada servidor de s dirección IP para ver si es accesible. Por ejemplo: ping
nombres c 2 192.168.0.254. Si se puede acceder a la dirección IP, es posible que se le haya asignado la
dirección incorrecta para el servidor DNS o que actualmente esté inactivo.
Compruebe si el servidor DNS está funcionando. Específicamente, intenta usar cada servidor DNS con el
comando host o dig. Por ejemplo, cualquiera de estos dos comandos se puede usar para ver si el servidor
DNS en 192.168.0.254 puede resolver el nombre de host www.google.
549
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
'
com en una dirección IP. Repita esto para cada servidor de s dirección IP hasta que encuentre
nombres que funcionen:
# host www.google.com 192.168.0.254 Usando el
servidor de dominio:
Nombre: 192.168.0.254
Dirección: 192.168.0.254#53 Alias:
www.google.com tiene la dirección 172.217.13.228
www.google.com tiene la dirección IPv6 2607:f8b0:4004:809::2004 # dig @192.168.0.254
www.google.com
...
;; SECCIÓN DE
PREGUNTAS: ;www.google.com. EN UN
;; SECCIÓN DE RESPUESTAS:
www.google.com. 67 EN UN 172.217.13.228
...
Corrija sus servidores DNS. Si determina que tiene las direcciones IP incorrectas configuradas para
sus servidores DNS, cambiarlas puede ser un poco complicado. Busque /var/log/mes sages o
la salida de journalctl para las direcciones IP de sus servidores DNS. Si se usa Network Manager
para iniciar su red y conectarse a un servidor DHCP, debería ver las líneas del servidor de
nombres con las direcciones IP asignadas. Si las direcciones son incorrectas, puede anularlas.
Con NetworkManager habilitado, no puede simplemente agregar entradas del servidor de
nombres al archivo /etc/resolv.conf porque NetworkManager sobrescribe ese archivo con sus
propias entradas del servidor de nombres. En su lugar, agregue una línea PEERDNS=no al
archivo ifcfg para la interfaz de red (por ejemplo, ifcfgeth0 en el directorio /etc/sysconfig/
'
networkscripts). Luego configure DNS1 = 192.168.0.254 (o cualquiera que sea la dirección sorbo de
su servidor DNS). La nueva dirección se utilizará la próxima vez que reinicie su red.
Si está utilizando el servicio de red, en lugar de NetworkManager, aún puede utilizar
PEERDNS=no para evitar que el servidor DHCP sobrescriba sus direcciones DNS.
Sin embargo, en ese caso, puede editar el archivo resolv.conf directamente para configurar las direcciones
de su servidor DNS.
Los procedimientos que se acaban de describir para verificar su conectividad de red saliente se aplican a cualquier tipo
de sistema, ya sea una computadora portátil, una computadora de escritorio o un servidor. En su mayor parte, las
conexiones entrantes no son un problema con las computadoras portátiles o de escritorio porque la mayoría de las
solicitudes simplemente se rechazan. Sin embargo, para los servidores, la siguiente sección describe formas de hacer que
su servidor sea accesible si los clientes tienen problemas para acceder a los servicios que usted proporciona desde ese servidor.
Resolución de problemas de conexiones entrantes Si está
solucionando problemas de interfaces de red en un servidor, existen diferentes consideraciones
que en un sistema de escritorio. Debido a que la mayoría de los sistemas Linux están configurados
como servidores, debe saber cómo solucionar los problemas que encuentran quienes intentan
acceder a sus servidores Linux.
550
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Comenzaré con la idea de tener un servidor web Apache (httpd) ejecutándose en su sistema Linux, pero
ningún cliente web puede acceder a él. Las siguientes secciones describen cosas que puede intentar para
localizar el problema.
Compruebe si el cliente puede acceder a su sistema. 21
Para ser un servidor público, el nombre de host de su sistema debe poder resolverse para que cualquier
cliente de Internet pueda acceder a él. Eso significa bloquear su sistema a una dirección IP pública particular
y registrar esa dirección con un servidor DNS público. Puede usar un registro de dominio (como http://
www.networksolutions.com) para hacerlo.
Cuando los clientes no pueden acceder a su sitio web por su nombre desde sus navegadores web, si el
cliente es un sistema Linux, puede utilizar ping, host, traceroute y otros comandos descritos en la sección
anterior para localizar el problema de conectividad. Los sistemas Windows tienen su propia versión de
ping que puede usar desde esos sistemas.
Si la resolución de nombre a dirección está funcionando para llegar a su sistema y puede hacer ping a su
servidor desde el exterior, lo siguiente que debe intentar es la disponibilidad del servicio.
Comprobar si el servicio está disponible para el
cliente Desde un cliente Linux, puede comprobar si el servicio que está buscando (en este caso httpd) está
disponible desde el servidor. Una forma de hacerlo es usando el comando nmap.
El comando nmap es una herramienta favorita para los administradores de sistemas que verifican varios tipos
de información en las redes. Sin embargo, también es una herramienta de cracking favorita porque puede
escanear servidores en busca de posibles vulnerabilidades. Por lo tanto, está bien usar nmap para escanear
sus propios sistemas en busca de problemas, pero sepa que usar nmap en otro sistema es como revisar las
'
puertas y ventanas de un intruso. s casa para ver si puedes entrar. Pareces
Verificar su propio sistema para ver qué puertos de su servidor están abiertos al mundo exterior
(esencialmente, verificar qué servicios se están ejecutando) es perfectamente legítimo y fácil de hacer.
Después de instalar nmap (yum install nmap), use el nombre de host o la dirección IP de su sistema para usar
nmap para escanear su sistema y ver qué se está ejecutando en los puertos comunes:
# nmap 192.168.0.119 A partir
de Nmap 6.40 ( http://nmap.org ) a las 20191208 13:28 EST Informe de escaneo de Nmap para
pico (192.168.0.119)
El host está activo (latencia de 0,0037 s).
No se muestra: 995 puertos filtrados
PUERTO SERVICIO ESTATAL
21/tcp abierto ftp 22/tcp
abierto ssh 80/tcp abierto
http 443/tcp abierto https 631/
tcp abierto ipp Dirección MAC:
00:1B:21:0A:E8:5E (Intel
Corporate)
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 4.77 segundos
551
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
El resultado anterior muestra que los puertos TCP están abiertos a los servicios web regulares (http) y
seguros (https). Cuando ve que el estado está abierto, indica que un servicio también está escuchando en
el puerto. Si llega a este punto, significa que su conexión de red está bien y debe dirigir sus esfuerzos de
solución de problemas a cómo está configurado el servicio (por ejemplo, puede buscar en /etc/httpd/conf/
httpd. conf para ver si se permite o deniega el acceso a hosts específicos).
Si no se muestran los puertos TCP 80 y/o 443, significa que están siendo filtrados. Debe verificar si su
cortafuegos está bloqueando (no aceptando paquetes) esos puertos. Si el puerto no está filtrado pero el
estado está cerrado, significa que el servicio httpd no se está ejecutando o no está escuchando en esos
puertos. El siguiente paso es iniciar sesión en el servidor y verificar esos problemas.
Verifique el cortafuegos en el servidor
Desde su servidor, puede usar el comando iptables para enumerar las reglas de la tabla de filtros que están
vigentes. Aquí hay un ejemplo:
# iptablesvnL
ENTRADA de cadena (política ACEPTAR 0 paquetes, 0 bytes)
pkts bytes objetivo prot opt in out source destino
...
0 0 ACEPTAR tcp * * 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp
obtener: 80
0 0 ACEPTAR tcp * * 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp
lata: 443
...
Para los sistemas RHEL 8 y Fedora 30 donde el servicio de firewalld está habilitado, puede usar la ventana
de configuración de Firewall para abrir los puertos necesarios. Con la pestaña Zona y servicios públicos
seleccionada, haga clic en las casillas de verificación de http y https para abrir esos puertos inmediatamente
para todo el tráfico entrante. Si su sistema utiliza el servicio básico de iptables, debe haber reglas de
cortafuegos como las dos que se muestran en el código anterior entre sus otras reglas. Si hay ejemplos de
'
cómo se verían esas reglas:
Si lo desea, agregue esas reglas al archivo /etc/sysconfig/iptables. Aquí están
A ENTRADA m estado estado NUEVO m tcp p tcp dport 80 j ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 443 j ACEPTAR
Con las reglas agregadas al archivo, borre todas las reglas de su cortafuegos (systemctl stop
iptables.service o service iptables stop) y luego vuelva a iniciarlas ( system ctl start iptables.service o service
iptables start).
Si el cortafuegos aún bloquea el acceso del cliente a los puertos del servidor web, aquí hay algunas cosas que debe
verificar en su cortafuegos:
Verifique el orden de las reglas. Mire las reglas en /etc/sysconfig/iptables y vea si un
La regla DROP o REJECT viene antes que las reglas que abren los puertos 80 y/o 443. Mover las
reglas para abrir esos puertos antes de que cualquier línea final DROP o REJECT pueda resolver
el problema.
552
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Busque hosts denegados. Compruebe si alguna regla descarta o rechaza paquetes de hosts o
redes particulares. Busque reglas que incluyan s o source seguido de una dirección IP o
rango de direcciones y luego j DROP o ACCEPT. Modifique la regla o agregue una regla antes
de sus reglas para hacer una excepción para el host que desea permitir que acceda a su servicio.
21
Si el puerto ahora está abierto pero el servicio en sí está cerrado, verifique que el servicio en sí
esté ejecutándose y escuchando en las interfaces apropiadas.
Verifique el servicio en el servidor
Si parece que no hay nada que bloquee el acceso del cliente a su servidor a través de los puertos
reales que brindan el servicio que desea compartir, es hora de verificar el servicio en sí.
Suponiendo que el servicio se está ejecutando (dependiendo de su sistema, escriba service httpd
status o systemctl status httpd.service para verificar), lo siguiente que debe verificar es que esté
escuchando en los puertos e interfaces de red adecuados.
El comando netstat es una excelente herramienta de propósito general para verificar los servicios de
red. El siguiente comando enumera los nombres y los ID de proceso ( p) para todos los procesos que
están escuchando ( l) para los servicios TCP (t) y UDP (u), junto con el número de puerto (n) en el que
están escuchando. La línea de comando filtra todas las líneas excepto aquellas asociadas con el
proceso httpd:
# netstattupln | grep httpd tcp tcp
0 0 :::80 :::* ESCUCHAR 2567/httpd 2567/
0 0 :::443 :::* ESCUCHAR httpd
El ejemplo anterior muestra que el proceso httpd está escuchando en los puertos 80 y 443 para todas
las interfaces. Es posible que el proceso httpd esté escuchando en las interfaces seleccionadas.
Por ejemplo, si el proceso httpd solo estuviera escuchando en la interfaz local (127.0.0.1) para
solicitudes HTTP (puerto 80), la entrada aparecería de la siguiente manera:
Para httpd, así como para otros servicios de red que escuchan solicitudes en interfaces de red, puede
editar el archivo de configuración principal
del
indicarle servicio
para (en eeste
escuchar n ecl aso, /etc/httpd/conf/
puerto 80 todas las dhirecciones
ttpd.conf) p(ara
Listen
80) o una dirección específica (Listen 192.168.0.100:80).
Solución de problemas de memoria
La solución de problemas de rendimiento en su computadora es una de las tareas más importantes,
aunque a menudo difícil de alcanzar, que debe completar. Tal vez tenga un sistema que funcionaba
bien, pero comienza a ralentizarse hasta el punto en que es prácticamente inutilizable. Tal vez las
aplicaciones comiencen a bloquearse sin razón aparente. Encontrar y arreglar el problema puede requerir
algo de trabajo de detective.
553
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Linux viene con muchas herramientas para observar las actividades en su sistema y averiguar qué está sucediendo. Usando
una variedad de utilidades de Linux, puede hacer cosas como averiguar qué procesos consumen grandes cantidades de
memoria o exigen mucho a sus procesadores, discos o ancho de banda de red. Las soluciones pueden incluir lo siguiente:
Agregar capacidad Es posible que su computadora esté tratando de hacer lo que usted le pide, pero pueden ocurrir
fallas porque no tiene suficiente memoria, potencia de procesamiento, espacio en disco o capacidad de red para
obtener un rendimiento razonable. Incluso acercarse a los límites del agotamiento de los recursos puede causar
problemas de rendimiento. Mejorar la capacidad del hardware de su computadora es a menudo la forma más fácil
de resolver los problemas de rendimiento.
Ajuste del sistema Linux viene con configuraciones predeterminadas que defi nin cómo guarda los datos internamente,
mueve los datos y los protege. Los parámetros ajustables del sistema se pueden cambiar si la configuración
predeterminada no funciona bien para los tipos de aplicaciones que tiene en su sistema.
Descubrir aplicaciones o usuarios problemáticos A veces, un sistema funciona mal
porque un usuario o una aplicación está haciendo algo mal. Las aplicaciones mal configuradas o rotas pueden
colgar o devorar todos los recursos que pueden encontrar. Un usuario inexperto podría iniciar por error varias
instancias de un programa que agota los recursos del sistema. Como administrador del sistema, desea saber cómo
encontrar y solucionar estos problemas.
Para solucionar problemas de rendimiento en Linux, utiliza algunas de las herramientas básicas para observar y manipular
los procesos que se ejecutan en su sistema. Consulte el Capítulo 6, "Administración de procesos en ejecución",
detalles
ssi
obre
necesita
comandos como ps, top, kill y killall. En las siguientes secciones, agrego comandos como memstat para profundizar un
poco más en lo que están haciendo los procesos y dónde están fallando las cosas.
El área más compleja de resolución de problemas en Linux se relaciona con la administración de la memoria virtual.
Las siguientes secciones describen cómo ver y administrar la memoria virtual.
Descubrir problemas de memoria Las
computadoras tienen formas de almacenar datos de forma permanente (discos duros) y temporal (memoria de acceso
aleatorio o RAM y espacio de intercambio). Piense en usted mismo como una CPU, trabajando en un escritorio tratando de
terminar su trabajo. Pondría los datos que desea mantener permanentemente en un archivador al otro lado de la habitación
(eso es como el almacenamiento en un disco duro).
(eso
Pondría
es clomo
a información
la memoria
que
RAM
está
en
utilizando
una computadora).
actualmente en su escritorio
El espacio de intercambio es una forma de ampliar la memoria RAM. En realidad, es solo un lugar para colocar
datos temporales
el eqspacio
ue no cdaben en la RAM,
e intercambio pero
en qeue
está se ed
l disco spera
uro, nqo
ue la
es uC
n PU los necesite
sistema en algún
de archivos momento.
normal Aeunque
de Linux n el que
los datos se almacenan de forma permanente.
554
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
En comparación con el almacenamiento en disco, la memoria de acceso aleatorio tiene los siguientes atributos:
Más cerca del procesador Al igual que el escritorio está cerca de usted mientras trabaja, la memoria está
físicamente cerca de la CPU en la placa base de la computadora. Por lo tanto, cualquier dato que necesite
la CPU, puede tomarlo de inmediato si los datos están en la RAM.
21
Más rápido Su proximidad a la CPU y la forma en que se accede a ella (discos duros de estado
sólido versus mecánicos) hace que sea mucho más rápido para la CPU obtener información
'
de la RAM que de un disco duro. Es escritorio (un
Es m erspacio
ás pirar
ápido m equeño
una yh oja
cerrado) que
ecn
de papel aminar
tu
hasta una fila de archivadores y comenzar a buscar lo que desea.
Menos capacidad Una computadora nueva puede tener un disco duro de 1 TB o más, pero 8 GB o
16 GB de RAM. Aunque haría que la computadora funcionara más rápido para poner cada archivo y
cada dato que el procesador pueda necesitar en la RAM, en la mayoría de los casos simplemente no
habría suficiente espacio. Además, tanto las ranuras de memoria física de la computadora como el
propio sistema informático (las computadoras de 64 bits pueden manejar más RAM que las computadoras
de 32 bits) pueden limitar la cantidad de RAM que una computadora es capaz de tener.
Más caro Aunque la memoria RAM es tremendamente más asequible de lo que era hace una década
o dos, sigue siendo mucho más caro (por GB) que los discos duros.
La RAM temporal contiene datos y metadatos que la CPU está usando ahora para el trabajo que está
haciendo (además de algo de contenido que el kernel de Linux mantiene porque sospecha que un
proceso lo necesitará en poco tiempo). Sin embargo, cuando apaga la computadora, todo lo que hay
en la RAM se pierde. Cuando la CPU termina con los datos, esos datos se descartan si ya no se
necesitan, se dejan en la RAM para un posible uso posterior o se marcan para escribirlos en el disco
para almacenamiento permanente si es necesario guardarlos.
Es importante entender la diferencia entre almacenamiento temporal (RAM) y permanente (disco
duro), pero eso no cuenta toda la historia.
el
Ski ernel
la demanda
puede m
de
over
memoria
datos etemporalmente
xcede el suministro
fuera dde
e R
la
AM,
RAM a un
área llamada espacio de intercambio.
Si volvemos a la analogía del escritorio, esto sería como decir: “No queda espacio en mi escritorio, pero
'
tengo que agregarle más papeles para los proyectos. Almacenar papeles
estoy que anctualmente.
trabajando ecesitaré pronto en udn
En lugar e
archivador permanente.
papeles
Tendré
que duebo
n archivador
almacenar especial
permanentemente
(como un cajón
o tirar”.
de escritorio) para guardar esos
' '
sigo trabajando con pero que yo no estoy listo
Consulte el Capítulo 12, "Administración de discos y sistemas de archivos", para obtener más información
sobre archivos y particiones de intercambio y cómo crearlos. Sin embargo, por el momento, hay algunas
cosas que debe saber sobre este tipo de áreas de intercambio y cuándo se usan:
■ Cuando los datos se intercambian de la RAM a un área de intercambio (se intercambian), obtiene un
impacto en el rendimiento. Recuerde, escribir en el disco es mucho más lento que escribir en la RAM. ■
Cuando los datos se devuelven desde el intercambio a la RAM porque se necesitan nuevamente
(intercambiados), obtiene otro impacto en el rendimiento.
555
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
■ Cuando Linux se queda sin espacio en RAM, el intercambio es como perder una marcha alta en un
auto. El automóvil podría tener que correr en una marcha más baja, pero no se detendría por completo.
En otras palabras, todos sus procesos permanecen activos y no pierden del
atos
rendimiento
ni fallan por
del
csompleto,
istema ppuede
ero
ralentizarse considerablemente.
■ Si tanto la RAM como el espacio de intercambio están llenos y no se pueden descartar ni escribir datos en el
disco, su sistema puede llegar a una condición de falta de memoria (OOM) . Cuando eso sucede, el kernel
OOM killer se activa y comienza a eliminar procesos, uno por uno, para recuperar tanta memoria como el
kernel necesita para comenzar a funcionar correctamente nuevamente.
La regla general siempre ha sido que el intercambio es malo y debe evitarse. Sin embargo, algunos argumentarían
que, en ciertos casos, un intercambio más agresivo puede mejorar el rendimiento.
Piense en el caso en el que abre un documento en un editor de texto y luego lo minimiza en su escritorio durante varios
días mientras trabaja en diferentes tareas. Si los datos de ese documento se intercambiaran en el disco, habría más
RAM disponible para aplicaciones más activas que podrían aprovechar mejor ese espacio. El impacto en el rendimiento
se produciría la próxima vez que necesitara acceder a los datos del documento editado y los datos se intercambiaran
del disco a la RAM.
Las configuraciones que se relacionan con la agresividad con la que un sistema cambia se denominan swappiness.
En la medida de lo posible, Linux quiere que todo lo que necesita una aplicación abierta esté disponible de
inmediato. Entonces, usando la analogía del escritorio, si estoy trabajando en nueve proyectos activos y hay espacio
en el escritorio para guardar la información que necesito para los nueve proyectos, ¿por qué no dejarlos todos al
alcance en el escritorio? Siguiendo la misma forma de pensar, el kernel a veces guarda bibliotecas y otro contenido
en la RAM que cree que eventualmente podría necesitar, incluso si un proceso no lo está buscando de inmediato.
El hecho de que el kernel se incline a almacenar información en la RAM que espera que se necesite pronto
(incluso si no se necesita ahora) puede hacer que un administrador de sistemas inexperto piense que el sistema
está casi sin RAM y que los procesos están a punto de terminar. para empezar a fallar. Por eso es importante
conocer los diferentes tipos de información que se guardan en la memoria, para que pueda saber cuándo pueden
ocurrir situaciones reales de falta de memoria. El problema no es solo quedarse sin RAM; se está quedando sin
RAM cuando solo quedan datos no intercambiables.
Tenga en cuenta esta descripción general de la memoria virtual (RAM e intercambio), ya que la siguiente sección
describe formas de solucionar problemas relacionados con la memoria virtual.
Comprobación de problemas de memoria
'
Deja que todo empiece
Supongamos que haa
rialentizarse.
niciado sesión en un escritorio Linux, con muchas aplicaciones ejecutándose, y
Para averiguar si los problemas de rendimiento se han producido porque se quedó sin memoria, puede probar
comandos como top y ps para comenzar a buscar el consumo de memoria en su sistema.
556
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Para ejecutar el comando top para observar el consumo de memoria, escriba top y luego escriba una
M mayúscula. Aquí hay un ejemplo:
# top
top 22:48:24 hasta 3:59, 2 usuarios, promedio de carga: 1.51, 1.37, 1.15 Tareas: 281 en total, 2 en
ejecución, 279 en reposo, 0 detenido, 0 zombis CPU(s): 16.6%us , 3.0%sy, 0.0%ni, 80.3%id, 0.0%wa, 21
0.0%hi, 0.2%si, 0.0%st Mem: 3716196k total, 2684924k usado, 1031272k gratis, 146172k buffers
Intercambio: 4194296k total, 0k usado , 4194296k gratis , 784176k en caché PR NI VIRT RES SHR S
%CPU %MEM TIME+ COMMAND
USUARIO PID
6679 CNEGUS 20 0 1665M 937M 32M S 7.0 25.8 1: 07.95 Firefox 743M 181M 30M R 64.8 5.0 1:
20
66M S 0.0 3.2 0: 39.25 0
SEGUS
23m
22.82
S 0.0
npviewer.bin
2.0 0:00.97 6a794
croread
CNEGUS
20 0 13
83m
327
3C7m
NEGUS
26m S2 0
1.3
0 1145M
.0 1:04.81
116M
Xorg
2795 cnegus 20 0 1056m 22m 14m S 0.0 0.6 0:01.55 nautilus
2440 raíz
Hay dos líneas (Mem y Swap) y cuatro columnas de información (VIRT, RES, SHR y %MEM)
relacionadas con la memoria en la salida superior. En este ejemplo, puede ver que la RAM no se agota
desde la línea Mem (solo se usan 2684924k de 3716196k) y que nada se intercambia al disco desde la
línea Swap (se usa 0k).
Sin embargo, al sumar solo estas seis primeras líneas de salida en la columna VIRT, verá que se
han asignado 4937 MB de memoria para esas aplicaciones, lo que supera los 3629 MB de RAM total
(3716196k) que está disponible. Eso es porque la columna VIRT prometida
muestra solo
a la
la
aplicación.
cantidad dLe
a
mlínea
emoria
RES
muestra la cantidad de memoria no intercambiable que realmente se está utilizando, que totaliza solo
1364 MB.
Tenga en cuenta que, cuando solicita ordenar por uso de memoria escribiendo una M mayúscula, top
sabe ordenar en esa columna RES. La columna SHR muestra la memoria que potencialmente podrían
compartir otras aplicaciones (como bibliotecas) y %MEM muestra el porcentaje de memoria total
consumida por cada aplicación.
Si cree que el sistema está llegando a un estado sin memoria, aquí hay algunas cosas que debe
buscar:
■ El espacio libre que se muestra en la línea Mem sería igual o cercano a
cero. ■ El espacio utilizado que se muestra en la línea de intercambio no sería cero y continuaría
creciendo. Eso debería ir acompañado de una ralentización del rendimiento del sistema. ■ Dado
que la pantalla superior se vuelve a dibujar cada pocos segundos, si hay un proceso con pérdida
de memoria (continuamente pidiendo y usando más memoria, pero no devolviéndola), la cantidad
de memoria VIRT crece, pero lo que es más importante, la memoria RES continúa creciendo
para ese proceso. ■ Si el espacio de intercambio realmente se agota, el kernel comienza a
eliminar procesos para lidiar con esta condición de falta de memoria.
557
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Si tiene Cockpit instalado y habilitado, puede ver el uso de la memoria en vivo desde su navegador web.
Abra Cockpit y luego seleccione Sistema Memoria e intercambio. La figura 21.4 muestra un sistema en
el que varias secuencias de video consumen toda la memoria y ha comenzado a intercambiarse.
FIGURA 21.4
Supervise el uso de RAM y Swap en tiempo real con Cockpit.
Lidiando con problemas de memoria
En el corto plazo, puede hacer varias cosas para lidiar con esta condición de falta de memoria:
Matar un proceso Si el problema de la memoria se debe a un proceso erróneo, simplemente puede
matar ese proceso. Suponiendo que haya iniciado sesión como root o como el usuario propietario
del proceso descontrolado, escriba k en la ventana superior, luego ingrese el PID del proceso que
desea eliminar y elija 15 o 9 como la señal para enviar.
Soltar cachés de página Si solo desea limpiar algo de memoria en este momento, ya que de lo contrario
se ocupa del problema, puede indicarle al sistema que elimine los cachés de página inactivos. Cuando
hace esto, algunas páginas de memoria se escriben en el disco; otros simplemente se descartan
(porque se almacenan de forma permanente y se pueden recuperar del disco cuando se necesitan).
Esta acción es el equivalente a limpiar su escritorio y tirar toda la información, excepto la más
importante, a la basura o en un archivador. Es posible que necesite recuperar información
nuevamente de un archivador en breve, pero es casi seguro que no la necesite toda de inmediato.
Continúe
corriendo en una ventana de Terminal para ver cómo cambia la línea Mem a medida que escribe lo
siguiente (como raíz) en otra ventana de Terminal:
# echo 3 > /proc/sys/vm/drop_caches
Elimine un proceso sin memoria A veces, el agotamiento de la memoria ha hecho que el sistema sea tan
inutilizable que es posible que no pueda obtener una respuesta de un shell o GUI. En esos casos, es
posible que pueda utilizar las pulsaciones de teclas Alt+SysRq para finalizar un proceso sin memoria.
La razón por la que puede usar las pulsaciones de teclas Alt+SysRq en un sistema que de otro modo
no responde es que el kernel procesa las solicitudes de Alt+SysRq antes que otras solicitudes.
558
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Para habilitar las pulsaciones de teclas Alt+SysRq, el sistema ya debe haber establecido /proc/sys/
kernel/sysrq en 1. Una forma sencilla de hacerlo es agregar kernel.sysrq = 1 al archivo /etc/sysctl.conf.
Además, debe ejecutar las pulsaciones de teclas Alt+SysRq desde una interfaz basada en texto (como la
consola virtual que ve cuando presiona Ctrl+Alt+F2).
Con kernel.sysrq establecido en 1, puede finalizar el proceso en su sistema con la puntuación OOM más 21
alta presionando Alt+SysRq+f desde una interfaz basada en texto. Aparece una lista de todos los procesos
que se ejecutan en su sistema en la pantalla con el nombre del proceso que se eliminó al final. Puede repetir
esas pulsaciones de teclas hasta que haya eliminado suficientes procesos para poder acceder al sistema
normalmente desde el shell nuevamente.
NOTA
Hay muchas otras pulsaciones de teclas Alt+SysRq que puede usar para lidiar con un sistema que no responde. Por
ejemplo, Alt+SysRq+e finaliza todos los procesos excepto el proceso de inicio. Alt+SysRq+t vuelca una lista de todas las
tareas actuales e información sobre esas tareas en la consola. Para reiniciar el sistema, presione Alt+SysRq+b. Ver el
sysrq. txt en el directorio /usr/share/doc/kerneldoc*/Documentation para obtener más información sobre las pulsaciones
de teclas Alt+SysRq.
Solución de problemas en el modo de rescate
Si su sistema Linux no se puede iniciar, su mejor opción para arreglarlo probablemente sea entrar en modo de
rescate. Para entrar en el modo de rescate, omita el sistema Linux instalado en su disco duro y arranque algún
medio de rescate (como una llave USB de arranque o un CD de arranque). Después de que se inicia el medio de
rescate, intenta montar cualquier sistema de archivos que pueda encontrar en su sistema Linux para que pueda
reparar cualquier problema.
Para muchas distribuciones de Linux, el CD o DVD de instalación puede servir como medio de arranque para pasar al
'
modo de rescate. Aquí Este es un ejemplo de cómo usar un DVD de instalación de RHEL para entrar en modo
de rescate y reparar un sistema Linux dañado (grabe la imagen en una unidad USB si su computadora no tiene una
unidad de DVD):
1. Obtenga la imagen de CD o DVD de instalación que desee utilizar y grábela en el
medio adecuado (CD o DVD). Consulte el Apéndice A, “Medios”, para obtener información sobre la
grabación de CD y DVD. (Para mi ejemplo, utilicé un DVD de instalación de Red Hat Enterprise Linux 8).
2. Inserte el CD o DVD en la unidad de la computadora que tiene el Linux roto
sistema instalado y reiniciado.
3. En el momento en que vea la pantalla del BIOS, presione la tecla de función indicada en esa pantalla
para seleccionar el dispositivo de arranque (posiblemente la tecla de función F12 o F2).
4. Elija la unidad (CD o DVD) de la lista de dispositivos de arranque y presione Entrar.
5. Cuando aparezca el menú de arranque de RHEL 8, use las teclas de flecha para resaltar la palabra
Solución de problemas y presione Entrar. En otros medios de arranque de Linux, la selección podría decir
559
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
Modo Rescate o algo similar. En la siguiente pantalla que aparece, seleccione Rescatar un sistema Red
Hat Enterprise Linux y presione Entrar.
6. Después de unos momentos, se inicia el sistema Linux en el medio de rescate. Cuando
se le solicite, seleccione su idioma y teclado. Se le preguntará si desea iniciar interfaces de red en el
sistema.
7. Si cree que podría necesitar obtener algo de otro sistema en su
red (como paquetes RPM o herramientas de depuración), seleccione Sí e intente configurar sus interfaces
de red. Luego se le preguntará si desea intentar montar sistemas de archivos desde su sistema Linux
instalado en /mnt/sysimage.
8. Seleccione Continuar para montar sus sistemas de archivos (si es posible) en el directorio /mnt/
sysimage. Si esto tiene éxito, aparece un mensaje de rescate que le informa que sus sistemas de
archivos se han montado en /mnt/sysimage.
9. Seleccione Aceptar para continuar. Debería ver un indicador de shell para el usuario raíz (#). Eres
listo para comenzar a solucionar problemas desde el modo de rescate. Después de estar en modo de
rescate, la parte de su sistema de archivos que no está dañada se monta en el directorio de imagen /mnt/
sysi. Escriba ls /mnt/sysimage para comprobar que los archivos y directorios del disco duro están allí.
En este momento, la raíz del sistema de archivos (/) es del sistema de archivos que viene en el medio de rescate.
Sin embargo, para solucionar los problemas de su sistema Linux instalado, puede escribir el siguiente comando:
# chroot /mnt/sysimage
Ahora el directorio /mnt/sysimage se convierte en la raíz de su sistema de archivos (/) para que se vea como el
sistema de archivos instalado en su disco duro. Aquí hay algunas cosas que puede hacer para reparar su sistema
mientras está en modo de rescate:
Arreglar /etc/fstab . Si sus sistemas de archivos no pueden montarse debido a un error en su archivo /etc/
fstab, puede intentar corregir cualquier entrada que pueda tener problemas (como nombres de dispositivos
incorrectos o un directorio de punto de montaje que no existe). Escriba mount
m
se a ontan
para atsegurarse de que
odos los sistemas
de archivos.
Vuelva a instalar los componentes faltantes. Puede ser que los sistemas de archivos estén bien, pero
el sistema no pudo arrancar porque falta algún comando crítico o archivo de configuración. Es posible
que pueda solucionar el problema reinstalando el paquete con los componentes que faltan. Por ejemplo,
si alguien hubiera borrado /bin/mount por error, el sistema no tendría ningún comando para montar sistemas
de archivos. Reinstalar el paquete util linux reemplazaría el comando de montaje faltante.
Compruebe los sistemas de archivos. Si sus problemas de arranque provienen de sistemas de archivos corruptos,
puede intentar ejecutar el comando fsck (comprobación del sistema de archivos) para ver si hay algún
daño en la partición del disco. Si lo hay, fsck intenta corregir los problemas que encuentra.
560
Machine Translated by Google
Capítulo 21: Solución de problemas de Linux
Cuando haya terminado de arreglar su sistema, escriba exit para salir del entorno chroot y regrese al diseño del sistema de
archivos que ve el medio en vivo. Si ha terminado por completo, escriba reiniciar para reiniciar el sistema. Asegúrese de
sacar el medio antes de que el sistema se reinicie.
21
Resumen
La solución de problemas en Linux puede comenzar desde el momento en que enciende su computadora.
Pueden ocurrir problemas con el BIOS de su computadora, el cargador de arranque u otras partes del proceso de arranque que
puede corregir al interceptarlos en diferentes etapas del proceso de arranque.
Una vez que el sistema se ha iniciado, puede solucionar problemas con paquetes de software, interfaces de red o agotamiento
de la memoria. Linux viene con muchas herramientas para encontrar y corregir cualquier parte del sistema Linux que pueda
fallar y necesite reparación.
El siguiente capítulo cubre el tema de la seguridad de Linux. Con las herramientas descritas en ese capítulo, puede brindar
acceso a los servicios que usted y sus usuarios necesitan mientras bloquea el acceso a los recursos del sistema que desea
proteger de cualquier daño.
Ejercicios
Los ejercicios de esta sección le permiten probar técnicas útiles de resolución de problemas en Linux. Debido a que algunas
de las técnicas descritas aquí pueden dañar potencialmente su sistema, le recomiendo que no utilice un sistema de producción
que no pueda correr el riesgo de dañar. Consulte el Apéndice B para conocer las soluciones sugeridas.
Estos ejercicios se relacionan con temas de resolución de problemas en Linux. Asumen que está arrancando una PC con BIOS
estándar. Para hacer estos ejercicios, debe poder reiniciar su computadora e interrumpir cualquier trabajo que pueda estar haciendo.
1. Inicie su computadora, y tan pronto como vea la pantalla del BIOS, ingrese al modo Configuración como
instruido en la pantalla del BIOS.
2. Desde la pantalla de configuración del BIOS, determine si su computadora es de 32 bits o de 64 bits, si incluye
soporte de virtualización y si su tarjeta de interfaz de red es capaz de arrancar PXE.
3. Reinicie, y justo después de que desaparezca la pantalla del BIOS, cuando vea la cuenta regresiva para iniciar el
sistema Linux, presione cualquier tecla para acceder al cargador de inicio GRUB.
4. Desde el cargador de arranque GRUB, agregue una opción para arrancar hasta el nivel de ejecución 1 para que pueda
hacer algo de mantenimiento del sistema.
5. Después de que el sistema se inicie, mire los mensajes que se produjeron en el kernel
búfer de anillo que muestra la actividad del kernel a medida que se inicia.
6. En Fedora o RHEL, ejecute una actualización de prueba yum y excluya cualquier paquete del kernel que sea
disponible.
561
Machine Translated by Google
Parte IV: Convertirse en un administrador de servidor Linux
7. Verifique qué procesos están escuchando las conexiones entrantes en su sistema.
8. Verifique qué puertos están abiertos en su interfaz de red externa.
9. Ejecute el comando superior en una ventana de Terminal. Abra una segunda ventana de
Terminal, borre el caché de su página y observe en la pantalla superior si ahora hay más
memoria RES disponible.
10. Con Cockpit habilitado en su sistema, acceda a Cockpit para ver detalles sobre el uso continuo de
memoria y de intercambio del sistema.
562
Machine Translated by Google
rt
aprendiendo linux
Técnicas
EN ESTA PARTE
capitulo 22
Comprender la seguridad básica de Linux
capitulo 23
Comprender la seguridad avanzada de Linux
capitulo 24
Mejorando la seguridad de Linux con SELinux
capitulo 25
Asegurar Linux en una red
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
comprensión básica
Seguridad Linux
EN ESTE CAPÍTULO
Implementación de seguridad básica
Monitoreo de seguridad
Auditoría y revisión de la seguridad.
En su nivel más básico, la seguridad de un sistema Linux comienza con la seguridad física, la seguridad de los
datos, la protección de las cuentas de usuario y la seguridad del software. Con el tiempo, necesita monitorear ese sistema
En para asegurarse de que sigue siendo seguro.
Algunas de las preguntas que debe hacerse incluyen las siguientes:
■ ¿ Quién puede acceder físicamente al sistema? ■
¿ Se realizan copias de seguridad de los datos en caso de desastre? ■ ¿ Qué
tan bien están protegidas las cuentas de usuario?
■ ¿El software proviene de una distribución segura de Linux y son parches de seguridad?
¿A hoy?
■ ¿ Ha estado monitoreando el sistema para asegurarse de que no haya sido agrietado o dañado?
Este capítulo comienza cubriendo temas básicos de seguridad de Linux. Los capítulos siguientes profundizan en los
mecanismos de seguridad avanzados.
Implementación de seguridad física
Un candado en la puerta de la sala del servidor de la computadora es la primera línea de defensa. Aunque es un
concepto muy simple, a menudo se ignora. El acceso al servidor físico significa el acceso a todos los datos que
contiene. Ningún software de seguridad puede proteger completamente sus sistemas si alguien con malas
intenciones tiene acceso físico al servidor Linux.
La seguridad física básica de la sala de servidores incluye elementos como estos:
■ Un candado o alarma de seguridad en la puerta de la sala de
servidores ■ Controles de acceso que permitan solo el acceso autorizado y que identifiquen quién accedió a la sala
y cuándo se produjo el acceso, como un sistema de entrada con llave de tarjeta
565
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
■ Un letrero que diga “no se permite el acceso no autorizado” en la puerta.
■ Políticas sobre quién puede acceder a la habitación y cuándo puede ocurrir ese acceso para
grupos como el equipo de limpieza, los administradores del servidor y otros.
La seguridad física incluye controles ambientales. Se deben implementar sistemas apropiados de supresión de incendios y ventilación
adecuada para su sala de servidores.
Implementación de la recuperación ante desastres
Los planes de recuperación ante desastres deben incluir lo siguiente:
■ Qué datos se incluirán en las copias de seguridad ■ Dónde
se almacenarán las copias de seguridad ■ Cuánto tiempo se
mantienen las copias de seguridad ■ Cómo se rotan los
medios de copia de seguridad a través del almacenamiento
Los datos de copia de seguridad, los medios y el software deben incluirse en la lista de verificación de la Matriz de
control de acceso.
PRECAUCIÓN Es importante determinar cuántas copias de seguridad de cada objeto se deben mantener. Si bien es posible que solo
necesite tres copias de respaldo de un objeto en particular, otro objeto puede ser lo suficientemente importante como para requerir el
mantenimiento de más copias.
Las utilidades de respaldo en un sistema Linux incluyen lo siguiente:
■ amanda (Advanced Maryland Automatic Network Disk Archiver) ■ cpio ■ dump/
restore
■ toma
■ sincronización
Las utilidades cpio, dump/restore y tar suelen estar preinstaladas en una distribución de Linux. Una herramienta simple pero
efectiva para realizar copias de seguridad de datos a través de redes es la utilidad rsync.
Con rsync, puede configurar un trabajo cron para mantener copias de todos los datos en directorios seleccionados o duplicar copias
exactas de directorios en máquinas remotas.
De las herramientas que acabamos de mencionar, solo amanda no suele instalarse de forma predeterminada. Sin embargo,
amanda es extremadamente popular porque ofrece una gran flexibilidad e incluso puede realizar copias de seguridad de un sistema
Windows. Si necesita más información sobre la utilidad de copia de seguridad amanda, visite amanda.org. En última instancia, la
utilidad que seleccione debe satisfacer las necesidades particulares de seguridad de copia de seguridad de su organización.
Protección de las cuentas de usuario Las
cuentas de usuario forman parte del proceso de autenticación que permite a los usuarios acceder al sistema Linux.
La gestión adecuada de cuentas de usuario mejora la seguridad de un sistema. Configuración de cuentas de usuario
566
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
se cubrió en el Capítulo 11, "Administración de cuentas de usuario". Sin embargo, se necesitan algunas reglas
adicionales para aumentar la seguridad a través de la administración de cuentas de usuario:
■ Un usuario por cuenta de usuario. ■
Limite el acceso a la cuenta de usuario raíz.
■ Establecer fechas de vencimiento en cuentas temporales. ■
Eliminar las cuentas de usuario no utilizadas.
Un usuario por cuenta de usuario
Las cuentas deben hacer cumplir la responsabilidad. Por lo tanto, varias personas no deberían iniciar sesión en una
cuenta. Cuando varias personas comparten una cuenta, no hay forma de probar que una persona en particular completó
una acción en particular.
Limitación del acceso a la cuenta de usuario raíz Si
22
varias personas pueden iniciar sesión en la cuenta raíz, tiene otra situación de repudio.
No puede rastrear el uso individual de la cuenta raíz. Para permitir el seguimiento del uso de la cuenta raíz por parte de
las personas, se debe instituir una política para usar sudo (consulte el Capítulo
aprendizaje")
8, "Administración
en lugar de idniciar
el sistema
sesión
de
en la
cuenta raíz.
En lugar de otorgar permiso de root a varias personas en un sistema Linux, puede otorgar acceso de root por
comando con el comando sudo. El uso de sudo proporciona los siguientes beneficios de seguridad:
■ No es necesario dar la contraseña raíz. ■ Puede ajustar el acceso
a los comandos.
■ Todo el uso de sudo (quién, qué, cuándo) se registra en /var/log/secure, incluidos los intentos fallidos de acceso
a sudo. Los sistemas Linux recientes almacenan todos los accesos a sudo en el diario systemd (escriba
journalctl f para ver los intentos de acceso a sudo en vivo, junto con otros mensajes del sistema).
■ Después de otorgar a alguien el permiso sudo, puede intentar restringir el acceso de raíz a ciertos comandos
en el archivo /etc/sudoers (con el comando visudo). Sin embargo, después de otorgar permisos de root a
un usuario, aunque sea de forma limitada, es difícil estar seguro de que un determinado usuario pueda sistema
'
y hacer lo que quiera. Encuentre formas de obtener acceso raíz completo a su
Una forma de mantener a raya a un administrador que se porta mal es enviar mensajes de seguridad destinados
al archivo /var/log/secure a un servidor de registro remoto al que ninguno de los administradores locales tiene acceso.
De esa manera, cualquier uso indebido del privilegio de root se adjunta a un usuario en particular y se registra de una
manera que el usuario no puede cubrir sus huellas.
Configuración de fechas de vencimiento en cuentas temporales
Si tiene consultores, pasantes o empleados temporales que necesitan acceso a sus sistemas Linux, es importante
configurar sus cuentas de usuario con fechas de vencimiento. La fecha de vencimiento es una salvaguarda, en caso de
que olvide eliminar sus cuentas cuando ya no necesiten acceder a los sistemas de su organización.
567
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Para configurar una cuenta de usuario con una fecha de vencimiento, use el comando usermod. El
formato es usermod e aaaammdd nombre_usuario. En el siguiente código, la cuenta tim se ha
configurado para que caduque el 1 de enero de 2021.
# usuariomod e 20210101 Tim
Para verificar que la cuenta se haya configurado correctamente para que caduque, compruébelo usted
mismo usando el comando chage. El comando chage se usa principalmente para ver y cambiar una cuenta
'
de usuarioinformación sobre la caducidad de la contraseña. Sin embargo, también puede acceder a la información de caducidad de la cuenta.
mación La opción l le permite listar información diversa a la que tiene acceso chage.
Para mantenerlo simple, canalice la salida del comando chage a grep y busque la palabra Cuenta. Esto
'
produce solo la cuenta de usuario. fecha de caducidad.
# cambio l tim | Cuenta grep
La cuenta caduca : 01 de enero de 2021
Como puede ver, la fecha de vencimiento de la cuenta se cambió con éxito para tim al 1 de
enero de 2021.
SUGERENCIA Si no utiliza el archivo /etc/shadow para almacenar las contraseñas de su cuenta, la utilidad de cambio no funcionará. En la mayoría
de los casos, esto no es un problema porque el archivo /etc/shadow está configurado para almacenar información de contraseña de manera
predeterminada en la mayoría de los sistemas Linux.
Establezca las fechas de vencimiento de la cuenta para todos los empleados transitorios. Además, considere
revisar todas las fechas de vencimiento de las cuentas de usuario como parte de sus actividades de monitoreo de
seguridad. Estas actividades ayudan a eliminar posibles puertas traseras a su sistema Linux.
Eliminación de cuentas de usuario no
utilizadas Mantener las cuentas caducadas antiguas es un problema. Después de que un usuario haya
abandonado una organización, lo mejor es realizar una serie de pasos para eliminar su cuenta junto con los datos:
1. Busque archivos en el sistema propiedad de la cuenta, utilizando el comando find / user
username.
2. Expirar o deshabilitar la cuenta.
3. Realice una copia de seguridad de los archivos.
4. Elimine los archivos o reasígnelos a un nuevo propietario.
5. Eliminar la cuenta del sistema.
Los problemas ocurren cuando se olvida el paso 5 y las cuentas vencidas o deshabilitadas aún están en
el sistema. Un usuario malicioso que obtenga acceso a su sistema podría renovar la cuenta y luego hacerse
pasar por un usuario legítimo.
'
Para encontrar estas cuentas, busque en el archivo /etc/shadow. La cuenta en el la fecha de caducidad es
campo octavo de cada registro. Sería conveniente que se utilizara un formato de fecha. En cambio, este
'
campo muestra la cuenta s fecha de vencimiento como el número de días desde el 1 de enero de 1970.
568
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Puede usar un proceso de dos pasos para encontrar cuentas vencidas en el archivo /etc/shadow automáticamente.
En primer lugar, configure una variable de shell (consulte el Capítulo 7fecha
, “Escribir
de hoy
scripts
en formato
de shell
de
simples”)
“días desde
con e
la
l 1 de
enero de
1970”. Luego, usando el comando gawk, puede obtener y formatear la información necesaria del archivo /etc/
shadow.
Configurar una variable de shell con la fecha actual convertida al número de días desde el 1 de enero de 1970 no
es particularmente difícil. El comando de fecha puede producir la cantidad de segundos desde el 1 de enero de 1970.
Para obtener lo que necesita, divida el resultado del comando de fecha por la cantidad de segundos en un día:
86,400. A continuación se muestra cómo configurar la variable de shell HOY.
# HOY=$(echo $(($(fecha utc fecha "$1" +%s)/86400))) # echo $HOY 16373
Luego, las cuentas y sus fechas de vencimiento se extraen del archivo /etc/shadow usando gawk. El comando 22
gawk es la versión GNU del programa awk que se usa en UNIX.
La salida del comando se muestra en el siguiente código. Como era de esperar, muchas de las cuentas no tienen
fecha de vencimiento. Sin embargo, dos cuentas, Consultor y Pasante, muestran una fecha de vencimiento en el
formato de "días desde el 1 de enero de 1970". Tenga en cuenta que puede omitir este paso. Es solo para fines de
demostración.
# gawk F: '{imprimir $1,$8}' /etc/shadow
...
chrony
tcpdump
john doe
Consultor 13819
Pasante 13911
El $1 y $8 en el comando gawk representan los campos de nombre de usuario y fecha de vencimiento en los registros
del archivo /etc/shadow. Para verificar las fechas de vencimiento de esas cuentas y ver si están vencidas, se necesita
una versión más refinada del comando gawk.
# gawk F: '{if (($8 > 0) && ($HOY > $8)) imprime $1}' /etc/shadow
Consultor
Interno
La parte ($8 > 0) del comando gawk solo recopila las cuentas con fecha de vencimiento. Para asegurarse de que
estas fechas de vencimiento sean posteriores a la fecha actual, la variable HOY se compara con el campo de fecha
de vencimiento, $8. Si HOY es posterior a la fecha de vencimiento de la cuenta, se incluye la cuenta. Como puede ver
en el ejemplo anterior, todavía existen dos cuentas vencidas en el sistema y deben eliminarse.
Eso es todo lo que necesitas hacer. Configure su variable HOY y ejecute el comando gawk.
Todas las cuentas vencidas en el archivo /etc/shadow se enumeran para usted. Para eliminar estas cuentas, utilice
el comando userdel.
Las cuentas de usuario son solo una parte del proceso de autenticación que permite a los usuarios ingresar al
sistema Linux. Las contraseñas de las cuentas de usuario también juegan un papel importante en el proceso.
569
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Proteger las contraseñas Las
contraseñas son la herramienta de seguridad más básica de cualquier sistema operativo moderno
y, en consecuencia, la función de seguridad más comúnmente atacada. Es natural que los usuarios
deseen elegir una contraseña que sea fácil de recordar, pero a menudo esto significa que eligen una
contraseña que también es fácil de adivinar.
Los métodos de fuerza bruta se emplean comúnmente para obtener acceso a un sistema informático. Probar las
contraseñas populares a menudo da resultados. Algunas de las contraseñas más comunes son las siguientes:
■ 123456
■ Contraseña
■ princesa ■
rockyou ■
abc123
Simplemente use su motor de búsqueda de Internet favorito y busque "contraseñas comunes". Si puede encontrar
estas listas, los atacantes maliciosos también pueden encontrarlas. Obviamente, elegir buenas contraseñas es
fundamental para tener un sistema seguro.
Elegir buenas contraseñas En
general, una contraseña no debe ser fácil de adivinar, ser común o popular, ni estar vinculada a usted de
ninguna manera. Aquí hay algunas reglas a seguir al elegir una contraseña:
■ No utilice ninguna variación de su nombre de inicio de sesión o su nombre
completo. ■ No utilice una palabra del diccionario. ■ No utilice nombres propios
de ningún tipo. ■ No use su número de teléfono, dirección, familia o nombres de
mascotas. ■ No utilice nombres de sitios web.
■ No utilice ninguna línea contigua de letras o números en el teclado (como
“qwerty” o “asdfg”).
■ No utilice ninguno de los anteriores con números añadidos o puntuación al principio o al final o escrito al
revés.
Entonces, ahora que sabe lo que no debe hacer, mire los dos elementos principales que hacen una
contraseña segura:
1. Una contraseña debe tener al menos 15 a 25 caracteres de longitud.
2. Una contraseña debe contener todo lo siguiente:
■ letras minúsculas
■ Letras mayúsculas ■
Números
″ '
■ Caracteres especiales, como : ! ps ) + = , < > : :
570
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Veinticinco caracteres es una contraseña larga. Sin embargo, cuanto más larga sea la contraseña, más
segura será. Lo que su organización elija como la longitud mínima de la contraseña depende de sus
necesidades de seguridad.
CONSEJO Gibson Research Center tiene material excelente sobre contraseñas seguras, incluido un artículo llamado
"¿Qué tan grande es tu pajar? . .y qué tan bien escondida está tu aguja? en grc.com/haystack.htm .
Elegir una buena contraseña puede ser difícil. Tiene que ser lo suficientemente difícil como para no ser
adivinado y lo suficientemente fácil como para recordarlo. Una buena forma de elegir una contraseña segura
es tomar la primera letra de cada palabra de una oración fácil de recordar. Asegúrese de agregar números,
caracteres especiales y mayúsculas y minúsculas. La oración que elija debe tener significado solo para usted
y no debe estar disponible públicamente. La tabla 22.1 enumera ejemplos de contraseñas seguras y los 22
trucos que se usan para recordarlas.
TABLA 22.1 Ideas para buenas contraseñas
Contraseña Cómo recordarlo
Mrci7yo! ¡Mi auto oxidado tiene 7 años! 2
2emBp1ib elefantes son MALAS mascotas, 1 es mejor
ItMc?Gib ¿Ese es MI abrigo? Devolvérsela
Las contraseñas parecen tonterías, pero en realidad son bastante fáciles de recordar. Por supuesto,
asegúrese de no utilizar las contraseñas enumeradas aquí. Ahora que son públicos, se agregarán a los
diccionarios de los atacantes malintencionados.
Configuración y cambio de contraseñas
Establece su propia contraseña con el comando passwd. Escriba el comando passwd y le permitirá cambiar
su contraseña. Primero, le solicita que ingrese su contraseña anterior. Para evitar que alguien navegue por
encima del hombro y aprenda su contraseña, la contraseña no se muestra a medida que la escribe.
Suponiendo que haya escrito su contraseña anterior correctamente, el comando passwd le solicitará la
nueva contraseña. Cuando escribe su nueva contraseña, se verifica mediante una utilidad llamada cracklib
para determinar si es una contraseña buena o mala. Los usuarios que no son root deben probar una
contraseña diferente si la que han elegido no es una buena contraseña.
El usuario raíz es el único usuario al que se le permite asignar contraseñas incorrectas. Después de que
cracklib haya aceptado la contraseña, el comando passwd le pide que ingrese la nueva contraseña por
segunda vez para asegurarse de que no haya errores tipográficos (que son difíciles de detectar cuando no
'
puede veo lo que está escribiendo).
571
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Cuando se ejecuta como root, es posible cambiar la contraseña de un usuario proporcionando el nombre de inicio de
sesión de ese usuario como un parámetro del comando passwd, como en este ejemplo:
# passwd joe
Cambio de contraseña para el usuario joe.
Nueva contraseña de UNIX: ******** Vuelva
a escribir la nueva contraseña de UNIX: ********
contraseña: todos los tokens de autenticación se actualizaron correctamente.
Aquí, el comando passwd le solicita dos veces que ingrese una nueva contraseña para joe. En este caso, no
solicita su contraseña anterior.
Hacer cumplir las mejores prácticas de
contraseñas Ahora que sabe cómo es una buena contraseña y cómo cambiar una contraseña, pero ¿cómo la aplica
en su sistema Linux? Un lugar para comenzar es con la instalación PAM. Con PAM, puede defi nir los requisitos
exactos que deben cumplir las contraseñas. Por ejemplo, para asegurarse de que las contraseñas deben tener 12
caracteres, con al menos 2 números, 3 letras mayúsculas y 2 letras minúsculas, y que sean diferentes a las contraseñas
anteriores, puede agregar la siguiente línea al archivo /etc/pam. Archivo d/commonpassword o /etc/pam.d/common
auth:
requisito de contraseña pam_cracklib.so minlen=12, dcredit=2, ucredit=3, lcredit=2, difok=4
La siguiente pregunta es, ¿cómo puedes hacer que la gente cambie sus contraseñas? ¡Puede volverse tedioso crear
contraseñas nuevas y seguras cada 30 días! Es por eso que algunas técnicas de aplicación son a menudo necesarias.
SUGERENCIA Si los usuarios tienen dificultades para crear contraseñas únicas y seguras, considere instalar la utilidad
pwgen en su sistema Linux. Esta utilidad de generación de contraseñas de código abierto crea contraseñas que se pueden
pronunciar y recordar. Puede utilizar estas palabras generadas como punto de partida para crear contraseñas de cuentas.
Los valores predeterminados en el archivo /etc/login.defs para cuentas nuevas se trataron en el Capítulo 11 Dentro .
del archivo login.defs hay algunas configuraciones que afectan la antigüedad y la duración de la contraseña:
PASS_MAX_DAYS 30
PASS_MIN_DAYS 5PASS_MIN_LEN 16PASS_WARN_AGE 7
En este ejemplo, el número máximo de días, PASS_MAX_DAYS, hasta que se deba cambiar la contraseña es 30. El
número que establezca aquí depende de la configuración de su cuenta en particular. Para las organizaciones que
practican una persona para una cuenta, este número puede ser mucho mayor que 30. Si tiene cuentas compartidas o
varias personas conocen la contraseña raíz, es imperativo que cambie la contraseña con frecuencia. Esta práctica
actualiza efectivamente la lista de quienes conocen la contraseña.
Para evitar que los usuarios cambien su contraseña por una nueva y luego la vuelvan a cambiar de inmediato,
debe configurar PASS_MIN_DAYS en un número mayor que 0. En el ejemplo anterior, lo más pronto que un usuario
puede cambiar su contraseña nuevamente es 5 días.
572
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
La configuración PASS_WARN_AGE es la cantidad de días que se advierte a un usuario antes de verse obligado a
cambiar su contraseña. Las personas tienden a necesitar muchas advertencias y estímulos, por lo que el ejemplo
anterior establece el tiempo de advertencia en 7 días.
Anteriormente en el capítulo, mencioné que una contraseña segura tiene entre 15 y 25 caracteres. Con la
configuración PASS_MIN_LEN, puede obligar a los usuarios a utilizar una determinada cantidad mínima de
caracteres en sus contraseñas. La configuración que elija debe basarse en los planes de ciclo de vida de seguridad
de su organización.
NOTA
Ubuntu no tiene la configuración PASS_MIN_LEN en su archivo login.defs. En su lugar, esta configuración es manejada por la
utilidad PAM. PAM se cubre en el Capítulo 23, "Comprensión de la seguridad avanzada de Linux".
22
Para las cuentas que ya se han creado, debe controlar la caducidad de la contraseña mediante el comando
chage. Las opciones necesarias para controlar la caducidad de la contraseña con el cambio se enumeran en la
Tabla 22.2. Tenga en cuenta que no hay una configuración de longitud de contraseña en la utilidad de cambio.
TABLA 22.2 Opciones de visualización
Opción Descripción
METRO
Establece el número máximo de días antes de que sea necesario cambiar una contraseña. Equivalente a PASS_MAX_DAYS en /etc/
login.defs.
metro
Establece el número mínimo de días antes de que se pueda volver a cambiar una contraseña. Equivalente a PASS_MIN_DAYS en /etc/
login.defs.
EN Establece el número de días que se advierte a un usuario antes de verse obligado a cambiar la contraseña de la cuenta. Equivalente a
PASS_WARN_AGE en /etc/login.defs.
El ejemplo que sigue usa el comando chage para establecer los parámetros de caducidad de la contraseña para
la cuenta tim. Las tres opciones se utilizan a la vez.
# cambio l tim | dias grep
Número mínimo de días entre el cambio de contraseña : 0
Número máximo de días entre el cambio de contraseña : 99999
Número de días de advertencia antes de que caduque la contraseña # chage : 7
M 30 m 5 W 7 tim # chage l tim | dias grep
Número mínimo de días entre el cambio de contraseña : 5
Número máximo de días entre el cambio de contraseña : 30
Número de días de advertencia antes de que caduque la contraseña : 7
También puede usar el comando chage como otro método de vencimiento de la cuenta, que se basa en el
'
vencimiento de la cuenta. Use s
el
ccontraseña
omando cahage con
de lcas
punto opciones
aducar. M y I para
Anteriormente, buloquear
la el
tilidad usermod
se usaba para
573
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
cuenta. En el código que sigue, la cuenta de tim se ve usando chage l. Solo se extrae la información para la
configuración de la contraseña de Tim.
# cambio l tim | contraseña
La contraseña caduca : nunca
Contraseña inactiva : nunca
Puede ver que no hay configuraciones para la caducidad de la contraseña (La contraseña caduca) o la inactividad de la
contraseña (La contraseña está inactiva). En el siguiente código, la cuenta está configurada para bloquearse 5 días después
de que caduque la contraseña de tim usando solo la opción I.
# cambio I 5 tim #
cambio l tim | contraseña
La contraseña caduca : nunca
Contraseña inactiva : nunca
¡Observe que ninguna configuración cambió! Sin un conjunto de caducidad de contraseña, la opción I no tiene ningún
efecto. Por lo tanto, al usar la opción M, se establece el número máximo de días antes de que caduque la contraseña y
la configuración del tiempo de inactividad de la contraseña debería tomar efecto.
# cambio M 30 I 5 tim # cambio
l tim | contraseña
La contraseña caduca : 03 de marzo de 2017
Contraseña inactiva : 08 de marzo de 2017
Ahora, la cuenta de tim se bloqueará 5 días después de que caduque su contraseña. Esto es útil en situaciones en las
que un empleado ha dejado la empresa pero su cuenta de usuario aún no ha sido eliminada. Dependiendo de las
necesidades de seguridad de su organización, considere configurar todas las cuentas para que se bloqueen una cierta
cantidad de días después de que caduquen las contraseñas.
Comprender los archivos de contraseñas y los hashes de contraseñas Los
primeros sistemas Linux almacenaban sus contraseñas en el archivo /etc/passwd. Las contraseñas fueron
codificadas. Una contraseña codificada se crea mediante un proceso matemático unidireccional. Después de crear el
'
hash, no puede volver a crear los caracteres originales del hash. Aquí cómo funciona. s
Cuando un usuario ingresa la contraseña de la cuenta, el sistema Linux rehace la contraseña y luego compara el
resultado del hash con el hash original en /etc/passwd. Si coinciden, el usuario se autentica y se le permite ingresar al
sistema.
El problema con el almacenamiento de estos hashes de contraseña en el archivo /etc/passwd tiene que ver con la
configuración de seguridad del sistema de archivos (consulte econfiguración
l Capítulo 4, “Moverse
de seguridad
por edl el
sistema
sistema
de
dae
rchivos”).
archivos pLara
a
el archivo /etc/passwd se enumera aquí:
# ls l /etc/passwd rwrr.
1 raíz raíz 1644 2 de febrero 02:30 /etc/passwd
Como puede ver, todos pueden leer el archivo de contraseña. Puede pensar que esto no es un problema porque
todas las contraseñas están cifradas. Sin embargo, personas con intenciones maliciosas han creado archivos llamados
tablas arcoíris. Una tabla de arco iris es simplemente un diccionario de potencial
574
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
contraseñas que han sido codificadas. Por ejemplo, la tabla del arco iris contendría el hash de la popular
contraseña "Contraseña", que es la siguiente:
$6$dhN5ZMUj$CNghjYIteau5xl8yX.f6PTopendJwTOcXjlTDQUQZhhy
V8hKzQ6Hxx6Egj8P3VsHJ8Qrkv.VSR5dxcK3QhyMc.
Debido a la facilidad de acceso a los hashes de contraseña en el archivo /etc/passwd, es solo cuestión de tiempo
antes de que una contraseña con hash coincida en una tabla de arco iris y se descubra la contraseña de texto
sin formato.
NOTA
Los expertos en seguridad le dirán que las contraseñas no solo se cifran sino que también se saltean. Salar un hash significa
que se agrega un valor generado aleatoriamente a la contraseña original antes de que se convierta en hash. Esto hace que sea
aún más difícil que la contraseña codificada coincida con su contraseña original. Sin embargo, en Linux, el hash salt también se
almacena con las contraseñas hash. Por lo tanto, el acceso de lectura al archivo /etc/passwd significa que tiene el valor hash y su sal.
22
Por lo tanto, las contraseñas cifradas se trasladaron a un nuevo archivo de configuración, /etc/shadow, hace
muchos años. Este archivo tiene la siguiente configuración de seguridad:
# ls l /etc/sombra
. 1 raíz raíz 1049 2 de febrero 09:45 /etc/shadow
A pesar de no tener permisos abiertos, root, pero ningún otro usuario, puede ver este archivo. Por lo tanto,
las contraseñas cifradas están protegidas. Aquí está el final de un archivo /etc/shadow. Puede ver que hay
largas cadenas de caracteres sin sentido en el registro de cada usuario. Esas son las contraseñas cifradas.
# cola 2 /etc/shadow johndoe:
$6$jJjdRN9/qELmb8xWM1LgOYGhEIxc/:15364:0:99999:7:::
Tim:$6$z760AJ42$QXdhFyndpbVPVM5oVtNHs4B/:15372:5:30:7:16436::
PRECAUCIÓN
Puede heredar un sistema Linux que todavía usa el antiguo método de mantener las contraseñas cifradas en el archivo /
etc/passwd. Es fácil de arreglar. Simplemente use el comando pwconv y se creará el archivo /etc/shadow y se moverán las
contraseñas cifradas.
Lo siguiente también se almacena en el archivo /etc/shadow, además del nombre de cuenta y la contraseña
cifrada:
■ Número de días (desde el 1 de enero de 1970) desde que se cambió la contraseña ■
Número de días antes de que se pueda cambiar la contraseña ■ Número de días antes de
que se deba cambiar una contraseña ■ Número de días para advertir a un usuario antes de
que se deba cambiar una contraseña ■ Número de días después de que caduca una
contraseña que se deshabilita una cuenta ■ Número de días (desde el 1 de enero de 1970)
que se ha deshabilitado una cuenta
575
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Esto debería sonarle familiar, ya que son las configuraciones para la caducidad de la contraseña que se trataron
anteriormente en este capítulo. Recuerde que el comando cambiar no funciona si no tiene un archivo /etc/shadow
configurado o si el archivo /etc/login.defs no está disponible.
Obviamente, la configuración de seguridad del sistema de archivos es muy importante para mantener seguro su
sistema Linux. Esto es especialmente cierto con los archivos de configuración de todos los sistemas Linux y otros.
Protección del sistema de archivos Otra
parte importante de la protección de su sistema Linux es establecer la seguridad adecuada del sistema de archivos.
Los aspectos básicos de la configuración de seguridad se cubrieron en el Capítulo 4 y las Listas de control de acceso
(ACL) en el Capítulo
11. Sin embargo, hay algunos puntos adicionales que deben agregarse a su base de
conocimientos.
Administrar permisos peligrosos del sistema de archivos
Si otorga acceso completo rwxrwxrwx (777) a todos los archivos del sistema Linux, puede imaginar el caos que se
produciría. En muchos sentidos, puede ocurrir un caos similar si no se administran de cerca los permisos de conjunto
de UID (SUID) y conjunto de GID (SGID) (consulte el Capítulo 4 y el Capítulo 11).
Los archivos con el permiso SUID en la categoría Propietario y el permiso de ejecución en la categoría Otro
permiten que cualquier persona se convierta en el propietario del
ejecuta
archivo
en
temporalmente
la memoria. El
mcientras
aso más
el aarriesgado
rchivo se es si el
propietario del archivo es root.
De manera similar, los archivos con permiso SGID en la categoría Grupo y permiso de ejecución en la categoría Otro
permiten que cualquier persona se convierta temporalmente en miembro del grupo del archivo mientras el archivo
ejecuta
se
en la memoria. SGID también se puede configurar en directorios. Esto establece el ID de grupo de cualquier archivo
creado en el directorio al ID de grupo del directorio.
Los archivos ejecutables con SUID o SGID son los favoritos de los usuarios malintencionados. Por lo tanto, es mejor
usarlos con moderación. Sin embargo, algunos archivos necesitan mantener esta configuración. Dos ejemplos son los
comandos passwd y sudo que siguen. Cada uno de estos archivos debe mantener sus permisos SUID.
$ ls l /usr/bin/passwd rwsrxrx.
1 root root 28804 17 de agosto 20:50 /usr/bin/passwd $ ls l /usr/bin/sudo sxx.
2 raíz raíz 77364 3 de noviembre 08:10 /usr/bin/sudo
Los comandos como passwd y sudo están diseñados para usarse como programas SUID. Aunque esos comandos
se ejecutan como usuario root, como usuario normal solo puede cambiar su propia contraseña con passwd y solo
puede escalar a permisos de root con sudo si se le otorgó permiso en el archivo /etc/sudoers. Una situación más
peligrosa sería si un pirata informático creara un comando SUID bash; cualquiera que ejecutara ese comando podría
cambiar efectivamente todo en el sistema que tenía acceso de root.
Con el comando de búsqueda, puede buscar en su sistema para ver si hay comandos SUID y SGID ocultos o
inapropiados en su sistema. Aquí hay un ejemplo:
576
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
# find / perm /6000 ls 4597316
52 rwxrsrx 1 juegos raíz 51952 21 de diciembre de 2013 /usr/bin/atc 4589119 20 rwxr
srx 1 raíz tty 19552 18 de noviembre de 2013 /usr/bin/ escribir 4587931 60 rwsrxrx 1
root root 57888 2 de agosto de 2013 /usr/bin/at 4588045 60 rwsrxrx 1 root root 57536 25
de septiembre de 2013 /usr/bin/crontab 4588961 32 rwsrxr x 1 raíz raíz 32024 18 de
noviembre de 2013 /usr/bin/su
...
5767487 85 rwsrwsrx 1 raíz raíz 68928 13 de septiembre 11:52 /var/.bin/myvi
...
Tenga en cuenta que find descubre los comandos SUID y SGID que los usuarios normales pueden ejecutar para
obtener su permiso por motivos particulares. En este ejemplo, también hay un archivo que un usuario intentó
ocultar (myvi). Esta es una copia del comando vi que, debido al permiso y la propiedad, puede cambiar los archivos
que pertenecen a root. Obviamente, se trata de un usuario que hace algo que no debería estar haciendo.
22
Protección de los archivos de
contraseña El archivo /etc/passwd es el archivo que utiliza el sistema Linux para verificar la información de la
cuenta de usuario y se trató anteriormente en este capítulo. El archivo /etc/passwd debe tener la siguiente
configuración de permisos:
■ Propietario: raíz
■ Grupo: raíz ■
Permisos: (644) Propietario: rw Grupo: r Otro: r
El siguiente ejemplo muestra que el archivo /etc/passwd tiene la configuración adecuada:
# ls l /etc/passwd rwr
r. 1 raíz raíz 1644 2 de febrero 02:30 /etc/passwd
Esta configuración es necesaria para que los usuarios puedan iniciar sesión en el sistema y ver los nombres de
usuario asociados con los números de ID de usuario y de grupo. Sin embargo, los usuarios no deberían poder
modificar /etc/passwd directamente. Por ejemplo, un usuario malintencionado podría agregar una nueva cuenta al
archivo si se concediera acceso de escritura a Otro.
El siguiente archivo es el archivo /etc/shadow. Por supuesto, está estrechamente relacionado con el archivo /etc/
passwd porque también se usa durante el proceso de autenticación de inicio de sesión. Este archivo /etc/shadow
debe tener la siguiente configuración de permisos:
■ Propietario: root
■ Grupo: raíz ■
Permisos: (000) Propietario: Grupo: Otro:
El código que sigue muestra que el archivo /etc/shadow tiene la configuración adecuada.
# ls l /etc/sombra
. 1 raíz raíz 1049 2 de febrero 09:45 /etc/shadow
El archivo /etc/passwd tiene acceso de lectura para el propietario, el grupo y otros. Observe cuánto más
está restringido el archivo /etc/shadow que el archivo /etc/passwd. Para el
577
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
/etc/shadow, no hay permiso de acceso, aunque el usuario raíz aún puede acceder al archivo. Entonces, si solo la
raíz puede ver este archivo, ¿cómo pueden los usuarios cambiar sus contraseñas, que están almacenadas en /etc/
shadow? La utilidad passwd, /usr/bin/passwd, utiliza el permiso especial SUID. Esta configuración de permisos se
muestra aquí:
# ls l /usr/bin/passwd rwsrxr
x. 1 raíz raíz 28804 17 de agosto 20:50 /usr/bin/passwd
Por lo tanto, el usuario que ejecuta el comando passwd se convierte temporalmente en root mientras el comando se
ejecuta en la memoria y luego puede escribir en el archivo /etc/shadow, pero solo para cambiar el usuario.
'
propia información relacionada con la contraseña.
NOTA
El usuario root no tiene acceso de escritura a los permisos /etc/shadow, entonces, ¿cómo escribe root en el archivo /etc/
shadow? El usuario raíz es todopoderoso y tiene acceso completo a todos los archivos, ya sea que los permisos estén en
la lista o no.
El archivo /etc/group (consulte el Capítulo 11) contiene todos los grupos del sistema Linux. Sus permisos de
archivo deben establecerse exactamente como el archivo /etc/passwd:
■ Propietario: root
■ Grupo: raíz ■
Permisos: (644) Propietario: rw Grupo: r Otro: r
Además, el archivo de contraseña de grupo, /etc/gshadow, debe estar debidamente protegido. Como era de
esperar, el permiso del archivo debe configurarse exactamente como el archivo /etc/shadow:
■ Propietario: raíz
■ Grupo: raíz ■
Permisos: (000) Propietario: Grupo: Otro:
Bloqueo del sistema de archivos La
tabla del sistema de archivos (consulte el Capítulo 12, “Administración de discos y sistemas de archivos”), /
etc/fstab, también necesita atención especial. El archivo /etc/fstab se utiliza en el momento del arranque para montar
dispositivos de almacenamiento en sistemas de archivos. También lo utilizan el comando mount, el comando dump
y el comando fsck. El archivo /etc/fstab debe tener la siguiente configuración de permisos:
■ Propietario: root
■ Grupo: raíz ■
Permisos: (644) Propietario: rw Grupo: r Otro: r
Dentro de la tabla del sistema de archivos, hay algunas configuraciones de seguridad importantes que deben revisarse.
Además de las particiones raíz, de arranque y de intercambio, las opciones del sistema de archivos son bastante seguras de
forma predeterminada. Sin embargo, es posible que desee considerar también lo siguiente:
■ Por lo general, coloca el subdirectorio /home, donde se encuentran los directorios de usuarios, en su
propia partición. Cuando agrega opciones de montaje para montar ese directorio en /etc/
578
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
fstab, puede configurar la opción nosuid para evitar que los programas ejecutables habilitados
con permiso SUID y SGID se ejecuten desde allí. Los programas que necesitan permisos SUID y
SGID no deben almacenarse en /home y lo más probable es que sean maliciosos.
Puede configurar la opción nodev para que no se reconozca ningún archivo de dispositivo ubicado allí.
Los archivos del dispositivo deben almacenarse en /dev y no en /home. Puede configurar la opción
noexec para que no se puedan ejecutar programas ejecutables, que están almacenados en /home.
■ Puede colocar el subdirectorio /tmp, donde se encuentran los archivos temporales, solo
partición y use la misma configuración de opciones que para /home:
■ nosuido
■ nodev
■ noexec
■ Puede colocar el subdirectorio /usr, donde se encuentran los programas y los datos del usuario, en su
propia partición y configurar la opción nodev para que no se reconozca ningún archivo de dispositivo
22
ubicado allí. Después de instalar el software, el directorio /usr a menudo tiene pocos o ningún cambio
(a veces, incluso se monta como de solo lectura por razones de seguridad). ■ Si el sistema está
configurado como servidor, probablemente desee colocar el directorio /var en su propia partición. El
directorio /var está destinado a crecer, a medida que se agregan mensajes de registro y contenido
para web, FTP y otros servidores. Puede usar las mismas opciones de montaje con la partición /var
que para /home:
■ nosuido
■ nodev
■ noexec
Poner las opciones de montaje anteriores en su /etc/fstab sería similar a lo siguiente:
Estas opciones de montaje ayudarán a bloquear aún más su sistema de archivos y agregarán otra capa de
protección contra aquellos con intenciones maliciosas. Una vez más, la gestión de los distintos permisos de
archivo y las opciones de fstab debe formar parte de su política de seguridad. Los elementos que elija
implementar deben estar determinados por las necesidades de seguridad de su organización.
Gestión de software y servicios.
A menudo, el enfoque del administrador es asegurarse de que el software y los servicios necesarios estén en
un sistema Linux. Desde el punto de vista de la seguridad, debe adoptar el punto de vista opuesto y asegurarse
de que el software y los servicios innecesarios no estén en un sistema Linux.
Actualización de paquetes de
software Además de eliminar servicios y software innecesarios, mantener actualizado el software actual es
fundamental para la seguridad. Las últimas correcciones de errores y parches de seguridad se obtienen a través de
579
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
actualizaciones de software. Las actualizaciones de paquetes de software se cubrieron en el Capítulo 9, "Instalación de
Linux", y el Capítulo 10, "Obtención y administración de software".
Las actualizaciones de software deben realizarse periódicamente. Por supuesto, la frecuencia y el momento en
que lo hace depende de las necesidades de seguridad de su organización.
Puede automatizar fácilmente las actualizaciones de software, pero al igual que eliminar servicios y software,
sería conveniente probar primero las actualizaciones en un entorno de prueba. Cuando el software actualizado no
muestra problemas, puede actualizar el software en sus sistemas Linux de producción.
Mantenerse al día con los avisos de seguridad
A medida que se encuentran fallas de seguridad en el software de Linux, el proyecto Common Vulnerabilities and
Exposures (CVE) las rastrea y ayuda a obtener rápidamente correcciones para esas fallas en las que ha trabajado
la comunidad de Linux.
Compañías como Red Hat brindan paquetes actualizados para corregir las fallas de seguridad y las entregan en lo
que se conoce como fe de erratas. La errata puede consistir en un único paquete actualizado o en varios paquetes
actualizados. Si está ejecutando Red Hat Enterprise Linux, busque, identifique e instale los paquetes RPM (RPM
Package Manager) asociados con un CVE en particular y entregados en erratas.
A medida que estén disponibles nuevas formas de empaquetado de software, asegúrese de que el software de esos
paquetes se compruebe en busca de vulnerabilidades. Por ejemplo, el catálogo de contenedores de Red Hat (https://
access.redhat.com/containers) enumera las imágenes de contenedores compatibles con Red Hat junto con las erratas
asociadas y los índices de salud para cada imagen.
Para obtener más información sobre cómo se manejan las actualizaciones de seguridad en Red Hat Enterprise
Linux, consulte la página de actualizaciones de seguridad en el portal de clientes de Red Hat (https://
access.redhat.com/security/updates/). El sitio contiene una gran cantidad de conocimientos relacionados con las
vulnerabilidades de seguridad y cómo se manejan. Poder obtener actualizaciones de seguridad oportunas es una
de las principales razones por las que las empresas suscriben sistemas críticos a Red Hat Enterprise Linux.
Implementación avanzada Debe tener en
cuenta varios otros temas de seguridad importantes al planificar sus implementaciones. Incluyen criptografía,
módulos de autenticación conectables (PAM) y SELinux. Estos temas avanzados y detallados se han incluido en
capítulos separados: el Capítulo 23 y el Capítulo 24 .
Monitoreo de sus sistemas
'
Si hace un buen trabajo de planificación e implementación, los ataques al sistema s seguridad, más malicioso
se detendrán. Sin embargo, si se produce un ataque, debe poder reconocerlo. El monitoreo es una actividad que
debe realizarse continuamente.
580
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Supervisar su sistema incluye vigilar los archivos de registro, las cuentas de usuario y el propio sistema
de archivos. Además, necesita algunas herramientas que lo ayuden a detectar intrusiones y otros tipos de
malware.
Monitoreo de archivos de
registro Comprender cómo se realiza el registro de mensajes es fundamental para mantener y solucionar
problemas de un sistema Linux. Antes de que se usara la función systemd para recopilar mensajes en lo
que se conoce como el diario systemd, los mensajes generados por el kernel y los servicios del sistema se
dirigían al archivo en el directorio /var/log. Si bien eso sigue siendo cierto en gran medida con systemd,
ahora también puede ver los mensajes de registro directamente desde el diario systemd usando el comando
journalctl.
Los archivos de registro de su sistema Linux se encuentran principalmente en el directorio /var/log.
La mayoría de los archivos en el directorio /var/log se dirigen allí desde systemd journal a través del 22
servicio rsyslogd (consulte el Capítulo 13, "Comprensión de la administración del servidor").
La tabla 22.3 contiene una lista de archivos /var/log y una breve descripción de cada uno.
TABLA 22.3 Archivos de registro en el directorio /var/log
Nombre de registro del sistema Nombre del archivo Descripción
Registro de errores de Apache /var/log/ httpd/ Registra los errores encontrados por los clientes que intentan acceder a los datos
error_log en su servidor web Apache.
Registro de transferencia FTP xferlog Contiene información sobre los archivos transferidos mediante el servicio
FTP.
(continuado)
581
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
TABLA 22.3 (Continuación)
correo electrónico. Útil para detectar spam.
'
Los archivos de registro que están en El directorio s /var/log depende de los servicios que esté
ejecución en su sistema. Además, algunos archivos de registro dependen de la distribución. Por ejemplo, si usa Fedora,
no tendrá el archivo de registro dpkg.
La mayoría de los archivos de registro se muestran mediante los comandos cat, head, tail, more o less. Sin
embargo, algunos de ellos tienen comandos especiales para ver (ver Tabla 22.4).
TABLA 22.4 Visualización de archivos de registro que necesitan comandos especiales
Nombre del archivo Ver comando
bmp volcadoutmp btmp
dmesg dmesg
último registro último registro
wtmp volcadoutmp wtmp
582
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Con el cambio en Fedora, RHEL, Ubuntu y otras distribuciones de Linux a systemd (que administra el proceso de
arranque y los servicios), como se indicó anteriormente, el mecanismo para recopilar y mostrar mensajes de registro
asociados con el kernel y los servicios del sistema también ha cambiado. . Esos mensajes se dirigen al diario systemd
y se pueden mostrar con el comando journalctl.
Puede ver los mensajes del diario directamente desde el diario systemd en lugar de simplemente enumerar el
contenido de los archivos /var/log. De hecho, el archivo /var/log/messages, al que muchos servicios envían los mensajes
de registro de forma predeterminada, ni siquiera existe en la última versión de Fedora.
En su lugar, puede usar el comando journalctl para mostrar los mensajes de registro de varias maneras.
Para recorrer los mensajes del núcleo, escriba el siguiente comando:
# diarioctl k
Los registros comienzan el domingo 20190609 18:59:23 EDT, finalizan a las
Dom 20191020 18:11:06 EDT. 22
19 de octubre 11:43:04 kernel localhost.localdomain:
Linux versión 5.0.9301.fc30.x86_64
(mockbuild@bkernel04.phx2.fedoraproject.org) (gcc versión 9.0.1
20190312 (Red Hat 9.0.10.10) (GCC))
#1 SMP mar 23 abr 23:57:35 UTC 2019
19 de octubre 11:43:04 kernel localhost.localdomain: línea de comando:
BOOT_IMAGE=(hd0,msdos1)/vmlinuz5.0.9301.fc30.x86_64
root=/dev/mapper/fedora_localhostliveroot ro resume=/dev/mapper/
fedora_localhostliveswap rd.lvm.lv=fedora_localhostlive/root
rd.lvm.lv=fedora_localhostlive/swap rhgb tranquilo
...
Para ver los mensajes asociados con un servicio en particular, use la opción u seguida del nombre del servicio para
ver los mensajes de registro de cualquier servicio, como en este ejemplo:
# journalctl u NetworkManager.servicio # journalctl u
httpd.servicio # journalctl u avahidaemon.servicio
Si cree que se está produciendo una infracción de seguridad, puede ver todos los mensajes o los seleccionados a medida
que llegan siguiendo los mensajes. Por ejemplo, para seguir los mensajes del núcleo o los mensajes httpd a medida que
llegan, agregue la opción f (presione Ctrl+C cuando haya terminado):
# journalctl k f # journalctl
f u NetworkManager.servicio
Para verificar solo los mensajes de inicio, puede enumerar los ID de inicio para todos los inicios del sistema y luego
iniciar la instancia de inicio particular que le interese. Los siguientes ejemplos muestran los ID de arranque y luego
muestran los mensajes de arranque para un ID de arranque seleccionado:
# journalctl listboots 3
6b968e820df345a781cb6935d483374c
Dom 20190825 12:42:08 EDT—Lun 20190826 14:30:53 EDT
2 f2c5a74fbe9b4cb1ae1c06ac1c24e89b
583
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
lun 20190902 15:49:03 EDT—jue 20190912 13:08:26 EDT
1 5d26bee1cfb7481a9e4da3dd7f8a80a0
Dom 20191013 12:30:27 EDT—Jue 20191017 13:37:22 EDT
0 c848e7442932488d91a3a467e8d92fcf
Sáb 20191019 11:43:04 EDT—Dom 20191020 18:11:06 EDT
#journalctl b c848e7442932488d91a3a467e8d92fcf
Los registros comienzan el domingo 20190609 18:59:23 EDT,
finaliza el dom 20191020 18:21:18 EDT.
19 de octubre 11:43:04 kernel localhost.localdomain: Linux versión 5.0.9301.fc30.x86_64
(mockbuild@bkernel04.phx2.fedoraproject.org);
...
19 de octubre 11:43:04 kernel localhost.localdomain: línea de comando:
BOOT_IMAGE=(hd0,msdos1)/vmlinuz5.0.9301.fc30.x86_64 root=/dev/mapper/
fedora_local>
...
19 de octubre 11:43:04 kernel localhost.localdomain:
DMI: Red Hat KVM, BIOS 1.9.15.el7_3.3 01/04/2014 19 de octubre 11:43:04
localhost.localdomain kernel: Hipervisor detectado: KVM
Monitoreo de cuentas de usuario Las
cuentas de usuario a menudo se usan en ataques maliciosos en un sistema al obtener acceso no
autorizado a una cuenta actual, al crear nuevas cuentas falsas o al dejar una cuenta para acceder
más tarde. Para evitar tales problemas de seguridad, vigilar las cuentas de los usuarios es una
actividad importante.
Detección de nuevas cuentas y privilegios falsificados Las cuentas
creadas sin pasar por la autorización correspondiente deben considerarse falsificadas. Además, modificar una
cuenta de cualquier manera que le dé un número de identificación de usuario no autorizado (UID) diferente o
agregue membresías a grupos no autorizadas es una forma de escalada de derechos. Vigilar los archivos /etc/
passwd y /etc/group controlará estas posibles infracciones.
Para ayudarlo a monitorear los archivos /etc/passwd y /etc/group, puede usar el demonio de auditoría. El
daemon de auditoría es una herramienta de auditoría extremadamente poderosa que le permite seleccionar eventos
del sistema para rastrearlos y registrarlos, y proporciona capacidades de generación de informes.
Para comenzar a auditar los archivos /etc/passwd y /etc/group, necesita usar el comando auditctl. Se requieren dos
opciones como mínimo para iniciar este proceso:
w nombre de archivo: coloque un reloj en nombre de archivo . El demonio de auditoría rastrea el archivo por
su número de inodo. Un número de inodo es una estructura de datos que contiene información sobre un
archivo, incluida su ubicación. p trigger(s—): si se produce uno de estos tipos de acceso (r=leer, w=escribir,
x=ejecutar,
a=cambio de atributo) a nombre de archivo, luego active un registro de auditoría.
584
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
En el siguiente ejemplo, se colocó un reloj en el archivo /etc/passwd usando el comando auditctl. El demonio de
auditoría supervisará el acceso, que consiste en lecturas, escrituras o cambios en los atributos del archivo:
# auditctl w /etc/passwd p rwa
Después de haber iniciado una auditoría de archivos, es posible que desee desactivarla en algún momento. Para
desactivar una auditoría, use el comando
# auditctl W nombre de archivo p activador(es)
Para ver una lista de los archivos auditados actuales y sus configuraciones de vigilancia, escriba auditctl l en la línea
de comando.
Para revisar los registros de auditoría, utilice el comando ausearch del daemon de auditoría. La única opción
necesaria aquí es la opción f, que especifica qué registros desea ver del registro de auditoría. El siguiente es un
ejemplo de la información de auditoría de /etc/passwd:
22
# ausearch f /etc/passwd time
>Viernes 7 de febrero 04:27:01 2020
type=PATH msg=audit(1328261221.365:572): item=0
name="/etc/passwd" inode=170549 dev=fd:01
mode=0100644 ouid=0 ogid=0 rdev=00:00
obj=system_u:object_r :etc_t:s0 type=CWD
msg=auditoría(1328261221.365:572): cwd="/"
...
hora>Viernes 7 de febrero 04:27:14 2020
type=PATH msg=audit(1328261234.558:574): item=0
name="/etc/passwd" inode=170549 dev=fd:01
mode=0100644 ouid=0 ogid =0 rdev=00:00
obj=system_u:object_r:etc_t:s0 type=CWD
msg=audit(1328261234.558:574): cwd="/home/johndoe"
type=SYSCALL msg=audit(1328261234.558:574): arch=
40000003 llamada del sistema = 5 éxito = sí salida = 3 a0
= 3b22d9 a1 = 80000 a2 = 1b6 a3 = 0 elementos = 1 ppid =
3891 pid = 21696 auid = 1000 uid = 1000 gid = 1000 euid = 1000
suid = 1000 fsuid = 1000 egid =1000 sgid=1000 fsgid=1000 tty=pts1
ses=2 comm="vi" exe="/bin/vi" subj=no confinado_u:no confinado_r:no
confinado_t:s0s0:c0.c1023"
Esta es una gran cantidad de información para revisar. Algunos elementos lo ayudarán a ver qué evento de auditoría
sucedió para activar el registro inferior:
hora: la marca de tiempo de la actividad nombre:
el nombre del archivo, /etc/passwd, que se está viendo inodo: el
número de inodo de /etc/passwd en este sistema de archivos
585
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
uid: el ID de usuario, 1000, del usuario que ejecuta el programa exe: el
programa, /bin/vi, utilizado en el archivo /etc/passwd
Para determinar a qué cuenta de usuario se le asigna el UID de 1000, mire el archivo /etc/passwrd. En este caso, el UID
de 1000 pertenece al usuario johndoe. Por lo tanto, a partir del registro de eventos de auditoría que se muestra arriba, puede
determinar que la cuenta johndoe intentó usar el editor vi en el archivo /etc/passwd. Es dudoso que esta haya sido una acción
inocente, y requiere más investigación.
NOTA El
comando ausearch no devuelve nada si no se han activado eventos de observación en un archivo.
El demonio de auditoría y sus herramientas asociadas son extremadamente ricos. Para obtener más información al
respecto, consulte las páginas man de las siguientes utilidades y archivos de configuración del demonio de auditoría:
auditd: el demonio de auditoría
auditd.conf: el archivo de configuración del demonio de auditoría
autditctl: Controla el sistema de auditoría
audit.rule: reglas de configuración cargadas en el arranque
ausearch: busca en los registros de auditoría elementos específicos
aureport: creador de informes para los registros de auditoría
audispd: envía información de auditoría a otros programas
El demonio de auditoría es una forma de controlar los archivos importantes. También debe revisar los archivos de su
cuenta y grupo periódicamente con un "ojo humano" para ver si algo parece irregular.
Los archivos importantes, como /etc/passwd, deben controlarse para detectar la creación de cuentas no autorizadas. Sin
embargo, tan mala como una nueva cuenta de usuario no autorizada es una cuenta de usuario autorizada con una
contraseña incorrecta.
Detección de contraseñas de cuentas
incorrectas Incluso con todos sus buenos esfuerzos, las contraseñas incorrectas se filtrarán. Por lo tanto, debe monitorear
las contraseñas de las cuentas de usuario para asegurarse de que sean lo suficientemente fuertes como para resistir un ataque.
Una herramienta de monitoreo de seguridad de contraseña que puede usar es la misma que usan los usuarios maliciosos
para descifrar cuentas, John the Ripper. John the Ripper es una herramienta gratuita de código abierto que puede usar en
'
la línea de comandos de Linux. Debe ejecutar el comando yum
No está install john
instalado por dpefecto.
ara instalarlo.
Para una distribución de Fedora,
CONSEJO
Para instalar John the Ripper en Ubuntu, use el comando sudo aptget install john .
586
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Para usar John the Ripper para probar las contraseñas de los usuarios, primero debe extraer los
nombres de cuenta y las contraseñas usando el comando unshadow. Esta información debe redirigirse a
un archivo para que John la use, como se muestra aquí:
# unshadow /etc/passwd /etc/shadow > password.file
Ahora edite el archivo password.file usando su editor de texto favorito para eliminar cualquier cuenta sin
contraseña. Debido a que es aconsejable limitar a John the Ripper a probar algunas cuentas a la vez, elimine
cualquier nombre de cuenta que no desee probar en este momento.
PRECAUCIÓN
La utilidad john hace un uso intensivo de la CPU. Establece su valor agradable en 19 para reducir su prioridad. Sin embargo, sería
prudente ejecutarlo en un sistema que no sea de producción o durante las horas de menor actividad y solo para unas pocas cuentas a la vez.
22
Ahora use el comando john para intentar descifrar la contraseña. Para ejecutar john contra el archivo de
contraseña creado, emita el comando john filename. En el siguiente fragmento de código, puede ver el resultado
de ejecutar john en el archivo password.file de muestra. Para fines de demostración, solo se dejó una cuenta
en el archivo de muestra. Además, a la cuenta, Samantha, se le dio la contraseña incorrecta de contraseña.
Puedes ver el poco tiempo que le tomó a John el Destripador descifrar la contraseña.
# john password.file Cargado
1 hash de contraseña (crypt genérico (3) [?/32]) contraseña
(Samantha) adivina: 1 vez:
12345
0:00:00:44
missy
1U
00%
se la
(2)
opción
c/s: 20.87
"show"
intentando:
para
mostrar todos los
contraseñas descifradas de forma fiable
Para demostrar lo vitales que son las contraseñas seguras, considere lo que sucede cuando la cuenta de
'
Saman tha La contraseña de s se cambia de contraseña a Password1234. Aunque Password1234
sigue siendo una contraseña débil, se necesitan más de 7 días de tiempo de CPU para descifrarla. En el
código que sigue, John fue finalmente abortado para finalizar el intento de descifrado.
# passwd Samantha
Cambiando la contraseña del usuario Samantha.
...
# john password.file Cargado
1 hash de contraseña (criptografía genérica(3) [?/32])
...
tiempo: 0:07:21:55 (3) c/s: 119 intentando: tth675 tth787
Sesión abortada
Tan pronto como se hayan completado los intentos de descifrado de contraseñas, el archivo
password.file debe eliminarse del sistema. Para obtener más información sobre John the Ripper, visite
www.openwall.com/john.
Monitoreo del sistema de archivos Los
programas maliciosos a menudo modifican los archivos. También pueden tratar de cubrir sus huellas
haciéndose pasar por archivos y programas ordinarios. Sin embargo, hay formas de descubrirlos a través de
las diversas tácticas de monitoreo que se tratan en las siguientes secciones.
587
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Verificación de paquetes de software
Por lo general, si instala un paquete de software desde un repositorio estándar o descarga el
'
paquete de un sitio de confianza, gNo
anará
tengo ningún problema. Pero siempre es bueno verificar dos
veces los paquetes de software instalados para ver si se han visto comprometidos. El comando para
lograr esto es rpm V nombre_paquete.
Cuando verifica el software, la información de los archivos del paquete instalado se compara con
los metadatos del paquete (consulte el Capítulo 10, la
“Obtención
base de dyatos
administración
rpm. Si no sde
el
esncuentran
oftware”) en
problemas, el comando rpm V no devuelve nada. Sin embargo, si hay discrepancias, obtiene una lista
codificada. La Tabla 22.5 muestra los códigos utilizados y una descripción de la discrepancia.
TABLA 22.5 Discrepancias en la verificación de paquetes
Código Discrepancia
S Tamaño del archivo
METRO
Permisos de archivo y tipo
5 suma de control MD5
D Números mayores
y menores del archivo del dispositivo
L Enlaces simbólicos
EN Propiedad del usuario
GRAMO
propiedad del grupo
T Tiempos de modificación del archivo (mtime)
PAG
Otros paquetes instalados de los que depende este paquete (también conocido como capacidades)
En la lista parcial que sigue, todos los paquetes instalados reciben una verificación de verificación.
Puede ver que se devolvieron los códigos 5, S y T, lo que indica algunos problemas potenciales.
# rpm qaV
5S.T..... c /etc/hba.conf
...
...T..... /lib/modules/3.2.13.fc16.i686/modules.devname /lib/modules/
...T..... 3.2.13.fc16.i686/modules.softdep
No tiene que verificar todos sus paquetes a la vez. Puede verificar solo un paquete a la vez. Por
ejemplo, si desea verificar su paquete nmap, simplemente ingrese rpm V nmap.
NOTA
Para verificar paquetes en Ubuntu, necesita la utilidad debsums. No está instalado por defecto. Para instalar , usar
debsums el comando sudo aptget install debsums. Para verificar todos los paquetes instalados, use el comando
debsums a. Para verificar un paquete, escriba debsums nombre del paquete.
588
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Exploración del sistema de
archivos A menos que haya actualizado su sistema recientemente, los archivos binarios no deberían
haber sido modificados por ningún motivo. Comandos como find y rpm V pueden ayudarlo a determinar
si un archivo binario ha sido alterado.
Para verificar la modificación del archivo binario, find puede usar el tiempo de modificación del archivo o mtime. El
archivo mtime es el momento en que se modificó por última vez el contenido de un archivo. Además, find puede
monitorear el tiempo de creación/cambio del archivo, o ctime.
Si sospecha de actividad maliciosa, puede escanear rápidamente su sistema de archivos para
ver si se modificó o cambió algún archivo binario hoy (o ayer, dependiendo de cuándo cree que tuvo
lugar la intrusión). Para hacer este escaneo, use el comando de búsqueda.
En el ejemplo que sigue, se realiza un escaneo del directorio /sbin. Para ver si se modificó algún
archivo binario hace menos de 24 horas, se usa el comando find /sbin mtime 1. En el ejemplo, se 22
muestran varios archivos que muestran que se modificaron recientemente. Esto indica que se está
produciendo una actividad maliciosa en el sistema. Para investigar más, revise los tiempos de cada
archivo individual, usando el comando stat filename, como se muestra aquí:
# encontrar /sbin mtime 1 /sbin /
sbin/init /sbin/reboot /sbin/halt # #
stat /sbin/init
Archivo: '/sbin/init' > '../bin/systemd'
Tamaño: 14 Bloques: 0 Bloque IO: 4096 enlace simbólico Dispositivo: fd01h/64769d Inodo:
9551 Enlaces: 1 Acceso: (0777/lrwxrwxrwx)
Uid: ( 0/ raíz) Gid: ( 0/ Contexto: system_u:object_r:bin_t:s0 raíz)
Acceso: 20160203 03:34:57.276589176 0500
Modificar: 20160202 23:40:39.139872288 0500 Cambiar: 20160202
23:40:39.140872415 0500
Nacimiento:
Puede crear una base de datos de todos los mtimes y ctimes originales del binario y luego ejecutar
un script para encontrar los mtimes y ctimes actuales, compararlos con la base de datos y anotar
cualquier discrepancia. Sin embargo, este tipo de programa ya ha sido creado y funciona bien. Es
'
este capítulo. s llamado Sistema de Detección de Intrusión, y se cubre más adelante en
Debe realizar varios otros análisis del sistema de archivos de forma regular. Los archivos favoritos o la configuración de
archivos de los atacantes maliciosos se enumeran en la Tabla 22.6. La tabla también enumera los comandos para realizar
los análisis y por qué el archivo o la configuración del archivo es potencialmente problemático.
589
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
TABLA 22.6 Exploraciones adicionales del sistema de archivos
encontrar / Permite que cualquier persona se convierta en propietario del
permiso SUR perm 4000 archivo temporalmente mientras el archivo se ejecuta en la memoria.
encontrar / Permite que cualquier persona se convierta en miembro del grupo
permiso de PATÍN perm 2000 del amemoria.
rchivo temporalmente mientras el archivo se ejecuta en la
Archivos sin propietario find / nouser Indica archivos que no están asociados con
cualquier nombre de usuario.
Archivos sin grupo find / nogroup Indica archivos que no están asociados con ningún nombre
de grupo.
El comando de paquete rpm V puede brindarle información sobre los cambios que se han producido en un archivo después de
haberlo instalado desde un paquete RPM. Para cada archivo que ha cambiado del paquete seleccionado desde que se instaló, puede
ver la siguiente información:
S El tamaño del archivo difiere
M Los permisos o el tipo de archivo (modo) del archivo difieren
5 Digest difiere (anteriormente suma MD5)
D El número mayor/menor del dispositivo no coincide
L La ruta readLink(2) no coincide
U La propiedad del usuario difiere
La propiedad del Grupo G difiere
T mTiempo difiere
Las capacidades de P difieren
De forma predeterminada, solo aparecen los archivos modificados. Agregue v (detallado) para mostrar también los archivos
que no han cambiado. Aquí hay un ejemplo:
# rpm V samba /usr/sbin/
eventlogadm S.5....T.
En este ejemplo, hice eco de algunos caracteres en el binario eventlogadm. La S muestra los cambios en el tamaño del archivo, 5
muestra que el resumen ya no coincide con el resumen original y T dice que el tiempo de modificación en el archivo ha cambiado.
Estos análisis del sistema de archivos ayudan a monitorear lo que sucede en su sistema y ayudan a detectar ataques maliciosos. Sin
embargo, pueden ocurrir otros tipos de ataques a sus archivos, incluidos virus y rootkits.
Detección de virus y rootkits Dos
herramientas populares de ataques maliciosos son los virus y los rootkits porque permanecen ocultos
mientras realizan sus actividades maliciosas. Los sistemas Linux necesitan ser monitoreados para ambas
intrusiones.
590
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Supervisión de virus Un
virus informático es un software malicioso que puede adjuntarse a un software de sistema ya instalado y tiene
la capacidad de propagarse a través de medios o redes. Es un error pensar que no hay virus de Linux. Los
creadores maliciosos de virus a menudo se enfocan en los sistemas operativos de escritorio más populares, como
Windows. Sin embargo, eso no significa que no se creen virus para los sistemas Linux.
Aún más importante, los sistemas Linux a menudo se usan para manejar servicios, como servidores de
correo, para sistemas de escritorio de Windows. Por lo tanto, los sistemas Linux utilizados para tales fines
también deben analizarse en busca de virus de Windows.
El software antivirus analiza los archivos utilizando firmas de virus. Una firma de virus es un hash creado a
partir del código
binario
tienen de buase
una n virus.
de dEatos
l hash
de ifdentificará
positivamente
irmas de virus ese
pvara
que se utiliza irus.
Los programas
comparar antivirus
archivos
para ver si hay
una coincidencia de naturaleza de firma. Dependiendo de la cantidad de nuevas amenazas, una base de datos de
firmas de virus se puede actualizar con frecuencia para brindar protección contra estas nuevas amenazas. 22
Una buena opción de software antivirus para su sistema Linux, que es de código abierto y gratuito, es ClamAV.
Para instalar ClamAV en un sistema Fedora o RHEL, escriba el comando dnf install clamav. Puede encontrar
más información sobre ClamAV en clamav.net, donde hay documentación sobre cómo configurar y ejecutar el
software antivirus.
CONSEJO
Puede revisar los paquetes disponibles para la instalación de Ubuntu ingresando el comando aptcache search
clamav . Hay un par de paquetes diferentes disponibles para Ubuntu, así que revise la información del sitio web de
ClamAV antes de elegir un paquete.
Supervisión de rootkits
Un rootkit es un poco más insidioso que un virus. Un rootkit es un programa malicioso que hace lo siguiente:
■ Se oculta, a menudo reemplazando programas o comandos del sistema ■
Mantiene un acceso de alto nivel a un sistema ■ Es capaz de eludir el software
creado para localizarlo
El propósito de un rootkit es obtener y mantener el acceso de nivel raíz a un sistema. El término se creó juntando
root, lo que significa que debe tener acceso de administrador, y kit, lo que significa que generalmente son varios
programas los que funcionan en conjunto.
Un detector de rootkits que se puede usar en un sistema Linux es chkrootkit. Para instalar chkrootkit
en un sistema Fedora o RHEL, ejecute el comando yum install chkrootkit. Para instalar chkrookit en
un sistema Ubuntu, use el comando sudo apt get install chkrootkit.
591
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
CONSEJO Lo mejor es usar un Live CD o una unidad flash para ejecutar chkrootkit para que los resultados no sean
eludidos por un rootkit. Fedora Security Spin tiene chkrootkit en su Live CD. Puede obtener esta distribución en
labs .fedoraproject.org/en/security .
Encontrar un rootkit con chkrootkit es simple. Después de instalar el paquete o iniciar el Live CD, escriba
chkrootkit en la línea de comando. Busca en toda la estructura de archivos y detecta cualquier archivo
infectado.
El siguiente código muestra una ejecución de chkrootkit en un sistema infectado. Se utilizó el
comando grep para buscar la palabra clave INFECTED. Tenga en cuenta que muchos de los archivos
enumerados como "infectados" son archivos de comando bash shell. Esto es típico de un rootkit.
# chkrootkit | grep INFECTADO
Comprobando 'du'... INFECTADO
Comprobando 'find'... INFECTADO
Comprobando 'ls'... INFECTADO
Comprobando 'lsof'... INFECTADO
Comprobando 'pstree'... INFECTADO
Buscando Suckit rootkit... Advertencia : /sbin/init INFECTADO
En la última línea del código chkrootkit anterior hay una indicación de que el sistema ha sido infectado
con el rootkit Suckit. En realidad, no está infectado con este rootkit. Cuando ejecuta utilidades, como
antivirus y software de detección de rootkits, a menudo obtiene una serie de falsos positivos. Un falso
positivo es una indicación de un virus, rootkit u otra actividad maliciosa que en realidad no existe. En este
caso particular, este falso positivo es causado por un error conocido.
La utilidad chkrootkit debe tener ejecuciones programadas regularmente y, por supuesto, debe ejecutarse
siempre que se sospeche de una infección de rootkit. Para encontrar más información sobre chkrootkit,
vaya a chkrootkit.org.
CONSEJO Otro detector de rootkits que podría interesarle se llama Rootkit Hunter (rkhunter). Ejecute el script rkhunter para
verificar si su sistema tiene malware y rootkits conocidos. Configure rkhunter en el archivo /etc/rkhunter.conf. Para un ejemplo
simple, ejecute rkhunter c para verificar el sistema de archivos en busca de una variedad de rootkits y vulnerabilidades.
Detección de una
'
intrusión El software del sistema de detección de intrusiones (IDS), un paquete de software que supervisa s
las actividades de un sistema (o su red) en busca de posibles actividades maliciosas e informa de estas
actividades, puede ayudarlo a supervisar su sistema en busca de posibles intrusiones . Estrechamente
relacionado con el software del sistema de detección de intrusiones hay un paquete de software que previene
una intrusión, llamado software del sistema de prevención de intrusiones . Algunos de estos paquetes se
agrupan para proporcionar detección y prevención de intrusiones.
592
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Varios paquetes de software del sistema de detección de intrusos están disponibles para un sistema
Linux. Algunas de las utilidades más populares se enumeran en la Tabla 22.7. Debe saber que tripwire ya
no es de código abierto. Sin embargo, el código tripwire original todavía está disponible. Consulte el sitio
web de Tripwire que figura en la Tabla 22.7 para obtener más detalles.
TABLA 22.7 Sistemas populares de detección de intrusos de Linux
El entorno avanzado de detección de intrusiones (aide) IDS utiliza un método de comparación para
detectar intrusiones. Cuando eras niño, es posible que hayas jugado el juego de comparar dos imágenes
y encontrar las diferencias entre ellas. La utilidad Aide utiliza un método similar. Se crea una base de datos
de “primera imagen”. Algún tiempo después, se crea otra "segunda imagen" de base de datos, y el ayudante
compara las dos bases de datos e informa qué es diferente.
Para comenzar, debe tomar esa “primera fotografía”. El mejor momento para crear esta imagen es cuando
el sistema se ha instalado recientemente. El comando para crear la base de datos inicial es aide i y tarda
mucho tiempo en ejecutarse. Parte de su salida sigue. Observe que Aide le dice dónde está creando su
base de datos inicial de "primera imagen".
# ayudante i
Ayudante, versión 0.16.11
### Base de datos AIDE en /var/lib/aide/aide.db.new.gz inicializada.
El siguiente paso es mover la base de datos inicial de "primera imagen" a una nueva ubicación. Esto protege
la base de datos original para que no se sobrescriba. Además, la comparación no funciona a menos que se
mueva la base de datos. El comando para mover la base de datos a su nueva ubicación y darle un nuevo
nombre es el siguiente:
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
Cuando esté listo para verificar si sus archivos han sido manipulados, debe crear una nueva base de
datos, "segunda imagen", y compararla con la base de datos original, "primera imagen". La opción de
verificación en el comando aide, c, crea una nueva base de datos y ejecuta una comparación con la base
de datos anterior. El resultado que se muestra a continuación ilustra esta comparación y el comando auxiliar
informa sobre algunos problemas.
# ayuda C
593
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
...
Información detallada sobre los cambios:
Archivo: /bin/buscar
Tamaño : 189736 , 4620
Ctime: 20200210 13:00:44, , 20200211 03:05:52
MD5: <NINGUNO> rUJj8NtNa1v4nmV5zfoOjg==
RMD160: <NINGUNO> , 0CwkiYhqNnfwPUPM12HdKuUSFUE= ,
SHA256: <NINGUNO> jg60Soawj4S/UZXm5h4aEGJ+xZgGwCmN
Archivo: /bin/ls
Tamaño : 112704 6122
,
Hora: 20200210 13:04:57 , 20200211 03:05:52
MD5: POeOop46MvRx9qfEoYTXOQ==, IShMBpbSOY8axhw1Kj8Wdw==
RMD160: N3V3Joe5Vo+cOSSnedf9PCDXYkI= ,
e0ZneB7CrWHV42hAEgT2lwrVfP4=
SHA256: vuOFe6FUgoAyNgIxYghOo6+SxR/zxS1s,
Z6nEMMBQyYm8486yFSIbKBuMUi/+jrUi
...
Archivo: /bin/ps
Tamaño : 76684 , 4828
Hora: 20200210 13:05:45 , 20200211 03:05:52
MD5 : 1pCVAWbpeXINiBQWSUEJfQ== , 4ElJhyWkyMtm24vNLya6CA==
RMD160 : xwICWNtQH242jHsH2E8rV5kgSkU= ,
AZlI2QNlKrWH45i3/V54H+1QQZk=
SHA256: ffUDesbfxx3YsLDhD0bLTW0c6nykc3m0 ,
w1qXvGWPFzFir5yxN+n6t3eOWw1TtNC/
...
Archivo: /usr/bin/du
Tamaño : 104224 4619
,
Hora: 20200210 13:04:58 , 20200211 03:05:53
MD5: 5DUMKWj6LodWj4C0xfPBIw==, nzn7vrwfBawAeL8nkayICg==
RMD160 : Zlbm0f/bUWRLgi1B5nVjhanuX9Q= ,
2e5S00lBWqLq4Tnac4b6QIXRCwY=
SHA256: P/jVAKr/SO0epBBxvGP900nLXrRY9tnw,
HhTqWgDyIkUDxA1X232ijmQ/OMA/kRgl
Archivo: /usr/bin/pstree
Tamaño : 20296 7030 ,
Ctime: 20200210 13:02:18, ry/ , 20200211 03:05:53
MD5: <NINGUNO> MUZ7XvU4L2QfWJ4GXxg==,
RMD160: <NINGUNO> tFZer6As9EoOi58K7/LgmeiExjU=,
SHA256: <NINGUNO> iAsMkqNShagD4qe7dL/EwcgKTRzvKRSe
...
Los archivos enumerados por el asistente de verificación en este ejemplo están infectados. Sin embargo, el asistente también
puede mostrar muchos falsos positivos.
594
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
En el archivo /etc/aide.conf se manejan las bases de datos de ayudantes, las comparaciones que se realizan
y otros ajustes de configuración. La siguiente es una visualización parcial del archivo. Puede ver los nombres
del archivo de la base de datos y los directorios del archivo de registro establecidos aquí:
# cat /etc/aide.conf # Archivo
de configuración de ejemplo para AIDE.
@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
# La ubicación de la base de datos que se va a leer. base
de datos=archivo:@@{DBDIR}/aide.db.gz
# La ubicación de la base de datos que se va a escribir.
#database_out=sql:host:puerto:base de datos:nombre_de_inicio de
sesión:contraseña:tabla #database_out=archivo:aide.db.nueva
22
base_de_salida=archivo:@@{DBDIR}/aide.db.new.gz
...
Un sistema de detección de intrusos puede ser de gran ayuda para monitorear el sistema. Cuando se
detectan intrusiones potenciales, comparar la salida con la información de otros comandos (como rpm V)
y archivos de registro puede ayudarlo a comprender mejor y corregir cualquier ataque a su sistema.
Auditoría y revisión de Linux
Debe comprender dos términos importantes cuando esté auditando el estado de su sistema Linux. Una
revisión de cumplimiento es una auditoría del entorno general del sistema informático para garantizar que las
políticas y los procedimientos que ha establecido para el sistema se lleven a cabo correctamente. Una revisión
de seguridad es una auditoría de las políticas y procedimientos actuales para garantizar que sigan las mejores
prácticas de seguridad aceptadas.
Realización de revisiones de cumplimiento Al igual
que las auditorías en otros campos, como la contabilidad, las auditorías pueden realizarse internamente o
por personal externo. Estas revisiones pueden ser tan simples como que alguien se siente y compare la
seguridad implementada con las políticas establecidas por su empresa. Sin embargo, es más popular realizar
auditorías mediante pruebas de penetración.
La prueba de penetración es un método de evaluación utilizado para probar la seguridad de un sistema
informático mediante la simulación de ataques maliciosos. También se llama prueba de penetración y
piratería ética. Ya no tiene que reunir herramientas y el hacker del vecindario local para ayudarlo a realizar
estas pruebas.
Kali Linux (https://www.kali.org/) es una distribución creada específicamente para pruebas de
penetración. Se puede utilizar desde un DVD en vivo o desde una unidad flash. Offensive Security ofrece
capacitación sobre el uso de Kali Linux (https://www.offensivesecurity.com/ informationsecuritytraining/).
595
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Si bien las pruebas de penetración son muy divertidas, para una revisión exhaustiva del cumplimiento, se necesita un
poco más. También debe usar listas de verificación de sitios de seguridad de la industria.
Realización de revisiones de seguridad La
realización de una revisión de seguridad requiere que conozca las mejores prácticas de seguridad actuales. Hay varias
formas de mantenerse informado sobre las mejores prácticas de seguridad. La siguiente es una breve lista de
organizaciones que pueden ayudarlo.
■ Agencia de Seguridad de Infraestructura y Ciberseguridad de los Estados Unidos (CISA) ■
URL: www.uscert.gov ■ Ofrece el Sistema Nacional de Alerta Cibernética ■ Ofrece canales
RSS sobre las amenazas de seguridad más recientes ■ El Instituto SANS
■ URL: www.sans.org/securityresources ■ Ofrece boletines de
investigación de seguridad informática ■ Ofrece canales RSS
sobre las amenazas de seguridad más recientes ■ Gibson
Research Corporation ■ URL: www.grc.com ■ Ofrece Security Now!
transmisión de seguridad
La información de estos sitios lo ayudará a crear políticas y procedimientos más sólidos.
Dada la rapidez con que cambian las mejores prácticas de seguridad, sería conveniente realizar revisiones de
seguridad con frecuencia, según las necesidades de seguridad de su organización.
Ahora comprende mucho más sobre la seguridad básica de Linux. La parte difícil es poner en práctica todos estos
conceptos.
Resumen
Las prácticas básicas de seguridad de Linux, como la administración de cuentas de usuario, la protección de
contraseñas y la administración de software y servicios, forman la base para el resto de la seguridad en su sistema
Linux. Con esa base establecida, el monitoreo continuo de su sistema incluye la vigilancia de los archivos de registro
del sistema, la verificación de intrusiones maliciosas y el monitoreo del sistema de archivos.
Las revisiones de sus políticas de seguridad también son importantes para mantenerse al día de forma regular. Las
auditorías ayudan a garantizar que su sistema Linux esté protegido y que se implementen las políticas y prácticas de
seguridad adecuadas.
Ha completado su primer paso de recopilación de conocimientos básicos sobre procedimientos y principios de
seguridad. No basta con saber lo básico. Debe agregar herramientas de seguridad avanzadas de Linux a su caja de
herramientas de seguridad. En el siguiente capítulo, se cubren temas de seguridad avanzada de criptografía y módulos
de autenticación.
596
Machine Translated by Google
Capítulo 22: Comprender la seguridad básica de Linux
Ejercicios
Consulte el material de este capítulo para completar las tareas siguientes. Si está atascado, las soluciones a
las tareas se muestran en el Apéndice B (aunque en Linux, a menudo hay varias formas de completar una tarea).
Pruebe cada uno de los ejercicios antes de referirse a las respuestas. Estas tareas asumen que está ejecutando
un sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionarán en otros sistemas
Linux).
1. Verifique los mensajes de registro del diario systemd para los siguientes servicios:
NetworkManager.service, sshd.service y auditd.service.
'
2. Enumere los permisos del archivo que contiene su sistema s contraseñas de usuario y disuadir
los míos si son apropiados.
'
3. Determine su comando de s envejecimiento de la contraseña y si caducará usando un pecado
cuenta gle. 22
4. Comience a auditar las escrituras en /etc/shadow con el daemon auditd y luego
verifique su configuración de auditoría.
5. Cree un informe desde el daemon auditd en el archivo /etc/shadow y luego desactive la auditoría en
ese archivo.
6. Instale el paquete lemon, dañe el archivo /usr/bin/lemon (quizás copie los servicios /etc/ allí), verifique
que el archivo haya sido manipulado y elimine el paquete lemon.
7. Sospecha que ha sufrido un ataque malicioso en su sistema hoy y que se han modificado archivos
binarios importantes. ¿Qué comando debe usar para encontrar estos archivos modificados?
8. Instale y ejecute chkrootkit para ver si el ataque malicioso del ejercicio anterior instaló un rootkit.
9. Busque archivos con el conjunto de permisos SUID o SGID.
10. Instale el paquete aide, ejecute el comando aide para inicializar la base de datos aide, copie la base
de datos en la ubicación correcta y ejecute el comando aide para comprobar si se ha modificado
algún archivo importante en su sistema.
597
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Entendimiento Avanzado
Seguridad Linux
EN ESTE CAPÍTULO
Comprender el hashing y el cifrado
Comprobación de la integridad del archivo
Cifrado de archivos, directorios y sistemas de archivos
Descripción de los módulos de autenticación conectables
Administrar la seguridad de Linux con PAM
suficiente. A medida que los usuarios malintencionados obtienen acceso y conocimiento de herramientas avanzadas, también
Debido
a las
debe amenazas
hacerlo crecientes
de ys
un administrador en constante
istemas cambio, implementar
Linux. Comprender la seguridad
temas y herramientas informática
de seguridad básica
informática ya no es
avanzada
debe ser parte de su preparación.
En este capítulo, aprenderá sobre los conceptos básicos de criptografía, como cifras y encriptación. También
aprenderá cómo la utilidad del módulo de autenticación puede simplificar sus tareas administrativas, aunque
se trata de un tema de seguridad avanzado.
Implementación de la seguridad de Linux con criptografía
El uso de la criptografía mejora la seguridad de su sistema Linux y sus comunicaciones de red.
La criptografía es la ciencia de ocultar información. Tiene una larga y rica historia que se remonta mucho
antes de que existieran las computadoras. Debido a su uso intensivo de algoritmos matemáticos, la
criptografía ha pasado fácilmente a las computadoras. Linux viene con muchas herramientas criptográficas
listas para usar.
Para comprender los conceptos criptográficos y las diversas herramientas de Linux, debe conocer algunos términos
criptográficos:
Texto sin formato: texto que un humano o una máquina puede leer y comprender
Texto cifrado: texto que un humano o una máquina no pueden leer ni comprender.
Cifrado: el proceso de convertir texto sin formato en texto cifrado mediante un algoritmo
599
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Descifrado: el proceso de convertir texto cifrado en texto sin formato mediante un algoritmo
Cifrado: el algoritmo utilizado para cifrar texto sin formato en texto cifrado y descifrar texto cifrado en
texto sin formato
Cifrado de bloque: un cifrado que divide los datos en bloques antes de cifrarlos.
Cifrado de flujo: un cifrado que cifra los datos sin dividirlos
Clave: un dato requerido por el cifrado para cifrar o descifrar datos con éxito
Los padres de niños pequeños a menudo usan una forma de criptografía. Deletrean palabras en lugar
de pronunciarlas. Un padre puede tomar la palabra de texto sin formato "caramelo" y convertirla en texto
cifrado diciéndole al otro padre "CARAMELO". El otro padre descifra la palabra usando el mismo cifrado
ortográfico y reconoce que la palabra es "caramelo". Desafortunadamente, los niños no tardan mucho en
aprender a descifrar a través del cifrado ortográfico.
Es posible que haya notado que el hashing no se incluyó en la lista de definición de criptografía anterior.
Hashing necesita una atención especial porque a menudo se confunde con el cifrado.
Comprender el hash Hashing no es
encriptación, pero es una forma de criptografía. Recuerde del Capítulo 22 "Comprensión de la seguridad ,
básica de Linux", que el hashing es un proceso matemático unidireccional que se utiliza para crear texto
cifrado. Sin embargo, a diferencia del cifrado, después de crear un hash, no puede deshacerlo a su texto sin
formato original.
Para que un algoritmo hash se utilice en la seguridad informática, debe estar libre de colisiones, lo que
significa que el algoritmo hash no genera el mismo hash para dos entradas totalmente diferentes. Cada
entrada debe tener una salida hash única. Por lo tanto, el hashing criptográfico es un proceso matemático
unidireccional que no tiene colisiones.
De forma predeterminada, la criptografía ya está en uso en un sistema Linux. Por ejemplo, el
archivo /etc/shadow contiene contraseñas cifradas. Hashing se utiliza en sistemas Linux para lo
siguiente:
■ Contraseñas (Capítulo 22)
■ Verificación de archivos ■
Firmas digitales ■ Firmas de
virus (Capítulo 22)
Un hash también se denomina resumen de mensaje, suma de verificación, huella digital o firma. Una
utilidad de Linux que produce resúmenes de mensajes es la utilidad sha256sum. En el Capítulo
“Obtención
10, y
administración de software”, aprendió sobre cómo obtener software para su sistema Linux. Cuando descarga
un archivo de software, puede asegurarse de que el archivo no se haya dañado durante la descarga.
La Figura 23.1 muestra el sitio web para descargar el software de distribución de Fedora (almacenado
como un archivo en el formato que se conoce como imagen ISO). La página web describe cómo obtener y
usar la utilidad sha256sum para asegurarse de que la imagen ISO que descargó no se dañe durante la
descarga.
600
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
23
Un hash se compone de un archivo de software en su ubicación original, utilizando el algoritmo de hash SHA256.
Los resultados del hash se pueden publicar en público, como se hizo en la Figura 23.1. Para garantizar la
integridad de su archivo de software descargado, cree un hash sha256sum del archivo de software en su
ubicación. Luego compara los resultados de su hash con los resultados de hash publicados. Si coinciden, el
archivo de software no estaba dañado durante la descarga.
Para crear su hash, ejecute el comando sha256sum en la imagen ISO después de descargar esa imagen. Los
resultados del hash sha256sum para el archivo de software descargado se muestran en el siguiente código:
$ sha256sum FedoraWorkstationLivex86_64301.2.iso
a4e2c49368860887f1cc1166b0613232d4d5de6b46f29c9756bc7cfd5e13f39f
FedoraWorkstationLivex86_64301.2.iso
El hash resultante coincide con el disponible en el sitio web de la Figura 23.1. Esto significa que el archivo
ISO descargado no está dañado y está listo para usarse.
Puede implementar aún más criptografía además de hash en su sistema Linux. Las utilidades de Linux para
hacerlo son muy fáciles de usar. Sin embargo, primero debe comprender algunos conceptos criptográficos
subyacentes más.
601
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Comprender el cifrado/descifrado El uso principal
de la criptografía en un sistema Linux es codificar datos para ocultarlos (cifrado) de
ojos no autorizados y luego decodificar los datos (descifrado) para ojos autorizados.
En un sistema Linux, puede cifrar lo siguiente:
■ Individual fi les
■ Particiones y volúmenes
■ Conexiones de páginas web
■ Conexiones de red
■ Copias de
seguridad ■ Archivos zip
Estos procesos de cifrado/descifrado utilizan algoritmos matemáticos especiales para realizar su tarea. Los
algoritmos se denominan cifrados criptográficos.
Comprender los cifrados criptográficos Uno
de los cifrados originales, llamado Cifrado César, fue creado y utilizado por Julio César. Sin embargo, fue
terriblemente fácil de descifrar. Hoy en día, hay muchos más cifrados seguros disponibles.
Comprender cómo funciona cada cifrado es importante porque la solidez del cifrado que elija debe relacionarse
directamente con las necesidades de seguridad de sus datos. La tabla 23.1 enumera algunos sistemas de cifrado
modernos.
TABLA 23.1 Cifrados criptográficos
Método Descripción
AES (cifrado avanzado Criptografía simétrica.
Estándar), también llamado Rijndael Cifrado de bloque, cifrando datos en bloques de 128, 192, 256 y
512 bits usando una clave de 128, 192, 256 o 512 bits para cifrar/
descifrar.
pez globo Criptografía simétrica.
Cifrado de bloque, cifrando datos en bloques de 64 bits utilizando
las mismas claves de 32 bits a 448 bits para cifrar/descifrar.
CAST5 Criptografía simétrica.
Cifrado de bloque, cifrando datos en bloques de 64 bits utilizando
la misma clave de hasta 128 bits para cifrar/descifrar.
DES (Estándar de cifrado de datos) Ya no se considera seguro.
Criptografía simétrica.
Cifrado de bloque, cifrando datos en bloques de 64 bits usando la
misma clave de 56 bits para cifrar/descifrar.
3DES Cifrado DES mejorado.
Criptografía simétrica.
Los datos se cifran hasta 48 veces con tres claves diferentes de 56 bits
antes de que se complete el proceso de cifrado.
602
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Método Descripción
El Gamal Criptografía asimétrica.
Utiliza dos claves derivadas de un algoritmo logarítmico.
Criptosistemas de curva elíptica Criptografía asimétrica.
Utiliza dos claves derivadas de un algoritmo que contiene dos puntos
elegidos al azar en una curva elíptica.
IDEA Criptografía simétrica.
Cifrado de bloque, cifrando datos en bloques de 64 bits usando la
misma clave de 128 bits para cifrar/descifrar.
RC4 también llamado Cifrado de flujo, cifrando datos en bloques de 64 bits utilizando un tamaño
ArcFour o ARC4 de clave variable para cifrar/descifrar.
RC5 Criptografía simétrica.
Cifrado de bloque, cifrando datos en bloques de 32, 64 o 128 bits utilizando
las mismas claves de hasta 2048 bits para cifrar/descifrar.
RC6 Criptografía simétrica.
Igual que RC5, pero un poco más rápido.
Rijndael también llamado AES Criptografía simétrica.
Cifrado de bloque, cifrando datos en bloques de 128, 192, 256 y 512
bits usando una clave de 128, 192, 256 o 512 bits para cifrar/descifrar.
RSA Criptografía asimétrica más popular.
23
Utiliza dos claves derivadas de un algoritmo que contiene un múltiplo de
dos números primos generados aleatoriamente.
Comprender las claves de cifrado criptográfico Los
cifrados criptográficos requieren un dato, llamado clave, para completar su proceso matemático de cifrado/
descifrado. La clave puede ser una sola clave o un par de claves.
Observe los diferentes tamaños de clave de cifrado enumerados en la Tabla 23.1. El tamaño de la clave está
directamente relacionado con la facilidad con la que se descifra el cifrado. Cuanto mayor sea el tamaño de la
clave, menor será la posibilidad de descifrar el cifrado. Por ejemplo, DES ya no se considera seguro debido a su
pequeño tamaño de clave de 56 bits. Sin embargo, un cifrado con un tamaño de clave de 256 bits o 512 bits se
considera seguro porque llevaría billones de años descifrar por fuerza bruta un cifrado con esa clave.
Criptografía de clave simétrica
La criptografía simétrica, también denominada clave secreta o criptografía de clave privada , encripta texto sin
formato utilizando un cifrado de clave única. Se necesita la misma clave para descifrar los datos. La ventaja de la
criptografía de clave simétrica es la velocidad. La desventaja es la necesidad de compartir la clave única si otra
persona va a descifrar los datos cifrados.
603
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Un ejemplo de criptografía de clave simétrica en un sistema Linux se logra utilizando la utilidad OpenPGP, GNU
Privacy Guard, gpg2. El paquete gnupg2 está instalado por defecto en Fedora y RHEL. Para Ubuntu, debe
instalar el paquete gnupg2 para obtener el comando gpg2.
Cifrado y descifrado de un archivo tar El ejemplo
siguiente muestra el comando tar utilizado para crear un archivo tar comprimido (backup.tar.gz) y la utilidad gpg2
utilizada para cifrar el archivo. Con la opción c, gpg2 encripta el archivo con una clave simétrica. El archivo original
se conserva y se crea un nuevo archivo cifrado, backup.tar.gz.gpg.
# tar cvzf /tmp/backup.tar.gz /etc # gpg2 c forcemdc
\
o /tmp/backup.tar.gz.gpg /tmp/backup.tar.gz
Introduzca la frase de contraseña:
****** Repita la frase de contraseña:
****** # cd /tmp ; copia de seguridad
del archivo* /tmp/enc/backup.tar.gz: Datos comprimidos con gzip, última modificación: jue.
30 de enero 02:36:48 2020, desde Unix, módulo de tamaño original 2^32
49121280
/tmp/enc/backup.tar.gz.gpg: datos cifrados simétricamente GPG (cifrado CAST5)
La única clave utilizada para cifrar el archivo está protegida por una frase de contraseña. Esta frase de contraseña
es simplemente una contraseña o frase elegida por el usuario en el momento del cifrado.
Para descifrar el archivo, use la utilidad gpg2 nuevamente. Por ejemplo, si tuviera que entregar el archivo a otro
usuario, ese usuario podría ejecutar gpg2 con la opción d y proporcionar la frase de contraseña para la clave
secreta.
$ gpg2 d forcemdc /tmp/backup.tar.gz.gpg > /tmp/backup.tar.gz <Una ventana emergente le solicita
su frase de contraseña> gpg: datos cifrados CAST5 gpg: cifrado con 1 frase de contraseña
...
El resultado aquí es que el archivo tar original se descifra y se copia en /tmp/backup.tar. gz. Si el demonio gpg
agent se está ejecutando en el sistema, esa frase de contraseña se almacena en caché para que el archivo pueda
descifrarse nuevamente sin ingresar la frase de contraseña nuevamente.
La criptografía de clave simétrica es bastante simple y fácil de entender. La criptografía asimétrica es mucho más
complicada y, a menudo, es un punto de confusión en la criptografía.
Criptografía de clave asimétrica
La criptografía asimétrica, también denominada criptografía de clave privada/pública, utiliza dos claves,
denominadas par de claves. Un par de claves consta de una clave pública y una clave privada. La clave
pública es solo eso: pública. No hay necesidad de mantenerlo en secreto. La clave privada debe mantenerse
en secreto.
604
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
La idea general de la criptografía de clave asimétrica se muestra en la Figura 23.2. Un archivo de
texto sin formato se cifra mediante una clave pública de un par de claves. El archivo cifrado se puede
transmitir de forma segura a otra persona. Para descifrar el archivo, se utiliza la clave privada. Esta
clave privada debe ser del par de claves pública/privada. Por lo tanto, los datos que se han cifrado con
la clave pública solo se pueden descifrar con su clave privada. La ventaja de la criptografía asimétrica
es una mayor seguridad. La desventaja es la velocidad y la gestión de claves.
FIGURA 23.2
Criptografía de clave asimétrica básica
Llave pública Llave privada
23
Generación de un par
de claves Puede realizar un cifrado asimétrico en su sistema Linux usando gpg2. Es una utilidad
criptográfica muy versátil. Antes de poder cifrar un archivo, primero debe crear su par de claves y un
"anillo de claves". En el siguiente ejemplo, se utilizó el comando gpg2 genkey. Este comando crea
un par de claves pública/privada para el usuario johndoe, según sus especificaciones deseadas.
También genera un llavero para guardar sus llaves.
$ gpg2 genclave gpg
(GnuPG) 2.2.9; Derechos de autor (C)
2018 Fundación de Software Libre, Inc.
...
GnuPG necesita construir una ID de usuario para identificar su clave.
Nombre real: John Doe
Dirección de correo electrónico:
jdoe@example.com Usted seleccionó este ID DE USUARIO:
"Juan Pérez <jdoe@gmail.com>"
¿Cambiar (N)nombre, (E)mail o (O)bien/(Q)uit? O
605
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Necesita una frase de contraseña para proteger su clave secreta.
<Una ventana emergente le solicita una frase de contraseña> Ingrese la
frase de contraseña: ********** Repita la frase de contraseña: **********
...
gpg: /home/jdoe/.gnupg/trustdb.gpg: trustdb creado gpg: clave 383D645D9798C173
marcada como de confianza final gpg: directorio '/home/jdoe/.gnupg/openpgprevocs.d'
creado gpg: certificado de revocación almacenado como ' /home/jdoe/.gnupg/openpgp revocs.d/
7469BCD3D05A4 3130F1786E0383D645D9798C173.rev' clave pública y secreta creada y firmada.
publicación rsa2048 20191027 [SC] [expira: 20211026]
7469BCD3D05A43130F1786E0383D645D9798C173
uid John Doe <jdoe@example.com> sub rsa2048 20191027 [E] [expira: 20211026]
En el ejemplo anterior, la utilidad gpg2 solicita varias especificaciones para generar las claves públicas/privadas deseadas:
ID de usuario: identifica la parte de la clave pública del par de claves pública/privada.
Dirección de correo electrónico: esta es la dirección de correo electrónico asociada con la clave.
Frase de contraseña: se utiliza para identificar y proteger la parte de la clave privada de la clave pública/
par de claves privadas.
El usuario johndoe puede verificar su conjunto de claves usando el comando gpg2 listkeys, como se muestra en el siguiente
código. Observe que el ID de usuario (UID) de la clave pública se muestra tal como se creó, y contiene el nombre real, el comentario
y la dirección de correo electrónico de johndoe.
$ gpg2 listkeys /home/
jdoe/.gnupg/pubring.kbx
publicación rsa2048 20191027 [SC] [expira: 20211026]
7469BCD3D05A43130F1786E0383D645D9798C173
fluido [último] John Doe <jdoe@example.com> sub rsa2048
20191027 [E] [expira: 20211026]
Una vez generados el par de claves y el conjunto de claves, los archivos se pueden cifrar y descifrar. Primero, la clave pública debe
extraerse del anillo de claves para que pueda compartirse. En el ejemplo siguiente, la utilidad gpg2 se utiliza para extraer la clave
pública del conjunto de claves de johndoe.
La clave extraída se coloca en un archivo para compartir. El nombre del archivo puede ser cualquier nombre que desee que sea. En
este caso, el usuario johndoe eligió el nombre de archivo JohnDoe.pub.
$ gpg2 export John Doe > JohnDoe.pub $ ls *.pub
JohnDoe.pub $ archivo JohnDoe.pub JohnDoe.pub: anillo
público de clave PGP/GPG (v4) creado el dom 27 de octubre
a las 16:24:27 de 2019 RSA (cifrar o Signo) 2048 bits
MPI=0xc57a29a6151b3e8d...
606
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Compartir una clave
pública El archivo que contiene la clave pública se puede compartir de varias maneras. Puede enviarse como
un archivo adjunto por correo electrónico o incluso publicarse en una página web. La clave pública se considera
pública, por lo que no es necesario ocultarla. En el siguiente ejemplo, johndoe le ha dado el archivo que contiene
su clave pública al usuario jill. Agrega la clave pública de johndoe a su conjunto de claves mediante el comando
gpg2 import. La usuaria jill verifica que la clave pública de johndoe se haya agregado mediante el comando gpg2
listkeys para ver su conjunto de claves.
$ ls *.pub
JohnDoe.pub $
gpg2 import JohnDoe.pub gpg: directorio
'/home/jill/.gnupg' creado
...
gpg: directorio '/home/jill/.gnupg' creado gpg: keybox '/home/
jill/.gnupg/pubring.kbx' creado gpg: /home/jill/.gnupg/trustdb.gpg: trustdb creado
gpg: clave 383D645D9798C173 : clave pública "John Doe <jdoe@example.com>"
gpg importada: Número total procesado: 1 importado: 1
gpg:
$ gpg2 listkeys /home/
jill/.gnupg/pubring.gpg
publicación rsa2048 20191027 [SC] [expira: 20211026]
7469BCD3D05A43130F1786E0383D645D9798C173 23
uid [desconocido] John Doe <jdoe@example.com> sub rsa2048 20191027 [E]
[expira: 20211026]
Cifrado de un mensaje de correo
electrónico Después de agregar la clave al conjunto de claves, esa clave pública se puede usar para cifrar datos
para el propietario
creado
original
un archivo
de la d
clave
e texto,
pública.
MessageForJohn.txt,
En el código de epjemplo
ara el uqsuario
ue sigue,
johndoe.
tenga en cuenta que Jill ha
■ Cifra el archivo con su clave pública. ■ El archivo
cifrado, MessageForJohn, se crea con la opción out. ■ La opción recipient identifica
la clave pública de johndoe usando solo la parte del nombre real del UID de su clave pública entre
comillas, ″John Doe″.
$ gpg2 out MensajeParaJohn recipient "John Doe" \
encrypt MensajeParaJuan.txt
...
$ ls
JohnDoe.pub MensajeParaJohn MensajeParaJohn.txt
El archivo de mensaje cifrado, MessageForJohn, creado a partir del archivo de texto sin formato, Message
ForJohn.txt, se puede enviar de forma segura al usuario johndoe. Para descifrar este mensaje, johndoe
usa su clave privada, identificada y protegida por la frase de contraseña secreta que se usó para crear la
clave originalmente. Después de que johndoe proporciona la frase de contraseña adecuada, gpg2 descifra
607
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
el archivo de mensajes y lo coloca en el archivo JillsMessage, designado por la opción out.
Una vez descifrado, puede leer el mensaje de texto sin formato.
$ ls MensajeParaJuan
MensajeParaJohn $
gpg2 out JillsMessage decrypt MensajeParaJohn
<Una ventana emergente le solicita una frase de contraseña> gpg:
cifrado con clave RSA de 2048 bits, ID D9EBC5F7317D3830, creado
20191027
"John Doe <jdoe@example.com>" $ cat
JillsMessage Sé que no eres el verdadero John Doe.
Para repasar, los pasos necesarios para el cifrado/descifrado de archivos mediante claves asimétricas incluyen
los siguientes:
1. Genere el par de claves y el conjunto de claves.
2. Exporte una copia de su clave pública a un archivo.
3. Comparta el archivo de clave pública.
4. Las personas que desean enviarle archivos cifrados agregan su clave pública a
su llavero.
5. Un archivo se cifra con su clave pública.
6. Se le envía el archivo cifrado.
7. Descifras el archivo usando tu clave privada.
¡Puedes ver por qué las claves asimétricas pueden causar confusión! Recuerde que en la criptografía asimétrica, cada
clave pública y privada es un conjunto emparejado que funciona en conjunto.
Comprender las firmas digitales Una firma
digital es un originador electrónico que se utiliza para la autenticación y la verificación de datos.
Una firma digital no es un escaneo de su firma física. En cambio, es un token criptográfico enviado con un archivo,
por lo que el receptor del archivo puede estar
seguro
ninguna de que el archivo provino de usted y no se modificó de
manera.
Cuando crea una firma digital, ocurren los siguientes pasos:
1. Creas un archivo o mensaje.
2. Utilizando la utilidad gpg2, crea un hash o resumen de mensaje del archivo.
3. La utilidad gpg2 luego encripta el hash y el archivo, usando una clave asimétrica
cifrar. Para el cifrado se utiliza la clave privada del par de claves pública/privada.
Este es ahora un archivo encriptado firmado digitalmente.
4. Envías el hash encriptado (también conocido como firma digital) y el archivo al receptor.
5. El receptor vuelve a crear el hash o resumen del mensaje del archivo cifrado recibido.
608
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
6. Usando la utilidad gpg2, el receptor descifra la firma digital recibida usando la clave pública,
para obtener el hash original o el resumen del mensaje.
7. La utilidad gpg2 compara el hash original con el hash recreado para ver si coinciden. Si
coinciden, se le dice al receptor que la firma digital es buena.
8. El receptor ahora puede leer el archivo descifrado.
Observe en el paso 3 que la clave privada se usa primero. En la descripción de la criptografía de
clave asimétrica, se utilizó primero la clave pública. La criptografía de clave asimétrica es lo
suficientemente flexible como para permitirle usar su clave privada para cifrar y que el receptor use su
clave pública para descifrar.
NOTA
Las firmas digitales tienen sus propios cifrados especiales. Si bien varios cifrados pueden manejar tanto el cifrado
como la creación de firmas, hay algunos cuyo único trabajo es crear firmas digitales. Anteriormente, los cifrados
criptográficos más populares para crear firmas eran RSA y Digital Signature Algorithm (DSA). El algoritmo RSA se puede
usar tanto para encriptar como para crear firmas, mientras que DSA solo se puede usar para crear firmas digitales. En la
actualidad, se considera que Ed25519 es más seguro y rápido que RSA, y ECDSA brinda una mejor protección que DSA.
Como puede ver, una firma digital contiene hashing criptográfico y criptografía de clave asimétrica.
Este complicado proceso a menudo es manejado por una aplicación que ha sido configurada para
hacerlo, en lugar de ser manejado directamente por los usuarios del sistema Linux. Sin embargo,
puede agregar manualmente sus propias firmas digitales a los documentos. 23
Firmar un archivo con una firma digital
Digamos que el usuario johndoe va a enviar un mensaje al usuario christineb, junto con su firma digital.
Ha creado un archivo que contiene el mensaje de texto sin formato para enviar. Utiliza la utilidad gpg2
para crear el archivo de firma y cifrar el archivo de mensaje. La opción sign le dice a la utilidad gpg2 que
MessageForChristine.txt es el archivo para encriptar y usar para crear la firma digital. En respuesta, la
utilidad gpg2 hace lo siguiente:
■ Crea un resumen del mensaje (también conocido como hash)
del archivo del mensaje. ■ Cifra el resumen del mensaje, lo que crea la firma
digital. ■ Cifra el archivo del mensaje . ■ Coloca el contenido cifrado en el
archivo especificado por la opción output.
JuanDoe.DS
El archivo JohnDoe.DS ahora contiene un mensaje cifrado y firmado digitalmente. El siguiente código
demuestra este proceso:
$ gpg2 salida JohnDoe.DS sign MensajeParaJill.txt
Una vez que el usuario Jill recibe el archivo firmado y encriptado, puede usar la utilidad gpg2 para
verificar la firma digital y desencriptar el archivo en un solo paso. En el código que sigue, el
609
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
La opción decrypt se usa junto con el nombre del archivo firmado digitalmente, JohnDoe.DS.
El mensaje del archivo se descifra y se muestra. La firma digital del archivo se verifica y se determina
que es válida.
$ gpg2 decrypt JohnDoe.DS ¡Soy el
verdadero John Doe! gpg: Firma realizada
el dom 27 de octubre de 2019 07:03:21 p. m. EDT
gpg: utilizando la clave RSA
7469BCD3D05A43130F1786E0383D645D9798C173
gpg: buena firma de "John Doe <jdoe@example.com>" [desconocido]
...
Sin la clave pública de johndoe en su llavero, jill no podría descifrar este mensaje ni verificar la firma
digital.
SUGERENCIA El ejemplo anterior de firma digital de un documento permite que cualquier persona con la clave pública
pueda descifrar el documento. Para mantenerlo realmente privado, use la clave pública del destinatario para cifrar con las
opciones de gpg2: sign y encrypt. El destinatario puede descifrar con su clave privada.
Comprender algunos conceptos básicos de criptografía lo ayudará a comenzar a proteger su sistema
Linux con cifrado. Tenga en cuenta que hemos cubierto sólo los conceptos básicos en este capítulo.
Hay muchos más temas de criptografía, como los certificados digitales y la infraestructura de clave
pública, que valdría la pena aprender.
Implementación de la criptografía de Linux Muchas
herramientas de criptografía están disponibles en su sistema Linux. Los que elija usar dependen de los
requisitos de seguridad de su organización.
herramientas
La siguiente
de criptografía
es una bdreve
e Linux
revisión
disponibles.
de algunas de las
Garantizar la integridad de los
'
archivos Anteriormente en este capítulo, un La integridad del archivo s se verificó usando la utilidad de resumen de mensajes
resumen ISO sha256.
Las utilidades de resumen de mensajes relacionadas incluyen lo siguiente:
■ sha224sum
■ sha256sum
■ sha384sum
■ sha512sum
Estas herramientas funcionan igual que el comando sha1sum, excepto que, por supuesto, utilizan el
estándar hash criptográfico SHA2. La única diferencia entre las distintas herramientas SHA2 es la
longitud de la clave que utilizan. El comando sha224sum utiliza una longitud de clave de 224 bits, el
610
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
El comando sha256sum utiliza una longitud de clave de 256 bits, y así sucesivamente. Recuerde que cuanto mayor
sea la longitud de la clave, menor será la posibilidad de descifrar el cifrado.
El estándar hash criptográfico SHA2 fue creado por la Agencia de Seguridad Nacional (NSA).
SHA3 es otro estándar hash criptográfico, que fue lanzado por NIST en agosto de 2015.
Cifrado de un sistema de archivos Linux durante la
instalación Es posible que necesite cifrar un sistema de archivos completo en su servidor Linux. Esto se puede
hacer de varias maneras diferentes, incluido el uso de una herramienta de terceros de software libre y de código
abierto (FOSS), como Linux Unifi ed Key Setup (LUKS) (https://gitlab.com/cryptsetup/cryptsetup).
Una de sus opciones en Linux es encriptar su partición raíz durante la instalación (consulte el Capítulo , “Instalación
tener 9 de Linux”). Muchas distribuciones de Linux incluyen una opción de cifrado durante su proceso de instalación.
La figura 23.3 muestra la opción de cifrado durante una instalación de Red Hat Enterprise Linux.
Después de seleccionar esta opción durante la instalación, se le solicita una contraseña. Esta es la
criptografía de clave simétrica con una contraseña que protege la clave única. La figura 23.4 muestra la instalación
solicitando la contraseña de la clave. La contraseña debe tener al menos ocho caracteres.
FIGURA 23.3
Opción de cifrado de instalación de Red Hat Enterprise Linux
23
FIGURA 23.4
Contraseña de clave simétrica de cifrado de Linux Fedora
611
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
FIGURA 23.5
Solicitar la contraseña de clave simétrica de cifrado en el arranque
Si selecciona esta opción de cifrado, cada vez que inicie el sistema, se le solicitará la contraseña de
la clave simétrica. La figura 23.5 muestra cómo se ve esto. Esto protege la partición raíz, en caso de
robo del disco en el que reside.
Si hereda un sistema con un disco encriptado, usando privilegios de raíz, puede usar los comandos
lvs y cryptsetup y el archivo /etc/crypttab para ayudar. En el siguiente ejemplo, el comando lvs muestra
todos los volúmenes lógicos actualmente en el sistema y sus nombres de dispositivos subyacentes.
Consulte el Capítulo 12, "Administración de discos
de los
y sdistemas
iferentes
de
comandos
archivos",
LpVM.
ara obtener una revisión
# lvs o dispositivos
Dispositivos /
dev/mapper/luksb099fbbe0e56425f91a644f129db9f4b(56) /dev/mapper/luks
b099fbbe0e56425f91a644f129db9f4b(0)
En este sistema, observe que los nombres de los dispositivos subyacentes comienzan con luks. Esto
indica que se ha utilizado el estándar Linux Unifi ed Key Setup (LUKS) para el cifrado del disco duro.
NOTA
Ubuntu no tiene el comando lvs instalado por defecto. Para instalarlo, escriba sudo aptget install lvm2 en
la línea de comando.
Los volúmenes lógicos cifrados se montan en el momento del arranque utilizando la información del
archivo /etc/fstab. Sin embargo, el contenido del archivo /etc/crypttab, que se utiliza para activar la
captura de la contraseña en el momento del arranque, descifrará las entradas de /etc/fstab a medida
que se montan. Esto se muestra en el siguiente código. Tenga en cuenta que los nombres luks son los
mismos que los enumerados por el comando lvs en el ejemplo anterior.
# gato /etc/crypttab luks
b099fbbe0e56425f91a644f129db9f4b
UUID=b099fbbe0e56425f91a644f129db9f4b ninguno
También puede usar el comando cryptsetup para ayudarlo a descubrir más información sobre su
'
sistema Linux junto con
s veolúmenes
l nombre cdifrados.
el dispositivo
En el leuks
jemplo
para
siguiente,
determinar
la m
opción
ás información.
de estado es
612
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
# cryptsetup status luksb099fbbe0e56425f91a644f129db9f4b /dev/mapper/luks
b099fbbe0e56425f91a644f129db9f4b está activo y en uso.
tipo: LUX1
cifrado: aesxtsplain64 tamaño de
clave: 512 bits dispositivo: /dev/sda3
compensación: 4096 sectores
tamaño: 493819904 sectores leer/
modo: escribir
Cifrado de un directorio Linux
También puede utilizar la utilidad ecryptfs para cifrar en un sistema Linux. La utilidad ecryptfs no es
un tipo de sistema de archivos, como implica su nombre. En cambio, es una utilidad compatible con
POSIX que le permite crear una capa de cifrado sobre cualquier sistema de archivos.
La utilidad ecryptfs no está instalada de forma predeterminada en Fedora y no está
disponible en RHEL. Para instalar esa utilidad en Fedora, usa el comando dnf install ecryptfsutils.
Si no está instalado en un sistema Debian, use el comando sudo aptget install ecrypt
utils.
CONSEJO
Debido a que la utilidad ecryptfs se usa para el cifrado, es un error común colocar la letra n después de la
letra e en la sintaxis ecryptfs. Si obtiene un error al utilizar las utilidades ecryptfs, asegúrese de que no utilizó 23
la sintaxis encryptfs por error.
En el ejemplo que sigue, el usuario johndoe tendrá un subdirectorio encriptado usando la
utilidad ecryptfs. En primer lugar, no debe haber archivos que residan actualmente en el
directorio antes de cifrarlo. Si hay archivos ubicados allí, muévalos a un lugar seguro hasta
que se haya completado el cifrado. Si no los mueve, no podrá acceder a ellos mientras el
directorio esté encriptado.
Ahora, para encriptar el directorio /home/johndoe/Secret, use el comando de montaje.
Debe tener privilegios de root para montar y desmontar el directorio cifrado en este método.
Mire el comando de montaje que se usa en el siguiente ejemplo. Es algo similar al comando
de montaje regular, excepto que el tipo de partición utilizado es ecryptfs. ¡El elemento a
montar y su punto de montaje son el mismo directorio! Literalmente, está cifrando el
directorio y montándolo sobre sí mismo. El otro elemento inusual de este comando de
montaje es que inicia la utilidad ecryptfs, que hace algunas preguntas interactivas.
# mount t ecryptfs /home/johndoe/Secreto /home/johndoe/Secreto
Seleccione el tipo de clave que se usará para los archivos recién creados:
1) tspi 2)
frase de contraseña
3) pkcs11helper 4)
openssl
613
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Selección: 2
Contraseña: **********
Seleccionar cifrado:
1) aes: tamaño de bloque = 16;
tamaño de clave mínimo = 16; tamaño de clave máximo = 32
(cargado) 2) pez globo: tamaño de bloque = 16; tamaño de
clave mínimo = 16; max keysize = 56 (no cargado) 3) des3_ede:
blockize = 8; tamaño de clave mínimo = 24; max keysize = 24 (no
cargado) 4) twofish: blocksize = 16; tamaño de clave mínimo = 16;
max keysize = 32 (no cargado) 5) cast6: blocksize = 16; tamaño de
clave mínimo = 16; max keysize = 32 (no cargado) 6) cast5:
blocksize = 8; tamaño de clave mínimo = 5; Tamaño máximo de
clave = 16 (no cargado)
Selección [aes]: 1
Seleccionar bytes de
clave: 1) 16 2) 32 3) 24
Selección [16]: 16
Habilitar transferencia
de texto sin formato (s/n)
[n]: n Habilitar cifrado de nombre de archivo (s/n) [n]: n
Intentando montar con las siguientes opciones:
ecryptfs_unlink_sigs ecryptfs_key_bytes=16 ecryptfs_cipher=aes
ecryptfs_sig=70993b8d49610e67 ADVERTENCIA: según el
contenido de [/root/.ecryptfs/sigcache.txt], parece que nunca ha
montado con esta clave antes . Esto podría significar que ha
escrito mal su contraseña.
¿Desea continuar con el montaje (sí/no)? : sí ¿ Le gustaría agregar sig
[70993b8d49610e67] a [/root/.ecryptfs/sigcache.txt] para evitar esta advertencia
en el futuro (sí/no)? : sí Se agregó con éxito una nueva firma al archivo de caché
de la firma del usuario Montado eCryptfs
La utilidad ecryptfs le permite elegir lo siguiente:
■ Tipo de clave
■ Frase de
contraseña ■
Cifrado ■ Tamaño de la
clave (en bytes) ■ Para habilitar o deshabilitar el paso de texto sin
formato ■ Para habilitar o deshabilitar el cifrado de nombre de archivo
614
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
También le advierte cuando está montando por primera vez este directorio cifrado porque la clave no se ha
utilizado antes. La utilidad le permite aplicar una firma digital al directorio montado para que, si lo vuelve a montar,
simplemente monte el directorio y no requiera una frase de contraseña.
CONSEJO
Anote las selecciones que realiza cuando monta una carpeta ecryptfs por primera vez. Necesita las selecciones
exactas que eligió la próxima vez que vuelva a montar la carpeta.
Para verificar que el directorio encriptado ahora está montado, puede usar el comando de montaje nuevamente.
En el siguiente ejemplo, se usa el comando mount y luego se canaliza a grep para buscar el directorio /home/
johndoe/Secret. Como puede ver, el directorio está montado con un tipo ecryptfs.
# montar | grep /home/johndoe/Secreto
/home/johndoe/Secret on /home/johndoe/Secret type ecryptfs
(rw,relatime,ecryptfs_sig=70993b8d49610e67,ecryptfs_cipher=aes,
ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
Hasta ahora, no ha visto los efectos de este directorio montado y cifrado. En el texto que sigue, el archivo
my_secret_file se copia en el directorio cifrado. El usuario john doe aún puede usar el comando cat para mostrar
el archivo en texto sin formato. La capa ecryptfs descifra automáticamente el archivo.
23
$ cp mi_archivo_secreto Secreto $
cat /home/johndoe/Secret/mi_archivo_secreto Shh... Es
un secreto.
El usuario raíz también puede usar el comando cat para mostrar el archivo en texto sin formato.
# cat /home/johndoe/Secret/my_secret_file Shh... Es un
secreto.
Sin embargo, después de desmontar el directorio cifrado con el comando umount, los archivos ya no se
descifran automáticamente. El archivo my_secret_file ahora es un galimatías y no puede ser leído, ni siquiera
por el usuario root.
# umount /home/johndoe/Secreto
Por lo tanto, la utilidad ecryptfs le permite crear una ubicación en el sistema de archivos para cifrar y descifrar
archivos rápidamente. Sin embargo, después de que ese directorio ya no esté montado como tipo ecryptfs,
los archivos estarán seguros y no se podrán descifrar.
SUGERENCIA Como usuario no root, puede usar los comandos ecryptfssetupprivate y ecryptfsmountprivate para configurar un punto de montaje criptográfico privado
como usuario no root.
615
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Cifrado de un archivo Linux
La herramienta más popular para el cifrado de archivos en un sistema Linux es la utilidad OpenPGP GNU
Privacy Guard, gpg. Su fl exibilidad y variedad de opciones, junto con el hecho de que se instala de forma
predeterminada en la mayoría de las distribuciones de Linux, se suman a su atractivo.
PRECAUCIÓN Si su organización utiliza una empresa de almacenamiento en la nube de terceros, debe saber que algunas de
estas empresas, como Dropbox, no cifran los archivos hasta que se reciben. Esto significa que la empresa tiene las claves
necesarias para descifrar sus archivos y puede dejar vulnerables
sistema Linux
los daatos
ntes
dde
e
seu
nviarlos
organización.
a la nube
El caifrado
grega
dle
a acrchivos
apa adicional
en su de
protección necesaria.
Sin embargo, puede utilizar otras herramientas de criptografía en un sistema Linux para cifrar archivos.
Al igual que gpg, muchas de estas herramientas le permiten hacer mucho más que simplemente cifrar archivos. Las
siguientes son algunas de las herramientas de criptografía populares de Linux que puede usar para cifrar archivos:
aescrypt: utiliza el cifrado de clave simétrica Rijndael, también llamado AES. Este tercero
La herramienta FOSS está disponible para su descarga desde www.aescriypt.com.
bcrypt: esta herramienta utiliza el cifrado de clave simétrica blowfish. No es instalado por
por defecto. Después de instalar bcrypt, las páginas man están disponibles. ■
Para Fedora (no disponible en RHEL): yum install bcrypt ■ Para Ubuntu: sudo aptget
install bcrypt
ccrypt: esta herramienta utiliza el cifrado de clave simétrica Rijndael, también llamado AES. Se creó para reemplazar
la utilidad de cifrado estándar de Unix y no se instala de manera predeterminada.
Después de instalar ccrypt, las páginas man están disponibles.
■ Para Fedora (no disponible en RHEL): yum install ccrypt ■ Para Ubuntu: sudo aptget
install ccrypt
gpg: esta utilidad puede utilizar pares de claves asimétricas o una clave simétrica. Es
instalado por defecto, y es la herramienta de criptografía de elección para los servidores Linux. El cifrado
predeterminado a utilizar se establece en el archivo gpg.conf. Hay páginas man disponibles así como información
gnupg.
Tenga en cuenta que esta lista cubre solo las herramientas más populares. Además, recuerde que muchas de estas
herramientas se pueden utilizar para algo más que la criptografía de archivos.
Cifrado de Linux con diversas herramientas Puede
aplicar la criptografía, definida como el acto de escribir o generar códigos destinados a guardar secretos, a casi todo en Linux.
Además de sistemas de archivos, directorios y archivos, también puede cifrar copias de seguridad, archivos Zip, conexiones
de red y más.
616
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
TABLA 23.2 Herramientas criptográficas misceláneas de Linux
La tabla 23.2 enumera algunas de las diversas herramientas de criptografía de Linux y lo que hacen. Si desea
ver una lista completa de las herramientas de criptografía instaladas en su distribución actual de Linux, escriba
man k crypt en la línea de comando.
Como muchos otros elementos en un sistema Linux, las herramientas de criptografía disponibles son ricas y
abundantes. Esto le brinda la fl exibilidad y la variedad que necesita para implementar los estándares de criptografía
que requiere su organización en particular. 23
Uso del cifrado desde el escritorio
La ventana Contraseñas y claves proporciona un medio para ver y administrar claves y
contraseñas desde el escritorio de GNOME. Esta ventana se puede iniciar seleccionando el
ícono de Contraseñas y claves en la pantalla Actividades o ejecutando el comando Seahorse.
Con la ventana que aparece, puede trabajar con lo siguiente:
Contraseñas: cuando accede a un sitio web, desde un navegador web Chromium o Chrome, e ingresa un
nombre de usuario y una contraseña (y selecciona guardar esa contraseña), se almacena en su
sistema para la próxima vez que visite ese sitio. Seleccione la entrada Inicio de sesión bajo el
encabezado Contraseñas para ver cada uno de estos nombres de usuario y contraseñas guardados.
Certifi cados: puede ver los certifi cados asociados con el almacenamiento de claves de Gnome2, usuario
Almacenamiento de claves, confianza del sistema y confianza predeterminada.
Claves PGP: puede ver las claves GPG que crea seleccionando el GnuPG
entrada de llaves.
Secure Shell: puede crear claves OpenSSH públicas y privadas que le permitan iniciar sesión en
sistemas remotos que usan esas claves en lugar de contraseñas para la autenticación con ssh, scp,
rsync, sftp y comandos relacionados. Seleccione Claves OpenSSH para ver las claves que haya creado
para este fin. (Consulte la sección "Uso de autenticación sin contraseña basada en clave" en el Capítulo
13 para obtener información sobre cómo crear este tipo de claves).
Herramienta
Descripción
Cifra las copias de seguridad. Para instalar en Fedora, escriba yum install duplicity. Para instalar en Ubuntu,
escriba sudo aptget install duplicity en la línea de comando.
Duplicidad gpgzip Utiliza GNU Privacy Guard para cifrar o firmar archivos en un archivo. Instalado por defecto. 617
Openssl Un conjunto de herramientas que implementa los protocolos Secure Sockets Layer (SSL) y Transport Layer
Security (TLS). Estos protocolos requieren cifrado. Instalado por defecto.
Sea Un administrador de claves de cifrado GNU Privacy Guard. Instalado por defecto en Ubuntu. Para instalar
horse en Fedora y RHEL, escriba yum install seahorse en la línea de comando.
Ssh Cifra el acceso remoto a través de una red. Instalado por defecto.
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Otra herramienta de seguridad extremadamente poderosa disponible en Linux es PAM. Las siguientes
secciones de este capítulo cubren los conceptos básicos de PAM y cómo puede usar esta herramienta para
mejorar aún más la seguridad de su sistema Linux.
Implementando la seguridad de Linux con PAM
Sun Microsystems inventó los módulos de autenticación conectables (PAM) y se implementaron originalmente
en el sistema operativo Solaris. El proyecto LinuxPAM comenzó en 1997. Hoy en día, la mayoría de las
distribuciones de Linux utilizan PAM.
PAM simplifica el proceso de gestión de autenticación. Recuerde que la autenticación (consulte el Capítulo
22, "Comprensión dconocido
e la seguridad
como u
bsuario
ásica doe
pLroceso)
inux") es
es
el
qpuien
roceso
dice
dse
er.
determinar
Este proceso
que uan
vseces
ujeto
s(e
también
denomina
“identificación y autenticación”. PAM es un método centralizado para proporcionar autenticación para el sistema
y las aplicaciones de Linux.
Las aplicaciones se pueden escribir para usar PAM; tales aplicaciones se denominan "conscientes de PAM".
No es necesario volver a escribir y compilar una aplicación compatible con PAM para cambiar su configuración
de autenticación. Todos los cambios necesarios se realizan dentro de un archivo de configuración de PAM para
las aplicaciones compatibles con PAM. Así, la gestión de autenticación para estas aplicaciones se centraliza y
simplifica.
Puede ver si una aplicación o utilidad de Linux en particular es compatible con PAM. Compruebe si está
compilado con la biblioteca PAM, libpam.so. En el ejemplo que sigue, se comprueba la aplicación crontab para
detectar PAM. El comando ldd verifica las dependencias de la biblioteca compartida de un archivo. Para
mantenerlo simple, grep se usa para buscar la biblioteca PAM. Como puede ver, crontab en este sistema Linux
en particular es compatible con PAM.
# ldd /usr/bin/crontab | grep pam
libpam.so.0 => /lib64/libpam.so.0 (0x00007fbee19ce000)
Los beneficios de usar PAM en su sistema Linux incluyen lo siguiente:
■ Gestión de autenticación simplificada y centralizada desde el administrador
mirador
■ Desarrollo de aplicaciones simplificado, porque los desarrolladores pueden escribir aplicaciones
utilizando la biblioteca PAM documentada en lugar de escribir sus propias rutinas de autenticación.
■ Flexibilidad en la autenticación:
■ Permitir o denegar el acceso a los recursos según criterios tradicionales, como
identificación
■ Permitir o denegar el acceso según criterios adicionales, como la hora del día
restricciones
■ Establecer limitaciones de temas, como el uso de recursos
Aunque los beneficios de PAM simplifican la administración de autenticación, la forma en que PAM funciona
realmente no es tan simple.
618
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Comprender el proceso de autenticación PAM
Cuando un sujeto (usuario o proceso) solicita acceso a una aplicación o utilidad compatible con PAM, se utilizan dos
componentes principales para completar el proceso de autenticación del sujeto:
■ El archivo de configuración de la aplicación compatible con PAM
■ Los módulos PAM que utiliza el archivo de configuración
Cada archivo de configuración de aplicación compatible con PAM se encuentra en el centro del proceso. Los archivos de
configuración de PAM recurren a módulos PAM específicos para realizar la autenticación necesaria.
Los módulos PAM autentican a los sujetos a partir de los datos de autorización del sistema, como una cuenta de usuario
centralizada mediante LDAP (consulte el Capítulo 11, "Administración de cuentas de usuario").
Linux viene con muchas aplicaciones compatibles con PAM, con sus archivos de configuración necesarios y módulos
PAM ya instalados. Si tiene alguna necesidad especial de autenticación, lo más probable es que pueda encontrar un
módulo PAM que ya se haya escrito para esa necesidad. Sin embargo, antes de comenzar a modificar PAM, debe
comprender más acerca de cómo funciona PAM.
PAM toma una serie de pasos utilizando los módulos y los archivos de configuración para garantizar que se produzca
la autenticación adecuada de la aplicación:
1. Un sujeto (usuario o proceso) solicita acceso a una aplicación.
2. El archivo de configuración PAM de la aplicación, que contiene una política de acceso, está abierto y
leído.
23
La política de acceso se establece a través de una lista de todos los módulos PAM que se utilizarán en el
proceso de autenticación. Esta lista de módulos PAM se denomina pila.
3. Los módulos PAM de la pila se invocan en el orden en que aparecen en la lista.
4. Cada módulo PAM devuelve un estado de éxito o fracaso.
5. La pila continúa leyéndose en orden y no se detiene necesariamente por un solo estado de falla devuelto.
6. Los resultados de estado de todos los módulos PAM se combinan en un solo
resultado del éxito o fracaso de la autenticación.
Por lo general, si un solo módulo PAM devuelve un estado de falla, se deniega el acceso a la aplicación. Sin
embargo, esto depende de los ajustes del archivo de configuración. La mayoría de los archivos de configuración de PAM
se encuentran en /etc/pam.d. El formato general de un archivo de configuración PAM es
bandera de control de contexto módulo PAM [opciones de módulo]
Comprender los contextos PAM Los
módulos PAM tienen funciones estándar que brindan diferentes servicios de autenticación. Estas funciones estándar dentro
de un módulo PAM se pueden dividir en tipos de funciones llamados contextos.
Los contextos también se pueden llamar interfaces o tipos de módulos. En la Tabla 23.3, , las diferentes estafas de PAM
los textos se enumeran junto con el tipo de servicio de autenticación que brindan.
619
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
TABLA 23.3 Contextos PAM
Descripción de los indicadores de control
de PAM En un archivo de configuración de PAM, los indicadores de control se utilizan para determinar el estado
general, que se devuelven a la aplicación. Una bandera de control es cualquiera de las siguientes:
Palabra clave simple: la única preocupación aquí es si el módulo PAM correspondiente
devuelve una respuesta de "fallido" o "éxito". Consulte la Tabla 23.4 para ver cómo se
manejan estos estados.
620
Contexto Descripción del servicio
autenticación
Proporciona servicios de administración de autenticación, como la verificación de
contraseñas de cuentas.
cuenta Proporciona servicios de validación de cuentas, como restricciones de acceso según la hora del día.
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Serie de acciones: el estado del módulo devuelto se maneja a través de la serie de acciones
enumerados en el archivo.
La tabla 23.4 muestra las diversas banderas de control de palabras clave y sus respuestas al estado del módulo
devuelto. Tenga en cuenta que algunas de las banderas de control deben colocarse con cuidado dentro de la pila
del archivo de configuración.
inmediatamente
Algunas banderas
y ndo
e
sce
ontrol
llama
haacen
l resto
que
de
elos
l proceso
módulos
de
PaAM.
utenticación
Los indicadores
se detenga
de control
simplemente controlan cómo se combinan los resultados del estado del módulo PAM en un solo resultado general. La
tabla 23.4 demuestra cómo se combinan los resultados de estado.
Debe saber que los módulos PAM devuelven muchos más códigos de resultado de estado que solo "éxito" o
"fracaso". Por ejemplo, un módulo puede devolver el código de estado de PAM_ ACCT_EXPIRED, lo que significa
que la cuenta de usuario ha caducado. Esto se consideraría un "fracaso".
Comprender los módulos PAM Un
módulo PAM es en realidad un conjunto de módulos de biblioteca compartida (archivos DLL) almacenados en /
usr/lib64/security (64 bits). Puede ver una lista de los diversos módulos PAM instalados en su sistema ingresando ls /usr/
lib64/security/pam*.so en la línea de comando.
NOTA
En Ubuntu, para encontrar sus módulos PAM, escriba el comando sudo find / name pam*.so en la línea de
comando. 23
Su sistema Linux viene con muchos de los módulos PAM necesarios ya instalados. Si necesita un módulo que aún no
está instalado, lo más probable es que alguien más ya lo haya escrito. Consulta fuentes como estas:
■ http://www.openwall.com/pam/ ■ http://
puszcza.gnu.org.ua/software/pammodules/download.html ■ Comprender los archivos de
configuración de eventos del sistema PAM
Hasta ahora, la atención se ha centrado en las aplicaciones compatibles con PAM y sus archivos de configuración.
Sin embargo, otros eventos del sistema, como iniciar sesión en el sistema Linux, también usan PAM. Por lo tanto, estos
eventos también tienen archivos de configuración.
La siguiente es una lista parcial del directorio del archivo de configuración de PAM. Tenga en cuenta que hay archivos
de configuración de aplicaciones compatibles con PAM, como crond, y archivos de configuración de eventos del sistema,
como postloginac.
# ls l /etc/pam.d total 204
rwrr. 1 raíz raíz 272 15 de noviembre 10:06 atd
...
rwrr. 1 raíz raíz 232 31 de enero 12:35 configutil rwrr. 1 raíz raíz
293 26 de octubre 23:10 crond
621
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
...
rwrr. 1 root root 109 28 de febrero 01:33 postlogin
...
rwrr. 1 root root 981 28 de febrero 01:33 systemauth
...
Puede modificar estos archivos de configuración de eventos del sistema para implementar las necesidades de s
seguridad específicas de su organización. Por ejemplo, el archivo systemauth se puede modificar para forzar ciertas
restricciones de contraseña.
PRECAUCIÓN
La modificación o eliminación incorrecta de los archivos de configuración de eventos del sistema PAM puede bloquearle el acceso a su propio
sistema. Asegúrese de probar cualquier cambio en un entorno virtual o de prueba antes de modificar sus servidores Linux de producción.
Estos archivos de configuración de eventos del sistema PAM funcionan exactamente de la misma manera que los
archivos de configuración de aplicaciones compatibles con PAM. Tienen el mismo formato, utilizan la misma sintaxis y
utilizan módulos PAM. Sin embargo, muchos de estos archivos están vinculados simbólicamente (consulte el Capítulo 4, ,
“Moverse por el sistema de archivos”). Por lo tanto, estos archivos de configuración requieren algunos pasos adicionales
cuando se realizan cambios en ellos. Los "cómo hacer" se tratan más adelante en este capítulo.
SUGERENCIA Muchos de los archivos de configuración de PAM tienen una página de manual asociada a ellos. Por ejemplo, para saber más información sobre el pago.
También hay archivos de d_ módulo unix,
del meódulo
ocumentación scriba
en m
el an pam _ unix en la línea de comandos de su distribución Fedora y RHEL
directorio /usr/share/doc/pam*/txts/.
Aunque Linux viene con muchas aplicaciones compatibles con PAM, varios archivos de configuración y módulos PAM
ya instalados, no puede esperar que PAM se solucione solo.
Se necesitan ciertos pasos administrativos para administrar PAM.
Administrar PAM en su sistema Linux La tarea de administrar PAM en su
sistema Linux es bastante mínima. Debe verificar que PAM se implemente correctamente y hacer los ajustes necesarios
para satisfacer las necesidades de seguridad de su organización en particular.
Además, PAM hace algo más que los pasos de autenticación de aplicaciones descritos anteriormente. PAM también
puede limitar los recursos, restringir los tiempos de acceso, imponer una buena selección de contraseñas, etc.
Administración de archivos de configuración de aplicaciones
compatibles con PAM Debe revisar los archivos de configuración de PAM para sus aplicaciones y utilidades
compatibles con PAM para asegurarse de que su proceso de autenticación coincida con el proceso de autenticación
deseado
por su organización. Su Matriz de Control de Acceso (vea el Capítulo 22, “Comprensión de
622
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Linux Security”) y la información sobre cómo comprender PAM proporcionada en este capítulo le ayudarán a
realizar una auditoría de los archivos de configuración de PAM.
Cada aplicación compatible con PAM debe tener su propio archivo de configuración de PAM. Cada archivo de
configuración define qué módulos PAM en particular se utilizan para esa aplicación. Si no existe un archivo de
configuración, se puede crear un agujero de seguridad para esa aplicación. Este agujero podría usarse con
intenciones maliciosas. Como precaución de seguridad, PAM viene con el archivo de configuración "otro". Si una
aplicación compatible con PAM no tiene un archivo de configuración de PAM, por defecto utiliza el archivo de
configuración de "otro" PAM.
Puede verificar si su sistema Linux tiene el archivo de configuración /etc/pam.d/other usando el comando ls. El
siguiente ejemplo muestra que el archivo de configuración /etc/pam.d/other PAM existe en este sistema.
$ ls /etc/pam.d/otro /etc/pam.d/
otro
El archivo de configuración PAM /etc/pam.d/other debe denegar todo acceso, lo que en términos de seguridad se
conoce como Denegación implícita. En el control de acceso de seguridad informática, Implicit Deny significa que si
ciertos criterios no se cumplen claramente, se debe denegar el acceso. En este caso, si no existe un archivo de
configuración para una aplicación compatible con PAM, se deniega todo acceso a ella. A continuación se muestra el
contenido de un archivo /etc/pam.d/other:
$ cat /etc/pam.d/other
#%PAM1.0 requerida cuenta
autenticación requerida pam_deny.so 23
contraseña requerida sesión pam_deny.so
requerida pam_deny.so
pam_deny.so
Observe que se enumeran los cuatro contextos de PAM: autenticación, cuenta, contraseña y sesión.
Cada contexto usa el indicador de control requerido y el módulo pam_deny.so. El módulo PAM pam_ deny.so se
utiliza para denegar el acceso.
Incluso con el archivo de configuración "otro" en su lugar, si no hay un archivo de configuración PAM para una
aplicación compatible con PAM, debe crearse. Agregue este elemento a su lista de verificación de auditoría de PAM.
También debe revisar su archivo de configuración de PAM "otro" en su sistema Linux para asegurarse de que aplica
la denegación implícita.
Administración de archivos de configuración de eventos del
sistema PAM De manera similar a los archivos de configuración de utilidades y aplicaciones compatibles con PAM,
los archivos de configuración de eventos del sistema PAM deben auditarse con la
su
Moatriz
rganización.
de control
Sin
de
eambargo,
cceso de
para
cualquier modificación necesaria en estos archivos, se deben tomar medidas adicionales.
En el material que sigue, aprenderá cómo configurar requisitos de seguridad especiales a través de PAM en su sistema
Linux, como restricciones de tiempo de inicio de sesión de cuenta. Muchos de los requisitos especiales requieren que
realice un cambio en los archivos de configuración de eventos del sistema PAM, como /etc/pam.d/systemauth.
623
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
El problema de realizar cambios en algunos de estos archivos de configuración de eventos del sistema PAM es que
la utilidad authselect puede volver a escribir estos archivos y eliminar cualquier cambio realizado localmente.
Afortunadamente, cada archivo de configuración de PAM que corre este riesgo lo tiene documentado en una
línea de comentarios dentro. Usando grep, puede encontrar rápidamente qué archivos de configuración PAM tienen
este problema potencial.
# grep "authselect" /etc/pam.d/* fingerprintauth:#
Generado por authselect el lunes 21 de octubre a las 19:24:36
2019
contraseñaauth:# Generado por authselect el lunes 21 de octubre a las 19:24:36 2019 postlogin:#
Generado por authselect el lunes 21 de octubre a las 19:24:36 2019 smartcardauth:# Generado por
authselect el lunes 21 de octubre a las 19:24: 36 2019 systemauth:# Generado por authselect el lunes 21
de octubre a las 19:24:36 de 2019
Estos archivos de configuración de eventos del sistema PAM utilizan enlaces simbólicos (consulte
el Capítulo
4, “Moverse por el sistema de archivos”). Por ejemplo, en Fedora puede ver que el archivo systemauth es en
realidad un enlace simbólico que apunta al archivo /etc/authselect/systemauth. El primer carácter en la seguridad
del archivo es una l. Esto simbólicamente.
indica que el archivo está vinculado. El símbolo > muestra que el archivo está vinculado
# ls l autenticación del
sistema lrwxrwxrwx. 1 raíz raíz 27 1 de octubre 15:24 systemauth > /etc/authselect/system
auth
NOTA
En algunas distribuciones de Linux, la utilidad pamauthconfig es similar a la utilidad authselect en su capacidad para
sobrescribir archivos de configuración. Esto puede suceder si se ingresa el comando pamauthconfig force en la línea de
comando. Lea la página del manual man pamauthconfig para obtener más información sobre esta utilidad si está instalada
en su sistema.
Implementación de límites de recursos con PAM
La gestión de recursos no es solo una tarea administrativa del sistema. También es una tarea administrativa de
seguridad. Establecer limitaciones de recursos lo ayuda a evitar muchos problemas adversos en su sistema
Linux. Los problemas como las bombas de bifurcación se pueden evitar limitando la cantidad de procesos que
puede crear un solo usuario. Una bomba de bifurcación ocurre cuando un proceso genera un proceso tras otro
de manera recursiva hasta que se consumen los recursos del sistema. Las bombas de horquilla pueden ser
maliciosas o simplemente accidentales; es decir, creado simplemente por un desarrollo deficiente del código del
programa.
El módulo PAM pamlimits utiliza un archivo de configuración especial para establecer estos límites de recursos: /etc/
security/limits.conf. De forma predeterminada, este archivo no tiene límites de recursos establecidos.
Por lo tanto, debe revisar el archivo y establecer límites de recursos para satisfacer las necesidades de seguridad s
de su organización.
624
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
NOTA
Los archivos de configuración de PAM se encuentran en el directorio /etc/pam.d y en el directorio /etc/security.
El siguiente fragmento muestra el archivo /etc/security/limits.conf. El expediente está bien documentado. Debe leer
el contenido de ese archivo para obtener una descripción completa del formato y ejemplos de los límites que se pueden
establecer.
$ cat /etc/security/limits.conf # /etc/security/
limits.conf # #Este archivo establece los límites de
recursos para los usuarios que iniciaron sesión a
través de PAM.
#No afecta los límites de recursos de los servicios del sistema. # #También tenga en cuenta que
los archivos de configuración en el directorio /etc/security/limits.d, #que se leen en orden
alfabético, anulan la configuración en este #archivo en caso de que el dominio sea el mismo o más
específico.
...
#Cada línea describe un límite para un usuario en la forma: # #<dominio>
<tipo> <elemento> <valor>
...
#* suave centro 0
#* duro RSS 10000 23
#@estudiante duro nproc 20
#@facultad suave nproc 20
#@facultad duro nproc 50
#ftp duro nproc 0
#@estudiante inicios de sesión máximos 4
# Fin del documento
El dominio y el tipo de los elementos de formato necesitan una explicación más detallada que la que se documenta en
el archivo de configuración:
dominio: el límite se aplica al usuario o grupo enumerado. Si el dominio es *, se aplica a
todos los usuarios
tipo: No se puede exceder un límite estricto. Se puede exceder un límite flexible, pero solo
temporalmente.
Mire el siguiente ejemplo de configuración del archivo limits.conf. La facultad del grupo aparece en la lista, pero lo
que debe notar es nproc. El límite de nproc establece el número máximo de procesos que un usuario puede iniciar.
Esta configuración es lo que evita una bomba de horquilla. Observe que el tipo seleccionado es duro; por lo tanto, no
se puede exceder el límite de 50 procesos. Por supuesto, este límite no se aplica porque la línea está comentada con
un símbolo #.
625
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Los ajustes de límite se establecen por inicio de sesión y solo duran la duración de la sesión de inicio de sesión. Un usuario
malintencionado podría iniciar sesión varias veces para crear una bomba de bifurcación. Por lo tanto, también es una buena
idea establecer el número máximo de inicios de sesión para estas cuentas de usuario.
La limitación del número máximo de inicios de sesión puede tener que hacerse por usuario. Por ejemplo, johndoe necesita
iniciar sesión en el sistema Linux solo una vez. Para evitar que otros usen la cuenta de johndoe, configure los inicios máximos
de su cuenta en 1.
Para anular cualquier configuración en el archivo limits.conf, agregue archivos llamados *.conf al directorio /etc/security/limits.d.
Esta es una manera conveniente de tener un archivo RPM u otro método para agregar y eliminar límites sin necesidad de
editar el archivo de limites.conf directamente.
El paso final para limitar este recurso es asegurarse de que el módulo PAM utilice límites. conf está incluido en uno de los
archivos de configuración de eventos del sistema PAM. El módulo PAM que utiliza limites.conf es pam_limits. En la lista parcial
que sigue, se usa grep para verificar que el módulo PAM se usa dentro de los archivos de configuración de eventos del sistema.
# grep "pam_limits" /etc/pam.d/* /etc/pam.d/
fingerprintauth:sesión requerida /etc/pam.d/passwordauth:sesión pam_limits.so
requerida /etc/pam.d/runuser:sesión requerida /etc/pam.d/system
auth:sesión pam_limits.so
requerida pam_limits.so
pam_limits.so
Los límites de tiempo para el acceso a los servicios y cuentas no son manejados por el archivo de configuración PAM /etc/
secu rity/limits.conf. En cambio, es manejado por el archivo time.conf.
Implementar restricciones de tiempo con PAM PAM
puede hacer que todo su sistema Linux funcione en "tiempo PAM". Las restricciones de tiempo, como el acceso a aplicaciones
particulares durante ciertos momentos del día, o permitir inicios de sesión solo durante días específicos de la semana, son
manejadas por PAM.
El archivo de configuración de PAM que maneja estas restricciones se encuentra en el directorio /etc/secu rity. El siguiente
código muestra el bien documentado archivo /etc/security/time. conf PAM archivo de configuración.
$ cat /etc/security/time.conf # este es un
archivo de configuración de ejemplo para el módulo pam_time. Su sintaxis # se basó inicialmente en gran
medida en la del paquete shadow (shadow960129).
# # la sintaxis de las líneas es la siguiente: #
# servicios;ttys;usuarios;tiempos
...
626
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Le recomiendo que lea el contenido del archivo time.conf. Tenga en cuenta que el formato de cada entrada
válida sigue esta sintaxis: servicios;ttys;usuarios; veces. Los campos están separados por punto y coma. Los
valores de campo válidos se documentan en el archivo de configuración time.conf.
Si bien time.conf está bien documentado, un ejemplo siempre es útil. Por ejemplo, ha decidido que los
usuarios habituales deben poder iniciar sesión en los terminales solo entre semana (de lunes a viernes). Pueden
iniciar sesión de 7 am a 7 pm en estos días de semana. La siguiente lista describe los elementos que se deben
configurar:
servicios: Iniciar
sesión ttys—*: Indica que todos los terminales deben incluirse
usuarios: Todos menos root (!root) horarios: Permitido los días de
semana (miércoles) de 7 a. m. (0700) a 7 p. m. (1900)
La entrada en time.conf sería similar a la siguiente:
acceso; * ; !raíz ; Wd07001900
El paso final para implementar este ejemplo de restricción de tiempo es asegurarse de que el módulo PAM
que usa time.conf esté incluido en uno de los archivos de configuración de eventos del sistema PAM.
El módulo PAM que usa time.conf es pam_time. En el listado parcial que sigue, grep muestra el módulo PAM;
pam_time no se usa dentro de ninguno de los archivos de configuración de eventos del sistema.
23
# grep "pam_time" /etc/pam.d/* configutil:auth
suficiente pam_timestamp.so configutil:session opcional pam_timestamp.so
Debido a que pam_time no aparece en la lista, debe modificar el archivo /etc/pam.d/systemauth para que PAM
aplique las restricciones de tiempo. El archivo de configuración de PAM systemauth es utilizado por PAM en el
inicio de sesión del sistema y durante las modificaciones de contraseña. Este archivo de configuración comprueba
muchos elementos, como las restricciones de tiempo.
Agregue lo siguiente cerca de la parte superior de la sección "cuenta" del archivo de configuración. Ahora el
módulo pam_time verifica las restricciones de inicio de sesión que estableció en el archivo /etc/security/time.conf.
cuenta requerido pam_time.so
NOTA
En Ubuntu, debe modificar el archivo /etc/pam.d/commonauth en lugar del archivo de configuración system
auth.
Recuerde que systemauth es un archivo vinculado simbólicamente. Si modifica este archivo, debe tomar
medidas adicionales para conservar las modificaciones de la utilidad authselect. Puede emplear módulos PAM
adicionales y archivos de configuración para establecer aún más restricciones en los sujetos. Un módulo de
seguridad importante es pam_cracklib.
627
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Hacer cumplir buenas contraseñas con
PAM Cuando se modifica una contraseña, el módulo PAM pam_cracklib está involucrado en el proceso.
El módulo solicita al usuario una contraseña y comprueba su seguridad con un diccionario del sistema y un
conjunto de reglas para identificar malas opciones.
NOTA
El módulo pam _cracklib está instalado de forma predeterminada en Fedora y RHEL. Para sistemas Ubuntu
Linux, no está instalado por defecto. Por lo tanto, para obtener acceso al módulo pam_cracklib en Ubuntu,
emita el comando sudo aptget install libpamcracklib .
Usando pam_cracklib, puede verificar una contraseña recién elegida para lo siguiente:
■ ¿ Es una palabra del
diccionario? ■ ¿Es un
palíndromo? ■ ¿ Es la contraseña anterior con el caso
cambiado? ■ ¿ Se parece demasiado a la contraseña
anterior? ■ ¿ Es demasiado corto?
■ ¿Es una versión rotada de la contraseña anterior? ■
¿ Utiliza los mismos caracteres consecutivos?
■ ¿ Contiene el nombre de usuario de alguna forma?
Puede cambiar las reglas que usa pam_cracklib para verificar nuevas contraseñas haciendo modificaciones
en el archivo /etc/pam.d/systemauth. Puede pensar que los cambios deben realizarse en el archivo de
configuración de contraseña compatible con PAM. Sin embargo, /etc/pam.d/passwd incluye el archivo system
auth en su pila.
# cat /etc/pam.d/passwd
#%PAM1.0 # Esta herramienta
solo usa la pila de contraseñas. subpila de contraseña
systemauth contraseña subpila de contraseña opcional
postlogin pam_gnome_keyring.so use_authtok
NOTA
En Ubuntu, debe modificar el archivo /etc/pam.d/commonpassword en lugar del archivo de configuración
systemauth.
La configuración actual del archivo systemauth se muestra aquí. Actualmente, una entrada llama al módulo
PAM pam_cracklib.
# cat /etc/pam.d/systemauth
#%PAM1.0 # Generado por authselect
el lunes 21 de octubre a las 19:24:36 de 2019
628
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
# No modifique este archivo manualmente. autorización
requerida requerida suficiente
pam_env.so
autenticación
pam_faildelay.so retraso=2000000 pam_fprintd.so
autenticación
...
autenticación suficiente pam_unix.so nullok try_first_pass pam_succeed_if.so
autenticación requisito uid >= 1000 quiet_success pam_deny.so pam_sss.so forward_pass
autenticación requerido pam_deny.so pam_unix.so pam_localuser.so suficiente
autenticación suficiente pam_succeed_if.so uid < 1000 quiet [predeterminado=mal éxito=ok
autenticación requerido usuario_desconocido=ignorar] pam_sss. así que se requiere
cuenta requerido pam_permit.so requisito pam_cracklib.so try_first_pass retry=3
cuenta suficiente
cuenta
cuenta
cuenta
contraseña
...
La entrada pam_cracklib en la lista anterior usa la palabra clave reintentar. Las siguientes palabras clave están
disponibles para cracklib:
depurar
Hace que el módulo escriba información en syslog.
auttok_type=XXX
23
■ Los valores predeterminados son Nueva contraseña de UNIX: y Vuelva a escribir la contraseña de UNIX:
para solicitar contraseñas. ■ Reemplace XXX con una palabra para usar en lugar de UNIX.
reintentar=N
■ Predeterminado = 1
■ Preguntar al usuario como máximo N veces antes de regresar con un error.
difok=N
■ Predeterminado = 5
■ El número de caracteres de la nueva contraseña que no deben estar presentes en la
Contraseña anterior.
■ Excepción 1: si la mitad de los caracteres de la nueva contraseña son diferentes, se acepta la nueva
contraseña. ■ Excepción 2: Véase difignore.
dignorar=N
■ Predeterminado = 23
■ El número de caracteres que tiene la contraseña antes de la configuración difok
se ignora
629
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
minlen=N
■ Predeterminado = 9
■ El tamaño mínimo aceptable para la nueva contraseña. ■ Consulte
dcredit, ucredit, lcredit y ocredit para ver cómo su configuración afecta a minlen.
dcrédito=N
■ Predeterminado =1
■ Si ( N >= 0): El crédito máximo por tener dígitos en la nueva contraseña. Si tiene menos de o N dígitos,
cada dígito cuenta +1 para alcanzar el valor mínimo actual.
■ Si (N < 0): El número mínimo de dígitos que se deben cumplir para una nueva contraseña.
ucredit=N
■ Predeterminado = 1
■ If ( N >= 0): El crédito máximo por tener letras mayúsculas en la nueva contraseña.
Si tiene menos de o N letras mayúsculas, cada letra cuenta +1 para alcanzar el valor minlen actual.
■ If (N < 0): El número mínimo de letras mayúsculas que se deben cumplir para un
Nueva contraseña.
lcrédito=N
■ Predeterminado = 1
■ Si (N >= 0): El crédito máximo por tener letras minúsculas en la nueva contraseña.
Si tiene menos de o N letras minúsculas, cada letra cuenta +1 para alcanzar el valor minlen actual.
■ If ( N < 0): El número mínimo de letras minúsculas que se deben cumplir para un
Nueva contraseña.
ocredito=N
■ Predeterminado = 1
■ Si (N >= 0): El crédito máximo por tener otros caracteres en la nueva contraseña. Si tiene menos de u otros N
caracteres, cada carácter cuenta +1 para alcanzar el valor mínimo actual. ■ Si (N < 0): el número mínimo de otros
caracteres que se deben cumplir para un
Nueva contraseña.
minclase=N
■ Predeterminado = 0
■ Se requiere N de cuatro clases de caracteres para la nueva contraseña. Las cuatro clases son dígitos, letras
mayúsculas, letras minúsculas y otros caracteres.
repetición máxima=N
■ Predeterminado = 0
■ Rechazar contraseñas que contengan más de N caracteres consecutivos iguales.
630
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
rechazar_nombre de usuario
Compruebe si el nombre del usuario en forma directa o invertida está contenido en la nueva
contraseña. Si se encuentra, se rechaza la nueva contraseña.
probar_primer_paso
Intente obtener la contraseña de un módulo PAM anterior. Si eso no funciona, solicite al usuario la
contraseña.
use_authtok
Este argumento se utiliza para obligar al módulo a no solicitar al usuario una nueva contraseña.
En su lugar, la nueva contraseña la proporciona el módulo de contraseñas previamente apilado .
dictpath=/ruta
Ruta a los diccionarios cracklib.
maxsecuencia=N
■ Predeterminado = 0 (lo que significa que esta verificación está
deshabilitada) ■ N establecido en cualquier número que no sea 0 genera contraseñas con caracteres monótonos
más largo que ese número para ser rechazado.
maxclassrepeat=N
■ Predeterminado = 0 (lo que significa que esta verificación está
23
deshabilitada) ■ N establecido en cualquier número que no sea 0 hace que las contraseñas con caracteres consecutivos en
la misma clase que son más largos que ese número para ser rechazados.
gecoscheck=N
'
Hace que se rechacen las contraseñas con más de tres caracteres rectos del usuario s campo GECOS,
que normalmente contienen el nombre real del usuario.
enforce_for_root=N
■ Predeterminado = 0 (lo que significa que esta verificación está
deshabilitada) ■ N establecido en cualquier número que no sea 0 hace que las contraseñas con caracteres consecutivos en
la misma clase que son más largos que ese número para ser rechazados.
enforce_for_root Hacer
cumplir las comprobaciones de contraseña fallidas para el usuario raíz. Esta opción está apagada por defecto.
Por ejemplo, si su organización requiere que las contraseñas tengan 10 caracteres y deben contener
dos dígitos, agregaría una línea similar a la siguiente al archivo /etc/pam.d/ systemauth:
se requiere contraseña pam_cracklib.so minlen=10 dcredit=2
631
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Las palabras clave utilizadas en este ejemplo con pam_cracklib son las siguientes:
■ minlen=10: la nueva contraseña debe tener al menos 10 caracteres. ■
dcredit=2: la nueva contraseña debe contener dos números.
NOTA
Las restricciones de pam_cracklib no se aplican al usuario root a menos que aplique la opción
enforce_for_root.
Fomentar el uso de sudo con PAM
Para permitir el seguimiento del uso de la cuenta raíz por parte de las personas y evitar una situación
de repudio (consulte
uso del ce l Capítulo
omando su 2y2, “Comprensión
el uso de sla
fomentar seguridad
udo. básica de Linux”),
Si su organización tiene udna
ebe
restringir
de el
política
este tipo, puede lograrlo con PAM en solo unos pocos pasos.
El comando su es compatible con PAM, lo que simplifica enormemente las cosas. Utiliza el módulo
PAM pam _wheel para buscar usuarios en el grupo rueda. El archivo de configuración /etc/pam.d/su se
muestra aquí:
# cat /etc/pam.d/su #%PAM1.0
autenticación
requerido pam_rootok.so
autenticación suficiente pam_rootok.so
# Quite el comentario de la siguiente línea para confiar implícitamente en los usuarios #
del grupo "rueda". #autenticación suficiente pam_wheel.así que confíe en use_uid # Quite
el comentario de la siguiente línea pdara
#auth subpila requerir que
ruequerida
e autenticación n usuario esté # en el grupo "rueda".
incluye
pam_wheel.so use_uid system
auth postlogin pam_succeed_if.so
autenticación uid = 0 use_uid quiet system
cuenta suficiente incluir auth systemauth systemauth postlogin pam_xauth.so
cuenta
sesión de incluir
contraseña incluir
sesión incluir
sesión opcional
Primero, para restringir el uso de su, si está usando el grupo rueda como su grupo administrativo,
debe reasignar su grupo administrativo a un nuevo grupo (consulte el Capítulo 11, “Administración ,
de cuentas de usuario”). Si no está utilizando el grupo de ruedas, asegúrese de no asignar a nadie
en el futuro a este grupo.
A continuación, debe editar el archivo de configuración /etc/pam.d/su. Elimine la marca de comentario,
#, de la siguiente línea:
#auth requerido pam_wheel.así que use_uid
632
Machine Translated by Google
Capítulo 23: Comprender la seguridad avanzada de Linux
Con estas modificaciones, PAM deshabilita el uso del comando su. Los usuarios administrativos ahora
deben usar sudo, que el sistema realiza un seguimiento y proporciona un entorno deseado de no repudio
(consulte el Capítulo 22).
Obtener más información sobre PAM PAM es otra
herramienta de seguridad rica y versátil disponible para usted en su sistema Linux. En sus propios
'
archivos del sistema Linux y sobre
las plos
En módulos
áginas en su
pduede
del manual, irectorio /usr/lib64/security (64
leer sobre cómo administrar bits).
la
configuración de PAM
■ Para obtener más información sobre los archivos de configuración de PAM, use el comando
hombre pam.conf.
■ Puede ver todos los módulos PAM disponibles en su sistema ingresando ls /usr/lib64/security/pam*.so
en la línea de comando. Para obtener más información sobre cada módulo PAM, ingrese man
pam_module _name. Asegúrese de omitir la extensión de archivo so para pam_module_name . Por
ejemplo, ingrese man pam_lastlog para obtener más información sobre el módulo pam_lastlog.so.
Varios sitios web pueden proporcionar información adicional sobre PAM:
■ El sitio web oficial de LinuxPAM: http://linuxpam.org ■ La guía del
administrador del sistema LinuxPAM: http://linuxpam.org/
LinuxPAMhtml/LinuxPAM_SAG.html
■ Referencia del módulo PAM: http://linuxpam.org/LinuxPAMhtml/sag
móduloreferencia.html
23
Resumen
Las herramientas de criptografía ofrecen formas de proteger y verificar la validez de los datos que utiliza en
su sistema Linux. La función PAM proporciona un medio para crear políticas para proteger las herramientas
que se utilizan para autenticar a los usuarios en su sistema.
Tanto las herramientas de criptografía como PAM deben manejarse con cuidado a medida que
aprende sobre Linux. Asegúrese de probar cualquier modificación que realice en un sistema Linux de prueba
o en un sistema Linux virtualizado antes de implementarlas en una máquina de producción.
El próximo capítulo cubre SELinux. Si bien la criptografía y PAM son herramientas que puede usar en su
sistema Linux, SELinux es una capa de mejora de seguridad completa.
Ejercicios
Utilice estos ejercicios para poner a prueba su conocimiento sobre el uso de herramientas criptográficas
y PAM. Estas tareas asumen que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque
algunas tareas también funcionan en otros sistemas Linux). Si está atascado, las soluciones a las tareas se
muestran en el Apéndice B (aunque en Linux, a menudo hay varias formas de completar una tarea).
1. Cifre un archivo con la utilidad gpg2 y una clave simétrica.
2. Genere un conjunto de claves públicas mediante la utilidad gpg2.
633
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
3. Enumere el conjunto de claves que generó.
4. Cifre un archivo y agregue su firma digital usando la utilidad gpg2.
5. Vaya a la página de descarga de Fedora: https://getfedora.org. Seleccione uno de
las distribuciones de Fedora para descargar. Cuando se complete la descarga,
verifique su imagen.
6. Con el comando which su, determine el nombre de archivo completo del comando su. Próximo,
determine si el comando su en su sistema Linux es compatible con PAM.
7. ¿El comando su tiene un archivo de configuración PAM? Si es así, muestre la configuración
ción en la pantalla y enumere qué contextos PAM utiliza.
8. Enumere los diversos módulos PAM en su sistema en su pantalla.
9. Busque el archivo de configuración "otro" de PAM en su sistema. ¿Existe? ¿Implica la
denegación implícita?
10. Busque el archivo de configuración de límites de PAM. ¿Tiene una configuración para mantener una bomba de horquilla?
de ocurrir en su sistema?
634
Machine Translated by Google
CAPÍTULO S
Mejorando la seguridad de
Linux con SELinux
EN ESTE CAPÍTULO
Aprender sobre los beneficios de SELinux
Aprendiendo cómo funciona SELinux
Configuración de SELinux
Solucionar problemas con SELinux
Obtener información adicional sobre SELinux
con otras organizaciones de investigación de seguridad, como Secure Computing Corporation (SCC).
Security SELinux
Enhanced Lsinux
e lanzó a la cfue
( SELinux) omunidad de
desarrollado código
por abierto
la Agencia en 2000
de Seguridad y se hizo
Nacional popular
(NSA) cuando
junto con
Red Hat incluyó SELinux en sus distribuciones de Linux. Ahora, SELinux es utilizado por muchas organizaciones y
está ampliamente disponible.
Comprender los beneficios de SELinux
SELinux es un módulo de mejora de seguridad implementado sobre Linux. Proporciona medidas de seguridad adicionales,
se incluye de forma predeterminada y está configurado para que se aplique en modo en Red Hat Enterprise Linux (RHEL) y
Fedora.
SELinux proporciona seguridad mejorada en el sistema Linux a través de controles de acceso basados en roles (RBAC)
en sujetos y objetos (también conocidos como procesos y recursos). La seguridad de Linux "tradicional" utiliza controles
de acceso discrecionales (DAC).
Con DAC, un proceso puede acceder a cualquier archivo, directorio, dispositivo u otro recurso que quede abierto
para acceder. Con RBAC, un proceso solo tiene acceso a los recursos a los que se le permite acceder
explícitamente, según el rol asignado. La forma en que SELinux implementa RBAC es asignar una política de
SELinux a un proceso. Esa política restringe el acceso de la siguiente manera:
■ Solo permitir que el proceso acceda a los recursos que llevan etiquetas explícitas. ■
Hacer que funciones potencialmente inseguras, como el acceso de escritura a un directorio, estén disponibles como Bool.
eans, que se puede activar o desactivar
635
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Un servicio, como un servidor web, que incluye una política de SELinux a menudo se instalará con etiquetas de SELinux
establecidas en directorios y archivos específicos. Esto puede hacer que el proceso del servidor en ejecución solo pueda
leer y escribir archivos de directorios específi cos. Si desea cambiar eso, debe agregar las etiquetas SELinux correctas en
los archivos y directorios a los que desea que acceda el proceso.
SELinux no es un reemplazo para DAC. En cambio, es una capa de seguridad adicional.
■ Las reglas DAC todavía se usan cuando se usa SELinux. ■ Las
reglas de DAC se verifican primero y, si se permite el acceso, luego las políticas de SELinux.
se comprueban.
■ Si las reglas de DAC niegan el acceso, las políticas de SELinux no se revisan.
Si un usuario intenta ejecutar un archivo para el que no tiene acceso de ejecución (rw), los controles DAC de Linux
"tradicionales" niegan el acceso. Por lo tanto, las políticas de SELinux ni siquiera se verifican.
NOTA
SELinux es la mejora de seguridad predeterminada de las distribuciones de Red Hat, mientras que AppArmor es la mejora
de seguridad predeterminada para Ubuntu. Todavía puede instalar SELinux en Ubuntu usando el comando sudo aptget install
selinux y luego reinicie. Sin embargo, al momento de escribir este artículo, la página Wiki de Ubuntu para SELinux sugiere que no use
el paquete SELinux de Ubuntu
( https://wiki.ubuntu.com/SELinux ). Si desea obtener más información sobre AppArmor, vaya a https://
help.ubuntu.com/community/AppArmor .
Aunque los controles de seguridad "tradicionales" de Linux aún funcionan, hay varios beneficios al usar SELinux. Los
siguientes son algunos de los beneficios de SELinux:
Implementa el modelo de control de acceso RBAC. Este es considerado el más fuerte.
modelo de control de acceso.
Utiliza el acceso con privilegios mínimos para los sujetos (por ejemplo, usuarios y procesos). El término privilegio mínimo
significa que a cada sujeto se le otorga un conjunto limitado de privilegios que solo son suficientes para permitir que
el sujeto sea funcional en sus tareas. Con la implementación del privilegio mínimo, un usuario o proceso está limitado
por el daño accidental (o intencional) a los objetos que puede causar.
Permite el sandboxing de procesos. El término sandboxing de procesos significa que cada profesional
cess se ejecuta en su propia área (sandbox). No puede acceder a otros procesos ni a sus archivos a menos que
se otorguen permisos especiales. Estas áreas donde se ejecutan los procesos se denominan "dominios".
Permite una prueba de su funcionalidad antes de la implementación. SELinux tiene un modo permisivo que le permite
ver el efecto de aplicar SELinux en su sistema.
En el modo permisivo, SELinux aún registra lo que considera violaciones de seguridad (llamadas denegaciones
de AVC), pero no las previene.
Otra forma de ver los beneficios de SELinux es examinar qué puede suceder si SELinux no se está ejecutando en su
sistema Linux. Por ejemplo, volviendo al ejemplo del servidor web,
636
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
el demonio de su servidor web (httpd) está escuchando en un puerto para que suceda algo. Una simple solicitud de un
navegador web ingresa para ver una página de inicio. Pasando por su rutina normal, el demonio httpd escucha la solicitud y
solo se aplica la seguridad de Linux "tradicional".
Al no estar restringido por SELinux, httpd puede hacer estas cosas:
■ Acceder a cualquier archivo o directorio, según los permisos de lectura/escritura/ejecución para el propietario y el
grupo asociados. ■ Realizar actividades potencialmente inseguras, como permitir la carga de un archivo o cambiar
límites del sistema.
■ Escuche en cualquier puerto que desee para las solicitudes entrantes.
En un sistema restringido por SELinux, el demonio httpd está mucho más controlado. Usando el ejemplo anterior,
httpd solo puede escuchar en el puerto en el que SELinux le permite escuchar. SELinux evita que httpd acceda a
cualquier archivo que no tenga el conjunto de contexto de seguridad adecuado y niega actividades potencialmente
inseguras que no están habilitadas explícitamente con booleanos en SELinux. En esencia, SELinux limita severamente a
qué código malicioso puede acceder y, en general, limita la actividad en su sistema Linux.
Comprender cómo funciona SELinux
SELinux se puede comparar con un guardia en una puerta: en esta comparación, el sujeto (el usuario) quiere acceder al
objeto (el archivo) dentro de la habitación. Para acceder a este objeto:
1. El sujeto debe presentar una credencial de identificación al guardia.
2. El guardia revisa la tarjeta de identificación y las reglas de acceso guardadas en un manual grande.
a. Si las reglas de acceso permiten esta tarjeta de identificación en particular dentro de la puerta, el sujeto
puede entrar en la habitación para acceder al objeto.
b. Si las reglas de acceso no permiten que esta credencial de identificación en particular acceda al objeto,
entonces el guardia niega la entrada.
SELinux ofrece una combinación de control de acceso basado en funciones (RBAC) y aplicación de tipos (TE) o seguridad
24
multinivel (MLS). En el control de acceso basado en funciones, el acceso a un objeto se basa en la función asignada a un
sujeto en la organización. P
derechos
or lo tanto,
de nao
cceso.
se basa en el nombre de usuario o ID de proceso del sujeto. A cada rol se le otorgan
Comprensión de la aplicación de tipos La aplicación de tipos
(TE) es necesaria para implementar el modelo RBAC. La aplicación de tipo asegura un sistema a través de estos
métodos:
■ Etiquetar objetos como ciertos tipos de seguridad ■ Asignar
sujetos a dominios y roles particulares ■ Proporcionar reglas que permitan
que ciertos dominios y roles accedan a ciertos tipos de objetos
637
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
El ejemplo que sigue usa el comando ls l para mostrar los controles DAC en el archivo my_stuff. El resultado muestra
el propietario del archivo (johndoe) y el grupo (johndoe), así como sus asignaciones de permisos.
Si necesita una revisión de los permisos de los archivos, consulte el Capítulo 4, “Moverse por el sistema de archivos”.
$ ls l mis_cosas rw
rwr. 1 johndoe johndoe 0 12 de febrero 06:57 my_stuff
El ejemplo que sigue incluye ls lZ y el mismo archivo, solo los controles DAC, la _ cosas, pero en lugar de
opción Z también muestra los controles RBAC de seguridad de SELinux.
$ ls lZ mis_cosas rw
rwr. johndoe johndoe unconfined_u:object_r:user_home_t:s0 ... mis_cosas
El ejemplo ls Z muestra cuatro elementos asociados con el archivo que son específicos de SELinux:
usuario (unconfined_u) rol
(objeto_r) tipo (user_home_t)
nivel (s0)
Estos cuatro elementos RBAC (usuario, rol, tipo y nivel) se utilizan en el control de acceso de SELinux para determinar los
niveles de acceso apropiados. Juntos, los elementos se denominan contexto de seguridad de SELinux. Un contexto de
seguridad (tarjeta de identificación) a veces se denomina etiqueta de seguridad.
Estas asignaciones de contexto de seguridad se dan a sujetos (procesos y usuarios). Cada contexto de seguridad tiene
un nombre específico. El nombre dado depende del objeto o tema que se le haya asignado: los archivos tienen un
contexto de archivo, los usuarios tienen un contexto de usuario y los procesos tienen un contexto de proceso, también
llamado dominio.
Las reglas que permiten el acceso se denominan reglas de permiso o reglas de política. Una regla de política es el
proceso que sigue SELinux para conceder o denegar el acceso a un tipo de seguridad del sistema en particular.
Volviendo a la comparación de SELinux con el guardia, SELinux sirve como el guardia que debe ver el contexto de
seguridad del sujeto
(tarjeta
permitir de identificación)
o denegar el acceso a yu n
revisar
las
objeto. reglas
Por de la
lo tanto, pa
olítica
la (manual
plicación de rg
de tipos eglas
de aqcceso)
arantiza antes
ue solo de
ciertos
"tipos" de sujetos puedan acceder a ciertos "tipos" de objetos.
Comprensión de la seguridad multinivel Con SELinux, el tipo
de política predeterminada se denomina política dirigida, que controla principalmente cómo se puede acceder a los
servicios de red (como servidores web y servidores de archivos) en un sistema Linux. La política específica impone
menos restricciones sobre lo que pueden hacer las cuentas de usuario válidas en el sistema. Para una política más
restringida, puede elegir Seguridad multinivel (MLS). MLS utiliza la aplicación de tipo junto con la característica adicional
de autorizaciones de seguridad. También ofrece seguridad multicategoría, que otorga niveles de clasificación a los
objetos.
638
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
SUGERENCIA Los nombres de seguridad multinivel (MLS) pueden causar confusión. El valor de categoría múltiple (MCS) a veces
se denomina valor de liquidación múltiple. Debido a que MLS ofrece MCS, a veces se le llama MLS/MCS.
La seguridad multinivel hace cumplir el modelo de seguridad de acceso obligatorio de BellLaPadula. El modelo
BellLaPadula fue desarrollado por el gobierno de los Estados Unidos para imponer la confidencialidad de la
información. La aplicación de este modelo se logra mediante la concesión de acceso a los objetos en función de sla
autorización de seguridad de un rol y el nivel de clasificación de un objeto.
La autorización de seguridad es un atributo otorgado a los roles que permiten el acceso a objetos clasificados. El
nivel de clasificación es un atributo otorgado a un objeto, que brinda protección contra sujetos que tienen un atributo
de autorización de seguridad que es demasiado bajo. Lo más probable es que hayas oído hablar del alto secreto del
nivel de clasificación. El personaje ficticio de libros y películas James Bond tenía una autorización de seguridad de
alto secreto, que le otorgaba acceso a información clasificada de alto secreto.
Este es un ejemplo clásico del modelo BellLaPadula.
La combinación de RBAC junto con la aplicación de tipos (TE) o la seguridad multinivel (MLS) permite que SELinux
proporcione una mejora de seguridad tan sólida. SELinux también ofrece diferentes modos operativos para su uso.
Implementación de modelos de seguridad de SELinux El modelo
de control de acceso basado en funciones, la aplicación de tipos, la seguridad multinivel y los modelos de Bell
LaPadula son todos temas interesantes. SELinux implementa estos modelos a través de una combinación de
cuatro piezas principales de SELinux:
■ Modos operativos ■
Contextos de seguridad ■
Tipos de políticas ■
Paquetes de reglas de políticas
'
Aunque tenemos
He tocado algunos de estos elementos de diseño, lo siguiente le dará una 24
una comprensión profunda de ellos. Esta comprensión es necesaria antes de que pueda comenzar a modificar la
configuración de SELinux en su sistema.
Comprender los modos operativos de SELinux SELinux
viene con tres modos operativos: deshabilitado, permisivo y ejecutor. Cada uno de estos modos ofrece diferentes
beneficios para la seguridad del sistema Linux.
Uso del modo deshabilitado
En el modo deshabilitado, SELinux está apagado. En su lugar, se utiliza el método predeterminado de control de
acceso, Control de acceso discrecional (DAC). Este modo es útil en circunstancias en las que no se requiere
seguridad mejorada.
Si es posible, Red Hat recomienda configurar SELinux en modo permisivo en lugar de desactivarlo. Sin embargo, hay
ocasiones en las que es apropiado deshabilitar SELinux.
639
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Si está ejecutando aplicaciones que funcionan correctamente (desde su perspectiva) pero generan cantidades
masivas de mensajes de denegación de SELinux AVC (incluso en modo permisivo), puede terminar llenando
archivos de registro hasta el punto de inutilizar sus sistemas. El mejor enfoque es establecer el contexto de seguridad
adecuado en los archivos a los que necesitan acceder sus aplicaciones. Sin embargo, deshabilitar SELinux es la
solución más rápida.
Sin embargo, antes de desactivar SELinux, piense si alguna vez desea volver a activarlo en ese sistema. Si decide
configurarlo para hacer cumplir o permisivo en una fecha posterior, la próxima vez que reinicie su sistema, pasará
por una nueva etiqueta automática de archivo SELinux antes de que aparezca.
CONSEJO Si lo único que le importa es apagar SELinux, ha encontrado la respuesta. Simplemente edite el archivo
de configuración /etc/selinux/config y cambie el texto SELINUX= a SELINUX=disabled. SELinux se desactivará después de
reiniciar el sistema. Ahora puede omitir el resto de este capítulo.
Uso del modo permisivo En el
modo permisivo, SELinux está activado, pero no se aplican las reglas de la política de seguridad.
Cuando una regla de política de seguridad debe denegar la admisión, aún se permite el acceso. Sin embargo, se
envía un mensaje a un archivo de registro que indica que se debería haber denegado el acceso.
El modo permisivo de SELinux se utiliza para lo siguiente:
■ Auditar las reglas de política de SELinux actuales ■
Probar nuevas aplicaciones para ver qué efecto tendrán las reglas de política de SELinux ■ Probar las nuevas
reglas de política de SELinux para ver qué efecto tendrán las nuevas reglas en los servicios y aplicaciones
actuales
■ Resolución de problemas por los que un servicio o aplicación en particular ya no funciona correctamente en
SELinux
En algunos casos, puede usar el comando audit2allow para leer los registros de auditoría de SELinux y generar nuevas
reglas de SELinux para permitir las acciones denegadas de forma selectiva. Esta puede ser una forma rápida de hacer
que sus aplicaciones funcionen en su sistema Linux sin deshabilitar SELinux.
Uso del modo Ejecución El
nombre lo dice todo. En el modo de cumplimiento, SELinux está activado y se aplican todas las reglas de la política
de seguridad.
Comprender los contextos de seguridad de SELinux
Como se mencionó anteriormente, un contexto de seguridad de SELinux es el método utilizado para clasificar
objetos (como archivos) y sujetos (como usuarios y programas). El contexto de seguridad defi nido permite a
SELinux aplicar reglas de política para sujetos que acceden a objetos. Un contexto de seguridad consta de cuatro
atributos: usuario, rol, tipo y nivel.
640
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
Usuario El atributo de usuario es una asignación de un nombre de usuario de Linux a un nombre de SELinux.
'
Esto no es lo mismo que un usuario. s nombre de inicio de sesión, y se le conoce específicamente
como el usuario de SELinux. El nombre de usuario de SELinux termina con au, lo que facilita su
_ confinado
identificación en la salida. Los usuarios regulares no confinados tienen un atributo
de usuario
en
ul a
no
política
específica predeterminada.
Rol Un rol designado en la empresa se asigna a un nombre de rol de SELinux. El
El atributo de rol se asigna luego a varios sujetos y objetos. A cada función se le otorga acceso a otros
sujetos y objetos según la autorización de seguridad de la función y el nivel de clasificación del objeto.
Más específicamente,
para tipos o dominios
para SELinux,
particulares.
a los uEsuarios
l uso de
sre
oles
les a
psigna
uede oubligar
n rol ya l os
las
roles
cuentas,
están
como
autorizados
la raíz, a
una posición menos privilegiada. El nombre del rol de SELinux tiene una r al final. En un sistema
SELinux de destino, los procesos ejecutados por el usuario raíz tienen un rol system_r, mientras que los
usuarios regulares se ejecutan bajo el rol unconfined_r.
Tipo Este atributo de tipo define un tipo de dominio para procesos, un tipo de usuario para usuarios y un
tipo de archivo para archivos. Este atributo también se denomina tipo de seguridad. La mayoría de las
reglas de política se refieren al tipo de seguridad de un proceso y a qué archivos, puertos, dispositivos
y otros elementos del sistema tiene acceso ese proceso (según sus tipos de seguridad). El nombre del
tipo SELinux termina con una t.
Nivel El nivel es un atributo de Seguridad multinivel (MLS) y aplica el modelo BellLaPadula. Es opcional
en TE pero es obligatorio si está utilizando MLS.
El nivel MLS es una combinación de los valores de sensibilidad y categoría que juntos forman el
nivel de seguridad. Un nivel se escribe como sensibilidad: categoría.
sensibilidad
■ Representa el nivel de seguridad o sensibilidad de un objeto, como confidencial o
ultra secreto.
■ Es jerárquico, siendo s0 (sin clasificar) típicamente el más bajo. ■ Aparece como
un par de niveles de sensibilidad (nivel bajonivel alto) si los niveles difieren. ■ Aparece como un único
nivel de sensibilidad (s0) si no hay niveles alto y bajo. Sin embargo, en algunos casos, incluso si no hay
niveles alto y bajo, el rango todavía se muestra (s0s0).
24
categoría
■ Representa la categoría de un objeto, como Sin espacio libre, Espacio libre superior,
etcétera.
■ Tradicionalmente, los valores están entre c0 y c255. ■ Aparece
como un par de niveles de categoría (nivel bajo. nivel alto) si los niveles difieren. ■ Aparece como una
sola categoría (nivel) si no hay niveles bajo y alto.
Los usuarios tienen contextos
de seguridad Para ver su contexto de usuario de SELinux, ingrese el comando id en el indicador de shell. El
siguiente es un ejemplo del contexto de seguridad para el usuario johndoe:
641
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
$ id
uid=1000(johndoe) gid=1000(johndoe) groups=1000(johndoe)
context=unconfined_u:unconfined_r:unconfined_t:s0s0:c0.c1023
'
El usuario La lista de contextos de seguridad muestra lo siguiente:
usuario: El usuario de Linux, johndoe, se asigna al usuario de SELinux unconfined_u. rol: El
usuario de SELinux, unconfined_u, se asigna al rol del
unconfined_r.
type: Al usuario se le ha dado el tipo de unconfined_t.
nivel:
sensibilidad: el usuario tiene solo un nivel de sensibilidad, y es el más bajo
nivel de s0.
categorías: el usuario tiene acceso a c0.c1023, que son todas las categorías (c0 a
a c1023).
Los archivos tienen contextos
de seguridad Un archivo también tiene un contexto de seguridad. Para ver el contexto de un archivo individual,
use la opción Z en el comando ls. El siguiente es un contexto de seguridad para el archivo my_stuff:
$ ls Z mis_cosas rwrw
r. johndoe johndoe
unconfined_u:object_r:user_home_t:s0 mis_cosas
La lista de contexto de archivos muestra lo siguiente:
usuario: el archivo se asigna al usuario unconfined_u de SELinux. rol:
el archivo se asigna al rol de object_r. tipo: el archivo se considera
parte del dominio user_home_t.
nivel:
sensibilidad: el usuario tiene solo un nivel de sensibilidad, y es el más bajo
nivel de s0.
categorías: MCS no está configurado para este archivo.
Los procesos tienen contextos de
' '
seguridad UEl
n cpontexto
roceso dve
e tiene los mismos cuatro atributos que un usuario y el contexto de un archivo. A
sieguridad
nformación
de proceso en un sistema Linux, por lo general usa una variante del comando ps.
En el siguiente código, se utilizó el comando ps el.
# ps el | grep bash
0 S 1000 1589 1583 0 80 golpe 0 1653 n_tty_pts/0 00:00:00
4 S 0 5350 5342 0 80 00:00:00 golpe 0 1684 puntos de espera/1
642
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
Para ver el contexto de seguridad de un proceso, debe usar la opción Z en el comando ps. En el siguiente
ejemplo, se usó el comando ps eZ y luego se canalizó a grep para buscar solo procesos que ejecutan el
shell bash.
# pseZ | grep bash
unconfined_u:unconfined_r:unconfined_t:s0s0:c0.c1023 1589 pts/0
00:00:00 fiesta
no confinado_u:no confinado_r:no confinado_t:s0s0:c0.c1023 5289 pts/1
00:00:00 fiesta
no confinado_u:no confinado_r:no confinado_t:s0s0:c0.c1023 5350 pts/1
00:00:00 fiesta
La lista de contexto del proceso muestra lo siguiente:
usuario: el proceso se asigna al usuario unconfined_u de SELinux. rol: el
proceso se ejecuta como el rol unconfined_r. tipo: el proceso se está
ejecutando en el dominio unconfined_t.
nivel:
sensibilidad: El proceso tiene solo el nivel s0.
categorías: el proceso tiene acceso a c0.c1023, que son todas las categorías (c0 a
a c1023).
Todos estos contextos de seguridad se pueden cambiar para satisfacer las necesidades de seguridad
particulares de su organización. Sin embargo, antes de aprender a cambiar la configuración de estos contextos
de seguridad, debe comprender otra pieza del rompecabezas de SELinux, los tipos de políticas de SELinux.
Comprender los tipos de política de
SELinux El tipo de política elegido determina directamente qué conjuntos de reglas de política se utilizan
para dictar a qué puede acceder un objeto. El tipo de política también determina qué atributos de contexto
de seguridad específicos se necesitan. Aquí es donde comienza a ver el buen nivel de control de acceso
que se puede implementar a través de SELinux.
24
NOTA
Es posible que los tipos de póliza disponibles en su distribución no coincidan con los que se enumeran aquí. Por ejemplo, en las distribuciones
de Linux más antiguas, la política estricta todavía está disponible. En las distribuciones más nuevas, la política estricta se fusionó con la política
dirigida, con la directiva dirigida de forma predeterminada.
SELinux tiene diferentes políticas entre las que puede elegir:
■ Dirigido ■
MLS
■ Mínimo
643
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Cada política implementa diferentes controles de acceso para adaptarse a las necesidades de su organización. Es
fundamental comprender estos tipos de políticas para seleccionar la correcta para sus requisitos de seguridad
particulares.
Política dirigida
El objetivo principal de la política dirigida es restringir los demonios "objetivos". Sin embargo, también puede restringir
otros procesos y usuarios. Los demonios objetivo están en un espacio aislado. Un sandbox es un entorno donde los
programas pueden ejecutarse pero su acceso a otros objetos está estrictamente controlado.
Se dice que un proceso que se ejecuta en un entorno de este tipo está "en un espacio aislado". Por lo tanto,
un demonio objetivo está restringido para que ningún ataque malicioso lanzado a través de él pueda afectar a otros
servicios o al sistema Linux en su conjunto. Los demonios dirigidos hacen que sea más seguro para usted compartir
su servidor de impresión, servidor de archivos, servidor web u otros servicios mientras limitan los riesgos que el
acceso a esos servicios representan para otros activos en su sistema.
Todos los sujetos y objetos no dirigidos se ejecutan en el dominio unconfined_t. El dominio unconfined_t
no tiene restricciones de política de SELinux y, por lo tanto, solo utiliza la seguridad de Linux "tradicional".
SELinux viene con la política Dirigida establecida como predeterminada. Por lo tanto, por defecto, SELinux tar
obtiene solo unos pocos demonios.
Política MLS (Seguridad multinivel) El
propósito principal de la política MLS es hacer cumplir el modelo BellLaPadula. Otorga acceso a otros sujetos y
objetos según la autorización de seguridad de un rol y el nivel de clasificación del objeto .
En la política MLS, el atributo MLS de un contexto de seguridad es fundamental. De lo contrario, las reglas de la
política no sabrán cómo hacer cumplir las restricciones de acceso.
Política mínima
Esta política es tal como suena: mínima. Fue creado originalmente para máquinas o dispositivos con poca
memoria, como teléfonos inteligentes.
La política Mínima es esencialmente la misma que la política Dirigida, pero solo se usa el paquete de reglas
de la política base. Esta política "barebones" se puede utilizar para probar los efectos de SELinux en un único
demonio designado. Para dispositivos con poca memoria, la política mínima permite que SELinux se ejecute sin
consumir una gran cantidad de recursos.
Comprensión de los paquetes de reglas de políticas de
SELinux Las reglas de políticas, también llamadas reglas de permiso, son las reglas utilizadas por SELinux para
determinar si un sujeto tiene acceso a un objeto. Las reglas de política se instalan con SELinux y se agrupan en
paquetes, también llamados módulos.
En su sistema Linux, hay documentación de usuario sobre estos diversos módulos de políticas en forma de
archivos HTML. Para ver esta documentación en Fedora o RHEL, abra el navegador de su sistema y escriba
'
él tiene la siguiente URL: file:///usr/share/doc/selinux
política /html/index.html. Para Ubuntu, la URL es file:///usr/share/doc/
644
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
selinuxpolicydoc/html/index.html . Si no tiene la documentación de la política en su
sistema, puede instalarla en un sistema Fedora o RHEL escribiendo yum install selinuxpolicydoc en la línea de
comando. En Ubuntu, escriba sudo aptget install selinuxpolicydoc en la línea de comandos.
Puede revisar la documentación de esta política para ver cómo se crean y empaquetan las reglas de política.
Los paquetes de reglas de política, junto con los modos operativos de SELinux, el tipo de política y varios
contextos de seguridad, trabajan juntos para asegurar su sistema Linux a través de SELinux. Las siguientes
secciones cubren cómo comenzar a configurar SELinux para cumplir con las necesidades de seguridad de su s
organización en particular.
Configuración de SELinux
SELinux viene preconfigurado. Puede usar las funciones de SELinux sin ningún trabajo de configuración. Sin
'
embargo, rara vez las configuraciones preconfiguradas satisfacen todas las necesidades de seguridad de Secar
su
sistema Linux.
Las configuraciones de SELinux solo pueden ser configuradas y modificadas por el usuario root. Los archivos
de configuración y políticas se encuentran en el directorio /etc/selinux. El archivo de configuración principal es
el archivo /etc/selinux/config, y aparece de la siguiente manera:
# cat /etc/selinux/config # Este archivo
controla el estado de SELinux en el sistema.
# SELINUX= puede tomar uno de estos tres valores: #
enforcing: se aplica la política de seguridad de SELinux. permisivo: SELinux
imprime advertencias en lugar de aplicarlas. # # disabled: SELinux está totalmente desactivado.
SELINUX=hacer cumplir #
SELINUXTYPE= puede tomar uno de estos tres valores:
# dirigido Los procesos dirigidos están protegidos, mínimo Modificación
# de la política dirigida.
# Solo los procesos seleccionados están protegidos. mls
# Protección de seguridad multinivel. 24
SELINUXTYPE=orientado
Este archivo principal de configuración de SELinux le permite configurar el modo y el tipo de política.
Configuración del modo SELinux Para ver
el modo actual de SELinux en su sistema, use el comando getenforce. Para ver tanto el modo actual como el
modo establecido en el archivo de configuración, use el comando sestatus.
Ambos comandos se muestran en el siguiente código:
# hacer cumplir
Cumpliendo #
sestatus
Estado de SELinux: habilitado /
Montaje de SELinuxfs: sys/fs/selinux
645
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Directorio raíz de SELinux: /etc/selinux
Nombre de la política cargada: aplicación dirigida
Modo actual: aplicación habilitada
Modo desde el archivo de configuración: permitida
Estado de la póliza MLS:
Estado de la política deny_unknown:
Comprobación de protección de memoria: real (seguro) 31
Versión máxima de la política del kernel:
Para cambiar la configuración del modo, puede usar setenforce newsetting, donde
newsetting es
■ hacer cumplir o
1 ■ permisivo o 0
Tenga en cuenta que no puede usar el comando setenforce para cambiar SELinux al modo
deshabilitado.
El ejemplo que sigue muestra cómo el modo SELinux cambia inmediatamente al modo permisivo a
través del comando setenforce. El comando sestatus muestra el modo operativo actual y el modo en
el archivo de configuración, que no ha sido modificado.
Cuando se reinicia el sistema, determina el modo operativo de SELinux a partir del archivo de
configuración. Por lo tanto, el modo permisivo establecido en el ejemplo siguiente es temporal
porque el modo de aplicación se establece a través del archivo de configuración cuando se reinicia el sistema.
# setenforce 0 #
getenforce
Permisivo
# estado
Estado de SELinux: activado
Montaje de SELinuxfs: /sys/fs/selinux /etc/
Directorio raíz de SELinux: selinux cumplimiento
Nombre de la política cargada: permisivo dirigido
Modo actual:
Modo desde el archivo de configuración:
...
PRECAUCIÓN Lo mejor es cambiar del modo desactivado al modo obligatorio modificando el archivo de configuración y reiniciando.
Cambiar de deshabilitado a obligatorio a través del comando setenforce puede bloquear su sistema como resultado de etiquetas de
archivo incorrectas. Tenga en cuenta que, al reiniciar después de cambiar del modo deshabilitado, podría haber una larga espera para
que su sistema de archivos se vuelva a etiquetar después de que el sistema vuelva a funcionar en modo permisivo o de aplicación.
Para deshabilitar SELinux, debe editar el archivo de configuración de SELinux. Reiniciar el sistema
siempre cambia el modo a lo que está configurado en ese archivo de configuración. El método
preferido para cambiar el modo SELinux es modificar el archivo de configuración y luego reiniciar el
sistema.
646
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
Cuando se cambia de modo deshabilitado a modo obligatorio o permisivo, SELinux vuelve a etiquetar
automáticamente el sistema de archivos después de un reinicio. Esto significa que SELinux verifica y cambia los
contextos de seguridad de cualquier archivo con contextos de seguridad incorrectos (por ejemplo, archivos mal
etiquetados) que pueden causar problemas en el nuevo modo. Además, todos los archivos que no estén
etiquetados se etiquetan con contextos. Este proceso de reetiquetado puede llevar mucho tiempo
comprueba
porque se el
contexto de cada archivo. El siguiente es el mensaje que recibirá cuando un sistema esté pasando por un proceso
de reetiquetado después de un reinicio:
*** Advertencia: se requiere volver a etiquetar la política específica de SELinux.
*** El reetiquetado puede llevar mucho tiempo, según el tamaño del sistema de archivos y la velocidad
***
de los discos duros.
Para modificar el modo en el archivo /etc/selinux/config, cambie la línea SELINUX= a una de las siguientes:
■ SELINUX=deshabilitado
■ SELINUX=hacer cumplir ■
SELINUX=permisivo
El ejemplo del archivo de configuración de SELinux que sigue muestra que el modo se ha establecido
en permisivo. Ahora, cuando ocurre un reinicio del sistema, el modo cambia.
# cat /etc/selinux/config # Este archivo
controla el estado de SELinux en el sistema.
# SELINUX= puede tomar uno de estos tres valores:
# dirigido Los procesos dirigidos están protegidos, mínimo Modificación
# de la política dirigida.
# Solo los procesos seleccionados están protegidos.
# mls Protección de seguridad multinivel
SELINUX=permisivo
...
El archivo de configuración principal de SELinux no solo contiene la configuración del modo. También
especifica el tipo de política que se aplicará.
24
Configuración del tipo de política de SELinux El
tipo de política que elija determina si SELinux aplica TE, MLS o un paquete base. Esta configuración
de tipo determina directamente los conjuntos de reglas de política que se utilizan para dictar a qué puede
acceder un objeto.
De forma predeterminada, el tipo de política se establece en objetivo. Para cambiar el tipo de
política predeterminada, edite el archivo /etc/selinux/config. Cambie la línea SELINUXTYPE= a uno
de los siguientes:
■ SELINUX=objetivo
■ SELINUX=ml
■ SELINUX=mínimo
647
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Si establece el tipo de SELinux en mls o mínimo, primero debe asegurarse de tener instalado su paquete de
políticas. Compruébelo escribiendo el siguiente comando:
yum list selinuxpolicymls o yum list selinuxpolicyminimum
NOTA
Para verificar los paquetes de políticas de SELinux en Ubuntu, use el comando sudo aptcache policy package_
nombre
El ejemplo del archivo de configuración de SELinux que sigue muestra que el tipo se ha establecido en mls. Ahora,
cuando se reinicia el sistema, se cambia el tipo de política.
# cat /etc/selinux/config # Este
archivo controla el estado de SELinux en el sistema.
...
# SELINUXTYPE= tipo de política en uso. Los valores posibles son:
# dirigido: los procesos dirigidos están protegidos, # mínimo:
modificación
están de la política #
protegidos. d
irigida.
mls P#rotección
Solo los dpe
rocesos seleccionados
seguridad
multinivel.
SELINUXTYPE=mls
Gestión de contextos de seguridad de SELinux Los contextos
de seguridad de SELinux permiten a SELinux aplicar reglas de política para sujetos que acceden a objetos.
Su sistema Linux viene con contextos de seguridad ya asignados.
Para ver los contextos actuales de seguridad de archivos y procesos de SELinux, use el comando secon.
La Tabla 24.1 enumera las opciones disponibles en el segundo comando.
TABLA 24.1 Segundo Opciones de comando
Opción Descripción
en Utilice esta opción para mostrar al usuario el contexto de seguridad.
r Utilice esta opción para mostrar el rol del contexto de seguridad.
t Utilice esta opción para mostrar el tipo de contexto de seguridad.
s Utilice esta opción para mostrar el nivel de confidencialidad del contexto de seguridad.
C Utilice esta opción para mostrar el nivel de autorización del contexto de seguridad.
metro
Utilice esta opción para mostrar la sensibilidad y el nivel de autorización del contexto de seguridad como un
rango MLS.
648
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
Si usa el segundo comando sin designación, le muestra el contexto de seguridad del proceso actual. Para ver
el contexto de seguridad de otro proceso, use la opción p. El siguiente ejemplo le muestra cómo usar secon para
ver el contexto de seguridad actual y del proceso systemd.
# segundo urt
usuario: unconfined_u rol:
unconfined_r tipo: unconfined_t
# secon urt p 1 usuario:
system_u rol: system_r tipo:
init_t
Para ver el contexto de seguridad de un archivo, utilice la opción f, como se muestra aquí:
# segundo urt f /etc/passwd usuario:
system_u rol: object_r tipo: passwd_file_t
El segundo comando no muestra su contexto de seguridad. Para ver su contexto de seguridad, use el comando id.
Administrar el contexto de seguridad del
usuario Recuerde que cada ID de inicio de sesión de usuario del sistema se asigna a una ID de usuario de SELinux
en particular. Para ver una lista de mapeo en su sistema, ingrese el comando semanage login l. El comando
semanage y su salida se muestran en el siguiente código. Si no se incluye un ID de inicio de sesión de usuario, se
utiliza la asignación de inicio de sesión "predeterminada", que es el nombre de inicio de sesión de _predeterminado_.
Observe que también se muestran las configuraciones MLS/MCS asociadas para cada usuario de SELinux.
# inicio de sesión semanal l
Nombre de inicio de Usuario de SELinux Gama MLS/MCS Servicio
s0s0:c0.c1023 *
sesión __predeterminado__ unconfined_u
raíz unconfined_u s0s0:c0.c1023 * 24
Para ver una pantalla actual de los usuarios de SELinux y sus roles asociados, use el comando semanage user l.
La pantalla parcial que sigue muestra los roles asignados a SELinux
nombres de usuario:
# semanage user l
Etiquetado MLS/ MLS/
Prefijo de usuario de SELinux Nivel de MCS Rango de MCS guest_u Funciones de SELinux
usuario s0 s0 invitado_r
...
usuario_u usuario s0 s0 usuario_r
xinvitado_u usuario s0 s0 xinvitado_r
649
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Si necesita agregar un nuevo nombre de usuario de SELinux, la utilidad semanage se usa nuevamente.
Esta vez, el comando es semanage user a selinux_username. Para asignar una ID de inicio de sesión al
nombre de usuario de SELinux recién agregado, el comando es semanage login a s selinux_ nombre de
usuario ID de inicio de sesión. La utilidad semanage es una herramienta poderosa para administrar su
configuración de SELinux. Para obtener más información sobre la utilidad semanage, consulte las páginas man.
Gestión del contexto de seguridad de
archivos El etiquetado de archivos es fundamental para mantener un control de acceso adecuado a los datos de
cada archivo. SELinux establece etiquetas de seguridad de archivos en la instalación y en el reinicio del sistema
cuando el modo SELinux está desactivado. Para ver la etiqueta
actual dde
contexto usn
e archivo (también
eguridad), use el ccomando
onocido como
ls Z, como se
muestra aquí:
# ls Z /etc/passwd rwr
r. raíz raíz system_u:object_r:etc_t:s0 /etc/passwd
Puede usar varios comandos para administrar las etiquetas de contexto de seguridad de archivos, como se muestra
en la Tabla 24.2.
TABLA 24.2 Comandos de administración de etiquetas de contexto de seguridad de archivos
Utilidad Descripción
gato Use esto para cambiar la categoría de la etiqueta de contexto de seguridad de un archivo.
chocon Use esto para cambiar la etiqueta de contexto de seguridad de un archivo.
archivos fijos Esto llama a la utilidad restorecon/setfiles.
restorecon Esto hace exactamente lo mismo que la utilidad setfiles, pero tiene una interfaz diferente.
cara que setfiles.
establecer archivos Use esto para verificar y/o corregir las etiquetas de contexto de seguridad. Se puede ejecutar
para la verificación de etiquetas de archivos y/o el reetiquetado de archivos al agregar un
nuevo módulo de políticas al sistema. Hace exactamente lo mismo que la utilidad restorecon
pero tiene una interfaz diferente a la de restorecon.
Los comandos chcat y chcon, que se muestran en la Tabla 24.2, le
, permiten cambiar el contexto de
seguridad
de un archivo. En el siguiente ejemplo, el comando chcon se usa para cambiar el usuario de SELinux asociado
con file.txt de undefined _ al sistema _ en.
# ls Z archivo.txt rw
rwr. johndoe johndoe
unconfined_u:object_r:user_home_t:s0 file.txt # chcon u
system_u file.txt # ls Z file.txt rwrwr. johndoe johndoe
system_u:object_r:user_home_t:s0 file.txt
650
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
Observe en la tabla 24.2 que fixfiles, restorecon y setfiles son esencialmente la misma utilidad. Sin embargo,
restorecon es la opción popular para usar cuando se fijan las etiquetas de los archivos. El comando restorecon
filename cambia un archivo a su contexto de seguridad predeterminado.
Gestión del contexto de seguridad del proceso
La defi nición de un proceso es un programa en ejecución. Cuando ejecuta programas o inicia servicios
en un sistema Linux, a cada uno se le asigna un ID de proceso (consulte el Capítulo 6,
de
“Administración
procesos en ejecución”).
En un sistema con SELinux, un proceso también recibe un contexto de seguridad.
La forma en que un proceso obtiene su contexto de seguridad depende de qué proceso lo inició. Recuerde
que systemd (anteriormente init) es la "madre" de todos los procesos (consulte el Capítulo 15, "Inicio
detención
y
de servicios"). Por lo tanto, systemd inicia muchos demonios y procesos. Los procesos que systemd inicia
reciben nuevos contextos de seguridad. Por ejemplo, cuando systemd inicia el demonio apache, se le asigna el
tipo (también conocido como dominio) httpd_t. El contexto asignado es manejado por la política de SELinux
escrita específicamente para ese demonio. Si no existe una política para un proceso, se le asigna un tipo
predeterminado, unconfined_t.
Para un programa o aplicación ejecutado por un usuario (proceso principal), el nuevo proceso (proceso
'
secundario) hereda el programa
contexto dsel
de usuario. P
eguridad. Uor
n psroceso
también
upuesto, puede
esto ocurre ejecutar
si el uusuario
solo n programa.
puede E l proceso hijo
ejecutar
en este caso también hereda el contexto de seguridad de su proceso padre. Por lo tanto, el proceso hijo se
ejecuta en el mismo dominio.
'
Entonces, un El contexto de seguridad se establece antes de ejecutar el programa y depende de quién
proceso lo inició. Puede usar un par de comandos para cambiar los contextos de seguridad bajo los cuales se
ejecuta un programa:
runcon: ejecuta el programa usando opciones para determinar el usuario, el rol y el tipo
(también conocido como dominio).
sandbox: Ejecute el programa dentro de un dominio estrictamente controlado (también conocido como sandbox).
Puede causar varios problemas al usar runcon, así que utilícelo con precaución. Sin embargo, sandbox
ofrece una gran protección. Permite fl exibilidad al probar nuevos programas en su sistema Linux.
24
Administración de paquetes de reglas de políticas de SELinux
Las reglas de políticas son las reglas utilizadas por SELinux para determinar si un sujeto tiene acceso a un
objeto. Se agrupan en paquetes, también llamados módulos, y se instalan con SELinux. Una manera fácil
de ver los módulos en su sistema es usar el comando semodule l. Enumera todos los módulos de política
junto con su número de versión actual. Aquí se muestra un ejemplo del comando semodule l:
# semodule l abrt
cuentas
cuenta
...
651
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
xservidor
Zabbix
cebra
cebra
sin zonas
zosremoto
Varias herramientas pueden ayudarlo a administrar e incluso crear sus propios módulos de políticas. La Tabla 24.3
muestra las diversas herramientas de paquetes de reglas de políticas disponibles en un sistema Fedora.
TABLA 24.3 Herramientas del paquete de políticas de SELinux
Herramienta de política Descripción
auditoría2permitir Genera reglas de permitir/no auditar políticas a partir de registros de operaciones
denegadas
auditoría2por qué Genera una descripción de por qué se denegó el acceso a partir de los registros de
operaciones denegadas
módulo de control Compila módulos de políticas
política de verificación Compila las políticas de SELinux
política_de_carga Carga nuevas políticas en el kernel
semodule_expand Expande un paquete de módulos de políticas
semodule_link Vincula paquetes de módulos de políticas juntos
semódulo _ paquete Crea un paquete de módulos de políticas
La siguiente es una política de ejemplo que normalmente se usa como marco para crear reglas de políticas locales.
La política de ejemplo es bastante larga, por lo que solo se muestra una parte.
# cat /usr/share/doc/selinuxpolicy/example.te
policy_module(myapp,1.0.0)
##################################### #
# Declaraciones #
escriba myapp_t;
escriba myapp_exec_t;
tipo_dominio(myapp_t)
archivo_entrada_dominio(myapp_t, myapp_exec_t)
escriba myapp_log_t;
logging_log_file(myapp_log_t)
652
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
escriba myapp_tmp_t;
archivos_tmp_file(myapp_tmp_t)
...
permitir myapp_t myapp_tmp_t:file manage_file_perms;
files_tmp_filetrans(miaplicación_t,miaplicación_tmp_t,archivo) #
Puede ver en el código de ejemplo anterior que se usa una sintaxis especial en el código de política.
Para crear y modificar reglas de políticas, debe aprender esta sintaxis del lenguaje de reglas de políticas, aprender a
usar los compiladores de políticas de SELinux y aprender a vincular archivos de reglas de políticas para formar módulos;
probablemente necesite tomar un par de clases de un día para lograr esto.
Puede sentirse tentado a renunciar a SELinux en este punto. Sin embargo, es mucho más fácil usar valores booleanos
para modificar políticas.
Administrar SELinux a través de booleanos La creación
de módulos y la creación de reglas de políticas de SELinux es una actividad bastante complicada y que requiere
mucho tiempo. La creación de reglas de política incorrectas podría comprometer potencialmente la seguridad de su
'
sistema Linux. Afortunadamente, SELinux proporciona valores booleanos.
Un booleano es un interruptor de palanca que activa o desactiva una configuración. Un interruptor booleano le permite
cambiar partes de las reglas de política de SELinux sin ningún conocimiento sobre la redacción de políticas. ¡Estos
cambios de política también se pueden hacer sin reiniciar el sistema!
Para ver una lista de todos los valores booleanos actuales utilizados en SELinux, utilice el comando getsebool
a. El siguiente es un ejemplo de las reglas de política de SELinux con booleanos en un sistema Fedora Linux:
# getsebool a
abrt_anon_write > desactivado
abrt_handle_event > desactivado
...
xserver_object_manager > desactivado
zabbix_can_network > desactivado
Para ver una política específi ca que puede ser modificada por un booleano, se usa nuevamente el comando 24
getsebool. Esta vez, se le pasa el nombre de la política, como se muestra en el siguiente ejemplo:
# getsebool httpd_can_connect_ftp
httpd_can_connect_ftp > desactivado
Para alternar una política, puede usar el comando setsebool. Este comando cambia la regla de política
temporalmente. Cuando se reinicia el sistema, el valor booleano vuelve a su configuración original. Si necesita
que esta configuración sea permanente, puede usar setsebool con la opción P.
El comando setsebool tiene seis configuraciones: tres para activar una política (activado, 1 o verdadero) y tres para
desactivar una política (desactivado, 0 o falso).
Un ejemplo en el que podría querer usar setsebool se relaciona con la restricción del uso de archivos ejecutables. En
algunas situaciones, no es una buena seguridad permitir que los usuarios ejecuten programas
653
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
desde su directorio /home. Para evitar que esto suceda, la regla de política de contenido allow_user_exec_ debe
desactivarse. El siguiente ejemplo muestra el uso del comando setse bool para hacer precisamente eso. Tenga
en cuenta que la opción P se usa para hacer que esta configuración sea permanente.
# setsebool P allow_user_exec_content desactivado
El comando getsebool verifica que la configuración booleana se haya realizado correctamente:
# getsebool allow_user_exec_content
allow_user_exec_content > desactivado
Los booleanos facilitan mucho la modificación de las reglas de política actuales de SELinux. En general, las
utilidades de configuración de la línea de comandos de SELinux, como getsebool, son fáciles de usar. Sin
embargo, si desea una herramienta de configuración de GUI, SELinux tiene una. Se instala mediante el
comando yum install policycoreutilsgui. En Ubuntu, use el comando sudo aptget install policycoreutils. Para
utilizar esta herramienta de configuración, simplemente escriba el comando systemconfigselinux y aparecerá una
interfaz GUI.
Supervisión y solución de problemas de SELinux
SELinux es otra herramienta para monitorear su sistema. Registra todas las denegaciones de acceso, lo que
puede ayudarlo a determinar si se está intentando un ataque. Estos mismos archivos de registro de SELinux también
son útiles para solucionar problemas de SELinux.
Comprender el registro de SELinux SELinux utiliza un
caché llamado Caché de vector de acceso (AVC) al revisar las reglas de política para contextos de seguridad
particulares. Cuando se deniega el acceso, lo que se denomina denegación de AVC, se coloca un mensaje de
denegación en un archivo de registro.
Estos mensajes de denegación registrados pueden ayudarlo a diagnosticar y abordar las infracciones rutinarias
de la política de SELinux. El lugar donde se registran estos mensajes de denegación depende del estado de los
demonios auditd y rsyslogd:
■ Si el demonio auditd se está ejecutando, los mensajes de denegación se registran en /var/log/
auditoría/auditoría.log.
■ Si auditd no se está ejecutando, pero el demonio rsyslogd se está ejecutando, el mensaje de denegación
Los mensajes se registran en /var/log/messages.
NOTA
Si tanto auditd como rsyslogd se están ejecutando y tiene el demonio setroubleshootd en su sistema, los mensajes de
denegación se envían a los archivos audit.log y de registro de mensajes. Sin embargo, la información de denegación en
el archivo de registro de mensajes se pone en un formato más comprensible por el daemon setroubleshootd.
654
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
Revisión de mensajes de SELinux en el registro
de auditoría Si tiene el demonio auditd en ejecución, puede ver rápidamente si se han
registrado denegaciones de AVC mediante el comando aureport. El siguiente ejemplo muestra
el uso de aureport y grep para buscar denegaciones de AVC. Se ha registrado al menos una
denegación en /var/log/audit/audit.log:
#aureport | grep AVC
Número de AVC: 1
Después de descubrir que se registró una denegación de AVC en audit.log, puede usar aus search
para revisar los mensajes de denegación. El siguiente ejemplo muestra el uso del comando ausearch
para revisar el mensaje de denegación de AVC registrado:
# ausearch m avc
type=AVC msg=audit(1580397837.344:274): avc: denegado { getattr } for pid=1067 comm="httpd"
path="/var/myserver/services" dev="dm0" ino =655836 scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:var_t:s0 tclass=file permissive=0
La pantalla proporciona información sobre quién estaba intentando acceder, junto con su contexto de
seguridad al intentarlo. Busque estas palabras clave en un mensaje de denegación de AVC:
■ tipo=AVC
■ avc: denegado
■ com="httpd" ■
ruta="/var/myserver/services"
Esto puede brindarle suficientes datos para comenzar a solucionar un problema o para rastrear
actividades maliciosas. Aquí, el directorio /var/myserver/services tiene un contexto de archivo SELinux
incorrecto para ser leído por el servicio httpd.
Revisión de mensajes de SELinux en el registro de mensajes
Si tiene el servicio auditd ejecutándose, puede encontrar mensajes de denegación de AVC buscando
en el archivo /var/log/audit/audit.log usando grep. Para los últimos sistemas RHEL y Fedora, o cualquier
24
sistema Linux que use systemd, puede ejecutar el comando journalctl para verificar también los mensajes
de registro de denegación de AVC. Dentro de cada mensaje de registro hay un mensaje AVC que puede ver
para obtener información sobre esa denegación de AVC, como en el siguiente ejemplo: # journalctl | grep
AVC type=AVC msg=audit(1580397837.346:275): avc: denegado {getattr}for pid=1067 comm="httpd" path="/
var/myserver/services" dev="dm0" ino=655836 scontext =system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:var_t:s0 tclass=file permissive=0
655
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Como sabe que hay denegaciones de AVC, puede pasar todo el archivo /var/log/audit/audit.log a sealert
para revisar los problemas:
# sealert a /var/log/audit/audit.log SELinux impide que
httpd acceda a getattr en el archivo /var/myserver/services.
***** Plugin catchall (100. confianza) sugiere ************
Si cree que httpd debería tener acceso getattr en el archivo de servicios de forma predeterminada.
Entonces deberías reportar esto como un error.
Puede generar un módulo de política local para permitir este acceso.
Hacer
permita este acceso por ahora ejecutando: # ausearch c
'httpd' raw | audit2allow M mihttpd # semodule X 300 i mihttpd.pp
Información adicional:
Contexto de origen system_u:system_r:httpd_t:s0
Contexto objetivo unconfined_u:object_r:var_t:s0 /var/myserver/
Objetos de destino services [archivo]
...
Mensajes de auditoría sin
formato type=AVC msg=audit(1580397837.346:275): avc: denegado { getattr } for pid=1067
comm="httpd" path="/var/myserver/services" dev="dm0" ino=655836 scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:var_t:s0 tclass=file permissive=0 Hash: httpd,httpd_t,var_t,file,getattr
En este caso, si desea permitir el acceso del servicio httpd al contenido del directorio que se deniega,
puede ejecutar los comandos ausearch y semodule que se muestran en la salida. Esto crea y aplica una
nueva política de SELinux para permitir el acceso al contenido. Siempre que no haya otros problemas de
permisos, httpd debería poder acceder a ese contenido.
Solución de problemas de registro de SELinux
Obviamente, los archivos de registro son extremadamente importantes para diagnosticar y abordar las
infracciones de la política de SELinux. Los archivos de registro, o consultar directamente el diario systemd
(comando journalctl), son sus primeros pasos para solucionar problemas de SELinux. Por lo tanto, es
importante asegurarse de que su sistema Linux esté registrando mensajes en primer lugar.
Una forma rápida de determinar si se está registrando es verificar si se están ejecutando los
demonios correctos: auditd, rsyslogd y/o setroubleshootd. Utilice un comando adecuado, como systemctl
status auditd.service. Por supuesto, el comando que use depende de su distribución de Linux y su versión.
Consulte el Capítulo 15 para obtener más detalles. Si el daemon no se está ejecutando, inícielo para que
pueda comenzar el registro.
656
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
PRECAUCIÓN
A veces, las denegaciones de AVC no se registran debido a las reglas de la política de no auditoría. Aunque las reglas de dontaudit ayudan
a reducir los falsos positivos en los registros, pueden causar problemas al solucionar problemas. Para solucionar esto, deshabilite
temporalmente todas las reglas de política de dontaudit usando el comando semodule DB .
Resolución de problemas comunes de SELinux Cuando
comienza a trabajar con SELinux, es fácil pasar por alto lo obvio. Siempre que se niegue el
acceso, primero debe verificar los permisos DAC de Linux "tradicionales". Por ejemplo, use el
comando ls l y vuelva a verificar que el propietario de un
archivo;
egscritura
lectura, rupo; y
ylas asignaciones
son de
ejecución
correctas.
Con SELinux, varios elementos regulares pueden causar problemas:
■ Usar un directorio no estándar para un servicio ■ Usar un
puerto no estándar para un servicio ■ Mover archivos que
resultan en la pérdida de sus etiquetas de contexto de seguridad ■ Tener valores
booleanos configurados incorrectamente
Cada uno de estos problemas se puede resolver con bastante rapidez.
Uso de un directorio no estándar para un servicio Por
varias razones, puede decidir almacenar los archivos de un servicio en un directorio no estándar.
Cuando hace esto, SELinux necesita saber que se ha producido este comportamiento no estándar.
De lo contrario, deniega el acceso a las solicitudes legítimas de acceso al servicio.
Por ejemplo, decidió mantener sus archivos HTML en una ubicación diferente a la estándar /var/www/html. Pones los
archivos en /abc/www/html. Debe informar a SELinux que desea que el servicio http pueda acceder a los archivos
dentro de /abc/www/html. Los comandos para lograr esto son semanage y restorecon. En el siguiente fragmento de
código, los comandos se utilizan para agregar el tipo de contexto de seguridad adecuado en el directorio /abc/www/
html y todo lo que contiene:
24
# semanage fcontext a t httpd_sys_content_t "/abc/www/html(/.*)?"
Para establecer realmente el nuevo tipo de contexto de seguridad en los archivos dentro del directorio, debe usar el
comando restorecon R. Esto se logra en el siguiente código:
# restorecon R v /abc/www/html # ls Z /
abc/www/html
unconfined_u:object_r:httpd_sys_content_t:s0 abc
Ahora el demonio httpd tiene permiso para acceder a sus archivos HTML en su ubicación de directorio no
estándar.
657
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Uso de un puerto no estándar para un servicio Similar
al problema que se acaba de describir, puede decidir tener un servicio escuchando en un puerto no estándar. Cuando realiza este
cambio de puerto, el servicio a menudo no se inicia.
Por ejemplo, por motivos de seguridad, decide mover sshd del puerto 22 a un puerto no estándar, 47347.
SELinux no conoce este puerto y el servicio no se inicia. Para solucionar este problema, primero debe
encontrar el tipo de contexto de seguridad para sshd. Esto se logra usando el código que sigue emitiendo el
comando semanage port l y canalizando los resultados a grep para buscar ssh.
# puerto semanal l | grep ssh ssh_port_t tcp
22
En el ejemplo anterior, puede ver que el tipo de contexto necesario es ssh_port_t. Ahora, usando el comando
semanage nuevamente, agrega ese tipo al puerto 47347, como se muestra aquí:
# puerto semanal a t ssh_port_t p tcp 47347 # puerto semanal l |
grep ssh ssh_port_t tcp
47347, 22
En este punto, edite el archivo de configuración /etc/ssh/sshd
_ para agregar una línea de puerto
47347 al archivo. Luego reinicie el servicio sshd para que el servicio escuche en el puerto no estándar
47347.
Mover archivos y perder etiquetas de contexto de seguridad Usó
el comando cp para mover un archivo de /etc temporalmente al directorio /tmp.
Luego usó el comando mv para volver a colocarlo. Ahora el archivo tiene el contexto de seguridad del
directorio temporal en lugar de su contexto de seguridad original, y su sistema recibe mensajes de denegación
de AVC cuando el servicio que usa ese archivo intenta iniciarse.
Hay una solución fácil, gracias al comando restorecon R. Simplemente escriba el archivo de
restauración , y el archivo tiene su contexto de seguridad permanente restaurado.
Valores booleanos configurados
incorrectamente Otro problema común es simplemente establecer un valor booleano incorrectamente. Esto puede darte varias
denegaciones de AVC.
'
Por ejemplo, si su sistema recibe Los scripts ya no pueden conectarse a la red y
denegaciones de AVC en sus registros, debe verificar los valores booleanos de httpd. Utilice el comando
getsebool a y conéctelo a grep para buscar cualquier valor booleano que afecte a httpd. El ejemplo aquí
muestra el uso de estos comandos:
# getseboola | grephttp
...
httpd_can_network_connect > desactivado
...
El comando getsebool muestra que el booleano httpd_can_network_connect está desactivado.
Para cambiar este booleano, use el siguiente comando: setsebool P
658
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
httpd_can_network_connect activado. Observe que la opción P se usó para hacer que la configuración sea permanente.
Ahora sus scripts deberían poder conectarse a la red.
Poniendolo todo junto
Obviamente, SELinux es una herramienta bastante complicada y rica. Ahora tiene una base buena y sólida sobre los
conceptos básicos de SELinux. Aquí hay algunas recomendaciones a medida que comienza a implementar SELinux en
su sistema.
El modo SELinux específico predeterminado se puede utilizar para proteger la mayoría de los servicios de red básicos
(httpd, vsftpd, Samba, etc.) sin necesidad de asignar roles de usuario especiales o bloquear su sistema. En este caso,
lo principal que debe hacer es colocar los archivos en ubicaciones estándar (o ejecutar comandos para asignar los
contextos de archivo adecuados a ubicaciones no estándar), asegurarse de que los valores booleanos estén activados
para las funciones menos seguras que desea encendido de todos modos, y observe las denegaciones de AVC en busca
de problemas.
■ Comience con el modo operativo permisivo. Esto permite que tengan éxito las solicitudes que SELinux considera
inseguras.
■ Ejecute su sistema actual durante una cantidad significativa de tiempo en modo permisivo.
Revise los registros y vea qué problemas pueden ocurrir con las configuraciones predeterminadas de
SELinux. A continuación, puede cambiar los valores booleanos o los contextos de archivo para que se
puedan permitir las funciones denegadas de forma incorrecta. Una vez resueltos los problemas, active el modo de aplicación.
■ En general, implemente los cambios de configuración de SELinux uno a la vez en un entorno de prueba o
usando el modo permisivo. Vea qué tipo de efecto tiene cada cambio de configuración antes de pasar al
siguiente. A continuación, puede utilizar el comando audit2al low para permitir que las acciones detenidas
por las denegaciones de AVC se permitan de forma selectiva en la política de un servicio.
Obtención de más información sobre SELinux
Varias fuentes adicionales de información pueden ayudarlo con SELinux en su sistema Linux:
24
manual de las diversas
s pPáginas
áginas
dde
e
mmanual
anual
qEue
jecute
puede
el crevisar
omando
para
man
las
k
ustilidades
elinux para
de SbELinux
uscar todas
actualmente
las páginas de
instaladas en su sistema. Si está depurando problemas de SELinux para un servicio conocido (como httpd,
vsftpd, Samba, etc.), probablemente haya una página de manual asociada con cómo solucionar problemas de
SELinux con ese servicio.
Manuales de Red Hat Enterprise Linux Ubicado en http://docs.redhat.com, este sitio contiene un manual completo
sobre SELinux.
La Guía de SELinux del Proyecto Fedora Ubicada en http://docs.fedorapro ject.org, este sitio tiene una Guía de
Linux con Seguridad Mejorada. Sin embargo, la guía no se actualiza para todas las versiones de Fedora, por
lo que es posible que deba buscar en versiones anteriores para encontrarla. Además, la Guía de SELinux no
se encuentra dentro del Manual de seguridad, pero el Manual de seguridad también es un buen manual para
revisar.
Wiki del proyecto SELinux Esta es la página oficial del proyecto SELinux. Varios recursos están disponibles en este
sitio, que se encuentra en http://selinuxproject.org.
659
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Resumen
SELinux proporciona una mejora de seguridad para Linux y está instalado de forma predeterminada en muchas
distribuciones de Linux. En este capítulo, aprendió los beneficios de SELinux, cómo funciona, cómo configurarlo,
cómo solucionar varios problemas con SELinux y cómo obtener más información sobre esta importante mejora de
seguridad.
A primera vista, SELinux parece bastante complicado. Sin embargo, después de desglosarlo en sus diversos
componentes (modos operativos, contextos de seguridad, tipos de políticas y paquetes de políticas), puede ver
cómo funcionan juntas las distintas piezas. Cada componente juega un papel importante para hacer cumplir y
probar los requisitos de seguridad elegidos para su organización.
Aprendió sobre los diversos pasos disponibles para configurar SELinux. Aunque SELinux viene preconfigurado,
es posible que deba realizar algunas modificaciones para satisfacer las necesidades de seguridad de su s
organización. Cada componente tiene sus propios pasos de configuración y ajustes para elegir.
Aunque no se cubrió la creación de reglas de políticas, aprendió a modificar las políticas proporcionadas a través
de valores booleanos.
'
SELinux proporciona otra herramienta para monitorear su sistema Linux SELinux
seguridad Porque
registra todas las denegaciones de acceso, puede ayudarlo a determinar si se ha intentado o se ha intentado un
ataque. Incluso los planes mejor trazados pueden salir mal. Por lo tanto, en este capítulo, aprendió cómo
solucionar problemas comunes de configuración de SELinux.
En el próximo capítulo, aprenderá cómo proteger su sistema Linux en una red. Aprenderá a controlar el
acceso, administrar cortafuegos y proteger el acceso remoto.
Ejercicios
Utilice estos ejercicios para poner a prueba su conocimiento sobre el uso de SELinux. Estas tareas asumen que
está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionan en
otros sistemas Linux). Si está atascado, las soluciones a las tareas se muestran en el Apéndice B (aunque en
Linux, a menudo hay varias formas de completar una tarea).
1. Sin hacer cambios en el archivo de configuración principal de SELinux, escriba el comando para
configurar su sistema en el modo de operación permisivo para SELinux.
2. Sin hacer cambios en el archivo de configuración principal de SELinux, escriba el comando para
configurar su sistema en el modo de aplicación para SELinux.
3. ¿Qué tipos de políticas SELinux actuales y permanentes están establecidas en su sistema y cómo las
encontró?
4. Liste el contexto de seguridad para el archivo /etc/hosts e identifique sus diferentes atributos de
contexto de seguridad.
5. Cree un archivo llamado test.html en su directorio de inicio y asigne su tipo a
httpd_sys_content_t. (Esto es algo que puede hacer para que el contenido esté disponible para ser
compartido por su servidor web fuera del directorio común /var/www/html).
660
Machine Translated by Google
Capítulo 24: Mejora de la seguridad de Linux con SELinux
6. Enumere el contexto de seguridad para el proceso crond en ejecución e identifique sus atributos de
contexto de seguridad.
7. Cree un archivo llamado /etc/test.txt, cambie su contexto de archivo a user_tmp_t,
restáurelo a su contenido adecuado (el contexto predeterminado para el directorio /
etc) y elimine el archivo. Use el comando ls Z /etc/test.txt para verificar el archivo en
cada punto del proceso.
8. Tiene un servidor tftp en su red privada y desea permitir escrituras anónimas y acceso al directorio
de inicio del servicio tftp (mientras SELinux ebooleanos
stá en modo obligatorio).
permiten Determine
escrituras qué vyalores
anónimas acceso al
directorio de inicio del servicio tftp y active esos valores booleanos.
9. ¿Qué comando enumeraría todos los módulos de políticas de SELinux en su sistema junto con
su número de versión?
10. Dígale a SELinux que permita el acceso al servicio sshd a través del puerto TCP 54903.
24
661
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Asegurar Linux en una red
EN ESTE CAPÍTULO
Administrar servicios de red
Controlar el acceso a los servicios de red
Implementación de cortafuegos
conjunto de desafíos cuando se trata de seguridad. La mejor manera de asegurar su sistema Linux es
Configurar
su sistema
mantenerlo fuera dLe
inux
en
todas una
las red, Sein
redes. specialmente una
embargo, rara red
es upna
vez ública,
crea
opción un nuevo
factible.
Se han llenado libros enteros con información sobre cómo proteger un sistema informático en una red.
Muchas organizaciones contratan administradores de seguridad informática a tiempo completo para vigilar sus
sistemas Linux conectados a la red. Por lo tanto, considere este capítulo como una breve introducción a la seguridad de
Linux en una red.
Auditoría de servicios de red
La mayoría de los sistemas Linux utilizados por grandes empresas están configurados como servidores que, como su nombre
lo indica, ofrecen servicios a clientes remotos a través de una red. Un servicio de red es cualquier tarea que realiza la
computadora que requiere que envíe y reciba información a través de la red utilizando un conjunto de reglas predefinidas. El
enrutamiento de correo electrónico es un servicio de red, al igual que el servicio de páginas web.
Un servidor Linux tiene el potencial de proporcionar miles de servicios. Muchos de ellos se enumeran
en el archivo /etc/services. Considere las siguientes secciones del archivo /etc/services:
$ cat /etc/services # /etc/
services: # $Id: services,v
1.55 2013/04/14 ovasik Exp $ # # Servicios de red, estilo de
Internet # Versión de servicios de IANA: última actualización
20130410 #
663
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
# Tenga en cuenta que actualmente la política de la IANA es asignar...
# Cada línea describe un servicio y tiene la forma: # # nombreservicio puerto/protocolo
[alias ...]
[# comentario]
...
eco 7/tcp 7/
udp 9/
descarte de eco tcp 9/ fregadero nulo
desechar udp 11/ fregadero nulo
systat tcp 11/ usuarios
día día tcp 13/
qotd qotd udp 17/
tcp 17/ cita cita
udp
...
chargen 19/tcp 19/ fuente de ttytst
chargen udp 20/ fuente de ttytst
ftpdata ftp tcp 20/
data # 21 udp
está registrado en ftp, pero también lo utiliza fsp ftp
21/tcp
...
http 80/tcp 80/ www wwwhttp # WorldWideWebHTTP
http upd www wwwhttp # Transferencia de hipertexto
Protocolo
http 80/sctp # Transferencia de hipertexto
Protocolo
Kerberos 88/tcp 88/ kerberos5 krb5 # Kerberos v5 kerberos5 krb5
Kerberos udp # Kerberos v5
...
blp5 combardacdw 48556/tcp
48129/udp
com # Localizador de Bloomberg #
bardacdw 48556/udp 48619/tcp iqobject combardacdw # combardac
iqobject 48619/udp dw # iqobject # iqobject
Después de las líneas de comentarios, observe tres columnas de información. La columna de la izquierda
contiene el nombre de cada servicio. La columna del medio defi ne el número de puerto y el tipo de
protocolo utilizado para ese servicio. La columna de la derecha contiene un alias opcional o una lista de
alias para el servicio.
Muchas distribuciones de Linux vienen con servicios de red en ejecución innecesarios. Un servicio innecesario
expone su sistema Linux a ataques maliciosos. Por ejemplo, si su servidor Linux es un servidor de impresión,
entonces solo debería ofrecer servicios de impresión. No debería ofrecer también servicios web de Apache.
Esto expondría innecesariamente su servidor de impresión a cualquier ataque malicioso que aproveche las
vulnerabilidades del servicio web.
664
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
Originalmente, restringir los servicios en los sistemas Linux significaba configurar servidores Linux físicos
individuales con solo unos pocos servicios ejecutándose en cada uno. Posteriormente, ejecutar varias máquinas
virtuales Linux en un host físico le permite bloquear pequeños conjuntos de servicios en máquinas virtuales.
Más recientemente, las aplicaciones en contenedores pueden permitir que se ejecuten muchos más servicios
separados y seguros en cada host físico.
Evaluación del acceso a los servicios de red con nmap Una herramienta
maravillosa para ayudarlo a revisar sus servicios de red desde el punto de vista de la red es el escáner de
seguridad nmap. La utilidad nmap está disponible en la mayoría de los repositorios de distribución de Linux y
tiene una página web llena de información en http://nmap.org.
Para instalar nmap en una distribución de Fedora o RHEL, use el comando yum o dnf (usando privilegios de
raíz), como se muestra en el siguiente ejemplo.
# yum install nmap y Actualización
de repositorios de gestión de suscripciones.
Última comprobación de caducidad de metadatos: hace 0:03:41 el sábado 12 de octubre de 2019
23:24:07 EDT.
Dependencias resueltas.
================================================== ===================
Instalación: nmap
5,8 M x86_64 2:7.704.el8 rhel8parax86_64appstreamrpm
Resumen de Transacciones
================================================== ===================
Instalar 1 paquete
Tamaño total de descarga: 5,8 M Tamaño
instalado: 24 M
...
Instalado:
nmap2:7.704.el8.x86_64
¡Completo!
Para instalar la utilidad nmap en una distribución de Ubuntu, escriba sudo aptget install nmap en la línea
de comando.
El nombre completo de la utilidad nmap es Network Mapper. Tiene una variedad de usos para auditorías de
seguridad y exploración de redes. El uso de nmap para realizar varios escaneos de puertos le permite ver qué
servicios se están ejecutando en todos los servidores de su red local y si están anunciando su disponibilidad.
25
665
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
NOTA
¿Qué es un puerto? Los puertos, o más correctamente puertos de red, son valores numéricos utilizados por los protocolos de red TCP y UDP como puntos de
acceso a los servicios de un sistema. Los números de puerto estándar se asignan a los servicios para que un servicio sepa escuchar en un número de puerto
en particular y un cliente sepa solicitar el servicio en ese número de puerto.
Por ejemplo, el puerto 80 es el puerto de red estándar para el tráfico sin cifrar (HTTP) al servicio web de Apache. Entonces, si solicita www.example.com desde su
navegador web, el navegador asume que quiere usar el puerto TCP 80 en el servidor que ofrece ese contenido web. Piense en un puerto de red como una puerta a su
servidor Linux. Cada puerta está numerada. Y detrás de cada puerta hay un servicio particular esperando para ayudar a quien llame a esa puerta.
'
Para auditar su servidor, En los puertos, la utilidad nmap ofrece varios tipos de exploración útiles. el nmap
el sitio tiene un manual completo sobre todas las técnicas de escaneo de puertos que puede usar en
http://nmap.org/book/manportscanningtechniques.html. Aquí hay dos escaneos de puertos básicos para que
pueda comenzar con la auditoría de su servicio:
Exploración de puertos de conexión TCP Para esta exploración, nmap intenta conectarse a los puertos
utilizando el Protocolo de control de transmisión (TCP) en el servidor. Si un puerto está escuchando, el
intento de conexión tiene éxito.
TCP es un protocolo de red utilizado en el conjunto de protocolos de red TCP/IP. TCP es un protocolo
orientado a la conexión. Su objetivo principal es negociar e iniciar una conexión mediante lo que se
denomina un "apretón de manos de tres vías". TCP envía un paquete de sincronización (SYN) a un
servidor remoto especificando un número de puerto específico en el paquete. El servidor remoto recibe el
SYN y responde con un paquete de reconocimiento (SYNACK) a la computadora de origen. Luego, el
servidor original reconoce (ACK) la respuesta y se establece oficialmente una conexión TCP. Este apretón
de manos de tres vías a menudo se llama SYNSYNACK o SYN, SYNACK, ACK.
Si selecciona un escaneo de puerto TCP Connect, la utilidad nmap utiliza este apretón de manos de
tres vías para realizar una pequeña actividad de investigación en un servidor remoto. Cualquier servicio
que use el protocolo TCP responderá al escaneo.
Escaneo de puertos UDP Para este escaneo, nmap envía un paquete UDP a cada puerto del sistema que
se está escaneando. UDP es otro protocolo popular en el conjunto de protocolos de red TCP/IP. Sin
embargo, a diferencia de TCP, UDP es un protocolo sin conexión. Si el puerto está escuchando y tiene
un servicio que usa el protocolo UDP, responde al escaneo.
SUGERENCIA Tenga en cuenta que las utilidades de software libre y de código abierto (FOSS) también están disponibles para aquellos con intenciones maliciosas.
Mientras realiza estos análisis de nmap, tenga en cuenta que los resultados del análisis remoto que ve para su servidor Linux son los mismos resultados del análisis
que verán los demás. Esto lo ayudará a evaluar la cantidad de información que se proporciona a los escaneos de puertos
s '
dce
su sistema. dTe
onfiguración enga en cuenta
seguridad que debe
en términos
de cómo
usar herramientas como nmap solo en sus propios sistemas, porque escanear puertos en las computadoras de otras personas puede dar la impresión de que está
tratando de entrar.
666
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
Cuando ejecuta la utilidad nmap, proporciona un pequeño informe útil con información sobre el sistema
que está escaneando y los puertos que ve. Los puertos reciben un estado de "estado". nmap informa seis
posibles estados de puerto:
abierto: Este es el estado más peligroso que un escaneo nmap puede reportar para un puerto. Un
puerto abierto indica que un servidor tiene un servicio que maneja solicitudes en este puerto.
Piensa en ello como un letrero en la puerta, “¡Entra! Estamos aquí para ayudarte." Por supuesto,
si estás ofreciendo un servicio público, quieres que el puerto esté abierto.
cerrado: Se puede acceder a un puerto cerrado, pero no hay servicio esperando al otro lado de esta
puerta. Sin embargo, el estado del escaneo todavía indica que hay un servidor Linux en esta
dirección IP en particular.
filtrado: este es el mejor estado para proteger un puerto al que no desea que nadie acceda. No
se puede determinar si un servidor Linux está realmente en la dirección IP escaneada. Es
posible que un servicio pueda estar escuchando en un puerto en particular, pero el cortafuegos
está bloqueando el acceso a ese puerto, impidiendo efectivamente cualquier acceso al servicio a
través de la interfaz de red en particular.
sin filtrar: el escaneo nmap ve el puerto pero no puede determinar si el puerto está abierto
o cerrado.
abierto|filtrado: el escaneo nmap ve el puerto pero no puede determinar si el puerto está
abierto o filtrado.
cerrado|filtrado: el escaneo nmap ve el puerto pero no puede determinar si el puerto está
cerrado o filtrado.
Para ayudarlo a comprender mejor cómo usar la utilidad nmap, revise el siguiente ejemplo.
Con el fin de crear una lista de servicios de red, los escaneos nmap de ejemplo se realizan en un sistema
Fedora. El primer escaneo es un escaneo de Conexión TCP desde la línea de comando usando la dirección
de loopback 127.0.0.1.
# nmap sT 127.0.0.1 Iniciando
Nmap 7.70 ( https://nmap.org ) a las 2020110 11:47 EDT Informe de escaneo de Nmap para localhost
(127.0.0.1)
El host está activo (latencia de 0,016 s).
No se muestra: 998 puertos cerrados
PUERTO SERVICIO ESTATAL
25/tcp abierto smtp 631/tcp
abierto ipp
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 1.34 segundos
25
667
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
El escaneo TCP Connect nmap informa que dos puertos TCP están abiertos y tienen servicios escuchando en el host local
(127.0.0.1) para solicitudes a estos puertos:
■ El Protocolo simple de transferencia de correo (SMTP) está escuchando en el puerto TCP
25. ■ El Protocolo de impresión de Internet (IPP) está escuchando en el puerto TCP 631.
El siguiente escaneo de nmap es un escaneo UDP en la dirección de loopback del sistema Fedora.
# nmapsU 127.0.0.1
A partir de Nmap 7.70 ( https://nmap.org ) a las 2020110 11:48 EDT Informe de escaneo de Nmap
para localhost (127.0.0.1)
El host está activo (latencia de 0,00048 s).
No se muestra: 997 puertos cerrados
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 2.24 segundos
El escaneo UDP nmap informa que dos puertos UDP están abiertos y tienen servicios escuchando en esos puertos:
■ El cliente de protocolo de control de host dinámico (dhcpc) está escuchando en el puerto 68. ■ El
protocolo de impresión de Internet (ipp) está escuchando en el puerto 631.
Tenga en cuenta que el IPP del puerto 631 aparece tanto en el escaneo TCP Connect de nmap como en el escaneo UDP
porque el servicio IPP puede comunicarse a través del protocolo TCP y UDP y, por lo tanto, aparece en ambos escaneos.
Con estos dos escaneos nmap simples, TCP Connect y UDP en su dirección de bucle invertido, puede crear una lista de los
servicios de red que ofrece su servidor Linux. Tenga en cuenta que los números de puerto están asociados con un protocolo
particular (TCP o UDP) y una interfaz de red particular. Por ejemplo, si tiene una tarjeta de interfaz de red (NIC) en una
computadora que está frente a Internet y otra que está frente a una red privada, es posible que desee ofrecer un servicio
privado (como el servicio CUPS para imprimir) a la NIC en su computadora privada. red. Pero es posible que desee filtrar ese
puerto (631) en la NIC que da a Internet.
Uso de nmap para auditar sus anuncios de servicios de red Probablemente quiera que mucha gente visite su
sitio web (servicio httpd). Probablemente no desee que todos los usuarios de Internet puedan acceder a sus recursos
compartidos de archivos SMB (servicio smb). Para asegurarse de que está separando correctamente el acceso a esos dos
tipos de servicios, desea poder verificar lo que un escáner malicioso puede ver de los servicios disponibles en sus interfaces
de red públicas.
668
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
La idea aquí es comparar cómo se ve su servidor Linux desde adentro versus cómo se ve desde afuera.
Si determina que se puede acceder a algunos servicios de red que pretendía mantener en privado,
puede tomar medidas para bloquear el acceso a ellos desde interfaces externas.
CONSEJO
Es posible que sienta la tentación de omitir los escaneos desde el interior de la red interna de su organización. No. La actividad maliciosa a menudo
'
propios
ocurre por parte de una empresa. eumpleados
La o eps
tilidad nmap or alguien
de que ayquí.
gran ayuda a ha
Pp enetrado
obtener luas
ara dvefensas
na externas.
ista adecuada Nuevamente,
su servidor Leinux
de cómo l escanea
desde varias ubicaciones. Por ejemplo, una auditoría simple configuraría escaneos en estos lugares:'s se ven los puertos, es necesario realizar
■ En el propio servidor Linux
■ Desde otro servidor en la misma red de la organización ■ Desde
fuera de la red de la organización
En los siguientes ejemplos, se lleva a cabo parte de una auditoría simple. La utilidad nmap se ejecuta en
un sistema Fedora, designado como HostA. HostA es el servidor Linux cuyos servicios de red se van a
proteger. HostB es un servidor Linux que usa la distribución Linux Mint y está en la misma red que Host
A.
' '
SUGERENCIA Se debe tener en cuenta la configuración de seguridad en varios componentes de la red, como el servidor, al s cortafuegos y la empresa s enrutadores, ¿deberían todos
realizar análisis de auditoría.
Para este ejemplo de auditoría, se ejecuta un escaneo desde el HostA, utilizando no la dirección de
loopback sino la dirección IP real. Primero, la dirección IP para el HostA se determina mediante el
comando ip addr show. La dirección IP es 10.140.67.23.
# ip addr show
fconfig 1: lo:
<LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state DESCONOCIDO grupo
predeterminado qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00 :00
inet 127.0.0.1/8 host de alcance lo valid_lft para siempre lft_preferido para siempre
inet6 ::1/128 host de alcance valid_lft para siempre lft_preferido para siempre 2: ens3:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel
estado UP grupo predeterminado qlen 1000
link/ether 52:54:00:c4:27:4e brd ff:ff:ff:ff:ff:ff inet 10.140.67.23/24 brd
10.140.67.255 alcance dinámica global 25
669
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
noprefixroute ens3
valid_lft 3277sec prefered_lft 3277sec
inet6 fe80 :: 5036: 9ec3: 2ae8: 7623/64 enlace de alcance ruta sin prefijo
válido_lft para siempre preferido_lft para siempre
Ahora, utilizando la dirección IP del HostA, se emite un escaneo de nmap TCP Connect desde el
HostA. El escaneo nmap sale a la red para realizar el escaneo. Se informa que todos los puertos
tienen un estado cerrado.
# nmap sT 10.140.67.23 A partir
de Nmap 7.80 ( https://nmap.org ) a las 2020131 11:53 EDT
Informe de análisis de Nmap para rhel8 (10.140.67.23)
El host está activo (latencia de 0,010 s).
Los 1000 puertos escaneados en 10.140.67.23 están cerrados
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 1.48 segundos
El escaneo de nmap se mueve desde su origen en el HostA hasta su origen en el HostB. Ahora se
' '
intenta el escaneo TCP Connect en el HostAs puertos del HostB línea de comandos.
$ nmap sT 10.140.67.23 A partir
de Nmap 7.80 ( https://nmap.org ) a las 2020131 11:57 EDT
Nota: Parece que el host no funciona. Si está realmente activo,
pero está bloqueando nuestras sondas de ping, intente PN
Nmap hecho: 1 dirección IP (0 hosts arriba) escaneada en 0.11 segundos
Aquí, nmap da una pista útil. HostA parece estar inactivo, o simplemente podría estar bloqueando las
sondas. Entonces, se intenta otro escaneo nmap desde el HostB, usando el consejo de nmap de deshabilitar
'
el escaneos ping sondas a través de la opción PN.
$ nmap sT PN 10.140.67.23 A partir
de Nmap 7.80 ( https://nmap.org ) a las 2020131 11:58 EDT Informe de análisis de Nmap
para rhel8 (10.140.67.23)
El host está activo (latencia de 0,0015 s).
Se filtran los 1000 puertos escaneados en 10.140.67.23
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 5.54 segundos
Puede ver que HostA (10.140.67.23) está funcionando y todos sus puertos tienen un estado de
filtrado. Esto significa que hay un cortafuegos en el HostA. Estos escaneos del Host B le dan una
mejor idea de lo que un escáner malicioso puede ver al escanear su servidor Linux. En este
ejemplo, el escáner malicioso no vería mucho.
670
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
NOTA
Si está familiarizado con nmap, sabe que el escaneo TCP SYN es el escaneo predeterminado que usa nmap. El escaneo
TCP SYN hace un excelente trabajo al sondear un sistema remoto de manera sigilosa. Debido a que está probando su propio
sistema con fines de auditoría de seguridad, tiene sentido utilizar los escaneos de la utilidad nmap más "intensos". Si aún
desea utilizar el escaneo TCP SYN, el comando es nmap _
sS
ip
DIRECCIÓN .
Los servicios que se ejecutan actualmente en el HostA no son tan "jugosos". En el siguiente
ejemplo, se inicia otro servicio, sshd, en el HostA mediante el comando systemctl (consulte el
Capítulo 15,
más “Inicio y detención
interesante de servicios”). Esto debería darle a la utilidad nmap un objetivo
para buscar.
# systemctl start sshd.service # systemctl status
sshd.service •sshd.service Demonio del servidor
OpenSSH Cargado: cargado (/usr/lib/systemd/system/
sshd.service; habilitado;
valor preestablecido del proveedor: habilitado)
Activo: activo (en ejecución) desde Vie 2020130 15:08:29 EDT; hace 1 día 20h
Documentos: hombre: sshd (8)
hombre:sshd_config(5)
PID principal: 807 (sshd)
Tareas: 1 (límite: 12244)
Memoria: 10,9 M
CGroup: /system.slice/sshd.service └─ 807 /usr/sbin/
sshd D oCiphers=...
'
Además, porque Host Si el cortafuegos está bloqueando los escaneos nmap del HostB, sería inter
A está tratando de ver qué puede informar un escaneo nmap cuando el cortafuegos está caído. El
siguiente ejemplo muestra la desactivación del cortafuegos en el HostA para un sistema Fedora 21 o
RHEL 7 (para otros sistemas, probablemente necesite desactivar el servicio iptables):
# systemctl detener firewalld.servicio # systemctl
estado firewalld.servicio
'
Con un nuevo servicio en ejecución y HostA Si se reduce el firewall, los escaneos de nmap deberían encontrar
algo. A continuación, los escaneos nmap se ejecutan nuevamente desde el HostB. Esta vez, la utilidad
nmap muestra el servicio ssh ejecutándose en el puerto 22 abierto. Tenga en cuenta que con el cortafuegos
desactivado en el HostA, ambos análisis de nmap recopilan mucha más información. Esto realmente
'
demuestra la importancia de su servidor s cLortafuegos.
inux
# nmap sT 10.140.67.23 A partir de
Nmap 7.80 ( http://nmap.org ) a las 2020131 11:58 EDT El informe de análisis de Nmap para el
host 10.140.67.23 está activo (latencia de 0,016 s).
25
No se muestra: 999 puertos cerrados
671
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
SERVICIO DEL ESTADO DEL
PUERTO 22/tcp open ssh
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 0.40 segundos
# nmap sU 10.140.67.23 [sudo]
contraseña para johndoe: *************** Iniciando Nmap 5.21 ( http://
nmap.org ) a las 2020131 11:59 El informe de exploración EDT Nmap para el host 10.140.67.23
está activo (latencia de 0,00072 s).
No se muestra: 997 puertos cerrados
Para realizar una auditoría exhaustiva, asegúrese de incluir el escaneo UDP. Además, existen escaneos nmap
adicionales que pueden ser benéficos para su organización. Mire el sitio web de la utilidad nmap para obtener
sugerencias adicionales.
'
PRECAUCIÓN Si ha estado siguiendo y bajó su s firewall para realizar estos escaneos nmap , asegúrese de levantarlo
servidor nuevamente. Ingrese systemctl start firewalld.service .
Todavía necesita implementar controles para aquellos servicios que su servidor Linux debería ofrecer.
Una forma de lograr esto es a través de reglas de cortafuegos.
Las primeras versiones de Linux utilizan contenedores TCP para permitir o denegar el acceso a los servicios de
Linux. Hizo esto ofreciendo los archivos /etc/hosts.allow y /etc/hosts.deny en los que se podía indicar específicamente
qué servicios están disponibles y cuáles están bloqueados para nombres de sistemas externos particulares y/o
direcciones IP. A partir de Fedora 28 y RHEL 8, la función de contenedores TCP se eliminó de esas distribuciones.
Sin embargo, algunas características, como vsftpd, aún respetan esos archivos de configuración a través de otros
medios.
Trabajar con cortafuegos
Un cortafuegos en un edificio es un muro ignífugo que evita la propagación del fuego por todo el edificio. Un
cortafuegos informático bloquea la transmisión de datos maliciosos o no deseados hacia y desde un sistema
informático o una red. Por ejemplo, un cortafuegos puede bloquear escaneos maliciosos desde los puertos de su
servidor Linux. Un cortafuegos también puede cambiar los paquetes de red que fluyen a través de su sistema y redirigir
los paquetes de varias maneras.
672
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
En Linux, iptables es la función de cortafuegos a nivel de kernel. Se usa más comúnmente para permitir o
bloquear el acceso desde sistemas externos a los servicios que se ejecutan en su sistema local. iptables
funciona al permitirle crear reglas que se pueden aplicar a cada paquete que intente ingresar (ENTRADA), salir
(SALIDA) o atravesar su sistema (ADELANTE).
Aunque permitir o bloquear los paquetes que intentan ingresar a su sistema es la característica principal de
iptables, también puede crear reglas para iptables que le permitan hacer lo siguiente:
■ Bloquee los paquetes que salen de su sistema de manera efectiva para evitar que un proceso en su
sistema llegue a un host remoto, rango de direcciones o servicios seleccionados.
■ Reenviar paquetes de una interfaz de red en su sistema a otra, de manera efectiva
permitiendo que su computadora actúe como un enrutador entre dos redes.
■ Reenvío de puerto un paquete destinado a un puerto seleccionado para ser redirigido a otro puerto
en su sistema local, o a un sistema remoto, para que otras ubicaciones puedan manejar la solicitud del
paquete. ■ Cambiar la información en el encabezado de un paquete (llamado manipulación) para
redirigir el paquete o marcarlo de alguna manera para que se procese más. ■ Permita que varias
computadoras en una red privada (como computadoras, televisores u otros dispositivos en su red
doméstica) se comuniquen con Internet a través de una sola dirección IP pública. (Esto se conoce como
enmascaramiento de IP).
En las siguientes secciones, describo muchas de estas funciones, pero me enfoco principalmente en las reglas
para bloquear o permitir el acceso a los servicios que se ejecutan en su sistema Linux.
Comprensión de los cortafuegos
Aunque puede pensar en un cortafuegos como una barrera completa, un cortafuegos de Linux es realmente solo
un filtro que verifica cada paquete de red o solicitud de aplicación que entra o sale de un sistema informático o red.
NOTA
¿Qué es un paquete de red? Un paquete de red son datos que se han dividido en fragmentos transmisibles. A los
fragmentos, o paquetes, se les agregan datos adicionales a medida que atraviesan el modelo OSI. Euna
s como pdoner
carta entro de
un sobre en cada etapa a medida que avanza por la pila de protocolos. Uno de los propósitos de estos datos adicionales
es garantizar la llegada
medida
segura
que
e intacta
atraviesa
del epl
aquete
modelo
a O
su
SI
deestino.
n su destino
Los datos
(como
adicionales
quitar el sobre
e eliminan
exterior
del
y peaquete
ntregar
ala
carta
a la capa superior).
Los cortafuegos se pueden colocar en diferentes categorías, según su función. Cada categoría tiene un lugar
importante en la protección de su servidor y red.
Un cortafuegos se basa en la red o en el host. Un cortafuegos basado en la red es aquel que protege 25
toda la red o subred. Por ejemplo, se usaría un cortafuegos de red en su lugar de trabajo, donde la
red debería estar protegida por un enrutador de detección.
'
s cortafuegos.
673
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Un cortafuegos basado en host es aquel que se ejecuta y protege un host o servidor individual. Lo más
probable es que tenga un cortafuegos en su PC en casa. Este es un cortafuegos basado en host.
Un cortafuegos es un cortafuegos de hardware o de software. Los cortafuegos se pueden ubicar en
'
es
dispositivos de red, como enrutadores. Sus fi ltros se configuran en el software del enrutador. Efirme
n su
hogar, su proveedor de servicios de Internet (ISP) puede proporcionarle un enrutador para permitirle
acceder a Internet. El enrutador contiene fi rmware de cortafuegos y se considera un cortafuegos de
hardware.
Los cortafuegos se pueden ubicar en un sistema informático como una aplicación. La aplicación
permite establecer reglas de filtrado que filtran el tráfico entrante. Este es un ejemplo de un cortafuegos
de software. Un cortafuegos de software también se denomina cortafuegos basado en reglas.
Un cortafuegos es un filtro de capa de red o un filtro de capa de aplicación. Un cortafuegos que examina
paquetes de red individuales también se denomina filtro de paquetes. Un firewall de capa de red
permite que solo ciertos paquetes entren y salgan del sistema. Opera en las capas inferiores del
modelo de referencia OSI.
Un cortafuegos de capa de aplicación filtra en las capas superiores del modelo de referencia OSI.
Este firewall permite que solo ciertas aplicaciones accedan hacia y desde el sistema.
Puede ver cómo se superponen estas categorías de cortafuegos. La mejor configuración de cortafuegos es una
combinación de todas las categorías. Al igual que con muchas prácticas de seguridad, cuantas más capas
tenga, más difícil será que penetre la actividad maliciosa.
Implementación de cortafuegos En
un sistema Linux, el cortafuegos es un cortafuegos de software de capa de red basado en host administrado
por la utilidad iptables y componentes relacionados a nivel de kernel. Con iptables, puede crear una serie de
reglas para cada paquete de red que llega a través de su servidor Linux. Puede ajustar las reglas para permitir el
tráfico de red desde una ubicación pero no desde otra. Estas reglas esencialmente conforman una lista de control
de acceso a la red para su servidor Linux.
Fedora, RHEL y otras distribuciones de Linux han agregado el servicio firewalld para brindar una forma más
dinámica de administrar las reglas del firewall que la que se ofrecía anteriormente. Para las versiones
recientes de RHEL y Fedora, el backend del firewall de iptables se reemplazó con nftables.
La ventana de configuración del cortafuegos (comando firewallconfig) proporciona una forma fácil de abrir
puertos en su cortafuegos y enmascarar (enrutar direcciones privadas a una red pública) o reenviar puertos. El
servicio firewalld puede reaccionar a los cambios en las condiciones, lo que el servicio iptables estático no
puede hacer tan bien por sí solo. Al habilitar el acceso a un servicio, firewalld también puede hacer cosas como
cargar los módulos necesarios para permitir el acceso a un servicio.
SUGERENCIA La utilidad iptables administra el cortafuegos de Linux, llamado netfilter. Por lo tanto, a menudo verá el
cortafuegos de Linux denominado netfilter/iptables. La sintaxis de iptables aún es compatible, pero en las versiones más
recientes de RHEL y Fedora, nftables en realidad proporciona el backend para iptables.
674
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
Comenzando con fi
rewalld Es posible que el servicio firewalld ya esté instalado en su sistema Linux. Para verificar esto,
escriba lo siguiente:
# systemctl status firewalld • firewalld.service
firewalld demonio de firewall dinámico
Cargado: cargado (/usr/lib/systemd/system/firewalld.service; ena> Activo: activo (en ejecución) desde
el sábado 20191019 11:43:13 EDT; 5m>
Documentos: man:firewalld(1)
PID principal: 776 (cortafuegos)
Tareas: 2 (límite: 2294)
Memoria: 39,6 M
CGroup: /system.slice/firewalld.service └─ 776 /usr/bin/python3 /
usr/sbin/firewalld nofork >
Si no es así, aún puede instalar el servicio y la interfaz gráfica de usuario asociada y luego iniciar el servicio
firewalld de la siguiente manera:
# yum install firewalld firewallconfig # systemctl start
firewalld.service # systemctl enable firewalld.service
Para administrar el servicio de firewalld, puede iniciar la ventana Configuración de Firewall. Haga esto
ingresando lo siguiente:
# configuración del cortafuegos &
La Figura 25.1 muestra un ejemplo de la ventana de Configuración de Firewall.
Con firewalld, puede seleccionar entre un conjunto de zonas de firewall, según los servicios que desee compartir
y el nivel de protección que desee para su sistema. El conjunto predeterminado de reglas de estación de trabajo
Fedora seleccionado en este ejemplo es apropiado para una estación de trabajo Linux que opera en una red
doméstica. Por ejemplo, permite lo siguiente:
Cliente DHCPv6: Para habilitar la asignación automática de direcciones en redes IPv6.
DNS de multidifusión (mDNS): para permitir interfaces de sistema de nombres de dominio en interfaces
de red pequeñas, sin necesidad de un servidor DNS normal.
Cliente y servidor de impresión en red (IPP): para permitir el uso compartido de impresoras en su
sistema y red.
Cliente Samba: para permitir el uso compartido de archivos con sistemas Windows y otros sistemas en su
red local.
SSH: para permitir que otros intenten iniciar sesión en su sistema desde la red.
Cockpit: para permitir el acceso a la administración basada en web de Cockpit desde la red.
Cockpit está instalado de forma predeterminada en RHEL 8, pero no está instalado de forma predeterminada en
'
25
Fedora 30 Workstation. Entonces, Cockpit gAparecerá
anó la instalación del paquete
en la ventana de cabina. del cortafuegos hasta que
de configuración
675
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
FIGURA 25.1
Ventana de configuración del cortafuegos
Si conecta su computadora a redes en las que tiene diferentes niveles de confianza (como una red inalámbrica en
un aeropuerto), puede ajustar las reglas de su cortafuegos seleccionando una zona diferente. Por ejemplo, para
cambiar a la zona pública desde la ventana de configuración del cortafuegos, haga lo siguiente:
1. En la columna Enlaces activos, seleccione su conexión activa (en este ejemplo, Conexión cableada 1).
2. Seleccione una nueva zona (por ejemplo, pública).
3. Seleccione Cambiar zona.
La zona pública, si bien aún permite conexiones IPv6, inicio de sesión remoto (SSH) y servicio mDNS, no permite
el acceso a servicios de impresión, uso compartido de archivos de Windows (Samba) y Cockpit potencialmente
más vulnerables.
Además de cambiar de zona, otra tarea común que quizás desee realizar es simplemente abrir algunos puertos de
firewall para permitir el acceso a los servicios seleccionados. Desde la ventana de configuración del firewall, con la
zona de la estación de trabajo de Fedora configurada como la zona actual, simplemente haga clic en cada servicio
que desee abrir. El puerto que permite el acceso a cada servicio se abre inmediatamente (al seleccionar la
configuración Runtime) y se abre de forma permanente (al seleccionar la configuración Permanente).
676
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
Una buena característica de la ventana de Configuración de Firewall es que cuando elige permitir el acceso
a un servicio, puede hacer algo más que simplemente abrir un puerto. Por ejemplo, habilitar el servicio FTP también
hace que se carguen módulos de seguimiento de conexión que permiten acceder a puertos no estándar a través
del cortafuegos cuando sea necesario.
Cambiar las reglas del cortafuegos con Cockpit
'
Cockpit ofrece otra forma intuitiva de trabajar con su sistema. Modifique su s cortafuegos. Para ver y
cortafuegos con Cockpit, haga lo siguiente:
1. Abra su navegador web en la interfaz de Cockpit (https://yourhost:9090) e inicie sesión con privilegios
de raíz.
2. Seleccione Networking Firewall para ver la pantalla Firewall, como se muestra en la Figura 25.2:
FIGURA 25.2
Configuración del cortafuegos
3. Seleccione Agregar servicios. Aparece la ventana emergente Agregar servicio.
4. Haga clic en la casilla de verificación junto al servicio que desea habilitar en la zona actual y seleccione
Agregar servicios. 25
El acceso al puerto seleccionado está habilitado. Suponiendo que tiene un servicio ejecutándose en ese puerto,
se permitirá que alguien solicite el servicio (como el acceso a su servidor web en los puertos 80 y 443).
677
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Como se mencionó anteriormente, subyacente a los servicios Cockpit y firewalld se encuentra la función iptables. Si
tiene un sistema Linux sin los servicios Cockpit o Firewalld (o con Firewalld deshabilitado), aún puede usar el servicio
iptables. Las siguientes secciones describen cómo puede configurar manualmente las reglas del cortafuegos de iptables
y utilizar el servicio de iptables directamente, sin el servicio de cortafuegos.
Entendiendo la utilidad iptables
Antes de comenzar a cambiar las reglas del firewall a través de la utilidad iptables, debe comprender los conceptos
básicos de netfilter/iptables, que incluyen lo siguiente:
■ Mesas
■ Cadenas
■ Políticas
■ Reglas
Comprender estos conceptos básicos lo ayudará a configurar y administrar correctamente el cortafuegos de
su servidor Linux.
netfi lter/iptables tables El
cortafuegos de iptables tiene la capacidad de hacer más que solo filtrar paquetes de bajo nivel. Define qué tipo de
funcionalidad de cortafuegos se está llevando a cabo. Hay cuatro tablas en la utilidad iptables, con una tabla
adicional agregada por SELinux. Las tablas ofrecen las siguientes funcionalidades:
filtro: La tabla de filtro es la función de filtrado de paquetes del cortafuegos. En esta tabla, las decisiones de
control de acceso se toman para los paquetes que viajan hacia, desde y a través de su sistema Linux.
nat: la tabla nat se utiliza para la traducción de direcciones de red (NAT). Las reglas de la tabla NAT permiten
usted redirige a donde va un paquete.
mangle: Como podría sospechar, los paquetes son manipulados (modificados) de acuerdo con las reglas de la
tabla mangle. El uso directo de la tabla mangle es menos común y generalmente se hace para cambiar la
forma en que se administra un paquete.
raw: la tabla raw se usa para eximir ciertos paquetes de red de algo llamado "seguimiento de conexión". Esta
característica es importante cuando utiliza la traducción y virtualización de direcciones de red en su servidor
Linux.
seguridad: esta tabla está disponible solo en las distribuciones de Linux que tienen SELinux.
(Consulte el Capítulo
24, "Mejora de la seguridad de Linux con SELinux".) Aunque normalmente no se usa
directamente, la tabla de seguridad permite que SELinux permita o bloquee un paquete según las políticas
de SELinux, agregando otra capa de filtrado además de las reglas estándar de filtrado de paquetes. .
De todas las tablas enumeradas, tres se centran en la traducción de direcciones de red. Por lo tanto, la tabla de filtros
es la tabla principal en la que se centra este capítulo para el filtrado básico de paquetes del cortafuegos.
678
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
Cadenas netfilter/iptables
El cortafuegos netfilter/iptables clasifica los paquetes de red en categorías, llamadas cadenas.
Hay cinco cadenas (categorías) a las que se puede designar un paquete de red:
ENTRADA: paquetes de red que ingresan al servidor Linux
ADELANTE: paquetes de red que ingresan al servidor Linux que deben enrutarse
a través de otra interfaz de red en el servidor
SALIDA: paquetes de red que salen del servidor Linux
PREROUTING: Utilizado por NAT para modificar paquetes de red cuando entran en el
servidor linux
POSTROUTING: Utilizado por NAT para modificar paquetes de red antes de que salgan
el servidor linux
La tabla de netfilter/iptables con la que elija trabajar determina qué cadenas están disponibles para
categorizar los paquetes de red. La tabla 25.1 muestra qué cadenas están disponibles para cada
tabla.
TABLA 25.1 Cadenas disponibles para cada tabla netfi lter/iptables
Mesa Cadenas disponibles
filtrar ENTRADA, ADELANTE, SALIDA
natural ENRUTAMIENTO PREVIO, SALIDA, ENRUTAMIENTO POSTERIOR
mutilar ENTRADA, ADELANTE, PREENRUTAMIENTO, SALIDA, POSTENRUTAMIENTO
crudo ENRUTAMIENTO PREVIO, SALIDA
seguridad ENTRADA, ADELANTE, SALIDA
Después de clasificar un paquete de red en una cadena específica, iptables puede determinar qué
políticas o reglas se aplican a ese paquete en particular.
reglas, políticas y objetivos de netfi lter/iptables
Para cada paquete de red, se puede configurar una regla que defina qué hacer con ese paquete
individual. Los paquetes de red pueden ser identifi cados de muchas maneras por el cortafuegos de
netfilter/iptables. Estas son algunas de las formas:
■ Dirección IP de origen
■ Dirección IP de destino
■ Protocolo de red ■
Puerto de entrada ■ 25
Puerto de salida ■
Estado de la red
679
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Si no existe ninguna regla para un paquete en particular, se utiliza la política general. Cada categoría o cadena
de paquetes tiene una política predeterminada. Después de que un paquete de red coincida con una regla en
particular o caiga en la política predeterminada, se puede realizar una acción en el paquete. La acción tomada
depende del objetivo de iptables establecido. Aquí hay un par de acciones (objetivos) que se pueden tomar:
ACEPTAR: el paquete de red se acepta en el servidor.
RECHAZAR: el paquete de red se descarta y no se le permite ingresar al servidor. Un mensaje de rechazo
se envía salvia.
DROP: el paquete de red se descarta y no se le permite ingresar al servidor. Sin mensajes de rechazo
se envía salvia.
Mientras REJECT da un mensaje de rechazo, DROP está en silencio. Puede considerar usar REJECT para
empleados internos a quienes se les debe informar que está rechazando su tráfico de red saliente y por qué.
Considere usar DROP para el tráfico entrante para que cualquier personal malintencionado no sepa que su tráfico
está siendo bloqueado.
SUGERENCIA Hay un par de objetivos adicionales más sofisticados para iptables, como QUEUE. Puede obtener más información
sobre estos objetivos a través de la página de manual de iptables.
La utilidad iptables implementa un cortafuegos de software utilizando la tabla de filtros a través de políticas y
reglas. Ahora que tiene una comprensión general de la implementación del firewall de software, puede comenzar a
profundizar en los comandos específicos para implementar el firewall a través de la utilidad iptables.
Uso de la utilidad iptables Su
servidor Linux debería venir con el cortafuegos en funcionamiento. Sin embargo, es una buena idea verificar y ver
si realmente está habilitado.
RHEL 7, RHEL 8 y sistemas Fedora recientes netfi lter/iptables cortafuegos El servicio de interfaz de cortafuegos
que se ejecuta en estas distribuciones tiene cortafuegos. El servicio iptables no se ejecuta directamente de
forma predeterminada en estos sistemas. Para ver si este servicio de firewall se está ejecutando, escriba
systemctl status firewalld.service en la línea de comando.
■ Para habilitar el firewall, ingrese systemctl start firewalld.service y systemctl enable firewalld.service
en la línea de comando. ■ Para deshabilitar el firewall, ingrese systemctl stop firewalld.service en el
línea de comando.
Ubuntu netfi lter/iptables cortafuegos El servicio de interfaz de cortafuegos que se ejecuta en esta distribución
es ufw. Para ver si el servicio de firewall se está ejecutando, ingrese sudo ufw status en la línea de comando.
El servicio ufw es una interfaz para la utilidad iptables que no se ejecuta como un servicio en Ubuntu. Puede
usar comandos ufw para manipular
680
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
reglas del cortafuegos. Sin embargo, todos los comandos de la utilidad iptables siguen siendo
válidos para Ubuntu:
■ Para habilitar el firewall, ingrese sudo ufw enable en la línea de comando. ■ Para deshabilitar
el cortafuegos, ingrese sudo ufw disabled en la línea de comando.
Después de haber verificado el estado y habilitado o deshabilitado el firewall de netfilter/iptables, las diferencias entre
las distribuciones terminan.
Para ver qué políticas y reglas existen actualmente para la tabla de filtro (predeterminada), ingrese iptables vnL en
la línea de comando:
# iptables vnL Chain
INPUT (política ACEPTAR 0 paquetes, 0 bytes)...
Tenga en cuenta que en los sistemas con firewalld habilitado, hay muchas más cadenas y reglas de iptables
enumeradas de forma predeterminada de lo que podría estar acostumbrado en un sistema que usa iptables
directamente. Esto se hace para ofrecer más fl exibilidad en la construcción de sus cortafuegos al permitir que sus
reglas se dividan en zonas para diferentes niveles de seguridad.
En el ejemplo anterior, solo se muestra la primera línea de la salida de iptables. Esa línea muestra que la
política predeterminada de la cadena Iregla.
NPUT Asctualmente,
e aplica a todos
los
todas paquetes
políticas dpe
las red que no coinciden
redeterminadas con otra ADELANTE
de ENTRADA,
y SALIDA están establecidas en ACEPTAR. Todos los paquetes de red pueden entrar, pasar y salir. Un cortafuegos en
este estado está esencialmente deshabilitado hasta que se agregan reglas específicas de REJECT o DROP.
CONSEJO
Si su servidor Linux está manejando paquetes de red IP v6, puede usar la utilidad ip6tables para administrar su
cortafuegos para direcciones IPv6. La utilidad ip6tables es casi idéntica a la utilidad iptables. Para obtener más
información, ingrese man ip6tables en la línea de comando.
Modificación de las políticas y reglas de
iptables Antes de comenzar a modificar un cortafuegos de netfilter/iptables directamente mediante el
comando iptables, debe ir a un sistema que pueda usar para probar y desactivar el servicio de cortafuegos.
Para comenzar, es útil comprender algunas opciones de comando.
Algunas opciones para modificar el cortafuegos son las siguientes:
t tabla
El comando iptables que aparece junto con este modificador se aplica a la tabla. De forma predeterminada,
se utiliza la tabla de filtros. Ejemplo:
# iptables t filtro P CAÍDA DE SALIDA
25
681
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Objetivo de la cadena P
Establece la política general para una cadena en particular. Las reglas de la cadena se comprueban en busca
de coincidencias. Si no se produce ninguna coincidencia, se utiliza el objetivo de la lista de la cadena. Ejemplo:
# iptables P ENTRADA ACEPTAR
Una cadena
Establece una regla llamada "regla adjunta", que es una excepción a la política general para la cadena
designada. Ejemplo:
# iptables A SALIDA d 10.140.67.25 j RECHAZAR
Yo gobierno # cadena
Inserta una regla añadida en una ubicación específi ca, designada por el número de regla, en la lista de
reglas añadidas para la cadena designada. Ejemplo:
# iptables I 5 ENTRADA s 10.140.67.23 j DROP
Regla de la cadena D#
Elimina una regla en particular, designada por el número de regla, de la cadena designada.
Ejemplo:
# iptables D ENTRADA 5
j objetivo
Si se cumplen los criterios de la regla, el cortafuegos debe saltar a este destino designado para su
procesamiento. Ejemplo:
# iptables A ENTRADA s 10.140.67.25 j DROP
d dirección IP
Asigna la regla enumerada para que se aplique a la dirección IP de destino designada.
Ejemplo:
# iptables A SALIDA d 10.140.67.25 j RECHAZAR
s dirección IP
Asigna la regla enumerada para que se aplique a la dirección IP de origen designada. Ejemplo:
# iptables A ENTRADA s 10.140.67.24 j ACEPTAR
protocolo p
Asigna la regla enumerada para que se aplique al protocolo designado. Por ejemplo, aquí se eliminan
las solicitudes de ping (icmp) entrantes:
# iptables A ENTRADA p icmp j DROP
dport puerto#
Asigna la regla enumerada para que se aplique a ciertos paquetes de protocolo que ingresan al
número de puerto designado. Ejemplo:
# iptables A ENTRADA p tcp dport 22 j DROP
682
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
puerto deportivo#
Asigna la regla enumerada para que se aplique a ciertos paquetes de protocolo que salen del
número de puerto designado. Ejemplo: # iptables A SALIDA p tcp sport 22 j ACEPTAR
m estado estado red _ estado
Asigna la regla enumerada para que se aplique a los estados de red designados. Ejemplo: #
iptables A INPUT m estado estado RELACIONADO, ESTABLECIDO j ACEPTAR
Para ver cómo funcionan las opciones de iptables, considere el siguiente ejemplo. Tiene un servidor Linux (Host
A) en la dirección IP 10.140.67.23. Hay otros dos servidores Linux en su red. Uno es HostB en la dirección IP
10.140.67.22 y el otro es HostC en la dirección IP 10.140.67.25. Su objetivo es lograr lo siguiente:
■ Permita que el HostC tenga acceso completo al HostA.
■ Bloquee las conexiones de inicio de sesión remotas mediante ssh del HostB al HostA.
Configuración de una política
'
de Drop El siguiente código muestra que las políticas predeterminadas de s cortafuegos. En este ejemplo, el fuego
HostA wall están abiertas de par en par sin restricciones implementadas. No se establecen reglas y todas las políticas están
configuradas para ACEPTAR.
# iptablesvnL
Cadena INPUT (política ACEPTAR)
objetivo prot opt fuente destino
Cadena ADELANTE (política ACEPTAR)
objetivo prot opt fuente destino
Cadena OUTPUT (política ACEPTAR)
destino fuente de opción de beneficio destino
Primero, ¿qué pasaría si la política de ENTRADA se cambiara de ACEPTAR a ELIMINAR? ¿Eso alcanzaría la
meta? Mira lo que sucede cuando se intenta esto. Recuerde que si no se enumeran reglas para un paquete
entrante, se sigue la política de la cadena. Este cambio se realiza en HostA
'
s firewall en el siguiente ejemplo.
# iptables P INPUT DROP #
iptables vnL
Cadena INPUT (política DROP)
objetivo prot opt fuente destino
25
Cadena ADELANTE (política ACEPTAR)
objetivo prot opt fuente destino
683
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
Cadena OUTPUT (política ACEPTAR)
destino fuente de opción de beneficio destino
CONSEJO
Para las políticas, no puede establecer el objetivo en REJECT. Falla y recibe el mensaje "iptables: nombre de política incorrecto".
Utilice DROP como su política en su lugar.
El HostB intenta hacer ping al HostA y luego intenta una conexión ssh, como se muestra en el
siguiente ejemplo. Como puede ver, ambos intentos fallan. Debido a que los comandos de ping están
bloqueados, esto no cumple con el objetivo de bloquear solo las conexiones de inicio de sesión remotas
mediante ssh del HostB.
$ ping c 2 10.140.67.23 PING
10.140.67.23 (10.140.67.23) 56(84) bytes de datos.
10.140.67.23 estadísticas de ping 2 paquetes
transmitidos, 0 recibidos, 100 % de pérdida de paquetes, tiempo 1007 ms $ ssh root@10.140.67.23
ssh: conéctese al host 10.140.67.23 puerto 22: se agotó el tiempo de conexión
Cuando el HostC intenta hacer ping al HostA y establecer una conexión ssh, ambos intentos fallan.
Por lo tanto, se confirma que la configuración del firewall, la política INPUT es igual a DROP, no es lo que se
necesita para alcanzar la meta.
$ ping c 2 10.140.67.23 PING
10.140.67.23 (10.140.67.23) 56(84) bytes de datos.
10.140.67.23 estadísticas de ping 2 paquetes
transmitidos, 0 recibidos, 100 % de pérdida de paquetes, tiempo 1008 ms $ ssh root@10.140.67.23
ssh: conéctese al host 10.140.67.23 puerto 22: se agotó el tiempo de conexión
Bloqueo de una dirección IP de
'
origen ¿Qué pasa si en cambio solo ¿Se bloquearon las direcciones IP? Eso permitiría que HostC alcance
HostB HostA. ¿Esta configuración alcanzaría el objetivo deseado?
En el ejemplo que sigue, la política de DROP primero debe cambiarse a PERMITIR en Host
'
A s iptables. Después de eso, se debe agregar una regla específica para bloquear los paquetes de red del
'
HostB s dirección IP, 10.140.67.22, solo.
# iptables P INPUT ACCEPT # iptables
A INPUT s 10.140.67.22 j DROP # iptables vnL
684
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
Encadenar INPUT (política ACEPTAR)
objetivo prot opt fuente todo destino
GOTA 10.140.67.22 en cualquier lugar
Cadena ADELANTE (política ACEPTAR)
objetivo prot opt fuente destino
Cadena OUTPUT (política ACEPTAR)
destino fuente de opción de beneficio destino
HostC ahora puede hacer ping y ssh con éxito en HostA, cumpliendo uno de los objetivos establecidos.
$ ping c 2 10.140.67.23 PING
10.140.67.23 (10.140.67.23) 56(84) bytes de datos. 64 bytes desde 10.140.67.23:
icmp_req=1 ttl=64 tiempo=11,7 ms 64 bytes desde 10.140.67.23: icmp_req=2 ttl=64
tiempo=0,000 ms
Estadísticas de ping 10.140.67.23 2 paquetes
transmitidos, 2 recibidos, 0% de pérdida de paquetes, tiempo 1008ms rtt min/avg/max/mdev =
0.000/5.824/11.648/5.824 ms $ ssh root@10.140.67.23 root @ 10.140.67.23 contraseña:
Sin embargo, el HostB no puede hacer ping ni ssh en el HostA. Por lo tanto, la regla adjunta no es
exactamente lo que se necesita para alcanzar la meta completa.
$ ping c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56(84) bytes de datos.
10.140.67.23 estadísticas de ping 2 paquetes
transmitidos, 0 recibidos, 100 % de pérdida de paquetes, tiempo 1007 ms
$ ssh root@10.140.67.23
ssh: conéctese al host 10.140.67.23 puerto 22: se agotó el tiempo de conexión
Bloqueo de un protocolo y un
'
puerto ¿ Qué sucede si, en lugar de s dirección IP en su totalidad, sólo las conexiones al puerto ssh
'¿Se
22) dbel
bloquear el HostB (puerto loquearon
HostB, las direcciones IP? ¿Alcanzaría eso el objetivo de permitir que Host
C tiene acceso completo al HostA y solo bloquea las conexiones ssh del HostB?
En el siguiente ejemplo, las reglas de iptables para el HostA se modifican para intentar bloquear el
'
protocolo pirección
s d articular IdP
el
dH ostB,
el como,
puerto por ejemplo,
22. Tenga p tqcp.
en cuenta ue Ala
ntes
de agregar
opción dport dla
nueva
ebe regla, la
acompañar ar egla
del
un par 25
ejemplo anterior debe eliminarse usando la opción D. De lo contrario, el cortafuegos netfilter/iptables
usaría la regla del ejemplo anterior para los paquetes de 10.140.67.22 (HostB).
685
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
# iptables D ENTRADA 1 #
iptables A ENTRADA s 10.140.67.22 p tcp dport 22 j DROP # iptables vnL
Encadenar INPUT (política ACEPTAR)
destino prot optar fuente tcp destino
GOTA 10.140.67.22 en cualquier lugar tcp dpt: ssh
Cadena ADELANTE (política ACEPTAR)
objetivo prot opt fuente destino
Cadena OUTPUT (política ACEPTAR) destino
fuente de opción de beneficio destino
Primero, la nueva regla de iptables se prueba desde HostC para garantizar que tanto los intentos de ping como las
conexiones ssh no se vean afectados. Funciona con éxito.
$ ping c 2 10.140.67.23 PING
10.140.67.23 (10.140.67.23) 56(84) bytes de datos. 64 bytes desde 10.140.67.23:
icmp_req=1 ttl=64 tiempo=1,04 ms 64 bytes desde 10.140.67.23: icmp_req=2 ttl=64
tiempo=0,740 ms
Estadísticas de ping 10.140.67.23 2 paquetes
transmitidos, 2 recibidos, 0 % de pérdida de paquetes, tiempo 1000 ms rtt min/avg/max/mdev =
0,740/0,892/1,045/0,155 ms
$ ssh root@10.140.67.23
root@10.140.67.23 contraseña:
A continuación, la nueva regla de iptables se prueba desde el HostB para garantizar que el ping funcione y las
conexiones ssh estén bloqueadas. ¡También funciona con éxito!
$ ping c 2 10.140.67.23
PING 10.140.67.23 (10.140.67.23) 56(84) bytes de datos. 64 bytes desde 10.140.67.23:
icmp_req=1 ttl=64 tiempo=1,10 ms 64 bytes desde 10.140.67.23: icmp_req=2 ttl=64
tiempo=0,781 ms
10.140.67.23 estadísticas de ping
2 paquetes transmitidos, 2 recibidos, 0 % de pérdida de paquetes, tiempo 1001 ms rtt min/avg/max/
mdev = 0,781/0,942/1,104/0,164 ms
$ ssh root@10.140.67.23
ssh: conéctese al host 10.140.67.23 puerto 22: se agotó el tiempo de conexión
Una vez más, la Matriz de control de acceso de su organización (consulte el Capítulo 22 , “Comprensión básica
Linux Security”) lo ayuda a crear las reglas necesarias para netfilter/iptables
686
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
fi rewall en su servidor Linux. Luego, cada modificación debe probarse en un entorno virtual o de prueba
antes de implementarla en el cortafuegos de su sistema Linux de producción.
Guardar una configuración de
iptables Debido a que firewalld es el servicio recomendado para crear cortafuegos en RHEL, Fedora y
otros sistemas Linux, la creación manual de reglas de cortafuegos permanentes es menos común. Sin
embargo, si lo desea, aún puede guardar y restaurar manualmente las reglas del cortafuegos que crea
directamente con iptables.
En el ejemplo siguiente, las modificaciones realizadas anteriormente todavía están en el cortafuegos.
Puede guardar el conjunto actual de reglas de fi ltro de cortafuegos con el comando iptablessave.
# iptables vnL Chain
INPUT (política ACEPTAR 8 paquetes, 560 bytes) pkts bytes target
prot opt in out source * 10.140.67.22 0.0.0.0/0 tcp dpt:22 * 0.0.0.0/0 destino
0 0 DROP tcp * 0.0.0.0/0 tcp dpt: 33 * 0.0.0.0/0 0.0.0.0/0
0 0 DROP tcp *
0 0 GOTA icmp *
...
# iptablessave > /tmp/myiptables
Para restaurar esas reglas más adelante, puede comenzar por vaciar las reglas actuales (iptables F) y
restaurarlas (iptablesrestore).
# iptables F #
iptables vnL Cadena
INPUT (política ACEPTAR 8 paquetes, 560 bytes) pkts bytes target prot
opt in out fuente destino 0 DROP tcp * * 0.0.0.0/0 0 DROP icmp * * 0.0.0.0 /0
0 0.0.0.0/0 tcp dpt:33 0.0.0.0/0
0
...
Un lavado de las reglas no afecta el archivo de configuración de iptables. Para restaurar el cortafuegos
a su estado original, utilice el comando iptablesrestore. En el siguiente ejemplo, el archivo de
configuración de iptables se redirige al comando de restauración y se restaura la regla DROP original para
10.140.67.22.
# iptablesrestore < /tmp/myiptables # iptables vnL
Chain INPUT (política ACEPTAR 16 paquetes,
1120 bytes) pkts bytes target prot opt in out source 0 DROP tcp * *
10.140.67.22 0.0.0.0/0 0 DROP tcp * * 0.0.0.0/0 0.0.0.0/0 0 DROP destino
0 icmp * * 0.0.0.0/0 0.0.0.0/0 punto TCP:22
0 punto TCP:33
0
25
687
Machine Translated by Google
Parte V: Aprendizaje de las técnicas de seguridad de Linux
NOTA
Para un sistema Ubuntu, la forma de guardar y restaurar sus modificaciones de netfilter/iptables es muy similar a la forma
en que se hace en Fedora. Todavía puede usar el comando iptablessave para crear un archivo de configuración de
iptables a partir de la configuración actual de iptables y usar iptablesrestore para restaurarlo. Hay varias opciones para
cargar un archivo de configuración al arrancar el sistema. Consulte el sitio web de la comunidad de Ubuntu en https://
help .ubuntu.com/community/IptablesHowTo para conocer las diversas opciones.
También puede guardar sus reglas de firewall de netfilter/iptables para crear un informe de auditoría.
La revisión periódica de estas reglas debe ser parte de la fase de auditoría/revisión del ciclo de vida del
sistema de su organización.
Resumen
Asegurar su servidor Linux es fundamental en una red. Intrínsecamente, la mayoría de los ataques
maliciosos se originan en una red, especialmente en Internet. Este capítulo cubrió algunos de los
conceptos básicos que necesita para comenzar este proceso.
La protección de sus servicios de red se puede simplificar después de que determine y elimine los
servicios de red innecesarios. La utilidad nmap te ayuda aquí. Además, puede usar nmap para auditar
'
su servidor Linux y determinar
s pq
ublicidad
ué modificaciones
de servicios
del
de
cortafuegos
red. Estas saon
uditorías
necesarias.
ayudan a disuadir
Las versiones recientes de Fedora y RHEL agregaron el servicio firewalld como una interfaz para la
función de firewall de iptables que está integrada en el kernel de Linux. Mediante el uso de la herramienta
fire walldconfig y la interfaz de usuario web de Cockpit, puede abrir fácilmente puertos en su firewall para
permitir el acceso a los servicios seleccionados. La función de cortafuegos de netfilter/iptables es un
cortafuegos de software de capa de red basado en host. Es administrado por las utilidades iptables e ip6tables.
Con estas utilidades, se pueden crear una serie de políticas y reglas para cada paquete de red que llega
a través de su servidor Linux.
En este punto de este libro, debe tener una buena comprensión de lo que implica configurar y proteger
'
los sistemas de servidor y de escritorio de Linux. En los próximos dos capítulos, extiendo
te voy
ease
ayudar
conocimiento a la computación en la nube y la virtualización.
Ejercicios
Consulte el material de este capítulo para completar las tareas siguientes. Si está atascado, las
soluciones a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo puede completar una
tarea de varias maneras). Pruebe cada uno de los ejercicios antes de referirse a las respuestas. Estas
tareas suponen que está ejecutando un sistema Fedora o Red Hat Enterprise Linux (aunque algunas
tareas también funcionan en otros sistemas Linux). No utilice un comandos
sistema de
dpe
roducción
iptables epn
ara
estos
probar
ejercicios.
los
Aunque los comandos que se muestran aquí
688
Machine Translated by Google
Capítulo 25: Protección de Linux en una red
no cambie permanentemente su cortafuegos (las reglas antiguas volverán cuando se reinicie el servicio de
cortafuegos), la modificación incorrecta de su cortafuegos puede resultar en un acceso no deseado.
1. Instale la utilidad Network Mapper en su sistema Linux local.
2. Ejecute un análisis de conexión TCP en su dirección de loopback local. ¿Qué puertos tienen un servicio
ejecutándose en ellos?
3. Ejecute un escaneo de puertos UDP en su sistema Linux desde un sistema remoto.
4. Verifique si su sistema está ejecutando el servicio firewalld. De lo contrario, instale firewalld y
firewallconfig y luego inicie y habilite ese servicio.
5. Use la ventana Configuración de Firewall para abrir acceso a seguridad (puerto TCP 443) y
puertos no seguros (puerto TCP 80) para un servicio web.
6. Determine las políticas actuales de cortafuegos de netfilter/iptables de su sistema Linux
y reglas
'
7. Guarde su sistema Linux 8. las reglas actuales del cortafuegos, límpielas y luego restáurelas.
'
Para la cadena de su sistema s fi rewall, establezca una política de tabla de fi ltros para la entrada
Linux en DROP.
9. Vuelva a cambiar la política de la tabla de fi ltros del cortafuegos de su sistema Linux para aceptar la
cadena de entrada y luego agregue una regla para eliminar todos los paquetes de red de la dirección
IP 10.140.67.23.
10. Sin vaciar ni restaurar las reglas del firewall del sistema Linux, elimine la regla que acaba de agregar.
25
689
Machine Translated by Google
Machine Translated by Google
rt
Comprometerse con
Computación en la nube
EN ESTA PARTE
capitulo 26
Cambio a nubes y contenedores
capitulo 27
Uso de Linux para la computación en la nube
capitulo 28
Implementación de Linux en la nube
capitulo 29
Automatización de aplicaciones e infraestructura con Ansible
capitulo 30
Implementación de aplicaciones como contenedores con Kubernetes
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Cambiando a las nubes y
Contenedores
EN ESTE CAPÍTULO
Comprender las tecnologías clave para la computación en la nube
Aprender cómo funcionan los contenedores de Linux
Instalar e iniciar el software del contenedor
Obtener y ejecutar imágenes de contenedores
Reinicio de un contenedor detenido
Creación de una imagen de contenedor
Etiquetado y envío de imágenes de contenedores a un registro
y aplicaciones, esta parte lo lleva a las tecnologías necesarias para llevar Linux a los grandes centros de
Si bien la m ayor p
datos. Parte
ara qdue
e eu
ste
n clibro
se
entro enfoca
de efuncione
datos n la instalación
y administración
de manera de
eficiente, sus computadoras
computadoras dieben
ndividuales,
servicios,
volverse
tan genéricas
como sea posible y los componentes en ejecución deben ser más automatizados. Los capítulos de esta parte se centran
en las tecnologías que hacen que esas dos cosas sucedan.
Las computadoras se vuelven más genéricas al separar las aplicaciones de los sistemas operativos. Esto significa no solo
empaquetar aplicaciones en cosas que instala en un sistema operativo (como paquetes RPM o Deb), sino también juntar
conjuntos de software en paquetes que pueden ejecutarse una vez que se entregan de manera que se mantengan separados
del sistema operativo. Las máquinas virtuales (VM) y los contenedores son dos formas de empaquetar conjuntos de software y
sus dependencias de manera que estén listos para ejecutarse.
Desde un alto nivel, una máquina virtual es un sistema operativo completo que se ejecuta en otro sistema operativo, lo que
le permite tener muchas máquinas virtuales activas a la vez en una computadora física. Todo lo que una aplicación o un
servicio necesita para ejecutarse se puede almacenar dentro de esa máquina virtual o en un almacenamiento adjunto.
Una máquina virtual tiene su propio kernel, sistema de archivos, tabla de procesos, interfaces de red y otras características
del sistema operativo separadas del host, mientras comparte la CPU y la RAM con el sistema host. Puede implementar esa
VM en un sistema físico de una manera que facilite la ejecución de la aplicación y luego descartar la VM cuando haya
terminado. Puede ejecutar varias instancias de la VM en la misma computadora
693
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
o clone y ejecute la máquina virtual en varias computadoras. El término máquina virtual proviene del hecho
de que cada VM ve una emulación del hardware de la computadora y no el hardware en sí mismo directamente.
Un contenedor es como una máquina virtual, con la principal diferencia de que un contenedor no tiene su
propio núcleo. En la mayoría de las otras formas, es como una VM en el sentido de que sus espacios de
nombres están separados del sistema operativo del host y puede moverlo de un host a otro para ejecutarlo
donde sea conveniente.
Los capítulos de esta parte le presentan los conceptos, las herramientas y las tecnologías que necesita saber
para interactuar con la computación en la nube. Puede probar máquinas virtuales en un solo host Linux usando
KVM. Luego puede implementar máquinas virtuales en tecnologías de nube como OpenStack y Amazon Web
Services (AWS).
Para implementar conjuntos de hosts, ya sea en bare metal o en la nube, aprenderá a usar Ansible.
Con los playbooks de Ansible, también puede defi nir el software que se instala y ejecuta en cada sistema host.
En cuanto a los contenedores, el proyecto Kubernetes ha captado la atención como la principal tecnología para
orquestar cantidades masivas de contenedores en grandes centros de datos. Productos como Red Hat OpenShift
proporcionan plataformas Kubernetes compatibles para grandes empresas.
La tecnología que inició la carrera hacia los contenedores hace unos años fue el proyecto Docker.
El comando y el demonio docker ofrecieron formas simplificadas de crear y ejecutar contenedores en sistemas
Linux. Hoy en día, los formatos de contenedores estandarizados (como Open Container Initiative) y otras
herramientas de contenedores, como podman, ofrecen formas de trabajar con contenedores que se alinean más
estrechamente con el ecosistema de Kubernetes.
El resto de este capítulo está dedicado a comenzar con los contenedores. Cubre los comandos docker y
podman, junto con otras herramientas populares para trabajar con contenedores individuales.
Comprender los contenedores de Linux
Los contenedores simplifican la obtención y ejecución de aplicaciones y luego las descartan cuando termina.
Hay algunas cosas que debe saber sobre los contenedores antes de comenzar.
Al trabajar con contenedores, las personas se refieren a la entidad que mueve como una imagen de contenedor
(o simplemente una imagen). Cuando ejecuta esa imagen, o cuando está en pausa o detenida, se denomina
contenedor .
Un contenedor permanece separado del sistema host mediante el uso de su propio conjunto de espacios de
nombres. Por lo general, crearía sus propias imágenes de contenedor obteniendo una imagen base segura y
luego agregando sus propias capas de software encima de esa imagen para crear una nueva imagen. Para
compartir sus imágenes, las envía a registros de contenedores compartidos y permite que otros las extraigan.
694
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
Espacios de nombres
El soporte de Linux para espacios de nombres es lo que permite contener contenedores. Con los espacios de nombres, el
kernel de Linux puede asociar uno o más procesos con un conjunto de recursos. Los procesos normales, no los que se
ejecutan en un contenedor, utilizan todos los mismos espacios de nombres de host. De forma predeterminada, los procesos
en un contenedor solo ven los espacios de nombres del contenedor y no los del host.
26
Los espacios de nombres incluyen lo siguiente:
Tabla de procesos Un contenedor tiene su propio conjunto de ID de proceso y, de forma predeterminada, solo puede
ver los procesos que se ejecutan dentro del contenedor. Mientras que el PID 1 en el host es el proceso de inicio
(systemd), en un contenedor, el PID 1 es el primer proceso que se ejecuta dentro del contenedor.
Interfaces de red De manera predeterminada, un contenedor tiene una única interfaz de red (eth0) y se le asigna
una dirección IP cuando se ejecuta el contenedor. De forma predeterminada, un servicio que se ejecuta dentro
de un contenedor (como un servidor web que escucha en los puertos 80 y 443) no se expone fuera del sistema
host. La ventaja de esto es que podría tener cientos de servidores web ejecutándose en el mismo host sin
conflicto. La desventaja es que debe administrar cómo se exponen esos puertos fuera del host.
Tabla de montaje De forma predeterminada, un 't ver el sistema de archivos raíz del host, o cualquier otro
contenedor puede montar el sistema de archivos que
se enumera en la tabla de montaje del host. El contenedor
trae su propio sistema de archivos, que consta de la aplicación y las dependencias que necesita para ejecutarse.
Los archivos o directorios necesarios del host se pueden montar de forma selectiva dentro del contenedor.
ID de usuario Aunque los procesos en contenedores se ejecutan como algún UID dentro del host ' s
espacio de nombres, otro conjunto de UID está anidado dentro del contenedor. Esto puede, por ejemplo, permitir
que un proceso se ejecute como root dentro de un contenedor pero no tenga privilegios especiales para el sistema
host.
UTS Un espacio de nombres UTS permite que un proceso en contenedores tenga un host diferente y
nombre de dominio del host.
Grupo de control (cgroup) En algunos sistemas Linux (como Fedora y RHEL), un proceso en contenedor se
ejecuta dentro de un grupo de control seleccionado y no puede ver los otros cgroups disponibles en el sistema
host. Asimismo, no puede ver la identidad de su propio cgroup.
Comunicaciones entre procesos (IPC) Un proceso en contenedor no puede ver el espacio de nombres IPC del
host.
Aunque el acceso a cualquier espacio de nombres de host está restringido de forma predeterminada, los
privilegios para los espacios de nombres de host se pueden abrir de forma selectiva. De esa manera, puede hacer cosas
como montar archivos de configuración o datos dentro del contenedor y asignar puertos de contenedor a puertos de host
para exponerlos fuera del host.
Registros de contenedores El
almacenamiento permanente de contenedores se realiza en lo que se denomina registro de contenedores. Cuando crea una
imagen de contenedor que desea compartir, puede enviar esa imagen a un público
695
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
registro o un registro privado que usted mismo mantenga (como un registro de Red Hat Quay).
Alguien que quiera usar la imagen la sacará del registro.
Existen grandes registros de imágenes de contenedores públicos, como Docker Hub (docker.io) y Quay
Registry (Quay.io). Ofrecen cuentas gratuitas para empezar. Si desea acceder a más funciones, como la
capacidad de mantener su registro privado, también hay cuentas premium disponibles.
Imágenes base y capas Aunque puede
crear contenedores desde cero, la mayoría de las veces un contenedor se crea comenzando con una imagen
base conocida y agregándole software. Esa imagen base generalmente se alinea con el sistema operativo
desde el cual está instalando el software en su contenedor.
Puede obtener imágenes base oficiales de Ubuntu (https://hub.docker.com/ CentOS (https:// _ /ubuntu), /
hub.docker.com/ /fedora) y muchas otras distribuciones
_ centos), de
FLedora
inux. (Ehttps://hub.docker.
sas distribuciones de
De hecho,
_ Linux
hay imágenes
pueden ofrecer
base qbue
ase
puede
imágenes
construir
en dqiferentes
ue ofrecen
formas,
tiempos
como
de veersiones
jecución e
pstándar
ara php,
yP m
erl,
ínimas
Java y otros entornos de desarrollo.
Si bien Red Hat ofrece un modelo de suscripción para su software, si desea utilizar el software de Red Hat
como base para sus imágenes de contenedor, Red Hat ofrece imágenes base universales (UBI) disponibles
de forma gratuita para contenedores de tiempo de ejecución estándar, mínimos y variados. . Puede encontrar
esas imágenes buscando imágenes UBI en el catálogo de contenedores de Red Hat (https://catalog.redhat.com/
software/containers/explore).
Puede agregar software a una imagen base mediante comandos como docker build o pod man. Al usar
un archivo Docker para defi nir la compilación, puede agregar comandos yum o aptget para instalar software
desde repositorios de software en su nuevo contenedor.
Cuando agrega software a una imagen, crea una nueva capa para formar parte de la nueva imagen.
Reutilizar las mismas imágenes base para los contenedores que crea ofrece varias ventajas. Una
ventaja es que cuando ejecuta la imagen del contenedor, solo se necesita una copia de la imagen base en el
host. Por lo tanto, si estaba ejecutando 10 contenedores diferentes basados en la misma imagen base, solo
necesita extraer y almacenar la imagen base una vez, luego posiblemente solo agregue unos pocos
megabytes de datos adicionales para cada imagen nueva.
Si observa el contenido de una imagen base, se vería como un pequeño sistema de archivos de Linux. Verá
archivos de configuración en /etc, ejecutables en /bin y /sbin, y bibliotecas en /lib. En otras palabras, tendría
los componentes básicos que necesitaría una aplicación de un sistema host Linux.
Tenga en cuenta que las imágenes de contenedor que ejecuta no necesariamente tienen que coincidir con
el sistema host Linux. Entonces, por ejemplo, podría ejecutar una imagen base de Fedora en un sistema
Ubuntu, siempre que no haya requisitos de kernel específicos o bibliotecas integradas en la imagen del contenedor.
696
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
Comenzando con los contenedores de Linux
Se necesita muy poca preparación para comenzar a ejecutar contenedores en su propio sistema Linux.
Los siguientes procedimientos describen cómo preparar su sistema Linux para comenzar a usar
contenedores.
26
Docker Inc. ahora pone a disposición una versión gratuita de su software a través del proyecto
Moby, y Docker se ha convertido en su producto comercial. Para probar una versión anterior del paquete
docker, puede ejecutar lo siguiente en un sistema RHEL 7 para instalar el paquete docker y luego iniciar
y habilitar el servicio docker:
# yum install docker y # systemctl
iniciar docker # systemctl habilitar
docker
El comando podman es compatible con la mayoría de las opciones de la línea de comandos de docker
para trabajar con contenedores, por lo que puede usarlo en lugar de docker. Tenga en cuenta que
podman representa una base de código diferente de docker, aunque admite opciones de comando de
administración similares. Con podman, no necesita docker.
tener uP
n
ara
servicio
instalar
en peodman
jecución,
en
cFomo
edora
lo h
oace
RHEL,
con
haga
lo siguiente:
# yum instalar subman y
Ahora puede comenzar a usar los comandos podman o docker para trabajar con contenedores e
imágenes de contenedores para los ejemplos de este capítulo.
Extracción y ejecución de contenedores Con los
paquetes docker o podman instalados y listos para usar, puede intentar ejecutar un contenedor. Para
comenzar, puede extraer un contenedor a su sistema local y luego ejecutarlo. Si lo desea, puede omitir el
comando de extracción, ya que ejecutar el contenedor lo extraerá si la imagen solicitada aún no está en su
sistema.
Extraer un contenedor
Elija una imagen de contenedor confiable para probar, como una que provenga de un proyecto oficial,
esté actualizada y, preferiblemente, haya sido escaneada en busca de vulnerabilidades. Este es un
ejemplo de extracción de una imagen base RHEL 8 UBI con el comando podman (puede reemplazar
podman con docker en estos ejemplos):
# podman pull registration.access.redhat.com/ubi8/ubi Tratando de
extraer .../ubi8/ubi... Obteniendo firmas de origen de imagen Copiando blob fd8daf2668d1
hecho Copiando blob cb3c77f9bdd8 hecho Copiando configuración 096cae65a2 hecho
Escritura de manifiesto en destino de imagen Almacenamiento de firmas
096cae65a2078ff26b3a2f82b28685b6091e4e2823809d45aef68aa2316300c7
697
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Para ver que la imagen está en su sistema, ejecute lo siguiente:
# imágenes subman
ETIQUETA DE REPOSITORIO ID DE IMAGEN CREADO TAMAÑO
/ubi8/ubi último 096cae65a207 Hace 2 semanas 239 M
Ejecutar un shell desde un
contenedor Use podman o docker para ejecutar un shell dentro de un contenedor. Puede
identificar la imagen por el ID de la imagen (096cae65a207) o por el nombre
(registry.access.redhat.com/ubi8/ubi). Use las opciones i (interactivo) y t (terminal) para que
pueda tener una sesión interactiva dentro del contenedor desde el shell bash:
# podman ejecuta it 096cae65a207 bash
[root@e9086da6ed70 /]#
Con el shell ejecutándose, los comandos que escriba operarán dentro del contenedor. Por
ejemplo, enumera el sistema de archivos
ver el sdistema
el contenedor
operativo
o e
consulta
n el que
esl e
archivo
basa eol srelease
contenedor:
para
[root@e9086da6ed70 /]# ls / bin dev inicio
lib64 boot etc lib medio opt root sbin sys usr proc run srv tmp var
perdido+encontrado
[root@e9086da6ed70 /]# cat /etc/osrelease | grep ^NOMBRE
NOMBRE="Red Hat Enterprise Linux"
Debido a que los contenedores están destinados a tener la cantidad mínima de contenido necesaria para
ejecutar la aplicación deseada, es posible que muchas herramientas estándar no estén dentro del contenedor.
Puede instalar software dentro de un contenedor en ejecución. Sin embargo, tenga en cuenta que los contenedores
están destinados a ser desechados. Por lo tanto, si desea agregar software de forma permanente, debe crear una
nueva imagen para incluir el software que desea.
'
Aquí Es un ejemplo de cómo agregar software a un contenedor en ejecución:
[root@e9086da6ed70 /]# yum install procps iproute y
Ahora puede ejecutar comandos como ps e ip dentro del contenedor:
[raíz@e9086da6ed70 /]# ps ef
UID PID PPID C STIME TTY HORA CMD
raíz 1 0 0 17:44 pts/0 1 0 17:45 00:00:00 fiesta
raíz 40 pts/0 [root@e9086da6ed70 /]# 00:00:00 pdef
ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
inet 127.0.0.1/8 scope host lo
...
3: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ... inet 10.88.0.6/16 brd
10.88.255.255 alcance global eth0
...
Observe que desde dentro del contenedor, solo ve dos procesos en ejecución (el shell y el
comando ps). PID 1 es el shell bash. La salida recortada de ip a muestra que hay
698
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
es solo una interfaz de red externa del contenedor (eth0@if11) y a esa interfaz se le asigna la dirección IP
de 10.88.0.6/16.
Cuando haya terminado, puede escribir exit para salir del shell y detener el contenedor:
[root@e9086da6ed70 /]# salir 26
Aunque el shell y el contenedor ya no se ejecutan, el contenedor todavía está disponible en su sistema en
un estado detenido. Tenga en cuenta que podman ps solo no muestra el contenedor. Necesita agregar
todo:
[root@e9086da6ed70 /]# podman p.d.
CONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES
[root@e9086da6ed70 /]# podman ps todos
IMAGEN DE IDENTIFICACIÓN DEL CONTENEDORCOMANDO CREADO ESTADO PUERTOS
NOMBRES
437ec53386ca ...ubi: última fiesta Hace 1 hora Arriba Hace 1 minuto
entra
Más adelante puede ver cómo eliminar y reiniciar un contenedor detenido.
Ejecución de un servidor FTP desde un
contenedor Dado que desea poder desechar un contenedor cuando haya terminado, en general desea
que los datos modificables se almacenen fuera del contenedor. El siguiente es un ejemplo simple de un
servidor FTP (vsftpd) que se ejecuta desde un contenedor. Si desea probar este ejemplo usted mismo, le
recomiendo que salte a la sección "Creación de una imagen de contenedor" más adelante en este capítulo
para obtener instrucciones sobre cómo crear la imagen de contenedor vsftpd usted mismo.
Para este procedimiento, necesita un archivo de configuración (vsftpd.conf) y un directorio FTP que
contenga uno o dos archivos para compartir (/var/ftp/pub) en el sistema host. Cuando se inicia el contenedor
vsftpd, enlaza esos elementos en el contenedor como volúmenes.
1. Cree un archivo vsftpd.conf : cree el archivo vsftpd.conf en la ubicación predeterminada, /etc/
vsftpd/vsftpd.conf. Consulte la página de manual de vsftpd.conf para obtener más información.
Aquí hay un ejemplo:
anonymous_enable=SÍ
local_enable=SÍ write_enable=SÍ
local_umask=022
dirmessage_enable=SÍ
xferlog_enable=NO
connect_from_port_20=SÍ
escucha=NO
listen_ipv6=SÍ
pam_service_name=vsftpd
userlist_enable=SÍ tcp_wrappers=NO
vsftpd_log_file=/dev/stdout
syslog_enable=NO
699
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
background=NO
pasv_enable=Sí
pasv_max_port=21100
pasv_min_port=21110
2. Cree un directorio ftp: cree un directorio FTP anónimo para que vsftpd lo comparta
en la ubicación estándar del host (/var/ftp/pub) y copie algunos archivos en ese directorio: # mkdir p /var/
ftp/pub # cp /etc/services /etc/login.defs /var/ ftp/pub/
3. Obtenga la imagen del contenedor vsftpd: Cree la imagen vsftpd como se describe en "Creación de una
imagen del contenedor" más adelante en este capítulo. Para comprobar que está disponible para ejecutar,
introduzca lo siguiente:
# imágenes subman
ETIQUETA DE REPOSITORIO ID DE IMAGEN CREADO TAMAÑO
vsftpd último 487d0db26098 Hace 5 segundos 208 MB
4. Ejecute la imagen del contenedor vsftpd: cuando ejecuta el contenedor vsftpd, debe exponer
'
los puertos y montar archivos desde el host al contenedor. Aquí (puede usar docker
es un en
jemplo
lugar de podman):
# podman ejecutar d p 20:20 p 21:21 \ p
2110021110:2110021110 \ v /etc/vsftpd/:/etc/
vsftpd/ \ v /var/ftp/pub:/ var/ftp/pub \ name vsftpd
vsftpd # podman ps
3a5d094dd4b5 vsftpd:latest /usr/local/s2... Hace 9 segundos Arriba Hace 10 segundos
0.0.0.0:2021>2021/tcp vsftpd
Este ejemplo usa las siguientes opciones: d:
ejecuta el contenedor en modo separado, por lo que el servicio vsftpd se ejecuta en el
fondo.
p: los puertos FTP estándar (TCP 20 y TCP 21) se asignan a los mismos números de puerto
en las interfaces de red del host, por lo que se puede acceder al servicio fuera del host
local. También se abre una gama de puertos necesarios para FTP pasivo a sus
contrapartes en el host (2110021110).
rm: aunque no se incluye en este ejemplo, agregar rm a la línea de comando
quitará el contenedor cuando salga.
v: para usar los archivos de configuración (directorio /etc/vsftpd) y el contenido que desea
compartir (directorio /var/ftp) desde el sistema host, esos directorios se enlazan en las
mismas ubicaciones en el contenedor con la opción v.
name: establezca el nombre del contenedor en vsftpd (o cualquier nombre que desee).
700
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
Tenga en cuenta que puede vincular el contenido y los puertos del contenedor a otras ubicaciones en el host.
De esa forma, puede tener varias versiones del mismo software ejecutándose en el mismo host sin que entren
en conflicto.
Para que su servicio vsftpd sea accesible fuera del sistema local, asegúrese de abrir los puertos FTP y los
puertos FTP pasivos que acaba de asignar de la siguiente manera:
26
# firewallcmd zone=público addservice=ftp # firewallcmd zone=público \
permanente añadirservicio=ftp
# firewallcmd zone=público \
añadirpuerto=2110021110/tcp
# firewallcmd zone=public \ permanent add
port=2110021110/tcp # firewallcmd recargar
Ahora puede usar cualquier cliente FTP para acceder al servicio FTP a través del usuario anónimo. Para
,dservidor
configurar más su servicio vsftpd y comprobar que funciona, consulte el Capítulo 18 “Configuración e un
FTP”.
Inicio y detención de contenedores A menos que
establezca específicamente que un contenedor se elimine cuando se detenga (opción rm), si el
contenedor se detiene, se pone en pausa o simplemente falla, el contenedor todavía está en su sistema.
Puede ver el estado de todos los contenedores en su sistema (actualmente en ejecución o no) usando la opción ps:
#podman pd
IMAGEN DE IDENTIFICACIÓN DEL CONTENEDOR DOMINIO CREADO
ESTADO PUERTOS NOMBRES
4d6be3e63fe3 localhost/vsftpd:latest /usr/local/s2... Hace aproximadamente una hora Arriba Hace
aproximadamente una hora 0.0.0.0:2021>2021/tcp vsftpd # podman ps a IMAGEN DE ID DE CONTENEDOR
DOMINIO CREADO
ESTADO PUERTOS NOMBRES
Solo se muestran contenedores en ejecución con podman ps. Al agregar a, puede ver todos los
contenedores, incluidos aquellos que ya no se están ejecutando pero que aún no se han eliminado. Puede
reiniciar un contenedor existente que ya no se está ejecutando utilizando la opción de inicio:
# comienzo podman a 7da88bd62667
[root@7da88bd62667 /]#
701
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
El contenedor reiniciado estaba ejecutando un shell bash. Debido a que la sesión de terminal del contenedor ya existía,
no necesitaba iniciar una nueva
(it).
se Solo
estaba necesitaba
ejecutando adjuntar
en modo s(eparado,
a) a la sesión
existente.
simplemente Para
puedo un contenedor
iniciarlo que según
y detenerlo olo
sea necesario:
#podman parada 4d6be3e63fe3
4d6be3e63fe3...
# iniciar podman 4d6be3e63fe3
4d6be3e63fe3
Tenga en cuenta que si el contenedor se hubiera iniciado con la opción rm, el contenedor se eliminaría tan pronto
como lo detuviera. Por lo tanto, tendría que ejecutar un nuevo contenedor en lugar de simplemente reiniciar el anterior.
Debido a que los archivos de configuración y los datos se almacenan fuera del contenedor, ejecutar un nuevo
contenedor es fácil y sencillo. Actualizar la aplicación en el futuro es tan fácil como eliminar el contenedor antiguo e
iniciar uno desde la imagen del contenedor actualizado.
Creación de una imagen de contenedor Para
crear una imagen de contenedor, todo lo que necesita es un archivo Docker que describa cómo crear la imagen y
cualquier otro contenido que desee incluir con la imagen. Los siguientes procedimientos describen cómo crear un
contenedor simple a partir de su propio archivo Docker y cómo obtener el software que necesita para crear un servicio
vsftpd en un contenedor a partir del software disponible en GitHub.
Crear una imagen de contenedor simple
Este procedimiento crea un contenedor simple a partir de un archivo Docker. En este proceso, crea un archivo
Docker y un script simple, luego construye ese contenido en una nueva imagen de contenedor.
1. Cree un directorio para contener su proyecto de contenedor y luego ingrese ese directorio:
# mkdir miproyecto # cd
miproyecto
2. Cree un script llamado cworks.sh en el directorio actual que contiene lo siguiente
texto de bajada:
#!/bin/bash set
o errexit
conjunto o sustantivo
set o pipefail echo
"¡Este contenedor funciona!"
3. Cree un archivo llamado Dockerfile en el directorio actual que contenga lo siguiente
contenido de entrada:
DESDE registro.access.redhat.com/ubi7/ubiminimal COPIAR ./
cworks.sh /usr/local/bin/CMD ["/usr/local/bin/cworks.sh"]
702
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
4. Cree una imagen de contenedor llamada myproject a partir del archivo Docker:
# podman build t miproyecto .
PASO 1: DESDE Registry.access.redhat.com/ubi7/ubiminimal PASO 2: COPIAR ./
cworks.sh /usr/local/bin/ 6382dfd00f7bedf1a64c033515a09eff37cbc6d1244cbeb4f4533ad9f00aa970
PASO 3: CMD ["/usr/local/bin/cworks.sh "] 26
PASO 4: COMPROMETER myproject
6837ec3a37a241...
5. Ejecute el contenedor para asegurarse de que funciona. Para hacer eso, puede usar el con
nombre del contenedor (myproject) o su ID de imagen (6837ec3a37a241):
# podman run 6837ec3a37a241 ¡El
contenedor funciona!
Cree un contenedor FTP desde GitHub
El siguiente procedimiento describe cómo obtener el software que necesita para compilar un servicio
vsftpd en un contenedor desde el software disponible en GitHub. Luego le muestra cómo construir y
ejecutar ese contenedor.
1. Si aún no lo tiene, instale git en su sistema local:
# yum instalar git y
2. Para este ejemplo, comenzamos con el proyecto de imágenes de contenedores vsftpd en
GitHub. Clone una copia de ese software en un directorio local de la siguiente manera:
# git clone https://
github.com/containerimages/vsftpd.git # cd vsftpd # ls defaultconf/
Dockerfile LICENSE Makefile README.md root/ tests/
s2i/
3. Modifique los archivos según sea necesario. En particular, vaya a Dockerfi le y use el
última imagen de Fedora disponible. Omitir la etiqueta : al final del nombre de la imagen indica
que busque la versión de esa imagen que incluye la etiqueta :latest, que es una etiqueta especial
que identifica la última versión disponible de esa imagen. Por ejemplo, modifique la línea FROM
al principio para que quede de la siguiente manera:
DESDE registro.fedoraproject.org/fedora
4. Desde el directorio vsftpd, use los comandos docker o podman para crear la imagen del contenedor.
Por ejemplo:
# podman construir t vsftpd .
PASO 1: DESDE Registry.fedoraproject.org/fedora:31 Obtener firmas de
origen de imagen Copiando blob c0a89efa8873 hecho Copiando configuración
aaaa3e1d6a hecho
703
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Escritura de manifiesto en destino de imagen Almacenamiento
de firmas PASO 2: ENV SUMMARY="Very Secure Ftp
Daemon" ...
PASO 3: MANTENEDOR DE LA ETIQUETA="Dominika Hodovska <dhodovsk@redhat.com>"
...
PASO 4: EJECUTAR dnf install y vsftpd && dnf clean all && mkdir /home/vsftpd
...
Instalando:
vsftpd x86_64 3.0.332.fc31 fedora 164k
...
¡Completo!
99931652dceacc2e9...
PASO 5: VOLUMEN /var/log/vsftpd
b79b229d09f726356...
PASO 6: EXPONER 20 21
b0af5428800140104...
PASO 7: EJECUTAR mkdir p ${APP_DATA}/src
b3652e0d07e35af79...
PASO 8: WORKDIR ${APP_DATA}/src
f9d96dee640c5cedc...
PASO 9: COPIAR ./s2i/bin/ /usr/local/s2i ded9b512693ccabaa...
PASO 10: COPIAR defaultconf/vsftpd.conf /etc/vsftpd/vsftpd.conf 0c48af8d4f72b76c7...
PASO 11: CMD ["/usr/local/s2i/run"]
PASO 12: COMPROMETER vsftpd
aa0274872f23ae94dfee...
5. Comprueba que se haya creado la nueva imagen:
# imágenes subman
REPOSITORIO ETIQUETA ID DE IMAGEN CREADO TAMAÑO
localhost/vsftpd último aa0274872f23 Hace 4 minutos 607 MB
Este proceso de construcción constaba de 12 pasos. La línea FROM en el primer paso extrae la imagen
de Fedora del registro del contenedor Registry.fedoraproject.org. Cada paso subsiguiente ejecuta un
comando. Si se agrega contenido durante el comando, se crea una nueva capa para la imagen. Los
pasos 2 y 3 establecen variables de entorno y etiquetas que se usan durante la compilación, así como
para identificar los atributos de la imagen del contenedor cuando se usa más adelante.
El paso 4 ejecuta el comando dnf que instala el paquete vsftpd desde los repositorios de Fedora yum en
el contenedor. Observe que la instrucción RUN tiene tanto dnf install como dnf clean en la misma instrucción.
Esta es una buena práctica, ya que evita que se incluya con la imagen una capa adicional de datos dnf
almacenados en caché.
El paso 5 identifica el volumen utilizado para almacenar archivos de registro de vsftpd. El paso 6 expone
el puerto TCP 20 y TCP 21 para el servicio FTP. Tenga en cuenta que, aunque los puertos están expuestos
(lo que significa que se pueden ver desde fuera del contenedor), aún deberán asignarse a puertos de host.
704
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
cuando ejecute el contenedor más tarde, si desea que esos puertos estén disponibles fuera del sistema local.
Los pasos 7 y 8 crean un directorio y lo configuran como directorio de trabajo para la aplicación. El paso 9 copia los
scripts de fuente a imagen (s2i) en el contenedor para ejecutar el servicio vsftpd. El paso 10 copia un archivo de
configuración vsftpd.conf predeterminado en el contenedor.
26
La instrucción CMD en el Paso 11 establece /usr/local/s2i/run como el comando predeterminado para ejecutar si
el contenedor se ejecuta sin anular ese comando. El paso 12 envía la imagen vsftpd fi nal al almacenamiento local (que
puede ver escribiendo podman images).
Para obtener más información sobre la creación y el uso de un archivo Docker para crear imágenes de contenedores,
consulte la Referencia de archivo Docker (https://docs.docker.com/engine/reference/builder/).
Para obtener más información sobre las opciones para crear imágenes de contenedores, consulte las páginas man de
podman (man podman build).
Etiquetado y envío de una imagen a un registro Hasta ahora, he mostrado
un ejemplo de cómo crear una imagen de contenedor y ejecutarla en su sistema local. Para que su imagen esté
disponible para otras personas en otros sistemas, normalmente agrega esa imagen a un registro de contenedor. Siga
estas instrucciones para etiquetar una imagen en su sistema local y enviarla a un registro de contenedor remoto.
Para probar un registro simple en su sistema local, instale el paquete dockerdistribution en un sistema Fedora o
RHEL 7. Para una solución más permanente, puede obtener cuentas en registros de contenedores públicos como
Quay.io y Docker Hub. Tanto las pruebas gratuitas como las suscripciones están disponibles en Quay.io (https://
quay.io/plans/). También puede configurar y ejecutar su propio registro de contenedores compatible, como Red Hat
Quay (https://www.openshift.com/products/quay).
Para comenzar, el siguiente procedimiento le permite instalar el paquete de distribución de docker en el sistema local
y luego etiquetarlo y enviarle una imagen:
1. Instale la distribución de la ventana acoplable: en un sistema RHEL 7 o Fedora reciente, instale e inicie la
distribución de la ventana acoplable:
# yum install dockerdistribution y # systemctl start
dockerdistribution # systemctl enable docker
distribution # systemctl status dockerdistribution •docker
distribution.servicev2 Servidor de registro para Docker
cargado: cargado
(/usr/lib/systemd/system/dockerdistribution.service; habilitado; presión del
proveedor> Activo: activo (en ejecución) desde el miércoles 01012020...
2. Abra el puerto de registro: para poder enviar y extraer imágenes de contenedores de otros
host, necesita abrir el puerto TCP 5000 en el cortafuegos:
# cortafuegoscmd zone=público
añadirpuerto=5000/tcp permanente
705
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
3. Etiquete la imagen: al etiquetar una imagen local, identifica la ubicación del registro
donde se almacenará la imagen. Reemplace la identificación de la imagen y host.example.com con
su identificación de imagen y nombre de host o dirección IP para etiquetar la imagen: # podman
images | grep vsftpd localhost/vsftpd más reciente aa0274872f23 Hace 2 horas 607 MB # etiqueta
podman aa0274872f23 host.example.com:5000/myvsftpd:v1.0
4. Empuje la imagen: Empuje la imagen al registro local (sustituya su nombre de host o dirección IP).
Desactive tlsverify, porque dockerregistry usa el protocolo http:
# podman push tlsverify=false
host.example.com:5000/myvsftpd:v1.0
5. Extraiga la imagen: para asegurarse de que la imagen esté disponible en su registro, intente
extraer la imagen. Elimine la imagen de su sistema local o vaya a otro host para probar esto:
# podman pull tlsverify=falso \
host.ejemplo.com:5000/myvsftpd:v1.0
En este punto, debería poder compartir sus imágenes con otros desde su registro.
Si estuviera utilizando un registro público, que es una mejor solución para compartir imágenes con un
público más amplio, el procedimiento para empujar y extraer imágenes sería el siguiente.
# podman login quay.io Nombre
de usuario: myownusername
Contraseña: ***************
# podman tag aa0274872f23 \ quay.io/
myownusername/myvsftpd:v1.0 # podman push
quay.io/myownusername/myvsftpd:v1.0
Uso de contenedores en la empresa Aunque el
proyecto Docker logró grandes avances en la simplificación de cómo se pueden usar los contenedores
individuales, fue el proyecto Kubernetes el que ayudó a impulsar los contenedores de Linux en la
empresa. Si bien las herramientas de línea de comandos como docker y podman son buenas para
administrar contenedores individuales, Kubernetes ofrece una plataforma para implementar aplicaciones
grandes y complejas en enormes centros de datos. Consulte aplicaciones
el Capítulo 3c0,
omo
"Implementación
contenedores dce
on
Kubernetes", para obtener información sobre cómo usar Kubernetes para implementar y administrar
aplicaciones en contenedores en la empresa.
Resumen
Las aplicaciones en contenedores han experimentado una adopción generalizada en los últimos años.
El proyecto Docker fue un gran contribuyente a la simplificación de contenedores individuales
706
Machine Translated by Google
Capítulo 26: Cambio a nubes y contenedores
aplicaciones y ejecutarlas en sistemas individuales. Herramientas como podman también estuvieron disponibles para
implementar y administrar contenedores individuales en sistemas Linux.
Este capítulo describió cómo extraer, ejecutar, compilar y administrar contenedores mediante herramientas de
línea de comandos como docker y podman. Puede usar este conocimiento como base para comprender cómo funciona
la creación de contenedores y cómo se aplican esos conceptos más adelante en el Capítulo 30, ya que describe cómo
26
, administrar aplicaciones en contenedores en toda una empresa.
Kubernetes puede
Ejercicios
Los ejercicios de esta sección describen tareas relacionadas con el trabajo con contenedores. Si está atascado, las
soluciones a las tareas se muestran en el Apéndice B. Tenga en cuenta que las soluciones que se muestran en el
Apéndice B suelen ser solo una de las múltiples formas de completar una tarea.
1. Elija podman (para cualquier sistema RHEL o Fedora) o docker (RHEL 7), instale el paquete de software que
contiene la herramienta de su elección e inicie los servicios necesarios para usar esos comandos.
2. Usando docker o podman, extraiga esta imagen a su host: registration.access.redhat.com/
ubi7/ubi.
3. Ejecute la imagen ubi7/ubi para abrir un shell bash.
4. Con el shell bash abierto dentro de un contenedor, ejecute algunos comandos para ver el
sistema operativo en el que se basa el contenedor, instale el paquete procps, ejecute un comando para
ver los procesos que se ejecutan dentro del contenedor y luego salga.
5. Reinicie el contenedor nuevamente y conéctese a él mediante un shell interactivo. Salir de la
shell cuando haya terminado.
6. Cree un archivo Docker simple a partir de una imagen base de ubi7/ubi, incluya un script llamado
cworks.sh que usa echo para generar la cadena "The Container Works!" y agregue ese script a la imagen
para que se ejecute como el comando predeterminado.
7. Use docker o podman para construir una imagen llamada containerworks desde el
Archivo Docker que acaba de crear.
8. Obtenga acceso a un registro de contenedores, ya sea instalando el paquete de distribución de docker u
obteniendo una cuenta en Quay.io o Docker Hub.
9. Etiquete y envíe su nueva imagen al registro de contenedores elegido.
707
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Usando Linux para Cloud Com
EN ESTE CAPÍTULO
Cómo se usa Linux en las nubes
Comprender la tecnología básica de la nube
Configuración de un hipervisor
Creación de máquinas virtuales
hardware. Cuando necesitaba memoria, almacenamiento, potencia de procesamiento o interfaces de red,
Los sistemas operativos
el sistema de computadora
operativo fueron originalmente
de una computadora diseñados
buscaba RAM fpísica,
ara ser
instalados
discos directamente
duros, en la computadora.
CPU y tarjetas de interfaz
de red. Cuando necesitaba más de esas cosas de las que estaban instaladas físicamente, apagaba la máquina y
las agregaba físicamente a la computadora. Hoy en día, la virtualización de estos elementos es lo que hace posible
la computación en la nube.
La virtualización, en lo que se refiere a las computadoras, es el acto de hacer que los recursos informáticos que
fueron originalmente diseñados como objetos físicos sean representados por objetos virtuales. Por ejemplo, un
sistema operativo virtual (denominado máquina virtual) una
no sme
áquina
comunica
virtual
directamente
(VM) interactúa
con ecl on
hardware.
una computadora
En su lugar,
host
especialmente configurada denominada hipervisor.
Entonces, en lugar de poder ejecutar un sistema operativo en una computadora física, podría ejecutar docenas o
incluso cientos de máquinas virtuales en una sola computadora física.
Las ventajas que se obtienen al ejecutar máquinas virtuales son enormes. No solo puede tener varios sistemas
operativos ejecutándose en la misma computadora, sino que esos sistemas pueden ser diferentes: Linux, BSD, Windows
'
hardware
o cualquier otro sistema hecho para ejecutarse en la computadora. Si n
Para mecesita
apagar
peuede
antenimiento, l host
mcigrar
om las máquinas
virtuales en ejecución a otro hipervisor con una cantidad imperceptible de tiempo de inactividad.
Para admitir máquinas virtuales en varios hipervisores, también puede virtualizar las funciones de las que
dependen. Por ejemplo, las redes virtuales y el almacenamiento virtual pueden abarcar varios hipervisores, por lo que
si una máquina virtual necesita trasladarse a otro hipervisor, las mismas redes virtuales y almacenamiento estarán
disponibles para una máquina virtual recién migrada.
No necesita construir un centro de datos completo para comenzar a comprender la virtualización y usar algunas
de las tecnologías subyacentes que hacen posible la computación en la nube. Este capítulo comienza por
709
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
ayudándolo a configurar una computadora host para que se ejecute como un hipervisor, comience a ejecutar máquinas
virtuales en ese hipervisor y luego aprenda cómo migrar máquinas virtuales a otros hipervisores (para evitar el tiempo de
inactividad o simplemente para aumentar su capacidad).
Descripción general de Linux y la computación en la nube
La computación en la nube nos traslada a un campo en el que todo lo que aprendió anteriormente en este libro
se abstrae y automatiza. En un entorno de nube, cuando instala un sistema, probablemente no esté arrancando
desde un DVD físico, borrando el disco duro local e instalando Linux directamente en una computadora que está frente
a usted. Probablemente tampoco esté iniciando sesión en el sistema instalado y configurando manualmente el software
y las funciones que desea ejecutar en ese sistema.
En su lugar, está instalando en una máquina virtual o ejecutando un contenedor que se encuentra en algún sistema
host en la nube. Es posible que las interfaces de red que ve no estén representadas por un conmutador físico, sino que
pueden ser redes virtuales que existen en una sola computadora o abarcan varios hipervisores.
Hoy en día, todos los aspectos del software de la computación en la nube se pueden cumplir utilizando tecnología de
código abierto que se ejecuta en sistemas Linux. Para tener una idea de cómo funcionan algunas de las tecnologías
básicas de la computación en la nube, este capítulo explica algunas de esas tecnologías y luego describe cómo configurar
un hipervisor y comenzar a usar máquinas virtuales en ese hipervisor.
Hipervisores en la nube (también conocidos como nodos de cómputo)
En la computación en la nube, los sistemas operativos que sirven a los usuarios de la nube no se ejecutan directamente
en el hardware de la computadora. En cambio, los hipervisores están configurados para ejecutar muchos sistemas
operativos como lo que se conoce como máquinas virtuales (VM).
Dependiendo de su entorno de nube, es posible que escuche que se hace referencia a un hipervisor como un nodo de
cómputo, un nodo de trabajo o simplemente como un host. Debido a que los hipervisores tienden a ser artículos básicos
(se pueden configurar docenas o cientos de hipervisores para una ubicación), Linux es la opción lógica como sistema
operativo que se ejecuta como hipervisores directamente en el hardware.
La máquina virtual basada en kernel (KVM) es la tecnología de virtualización básica implementada en la mayoría de
las distribuciones de Linux para convertir un sistema Linux en un hipervisor. KVM es compatible con Ubuntu, Red Hat
Enterprise Linux, Fedora, CentOS y muchos otros sistemas Linux.
La otra tecnología importante que se puede usar en lugar de KVM para convertir un sistema Linux en un hipervisor es
Xen (www.xenproject.org). Xen existe desde hace más tiempo que KVM y es compatible con productos de Citrix Systems
y Oracle.
Más adelante en este capítulo, describo cómo verificar si una computadora tiene las características de
hardware requeridas para usarse como hipervisor y cómo configurarla para usarla con KVM.
710
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
Controladores de nube Debido
a que una configuración de nube puede incluir múltiples hipervisores, grupos de almacenamiento, múltiples redes
virtuales y muchas máquinas virtuales, necesita herramientas centralizadas para administrar y monitorear esas
funciones. Puede usar herramientas gráficas y basadas en comandos para controlar los entornos de nube.
Aunque no se considera un controlador de nube completo, la interfaz gráfica de usuario de Virtual Machine
Manager (virt manager) y el comando virsh se pueden usar para administrar un entorno pequeño similar a una
nube. Con virtmanager, puede familiarizarse con la administración de varias máquinas virtuales en varios
hipervisores, y puede aprender a manejar redes virtuales y grupos de almacenamiento compartido.
Las plataformas de nube completas tienen sus propios controladores para ofrecer interacciones mucho más
complejas entre los componentes de la nube. Por ejemplo, la plataforma Red Hat OpenStack (https://
access.redhat.com/products/redhatopenstackplatform) y su proyecto RDO upstream (https://www.rdoproject.org)
27
brindan soluciones flexibles y ampliables. entornos de nube para administrar máquinas virtuales y todas las funciones
de soporte asociadas. Para Red Hat Virtualization (RHV), RHV Manager proporciona muchas de las mismas
características.
Sin embargo, si desea comenzar de manera más simple, puede comenzar usando virtmanager, la herramienta VM
Desktop, para administrar su primer entorno similar a una mini nube.
Almacenamiento en la
nube Las nuevas demandas de almacenamiento de datos surgen cuando traslada sus sistemas operativos y aplicaciones
a un entorno de nube. Para poder mover una máquina virtual para que se ejecute en otro hipervisor, su almacenamiento
debe estar disponible desde ese nuevo hipervisor. Las necesidades de almacenamiento para las nubes incluyen
almacenamiento de backend para sus máquinas virtuales, imágenes para iniciar máquinas virtuales y bases de datos
para almacenar información sobre la propia nube.
El almacenamiento compartido entre hipervisores se puede realizar simplemente creando un recurso compartido
, emontaje
NFS (consulte l Capítulo
20 “vConfiguración
entre de un
NsFS
arios hipervisores. ervidor
de d
es una ae
rchivos NFS”)
myás
las formas msontándolo en
encillas de el mismo punto de
implementar
almacenamiento compartido.
El almacenamiento compartido más robusto que puede manejar fallas de disco y brindar un mejor rendimiento
funciona mejor para las nubes que brindan servicios críticos. El almacenamiento en bloque compartido, en el que se
monta un disco completo o una partición de disco, se puede lograr mediante tecnologías como iSCSI o Fibre Channel.
Ceph (http://ceph.com) es un proyecto de código abierto para administrar el almacenamiento de objetos y bloques
que es popular para administrar el almacenamiento en entornos de nube. GlusterFS (www.glu ter.org) es un sistema
de archivos escalable que se usa a menudo en entornos de nube.
Para el ejemplo simple de mininube de este capítulo, utilicé NFS para proporcionar almacenamiento compartido
entre los hipervisores. Ceph y GlusterFS son más apropiados para instalaciones de calidad empresarial.
711
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Autenticación en la nube Para
poder limitar la cantidad de recursos de la nube que un usuario puede consumir, y posiblemente rastrear
y cobrar por ese uso, necesita mecanismos de autenticación. La autenticación es necesaria para aquellos
que utilizan las funciones de la nube, así como para aquellos que tienen permiso para administrar las
funciones de la nube.
Los proyectos de plataforma en la nube a veces le permiten conectar mecanismos de autenticación
centralizados para validar y autorizar a los usuarios de la nube. Estos pueden incluir Kerberos, Microsoft Active
Directory y otros. En Linux, el software de identidad, política y auditoría (IPA) (consulte www.freeipa.org) ofrece
un conjunto completo de funciones de autenticación que se pueden usar en una plataforma de nube
empresarial.
Implementación y configuración en la nube
Si está administrando una gran infraestructura en la nube, no querrá tener que ir a cada máquina y hacer
clic en una instalación gráfica cada vez que desee agregar un hipervisor u otro nodo en su red. Hoy en día,
muchas herramientas pueden implementar y configurar sistemas Linux con tan solo reiniciar la computadora
y hacer que arranque con un instalador preconfigurado.
En el Capítulo 9, "Instalación de Linux", hablé sobre cómo usar un servidor PXE (para iniciar un instalador
de Linux automáticamente a través de la red desde su tarjeta de interfaz de red) y archivos Kickstart (para
identificar todas las respuestas que necesita para completar un instalación). Con esa configuración en su
lugar, simplemente puede iniciar una computadora desde una interfaz de red y regresar poco tiempo después
para encontrar un sistema Linux completamente instalado.
Después de implementar una computadora, los sistemas pueden configurarse y posiblemente
monitorearse y actualizarse usando herramientas como Puppet (http://puppetlabs.com) y Chef (www.chef.io).
Se pueden implementar entornos de trabajo completos en máquinas virtuales utilizando Vagrant (www.vag
rantup.com). Ansible (www.ansible.com) es otra herramienta para automatizar las infraestructuras de TI y las
aplicaciones que se ejecutan en ellas.
Plataformas en la nube
Si desea implementar su propia nube privada dentro de su organización, la plataforma OpenStack de
código abierto es probablemente la opción más popular. Ofrece una gran cantidad de fl exibilidad y poder
en la forma de configurarlo y usarlo.
Red Hat Virtualization (RHV) es otra plataforma de nube popular. RHV facilita comenzar con un
administrador de RHV simple y uno o dos hipervisores para ejecutar las máquinas virtuales que administra
y luego hacer crecer su propia plataforma en la nube agregando más hipervisores, grupos de
almacenamiento y otras características.
Si desea utilizar nubes públicas basadas en tecnología de código abierto para ejecutar los sistemas
operativos que necesita, puede utilizar cualquiera de los diferentes proveedores de nube. Los proveedores
de nube pública que puede usar para ejecutar máquinas virtuales Linux incluyen Amazon Web Services
(www.amazon.com/aws), Google Cloud Platform (https://cloud.google.com) y Rackspace (www.rackspace.com).
El Capítulo 28, "Implementación de Linux
proveedores
en la nube",
de ncube.
ubre cómo implementar Linux en algunos de estos
712
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
Probar la tecnología básica de la nube
Para ayudarlo a comprender la tecnología de nube desde cero, esta sección ilustra algunos de los componentes
básicos de una infraestructura de nube moderna. Usando tres computadoras, lo ayudaré a crear una configuración
que
incluya lo siguiente:
Hipervisores Un hipervisor es un componente de software que le permite ejecutar otros mul
tiple sistemas informáticos en él. Esos otros sistemas se denominan máquinas virtuales (VM). Una
infraestructura de nube puede tener docenas o cientos de hipervisores en ejecución, posiblemente
ejecutando miles de máquinas virtuales.
Máquinas virtuales Las máquinas virtuales que ejecuta en un hipervisor Linux pueden ser
el mismo tipo de sistema Linux, un sistema Linux diferente, un sistema Windows o cualquier otro tipo de
sistema que sea compatible con el hardware en el que se ejecuta el hipervisor. Por lo tanto, las máquinas
virtuales que se ejecutan en los hipervisores que construiremos aquí podrían incluir Fedora, Ubuntu, RHEL, 27
CentOS, Microsoft Windows y otras.
Almacenamiento compartido Para ofrecer la mayor fl exibilidad, el almacenamiento que los hipervisores
ponen a disposición de las máquinas virtuales a menudo se comparte entre un conjunto de hipervisores.
Esto permite que un conjunto de hipervisores comparta un conjunto de imágenes que utilizan para
instalar o iniciar máquinas virtuales. También permite que el mismo conjunto de máquinas virtuales se
ejecute en cualquier hipervisor de ese grupo e incluso se mueva a un hipervisor diferente sin apagar la
máquina virtual. Mover máquinas virtuales en ejecución puede ser útil si un hipervisor se sobrecarga o si
es necesario apagarlo para realizar tareas de mantenimiento.
La configuración que construimos en el siguiente procedimiento le permite trabajar con máquinas virtuales de estas maneras:
■ Instalación de una nueva VM en un hipervisor
■ Configuración de funciones en sus VM ■ Inicio
de sesión y uso de una VM que se ejecuta en un hipervisor ■ Migración
de VM en ejecución a otro hipervisor
Exploraremos las siguientes tecnologías:
Máquina virtual basada en kernel (KVM) KVM es la tecnología de kernel básica que permite que las
máquinas virtuales interactúen con el kernel de Linux.
Emulador de procesador QEMU Se ejecuta un proceso qemu para cada máquina virtual activa en el sistema.
QEMU proporciona funciones que hacen que parezca que cada máquina virtual se está ejecutando en
hardware físico.
Libvirt Service Daemon (libvirtd) Un único servicio libvirtd se ejecuta en cada
hipervisor El demonio libvirtd escucha solicitudes para iniciar, detener, pausar y administrar máquinas
virtuales en un hipervisor. Esas solicitudes pueden provenir de una aplicación diseñada para administrar
máquinas virtuales (como virtmanager o OpenStack Dashboard) o de una aplicación que usted crea para
comunicarse directamente con la interfaz de programación de aplicaciones libvirt.
713
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Administrador de máquinas virtuales El Administrador de máquinas virtuales (comando virtmanager) es
una herramienta GUI para administrar máquinas virtuales. Además de permitirle solicitar iniciar y
detener máquinas virtuales, virtmanager le permite instalar, configurar y administrar máquinas
virtuales de diferentes maneras. Puede usar el comando virsh para pasar opciones a la línea de
comandos para trabajar con máquinas virtuales en lugar de hacer clic en una ventana GUI.
Visor de virtualización El comando virtviewer abre una ventana de consola de máquina virtual en
su escritorio. La ventana que aparece le permite trabajar desde una ventana de consola a un
escritorio o una interfaz de línea de comandos a la máquina virtual seleccionada (dependiendo de
lo que esa VM tenga para ofrecer). Lo que esto significa es que alguien que consuma su PaaS
podría agrupar su propio sistema operativo, aplicación, archivos de configuración y datos e
implementarlos. Confiarían en su PaaS para proporcionar la potencia informática, el almacenamiento,
la memoria, las interfaces de red y las funciones de gestión necesarias para ejecutar las máquinas
virtuales que contienen sus aplicaciones.
La siguiente sección le ofrece una primera muestra de algunas de las tecnologías fundamentales de las
nubes de Linux. Describe cómo configurar una nube pequeña configurando sus propios hipervisores,
máquinas virtuales y almacenamiento virtual.
Configuración de una nube pequeña
Con tres máquinas físicas conectadas entre sí en una red, puede ilustrar algunos de los conceptos
básicos que necesita para comprender cómo construir su propia nube.
Las tres computadoras que ejecutan Fedora 30 y la red que las conecta están configuradas de la siguiente
manera:
Redes Se instaló una red cableada de alta velocidad para conectar las tres computadoras.
Las conexiones de red rápidas son críticas para una migración exitosa de VM. En este ejemplo,
cada hipervisor también tiene un puente de red configurado para que cada máquina virtual pueda
obtener una dirección IP directamente de un servicio DHCP en la red.
Hipervisores Dos de las computadoras están configuradas como hipervisores. Un hipervisor (a veces
denominado host o nodo de cómputo) le permite ejecutar máquinas virtuales.
En Fedora 30, la tecnología básica de hipervisor se denomina Máquina virtual basada en kernel
(KVM), mientras que las máquinas virtuales reales son administradas por el servicio libvirtd.
Almacenamiento Una computadora está configurada para ofrecer almacenamiento compartido entre
los dos hipervisores. Para simplificar, se usa NFS para crear el almacenamiento compartido, aunque
en un entorno de producción, iSCSI o Fibre Channel serían mejores soluciones.
NOTA
Para fines de prueba, puede usar uno de los dos hipervisores para proporcionar el almacenamiento compartido. Sin embargo, uno
de los propósitos principales de configurar dos hipervisores y almacenamiento compartido separado es poder apagar cualquier
hipervisor y aún así tener todas sus máquinas virtuales funcionando normalmente. Si tiene almacenamiento compartido disponible
desde uno de los hipervisores, nunca podría desactivar ese hipervisor sin apagar todas las máquinas virtuales que usan ese
almacenamiento.
714
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
Configuración de hipervisores
En el siguiente procedimiento, instalé Fedora 30 en dos computadoras físicas y las
configuré como hosts KVM que ejecutan el servicio libvirtd. Siga estos pasos para lograr
esto por sí mismo.
Paso 1: Obtenga el software de Linux
Vaya a la página Obtener Fedora (https://getfedora.org) y descargue Fedora 30. Elegí descargar el DVD ISO de la edición
Workstation de 64 bits de Fedora 30. Si hay una versión posterior de Fedora disponible, probablemente podría usarla en su
lugar.
Utilice cualquier aplicación de grabación de DVD disponible para grabar la imagen en un DVD o, de lo contrario, haga que la
imagen esté disponible para su instalación (como mediante el arranque PXE).
Paso 2: Verifique sus computadoras Las 27
computadoras que usa como hipervisores en Fedora 30 deben cumplir con algunos requisitos. Debe verificar lo siguiente en
su computadora antes de comenzar la instalación:
Soporta virtualización. Puede verificar el soporte de virtualización mirando el
Banderas configuradas en la CPU.
Memoria. La computadora debe tener suficiente RAM no solo para ejecutar el sistema operativo host, sino también
para cada máquina virtual que espera ejecutar en el sistema.
Poder de procesamiento. Tenga en cuenta que cada máquina virtual consume potencia de procesamiento
para sí mismo y para cualquier aplicación que se ejecute dentro de la máquina virtual.
El almacenamiento es otra consideración. Sin embargo, debido a que tenemos la intención de configurar el almacenamiento
desde un nodo separado en la red, abordaremos ese problema más adelante.
Para verificar que las características disponibles de sus computadoras cumplan con los requisitos, inicie un Linux
Live CD o DVD, abra una ventana de Terminal y escriba los siguientes comandos:
# gato /proc/cpuinfo | grep color E "vmx|svm|lm"
banderas: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm
constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperqf pni
d pclmultess4c monitor vq dmx_s6c es...
...
Ejecutar el comando anterior muestra que esta computadora es una computadora de 64 bits (lm) y que un chip Intel admite
funciones de virtualización (vmx). Si la CPU fuera un chip AMD compatible con la virtualización, en lugar de vmx, vería svm
resaltado. Esas configuraciones muestran que esta computadora se puede usar como un hipervisor.
Cuando comienza a ejecutar máquinas virtuales en un host, la memoria suele ser el cuello de botella. Para los
requisitos de memoria, debe agregar lo que necesita el host a lo que necesite para cada máquina virtual.
715
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Puede reducir los requisitos de memoria si no tiene instalado el software de escritorio, como hacen la
mayoría de los hipervisores. En este caso, sin embargo, realicé una instalación de Fedora Workstation, que
viene con una computadora de escritorio. Para verificar la memoria y el intercambio en la computadora,
ingresé lo siguiente:
# libre m
total usado gratis beneficio/caché compartido disponible
Memoria: 15318 4182 6331 1047 4805 9678
Intercambio: 7743 0 7743
Este sistema tiene alrededor de 16 Gb de RAM y 8 Gb de intercambio. Estimo que 4Gb es bueno para un sistema
de escritorio. Si permito 1 Gb o 2 Gb para cada VM, este sistema debería poder ejecutar de 6 a 12 VM junto con
el escritorio. Verifique los requisitos de memoria para los sistemas operativos y las aplicaciones que planea
ejecutar para determinar sus necesidades particulares de memoria.
Para verificar la cantidad y los tipos de procesadores en su computadora, ingrese lo siguiente:
# procesador grep /proc/cpuinfo
procesador : 0
...
procesador : 6
procesador : 7 #
head /proc/cpuinfo procesador :
0 id_vendedor : GenuineIntel
cpu family : 6
modelo : 60
nombre del modelo: Intel(R) Core(TM) i74800MQ CPU a 2,70 GHz paso a paso: 3
cpu MHz tamaño de caché: 6144 KB
: 2701.000
...
El primer comando del código anterior muestra que hay ocho (0 a 7) procesadores en la computadora. El
segundo comando para el primer procesador muestra que es Genuin eIntel, el número de modelo, el nombre
del modelo, la velocidad de la CPU y otra información.
Para realizar una migración de VM en vivo entre los dos hipervisores, las CPU deben ser de la misma familia.
Si no tienen CPU compatibles,
desde el almacenamiento
puede migrar ucna
ompartido
máquina
en
virtual
el otro.
apagándola en un hipervisor e iniciándola
Una vez que haya dimensionado las dos computadoras con hipervisor, comience a instalar Fedora en ellas.
Paso 3: Instale Linux en los hipervisores
Utilizando los medios de instalación de Fedora 30 Workstation, comience a instalar los dos hipervisores.
Siga las descripciones en el Capítulo 9, “Instalación de Linux”, para instalar Fedora. Debe saber lo siguiente, que
es específi co de la instalación para este procedimiento:
716
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
Asigne un nombre a los hipervisores. Establecí los nombres de host en los hipervisores en
host1.example .com y host2.example.com.
Particionamiento Al particionar, borro todo el disco duro. Luego creo una partición de arranque de
500 Mb y una partición de intercambio de 12 Gb, y asigno el resto del espacio en disco a la
partición raíz (/). El directorio /var/lib/libvirt/images contiene la mayoría de los datos de este
sistema, pero es un directorio compartido, disponible desde otro sistema en la red y compartido
entre los dos hipervisores. (Más sobre eso más adelante).
Redes Si se le da la opción, active las interfaces de red por cable para cada hipervisor. Los
hipervisores y el almacenamiento deben estar todos en la misma red local, porque la velocidad
de su conexión de red entre esas máquinas es fundamental para obtener un buen rendimiento.
Paquetes de software Durante la instalación, instalo solo los paquetes predeterminados de Fedora 27
Workstation. Una vez completada la instalación y reiniciado el sistema, instalo más software
necesario para cada hipervisor.
Reinicie la computadora cuando finalice la instalación (expulsando el DVD y arrancando en el disco
duro). Después de reiniciar el sistema, actualice el software Fedora, agregue nuevos paquetes y reinicie
el sistema nuevamente de la siguiente manera:
# yum actualizar y #
yum instalar virtmanager libvirtdaemonconfignetwork # reiniciar
El paquete virtmanager contiene la herramienta GUI para administrar sus máquinas virtuales.
El paquete libvirtdaemonconfignetwork crea la interfaz de red predeterminada que permite que las
máquinas virtuales accedan a redes externas (a través del host) mediante la traducción de direcciones
de red (NAT). El intervalo de direcciones predeterminado asignado a las máquinas virtuales es de
192.168.122.2 a 192.168.122.254.
Otros paquetes que necesitará ya deberían estar incluidos con la instalación de Fedora Workstation. Si
realizó un tipo de instalación diferente, asegúrese de que también haya agregado los siguientes
paquetes:
■ libvirtclient (para el comando virsh) ■ libvirtdaemon
(para obtener el servicio libvirtd)
Paso 4: Iniciar servicios en los hipervisores
Debe asegurarse de que el servicio libvirtd se esté ejecutando en ambos hipervisores. Inicie también
el servicio sshd. Es posible que ya se estén ejecutando, pero solo para asegurarse, haga lo siguiente
como root en ambos hipervisores:
# systemctl iniciar sshd.servicio # systemctl
habilitar sshd.servicio # systemctl iniciar
libvirtd.servicio # systemctl habilitar libvirtd.servicio
717
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
El servicio sshd le permite iniciar sesión en los hipervisores a través de la red, si es necesario. El servicio libvirtd es con
el que quizás no esté familiarizado. Está escuchando solicitudes para administrar sus máquinas virtuales en cada host.
Paso 5: Edite /etc/hosts, o configure DNS Para
que la comunicación entre los hipervisores y el sistema de almacenamiento sea conveniente, debe asignar nombres
de host a cada sistema y asignar esos nombres a direcciones IP. Configurar un servidor DNS al que apunten todos los
sistemas es probablemente la mejor manera de hacerlo. Sin embargo, para nuestro ejemplo simple, puede simplemente
editar el archivo /etc/hosts en cada sistema y agregar entradas para cada host.
Este es un ejemplo de cómo podrían verse las entradas adicionales en su archivo /etc/hosts para los tres sistemas
utilizados en este procedimiento:
192.168.0.138 host1.example.com host1 192.168.0.139
host2.example.com host2 almacenamiento.example.com
almacenamiento 192.168.0.1
A continuación, debe configurar el almacenamiento.
Configuración del almacenamiento
Puede proporcionar almacenamiento en red a los hipervisores para este procedimiento de muchas maneras. Elegí
configurar un sistema Fedora separado en la misma red local que los hipervisores y usar NFS para conectar el
almacenamiento compartido a ambos hipervisores.
NFS no es el método más eficiente para compartir almacenamiento entre hipervisores, pero es uno de los más fáciles
y comunes de configurar. En este procedimiento, utilizo la herramienta GUI de Virtualization Manager (virtmanager)
para configurar el grupo de almacenamiento NFS.
En aras de la coherencia, el recurso compartido NFS configurado desde el sistema de almacenamiento es el
directorio /var/lib/libvirt/images. Está montado en el mismo lugar en cada uno de los hipervisores.
(Para las pruebas, si solo tiene dos máquinas disponibles, puede configurar el almacenamiento desde uno de los
'
hipervisores. Tenga en cuenta, sin embargo, que esto significa que puede hipervisor sin apagar tno
apagues
odas eso
sus máquinas
virtuales).
Paso 1: Instale el software de Linux
Para configurar su almacenamiento en un servidor NFS, puede usar prácticamente cualquier sistema Linux que
tenga un servicio NFS disponible. Considere estas cosas cuando instale Linux:
Espacio del disco. Asegúrese de tener suficiente espacio de almacenamiento disponible en la partición
que contiene el directorio compartido. Para este ejemplo, /var/lib/libvirt/images es el directorio compartido.
Actuación. Para obtener el mejor rendimiento, desea tener un disco que tenga tiempos de acceso rápidos
y velocidades de transferencia de datos.
718
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
Para Fedora y RHEL, el software del servidor NFS está disponible en el paquete nfsutils. Para Ubuntu, necesita
el paquete nfskernelserver. Una vez finalizada la instalación inicial, verifique que el software del servidor NFS
esté instalado. Si no es así, puede instalarlo en Fedora o RHEL con este comando:
# yum instala nfsutils
Para Ubuntu y sistemas similares, escriba esto:
# aptget install nfskernelservidor
Paso 2: configurar el recurso
compartido de NFS Para crear un recurso compartido de NFS, debe identificar el directorio para compartir y
agregar información al respecto en el archivo /etc/exports. Sigue estos pasos:
a. Crear un directorio. Puede compartir cualquier directorio que contenga el espacio que desea 27
compartir. Considere crear un nuevo directorio y montar un disco completo o una partición en él.
Para este ejemplo, creo un directorio llamado /var/storage de la siguiente manera:
# mkdir p /var/almacenamiento
b. Permitir exportar. En su sistema de almacenamiento, cree una entrada en el archivo /etc/exports para
compartir el directorio con los sistemas seleccionados (por nombre o dirección IP). Para este ejemplo,
permití el acceso de lectura y escritura (rw) a todos los sistemas en la subred 192.168.0:
/var/almacenamiento 192.168.0.*(no_root_squash,rw,sync)
Paso 3: Inicie el servicio NFS Inicie
el servicio NFS y abra el cortafuegos en el sistema de almacenamiento para permitir el acceso a ese servicio.
Así es cómo:
a. Inicie y habilite NFS. En los últimos sistemas Fedora y RHEL, ingrese lo siguiente
para iniciar el servidor NFS:
# systemctl iniciar nfsserver.service # systemctl
habilitar nfsserver.service
En RHEL 6, Fedora anterior y algunos sistemas Ubuntu, use estos comandos para iniciar y habilitar el
servicio NFS:
# servicio nfs iniciar #
chkconfig nfs en
b. Abra el cortafuegos. Para abrir los puertos del cortafuegos para que aquellos fuera del sistema local
puedan usar su NFS compartido, haga lo siguiente en Fedora 30: # firewallcmd permanent add
service=rpcbind # firewallcmd permanent addservice=nfs # systemctl reiniciar firewalld
Para sistemas que usan iptables directamente, consulte el Capítulo 20 para obtener información sobre cómo abrir
su firewall para el servicio NFS.
719
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Paso 4: monte el recurso compartido NFS en los hipervisores
Inicie sesión en cada hipervisor y siga estos pasos para que el recurso compartido esté disponible localmente.
Tenga en cuenta que la ubicación del directorio del punto de montaje en cada hipervisor debe ser la misma.
'
Aquí espectáculo:
a. Compruebe la disponibilidad de recursos compartidos de NFS. Desde cada uno de los dos hipervisores, asegúrese de
que puede ver el recurso compartido disponible ingresando lo siguiente:
# showmount e storage.example.com Lista de
exportación para storage.example.com:
/var/almacenamiento 192.168.0.*
b. Monte el recurso compartido NFS. Agregue información sobre el recurso compartido al archivo /etc/fstab.
En nuestro ejemplo, para permitir que el directorio del sistema 192.168.0.1 se monte localmente en el
mismo directorio cada vez que se inicia el sistema, la entrada en el archivo /etc/fstab podría verse así:
storage.example.com:/storage /var/lib/libvirt/images nfs predeterminados 0 0
C. Establezca el valor booleano de SELInux. Si SELinux está en modo de aplicación, configure el siguiente valor booleano para
permitir que qemukvm use el recurso compartido NFS:
# setsebool P virt_use_nfs 1
d. Pruebe el montaje NFS. Para comprobar que la entrada de montaje es correcta, ejecute el siguiente
comando para montar todas las entradas en /etc/fstab que aún no se hayan montado y compruebe que
se ha montado el recurso compartido NFS:
# montaje
a # montaje | grep libvirt
storage.example.com:/var/storage en /var/lib/libvirt/images escriba nfs4
(rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp, puerto =
0, tiempo = 600, retrans = 2, sec = sys, clientaddr = 192.168.0.1, local_lock = ninguno, addr
= 192.168.0.138)
Con sus hipervisores y almacenamiento ahora en su lugar, puede comenzar a crear sus máquinas virtuales.
Creación de máquinas virtuales Virtual
Machine Manager (virtmanager) es una buena herramienta para crear sus primeras máquinas virtuales. Le guía a
través de la instalación y configuración de máquinas virtuales, y proporciona una forma de ver y cambiar el estado
de sus máquinas virtuales existentes.
Más adelante, cuando comprenda los tipos de características que intervienen en la creación de máquinas virtuales,
puede usar el comando virtinstall para crear máquinas virtuales en su lugar. El
720
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
La ventaja de virtinstall es que puede crear secuencias de comandos o copiar y pegar fácilmente una línea
de comando para crear una máquina virtual en lugar de tener que hacer clic en una ventana GUI.
Usted descargó la imagen ISO de la estación de trabajo Fedora 30 anteriormente en este capítulo, así que la usaré
en el ejemplo para crear una máquina virtual. Sin embargo, si lo prefiere, puede instalar muchas versiones
diferentes de Linux o Windows como su máquina virtual.
Paso 1: Obtenga imágenes para crear máquinas
virtuales Puede crear una máquina virtual de muchas maneras. En general, comienza con una imagen preconstruida
(básicamente una copia de una máquina virtual en funcionamiento) o simplemente instala desde una imagen ISO
de instalación en un área de almacenamiento nueva. Aquí vamos a hacer lo último y crear una máquina virtual a
partir de la imagen ISO de instalación de Fedora 30 Workstation.
Suponiendo que haya iniciado sesión en uno de los hipervisores como raíz y que la imagen ISO esté en el
directorio actual, copie la ISO en el directorio predeterminado que utiliza virtmanager para el almacenamiento 27
( /var/lib/libvirt/images):
# cp FedoraWorkstationLivex86_64301.2.iso /var/lib/libvirt/images/
Debido a que ambos hipervisores comparten ese directorio, puede ir a cualquiera de los hipervisores para
usar esa imagen.
Paso 2: compruebe el puente de red En
cada hipervisor, debe haber un puente de red predeterminado denominado virbr0. Todas las máquinas virtuales
se agregarán a esta interfaz de red y se les asignará automáticamente una dirección IP.
Este puente predeterminado existe debido a la red virtual predeterminada de libvirtd. De manera predeterminada,
el hipervisor usa el rango de direcciones de 192.168.122.2 a 192.168.122.254 para asignar a las máquinas
virtuales. Mediante la traducción de direcciones de red (NAT), el host puede enrutar paquetes desde las máquinas
virtuales utilizando estas direcciones privadas a interfaces de red externas.
Haga lo siguiente en cada hipervisor para verificar el puente para cada uno:
# brctl mostrar virbr0
nombre del puente id del puente Interfaces habilitadas para STP
virbr0 8000.001aa0d7483e Sí vnet0
# dirección IP mostrar virbr0
5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc sin cola
estado predeterminado del grupo UP
link/ether fe:54:00:57:71:67 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1 brd
192.168.122.255 ámbito dinámica global virbr0
721
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Paso 3: Inicie el Administrador de máquinas virtuales (virtmanager)
Desde el escritorio en cualquiera de los hipervisores, haga lo siguiente para abrir Virtual Machine Manager y
conectarlo al hipervisor:
a. Inicie virtmanager. Vaya a la pantalla Actividades, escriba Virtual Machine Man
ager en el cuadro de búsqueda y presione Entrar, o escriba virtmanager desde el shell.
Escriba la contraseña de root cuando se le solicite. Debería ver la ventana del administrador de
máquinas virtuales.
b. Compruebe la conexión con el hipervisor. Desde la ventana emergente Agregar conexión, el
hipervisor (QEMU/KVM) ya debería estar configurado y la casilla de verificación Conexión
automática debería estar marcada. Haga clic en Conectar para conectarse al hipervisor local si aún
no lo ha hecho.
Paso 4: Verifique los detalles de conexión
Después de conectarse al hipervisor, configure algunos detalles de conexión. Para hacer eso, desde la ventana
de Virtual Machine Manager, haga lo siguiente:
a. Ver los detalles de la conexión. Seleccione Editar Detalles de la conexión para ver la ventana
Detalles de la conexión. Seleccione las pestañas Descripción general, Redes virtuales,
Almacenamiento e Interfaces de red para familiarizarse con la información de conexión de su
hipervisor. Por ejemplo, la pestaña Almacenamiento aparece en la Figura
438,40
27.1,
Gqb
ue
de
meuestra
spacio qlibre
ue heay
n
la ubicación utilizada de forma predeterminada para el almacenamiento por este hipervisor (directorio /
var/lib/libvirt/images).
b. Verifique que el puente de red esté disponible. Seleccione la pestaña Redes virtuales y asegúrese de
que el puente (virbr0) esté en la lista de interfaces de red disponibles.
Paso 5: Cree una nueva máquina virtual
Para crear una nueva máquina virtual desde la ventana de Virtual Machine Manager, haga lo siguiente:
a. Inicie el asistente. Para iniciar el Asistente para crear una nueva máquina virtual, seleccione Archivo
Nueva máquina virtual. Aparece la ventana Crear una nueva máquina virtual.
b. Elija el método de instalación. Se presentan cuatro formas de crear la máquina virtual. Las primeras
tres son formas de identificar la ubicación de los medios de instalación.
El cuarto le permite importar una imagen de disco existente. Para nuestro ejemplo, elija la primera
selección (Medios de instalación local) y haga clic en Reenviar.
C. Elija la ISO. Seleccione el botón Usar imagen ISO y elija Examinar. En la ventana que aparece,
seleccione o busque la estación de trabajo Fedora 3021 ISO, seleccione Elegir volumen y haga clic en
Adelante para continuar.
d. Elija la memoria y la CPU. Elija la cantidad de RAM y el número de procesos
sors disponibles para la máquina virtual y haga clic en Adelante. Sugiero al menos 1024Mb de RAM y
al menos un procesador. Usar 2048Mb de RAM, si está disponible, es mejor.
722
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
mi. Habilitar el almacenamiento. Elija la cantidad de espacio en disco que desea que contenga la VM
sumar Sugiero al menos 10 Gb para una estación de trabajo Fedora, pero probablemente podría
arreglárselas con menos. La imagen qcow2 que se crea crece hasta el tamaño que realmente consume
(hasta la cantidad asignada), por lo que la asignación excesiva de espacio no causa ningún problema hasta
que realmente intenta usar ese espacio. Establezca el modo de caché en ninguno o directsync para poder
migrar la máquina virtual más adelante. Haga clic en Adelante.
F. Revise la configuración antes de que comience la instalación. Elija el nombre para el vir
máquina real y revise las otras configuraciones para su instalación. Seleccione Personalizar la configuración
antes de la instalación para revisar más la configuración. Deje otras configuraciones en los valores
predeterminados por ahora y haga clic en Finalizar.
gramo. Revise la configuración del hardware. Si seleccionó Personalizar en la pantalla anterior, puede revisar
la configuración con más detalle. Asegúrese de que el modo de caché esté configurado en ninguno o
directsync. Cuando esté satisfecho, seleccione Comenzar instalación.
27
FIGURA 27.1
Inicie Virtual Machine Manager y verifique los detalles de conexión.
servidor local
723
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
H. Instale la máquina virtual. Se le solicitará que instale el sistema tal como lo
sería si estuviera instalando directamente en el hardware. Complete la instalación y reinicie
la máquina virtual. Si la ventana de la VM no está abierta, haga
VM dste
(en e oble
clic efn
caso, la entrada
edora1) de la
en la
ventana de virtmanager e inicie sesión. La Figura 27.2 muestra un ejemplo de la ventana de
virtmanager con la máquina virtual Fedora Workstation mostrada .
FIGURA 27.2
Abra la máquina virtual y comience a usarla.
Administrar máquinas virtuales Después
de tener una o más máquinas virtuales instaladas en un hipervisor, puede administrar cada VM de
la misma manera que administra un sistema informático instalado directamente en el hardware.
Puedes hacer lo siguiente:
■ Ver el sistema desde una consola. Haga doble clic en una VM en ejecución en la ventana
de virtman ager. Se abre una ventana de consola a la VM, lo que le permite usar la VM
724
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
tal como lo haría desde una consola física para acceder a un sistema operativo instalado directamente en el
hardware. Puede omitir virtmanager para mostrar la consola de una VM directamente con virtviewer. Por ejemplo,
para una máquina virtual denominada rhel801, escriba virtviewer rhel801.
■ Apague la máquina virtual. Haga clic con el botón derecho en la entrada de la máquina virtual y seleccione Apagar. Luego seleccione
ya sea Shut Down (para apagar correctamente) o Force Off (desconectar efectivamente).
O bien, puede seleccionar Reiniciar.
■ Inicie la máquina virtual. Si la máquina virtual está apagada actualmente, haga clic con el botón derecho en la entrada y seleccione
Ejecutar para iniciar la ejecución de la máquina virtual.
■ Eliminar la máquina virtual. Si ha terminado por completo de usar la máquina virtual, seleccione Eliminar. Se le
preguntará si también desea eliminar el almacenamiento. Desmarque la casilla si desea mantener el
almacenamiento asociado con la máquina virtual.
Ahora que se siente cómodo usando sus máquinas virtuales, puede intentar migrar una VM a otro hipervisor. 27
Migración de máquinas virtuales Ser capaz de
migrar sus máquinas virtuales entre diferentes hipervisores le brinda una gran fl exibilidad en la administración de las
cargas de trabajo de su computadora. Estas son algunas de las ventajas:
■ Mejore el rendimiento moviendo las máquinas virtuales de hipervisores sobrecargados a otros que tengan más
memoria y capacidad de CPU disponibles.
■ Realice el mantenimiento de rutina en un hipervisor mientras mantiene sus máquinas virtuales en
funcionamiento. ■ Retire las máquinas virtuales de los hipervisores infrautilizados para que pueda apagarlos y ahorrar energía.
hasta que se vuelvan a necesitar.
■ Mueva las máquinas virtuales fuera del sitio si espera cerrar un centro de datos o si espera que un huracán u otra
catástrofe golpee su centro de datos.
La migración en vivo, en particular, es valiosa si necesita trabajar para continuar en las máquinas virtuales sin interrupción. La
clave para que la migración de máquinas virtuales en vivo funcione es configurar su entorno correctamente. Asegúrese de que
las siguientes cosas estén en su lugar (tenga en cuenta que estos son los tipos de características que algo como Red Hat
Virtualization hace por usted):
■ Almacenamiento en red compartido entre los hipervisores. ■ Las mismas
interfaces de red configuradas en cada hipervisor. ■ CPU compatibles entre hipervisores.
(A menudo, un conjunto de hipervisores tienen exactamente
mismo hardware.)
■ Una conexión de red rápida entre los hipervisores y el almacenamiento. ■ Versiones iguales
o similares de software de virtualización en los hipervisores. (En nuestro caso, usamos Fedora 30 en ambos y los
instalamos de manera similar).
Con todo eso en su lugar, la migración en vivo requiere solo unos pocos pasos para ponerse en marcha.
725
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Paso 1: identificar otros hipervisores
Suponiendo que la ventana de Virtual Machine Manager todavía esté activa y ejecutándose en uno de sus
hipervisores, vaya a esa ventana y haga lo siguiente para conectarse al otro hipervisor:
a. Conéctese al hipervisor. Seleccione Archivo Agregar conexión. Debería aparecer la ventana Agregar
conexión.
b. Agrega la conexión. Seleccione la casilla de verificación Connect to Remote Host, elija SSH como método,
use el nombre de usuario root y escriba el nombre de host del otro hipervisor (por ejemplo,
host1.example.com). Cuando haga clic en Conectar, es posible que se le solicite que ingrese una
contraseña para el usuario raíz del hipervisor remoto e ingrese otra información.
posible T
que
enga
deba
en icnstalar
uenta qeue
l es
paquete opensshaskpass para que se le solicite la contraseña.
Debería aparecer una entrada para el nuevo hipervisor en la ventana de Virtual Machine Manager.
Paso 2: Migrar la máquina virtual en ejecución a otro
hipervisor Antes de poder migrar la máquina virtual a otro hipervisor, es posible que deba ajustar las
reglas de su firewall. Con las reglas predeterminadas del cortafuegos, la migración directa de libvirt fallará.
Es necesario abrir un puerto TCP aleatorio para permitir la migración. El valor predeterminado es 49152, pero se
puede elegir cualquier puerto disponible sin privilegios. La migración en túnel requiere autenticación de clave
SSH.
Con Virtual Machine Manager abierto, haga clic con el botón derecho del mouse en cualquier VM que se esté
ejecutando actualmente y seleccione Migrar. Aparece la ventana Migrar la máquina virtual, como se muestra en la
Figura 27.3:
Seleccione el nuevo anfitrión. En mi ejemplo, la máquina virtual se está ejecutando actualmente en el host2, por lo
que quiero seleccionar el host1 como el nuevo host. Después de un poco de tiempo para que la imagen de la
memoria de la VM se copie al otro host, la VM debería aparecer como ejecutándose en ese host.
Si por alguna razón su migración falla (CPU incompatibles u otros problemas), siempre puede apagar la
máquina virtual en un host y volver a iniciarla en el otro host. Hacer eso solo requiere que su almacenamiento
compartido esté en su lugar. En el segundo host, simplemente ejecute el Asistente para crear una nueva máquina
virtual, pero seleccione ejecutar una imagen existente en lugar de una instalación ISO.
La configuración de hipervisor que acabo de demostrar puede ser adecuada para su estación de trabajo en el hogar
o incluso para una pequeña empresa. Aunque está más allá del alcance de este libro ayudarlo a desarrollar una
plataforma de computación en la nube completa, está dentro de mi estatuto ayudarlo a usar diferentes plataformas
en la nube para ejecutar sus sistemas Linux. El siguiente capítulo le ayuda a hacer precisamente eso.
726
Machine Translated by Google
Capítulo 27: Uso de Linux para computación en la nube
FIGURA 27.3
Elija a qué hipervisor migrar la máquina virtual.
27
Resumen
Linux es la base sobre la que se construyen la mayoría de las tecnologías de nube emergentes de la
actualidad. Este capítulo describe muchos de los componentes básicos que intervienen en la creación de una
nube basada en Linux y otras tecnologías de código abierto. Luego lo ayuda a aprender sobre algunas de
esas tecnologías básicas configurando un par de hipervisores y lanzando máquinas virtuales.
Ejercicios
Los ejercicios de esta sección describen tareas relacionadas con la configuración de un hipervisor
(computadora host KVM) y su uso para ejecutar máquinas virtuales. Si está atascado, las soluciones a las tareas
se muestran en el Apéndice B. Tenga en cuenta que las soluciones que se muestran en el Apéndice B suelen
ser solo una de las muchas maneras de completar una tarea.
727
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Aunque el ejemplo que se muestra en este capítulo para configurar hipervisores utiliza tres máquinas físicas, estos
ejercicios se pueden realizar en una sola máquina física.
1. Verifique su computadora para ver si es compatible con la virtualización KVM.
2. Instale un sistema Linux junto con los paquetes necesarios para usarlo como host KVM y
para ejecutar la aplicación Virtual Machine Manager.
3. Asegúrese de que los servicios sshd y libvirtd se estén ejecutando en el sistema.
4. Obtenga una imagen ISO de instalación de Linux que sea compatible con su hipervisor y
cópielo en el directorio predeterminado utilizado por Virtual Machine Manager para almacenar imágenes.
5. Verifique que el puente de red predeterminado ( virbr0) esté actualmente activo.
6. Instale una máquina virtual utilizando la imagen ISO que copió anteriormente.
7. Asegúrese de que puede iniciar sesión y utilizar la máquina virtual.
8. Verifique que su máquina virtual pueda conectarse a Internet o a otra red
lado del hipervisor.
9. Detenga la máquina virtual para que deje de ejecutarse.
10. Vuelva a iniciar la máquina virtual para que esté en ejecución y disponible.
728
Machine Translated by Google
CAPÍTULO S
Implementación de Linux en el Clo
EN ESTE CAPÍTULO
Creación de imágenes en la nube de Linux
Implementación de una imagen en la nube con virtmanager (libvirtd)
Implementación de una imagen de nube en OpenStack
Implementación de una imagen de nube en Amazon EC2
Para cun
onseguir
que un
DVD físico, nuevo
puede sistema
obtener Linux
una utilice,
imagen en
de lugar
ed
Linux e simplemente
implementarla een
jecutarlo,
un
Upna
una nube. rograma
forma dde
e ih
nstalación
acerlo es etomar
stándar de
una imagen genérica de Linux (una que sea de arranque pero no configurada) y proporcionar información para
configurarla según sus necesidades. Otra forma es ir a un proveedor de la nube, elegir una imagen, hacer clic en las
selecciones para configurarla y ejecutarla.
El punto es que la computación en la nube está ofreciendo nuevas formas de iniciar y usar sistemas Linux. En
el Capítulo 27, le pedí que hiciera una instalación estándar de Linux para crear una máquina virtual que se
ejecuta en un hipervisor de Linux. En este capítulo, le mostraré cómo usar imágenes en la nube para iniciar un
nuevo sistema Linux.
Primero, describo cómo usar cloudinit para combinar una imagen de nube de Linux manualmente con
información de configuración para permitir que se ejecute en una variedad de entornos. A continuación, le cuento
cómo se realiza un proceso similar en una nube OpenStack o Amazon Elastic Compute Cloud (EC2) al hacer clic en
controladores de nube fáciles de usar para elegir imágenes y configuraciones para ejecutar la instancia de nube de
Linux que desee.
Lograr que Linux se ejecute en una nube
Las plataformas en la nube son excelentes para hacer funcionar nuevas máquinas virtuales de manera rápida y
eficiente. Pueden hacerlo porque no se requiere una instalación nueva cada vez que desee una nueva instancia de
un sistema operativo.
Las nubes públicas, como Amazon EC2 (http://aws.amazon.com/ec2), ofrecen instancias de diferentes distribuciones de
Linux para que las inicie y las use. Elige una instancia de Linux, como Ubuntu, Red Hat
729
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Enterprise Linux (RHEL) o SUSE Linux Enterprise Server (SLES), que está ajustado para propósitos
específicos. Por ejemplo, hay instancias que están optimizadas para procesamiento de alto rendimiento
o aplicaciones con uso intensivo de memoria.
El contenido de una instancia en la nube tiende a ser de naturaleza genérica. Se espera que el usuario
de la nube o el proveedor de la nube adjunte más información a la imagen mediante un servicio como cloud
init. Esta información se divide en dos categorías generales: metadatos y datos de usuario:
metadatos Incluida con los metadatos hay información necesaria antes de que se inicie la imagen.
Estos son datos que están fuera del contenido de la imagen y normalmente los administra el
proveedor de la nube. Algunos de estos datos provienen del hecho de que elementos como el
almacenamiento, la memoria y la potencia de procesamiento se extraen de un grupo de recursos
en lugar de la máquina física en la que está instalando. Por lo tanto, los metadatos le indican al
proveedor de la nube cuántos de esos recursos, y posiblemente otros, debe asignar al principio del
proceso de puesta en marcha de la instancia.
datos de usuario La información de datos de usuario se inserta en el sistema operativo que existe
en la imagen. Estos son datos que proporciona la persona que usa la máquina virtual. Esto
puede incluir una cuenta de usuario y contraseña, archivos de configuración, comandos para
ejecutar en el primer arranque, las identidades de los repositorios de software o cualquier otra cosa
que desee ejecutar o cambiar dentro del propio sistema operativo.
Cuando va a ejecutar una instancia de Linux en un entorno de nube, normalmente ingresa la
información de metadatos y datos de usuario haciendo clic en las casillas de verificación y completando
formularios desde un controlador de nube basado en la web (como OpenStack Dashboard o Red Hat).
Administrador de virtualización). Es posible que la información no se identifique como metadatos y datos de
usuario cuando configure la instancia a través del controlador en la nube.
La nube que utiliza para ejecutar sus máquinas virtuales Linux puede ser una nube pública, una nube
privada o una nube híbrida. El tipo de nube que elijas puede depender de tus necesidades y tu
presupuesto:
La nube pública Amazon EC2 y Google Compute Engine son ejemplos de plataformas en la nube.
formularios que le permiten iniciar y utilizar máquinas virtuales Linux desde una interfaz basada
en web. Usted paga por el tiempo que se ejecuta la instancia. La cantidad de memoria,
almacenamiento y CPU virtuales que utiliza para ejecutar el servicio también se calculan en los costos.
La ventaja de las nubes públicas es que no tiene que comprar ni mantener su propia
infraestructura de nube.
Nube privada Con una nube privada, pone su propia infraestructura informática en
lugar (hipervisores, controladores, almacenamiento, configuración de red, etc.). Configurar su
propia nube privada significa asumir más costos iniciales para poseer y mantener la infraestructura.
Pero le brinda mayor seguridad y control de sus recursos informáticos. Debido a que usted controla
la infraestructura, puede crear las imágenes a las que los usuarios tienen acceso en su
infraestructura de OpenStack y contabilizar el uso de esa infraestructura por parte de los usuarios
a su manera.
730
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
Nube híbrida Muchas empresas buscan soluciones de nube híbrida. Una nube híbrida puede permitir
que una instalación central administre varias plataformas en la nube. Por ejemplo, Red Hat
CloudForms puede implementar y administrar máquinas virtuales en plataformas Open Stack,
VMware vSphere y Red Hat Enterprise Virtualization, proporcionando diferentes tipos de cargas
de trabajo a los entornos apropiados. En momentos de máxima demanda, CloudForms también
puede dirigir las máquinas virtuales para que se ejecuten en las nubes de Amazon EC2.
Estos entornos de nube tienen diferentes formas de aprovisionar y configurar máquinas virtuales.
Sin embargo, las funciones que las nubes deben proporcionar a la gestión de máquinas virtuales son
similares. Tener una comprensión de esas funciones puede ayudarlo cuando configura un sistema
Linux para que se ejecute en una nube.
Para ayudarlo a tener una mejor idea de cómo configurar instancias de nube de Linux, en las siguientes
secciones describiré cómo funciona cloudinit para configurar instancias de nube de La inux.
crear
Luego,
sus propios
lo ayudaré
archivos de metadatos y datos de usuario y los aplicaré a su instancia de nube para que la información se
pueda usar cuando se inicie la imagen de la nube.
Creación de imágenes de Linux para nubes
Piense en lo que hizo cuando instaló un sistema Linux en el Capítulo 9, “Instalación de Linux”. Durante
el proceso de instalación manual, estableció una contraseña raíz, creó una cuenta de usuario y una
contraseña regulares, posiblemente definió sus interfaces de red y realizó otras tareas. La información
que ingresó se convirtió en una parte permanente del sistema operativo que permaneció cada vez que inició
el sistema.
28
Cuando comienza con una imagen de nube preconstruida como su sistema Linux, puede usar cloud
init para tener un sistema Linux listo para ejecutarse. La función cloudinit (http://launchpad.net/cloudinit)
configura una instancia de máquina virtual genérica para que se ejecute de la forma en que desea que se
ejecute sin pasar por un proceso de instalación. La siguiente sección describe algunas formas de usar cloud
init.
Configuración y ejecución de una instancia de nube cloudinit En el siguiente
procedimiento, le muestro cómo crear datos manualmente; los datos se pueden combinar con una imagen
de nube de arranque de Linux para que cuando esa imagen se inicie, se configure en función de sus datos.
La combinación de datos con la imagen en tiempo de ejecución le permite cambiar los datos cada vez antes
de que se ejecute la imagen en lugar de instalarlos permanentemente en la imagen.
Le sugiero que ejecute este procedimiento en uno de los hipervisores que configuró en el Capítulo 27,
“Uso de Linux para computación en la nube”. Esto no solo le permite crear los datos personalizados para
su imagen de nube de Linux, sino que también le permite ejecutar esa imagen como una máquina virtual
en ese hipervisor.
Para agregar datos y ejecutar una imagen de nube existente, este procedimiento requiere que obtenga una
imagen de nube, cree archivos de datos y genere una nueva imagen que combine esos elementos. Este
procedimiento está destinado a ser muy simple para iniciar una imagen en la nube. mas tarde te cuento
731
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
cómo agregar más características a estos archivos de datos. Para configurar y ejecutar una imagen en la nube, siga
estos pasos:
1. Cree un archivo de metadatos cloudinit. Cree un archivo llamado metadatos para contener datos que
identifiquen información sobre la instancia de la nube desde el exterior. Por ejemplo, puede agregar un
nombre para identificar la instancia (instanciaid), un nombre de host (localhostname) y otra información. Para
simplificar su primer intento, asigno solo dos campos. (Puede configurarlos con los nombres que desee).
ID de instancia: FedoraWS01
nombre de host local: fedora01
2. Cree un archivo de datos de usuario cloudinit. Cree un archivo llamado userdata para almacenar los datos
que se configuran dentro del sistema operativo en la imagen misma. Para este caso simple, acabo de
establecer una contraseña para el usuario predeterminado (fedora) en cloudpass y me aseguré de que cloudinit
no caduque la contraseña:
#cloudconfig
contraseña: cloudpass
chpasswd: {expire: False}
3. Combine datos en una imagen separada. Con los archivos de metadatos y datos de usuario en el directorio actual,
cree una imagen ISO que contenga esos datos. Más tarde, presentamos esta imagen como un CDROM de la
imagen de Linux para que cloudinit sepa cómo configurar la imagen de Linux. (Instale primero los paquetes
genisoimage y cloudinit, si aún no lo ha hecho. El paquete cloudinit no es necesario en el hipervisor).
# yum install genisoimage cloudinit # genisoimage
output fedora31data.iso volid cidata \
jolietlong rock metadatos de datos de usuario
4. Obtenga una imagen de nube base. Las imágenes en la nube para Ubuntu, Fedora y RHEL están configuradas
diseñado para su uso con cloudinit. Obtenga una imagen de nube oficial de Fedora (las imágenes para otras
distribuciones se describen más adelante) y haga lo siguiente: a. Vaya a getfedora.org. Abra un navegador web y
vaya a https://getfedora.org/en/cloud/download/.
b. Haga clic en Abrir pila. Haga clic en el botón Descargar que aparece para la imagen de OpenStack para
obtener una imagen qcow2 que se pueda usar en un entorno de OpenStack. El nombre de la imagen es
algo así como FedoraCloudBase311.9.x86_64.qcow2.
5. Tome una instantánea de la imagen. Probablemente necesite ejecutar este procedimiento varias veces antes
obtienes la imagen exacta que deseas. Entonces, en lugar de usar la imagen descargada
directamente, haga una instantánea de ella. Para realizar un seguimiento de mis versiones, agregué
01 al nuevo nombre de la instantánea: # qemuimg create f qcow2 \
o backing_file=FedoraCloudBase311.9.x86_64.qcow2 \ FedoraCloud
Base01.qcow2
732
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
6. Copie los archivos al directorio de imágenes. Es una buena práctica copiar imágenes en /
var/lib/libvirt/images/ cuando los esté utilizando en un hipervisor (servicio libvirtd). Por ejemplo,
para copiar la imagen de la nube y la imagen de datos en ese directorio, escriba lo siguiente:
# cp FedoraCloudBase311.9.x86_64.qcow2 \ Fedora
CloudBase01.qcow2 \ fedora31data.iso \ /var/lib/
libvirt/images/
7. Inicie la instancia en la nube. Con los archivos en su lugar, ejecute los siguientes comandos para
iniciar una instancia de su imagen en la nube:
# cd /var/lib/libvirt/images # virtinstall
import name fedora3101 ram 4096 vcpus 2 \
disk path=FedoraCloudBase01.qcow2,format=qcow2,bus=virtio \ disk path=fedora21
data.iso,device=cdrom \ network red=predeterminado &
El ejemplo anterior de virtinstall muestra que la máquina virtual está asignada para consumir 4 Gb de
RAM (ram 4096) y dos CPU virtuales (vcpus 2). Los valores de RAM y VCPU en su sistema pueden
ser diferentes, dependiendo de su computadora los recursos de s.
En este punto, una máquina virtual llamada fedora3101 se está ejecutando en su hipervisor. A medida
que se inicia la máquina virtual, debería abrirse una ventana de consola que le permita iniciar sesión en la
nueva máquina virtual en la nube.
28
Investigando la instancia de la nube Para investigar
la imagen de la nube que creamos, puede abrir la instancia en ejecución y mirar dentro. Una forma de
hacerlo, si aún no está abierta, es abrir la máquina virtual con virtviewer:
# virtvisor fedora3101
Desde la ventana de la consola que aparece, use los datos que agregamos a la imagen para iniciar
sesión. Use fedora como usuario y cloudpass como contraseña para iniciar sesión. El usuario de fedora
tiene privilegios de sudo, por lo que puede usar esa cuenta para investigue la instancia ingresando algunos
comandos.
Aquí puede ver dónde se copiaron los datos de usuario en la instancia:
$ sudo cat /var/lib/cloud/instances/FedoraWS01/userdata.txt #contraseña de
configuración de la nube: cloudpass chpasswd: {expire: False}
La configuración básica de la nube se realiza en el archivo /etc/cloud/cloud.cfg. Puede ver aquí que la
cuenta de usuario raíz está deshabilitada de forma predeterminada. En la parte inferior del archivo, puede
ver que el usuario llamado fedora es el usuario predeterminado y tiene privilegios de sudo sin necesidad de
una contraseña.
733
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
$ sudo cat /etc/cloud/cloud.cfg
usuarios:
Raíz_desactivación predeterminada: 1
...
información_del_sistema:
usuario_predeterminado:
nombre: fedora0
lock_passwd: true
gecos: Fedora Cloud Grupos de
usuarios: [wheel, adm, systemdjournal] sudo:
["ALL=(ALL) NOPASSWD:ALL"] shell: /bin/bash distro:
fedora
rutas:
cloud_dir: /var/lib/cloud templates_dir: /
etc/cloud/templates
ssh_svcname: sshd
# vim: sintaxis = yaml
También puede ver otras cosas en el archivo cloud.cfg. Puede ver qué módulos cloud_init_ se ejecutan durante la inicialización
(como los que establecen el nombre de host o inician el registro de rsyslog). Puede ver cloud_config_modules que establecen
la configuración regional y la zona horaria y ejecutan más herramientas de configuración (como Chef y Puppet).
Debido a que los repositorios de yum están habilitados, siempre que tenga una conexión de red disponible (DHCP debería
haber asignado direcciones a la máquina virtual de forma predeterminada), puede instalar cualquier paquete disponible en los
repositorios de Fedora.
Clonación de la instancia de nube Si decide que
le gusta la instancia de nube que creó, puede guardar una copia para ejecutarla más tarde al hacer una clonación de las dos
imágenes (nube e imagen de datos) que componen la instancia de nube.
Para crear un clon de la instancia de nube en ejecución, utilizando virtmanager, haga lo siguiente:
1. Inicie virtmanager. En el sistema host que ejecuta la máquina virtual, ejecute el comando virtmanager o inicie Virtual
Machine Manager desde la pantalla Actividades en su escritorio.
2. Pause la máquina virtual. Haga clic con el botón derecho en la entrada de la instancia de la máquina virtual en la
ventana de virtmanager y seleccione Pausar. Esto hace que la máquina virtual esté inactiva por el momento.
3. Clonar la máquina virtual. Haga clic con el botón derecho en la entrada de la instancia de la máquina virtual
de nuevo y seleccione Clonar. Aparece la ventana Clonar máquina virtual, como se muestra en la Figura 28.1
734
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
FIGURA 28.1
La clonación le permite guardar una copia permanente de una instancia en la nube.
28
4. Elija la configuración de clonación. Para la imagen basada en la nube y la imagen de datos, puede
elija hacer nuevas copias o compartirlas con la máquina virtual existente.
Después de hacerlo, seleccione Clonar.
La instancia de nube clonada ahora está disponible para iniciar, detener y administrar como desee desde la
ventana de Virtual Machine Manager o el comando virsh. Una gran ventaja de hacer clones es que puedes
hacerles los cambios que quieras, sin tener que cambiar los originales. Simplemente elimine el clon cuando haya
terminado y podrá generar rápidamente uno nuevo cuando lo necesite.
Expansión de su configuración de inicio de nube
Puede agregar mucha más información a sus archivos de metadatos y datos de usuario para configurar sus
instancias de nube. Se pueden encontrar ejemplos de configuraciones de cloudinit en CloudInit
735
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Página de ejemplos de configuración (http://cloudinit.readthedocs.org/en/latest/topics/examples.html). Las siguientes
secciones muestran ejemplos de configuraciones que puede agregar a sus archivos de datos de usuario.
NOTA
Los archivos de datos de usuario y metadatos están en formato yaml. El formato yaml utiliza sangrías y delimitadores conocidos.
Los elementos de una lista van precedidos de un guión y un espacio. Las claves y los valores están separados por dos puntos y un
espacio. Si no está familiarizado con YAML, le recomiendo que busque en el sitio del Proyecto Yaml ( https://github.com/yaml ).
Agregar claves ssh con cloudinit En
lugar de usar contraseñas para iniciar sesión en sus instancias en la nube, puede usar la autenticación basada en
claves junto con el comando ssh para iniciar sesión a través de la red. Esto es comúnmente utilizado por los proveedores
de la nube para permitir el acceso de los usuarios a las imágenes de la nube.
Si ya ha generado claves ssh públicas y privadas para la cuenta de usuario que planea usar para acceder a la instancia
de la nube, puede usar esa clave pública para este procedimiento. Si generó un par de claves RSA, la clave pública se
encuentra en el archivo id_rsa.pub de forma predeterminada:
# cat $HOME/.ssh/id_rsa.pub sshrsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwjxB/rrJY4 oZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24/
ZBb3S1j7vK2WymOcwEoWekhbZHBAyYeqX KYQQjUB2E2Mr6qMkmrjQBx6ypxbz+VwADNC
wegY5RCUoNjrN43GVu6nSOxhFf7hv6dtCjvosOvtt0979YS3UcEyrobpNzreGSJ8FMPM RFMWWg68Jz5hOMCIE1IldhpODvQVbTNsn/
STxO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kI Dhf/qu/Zn1kxQ9xfecQ+SUi+2IwN69o1fNpexJPFr+Bwjkwcrk58C6uowG5eNSgnuu7G
MUkT root@host2.example.com
La clave pública de ese archivo generalmente se copia en el archivo $HOME/.ssh/authorized_keys para el usuario en
el sistema remoto en el que desea iniciar sesión. Podemos agregar la clave a ese archivo en nuestra instancia de la nube
usando entradas en el archivo de datos de usuario que se parece a lo siguiente:
usuarios:
por defecto
nombre: wsmith gecos:
William B. Smith grupo primario: wsmith
sudo: ALL=(ALL) NOPASSWD:ALL lock
passwd: true sshauthorizedkeys:
sshrsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMzdq6hqDUhueWzl7rIUwj xB/
rrJY4oZpoWINzeGVf6m8wXlHmmqd9C7LtnZg2P24/ ZBb3S1j7vK2WymOcwEoWekhbZHBAyYeqXKYQQjUB2E2Mr6qMkmrjQBx6ypxbz+V
wADNCwegY5RCUoNjrN43GVu6nSOxhFf7hv6dtCjvosOvtt0979YS3UcEyrobpNz
reGSJ8FMPMRFMWWg68Jz5hOMCIE1IldhpODvQVbTNsn/ STxO7ZwSYV6kfDj0szvdoDDCyh8mPNC1kIDhf/qu/
Zn1kxQ9xfecQ+SUi+2IwN69o1fNpexJPFr+Bwjkwcrk58C6uowG5eNS gnuu7GMUkT root@host2.example.com
736
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
De la información anterior, puede ver que wsmith es el usuario predeterminado. La entrada de gecos
'
suele ser el usuario. La contraseña está
cbompleto,
s nombre loqueada para este
en eul
utilizado suario.
quinto cSampo
in embargo, debido a que la
del archivo /etc/passwd.
entrada sshrsa de mi cuenta raíz en host2.example.com se proporciona aquí bajo sshauthorized
keys para el usuario, puedo iniciar sesión en la instancia de la nube como wsmith sobre ssh sin ingresar
una contraseña (siempre que mi clave está asociada con esa clave pública).
Adición de software con cloudinit
'
Está en un archivo,
No puede
se limita definir que ya está en su imagen de nube. Dentro de sus datos de usuario
al software
repositorios YUM (en Fedora y RHEL) o repositorios apt (en Ubuntu o Debian) y luego identificar los
paquetes que desea tener instalados cuando se inicia la instancia de la nube.
El siguiente ejemplo muestra cómo se verían las entradas en un archivo de datos de usuario para agregar un
repositorio YUM (para Fedora o RHEL) en su instancia de nube y luego instale paquetes desde ese
repositorio o cualquier otro repositorio habilitado:
myownrepo:
URL base: http://myrepo.example.com/pub/myrepo/
habilitado: verdadero
gpgcheck: true
gpgkey: file:///etc/pki/rpmgpg/RPMGPGKEYMYREPO nombre: Mis
paquetes de repositorio de software personal:
nmap
28
mycoolcmd
[libmystuff, 3.10.12.fc21.noarch]
En el ejemplo que se acaba de mostrar, se crea un nuevo repositorio de yum en el archivo /
etc/yum .repos.d/myownrepo.repo. Se proporciona una gpgkey para comprobar la validez de los
paquetes instalados y se activa la comprobación de GPG. Después de eso, se instala el paquete nmap s
(que está en el repositorio estándar de Fedora yum), se instala el paquete mycoolcmd (de mi repositorio
privado) y se instala una versión específi ca del paquete libmystuff.
La configuración de repositorios de software aptos para Ubuntu se realiza de forma un poco diferente. Los espejos de
paquetes apt primarios y de seguridad a prueba de fallas están configurados de forma predeterminada (en el archivo
cloud.cfg de la imagen), junto con configuraciones para hacer que la instancia, si se ejecuta en una nube de Amazon
EC2, busque paquetes en la región más cercana. Para agregar más repositorios, las entradas en su archivo de datos de
usuario podrían tener el siguiente aspecto:
apt_mirror: http://us.archive.ubuntu.com/ubuntu/ apt_mirror_search:
http://myownmirror.example.com http://archive.ubuntu.com paquetes:
nmap mycoolcmd [libmystuff, 3.16. 025]
737
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
La entrada myownmirror.example.com le dice a apt que use su propio repositorio privado de apt para buscar
paquetes. Tenga en cuenta que los paquetes que desea instalar se pueden ingresar básicamente en el
mismo formato que lo hizo con Fedora, aunque la información de la versión específica (si se ingresa) puede
verse diferente en algunos casos.
Puede agregar muchas otras configuraciones a sus archivos de metadatos y datos de usuario. Nuevamente,
consulte la página de ejemplos de configuración de nube de CloudInit (http://cloudinit.readthedocs.org/en/
Latest/topics/examples.html) para obtener detalles.
Uso de cloudinit en la informática empresarial Hasta ahora, los
ejemplos de cloudinit de este capítulo se han centrado en tomar una imagen de la nube, agregar
manualmente datos de configuración y ejecutarla como una máquina virtual temporalmente en su
hipervisor local. Este enfoque es útil si desea comprender cómo funciona cloudinit y las oportunidades que
tiene para ajustar las imágenes de nube a sus especificaciones.
Sin embargo, este enfoque no escala bien si administra grandes empresas de máquinas virtuales.
Cloudinit admite el concepto de fuentes de datos. Al colocar datos de usuario y metadatos en una fuente de
datos, no tiene que inyectar esa
anteriormente
información em
n
anualmente
este capítulo.
en Eun
na
cambio,
instancia
cuando
de nube,
el servicio
como hcicimos
loudinit
comienza a ejecutarse en la instancia, sabe que no solo debe buscar fuentes de datos en el sistema local,
sino también fuera de él.
Para las nubes de Amazon EC2, cloudinit consulta una dirección IP particular
(http://169.254.169.254/) para obtener datos. Por ejemplo, puede consultar http://
169.254.169.254/20090404/metadata/ para metadatos y http://169.254.169.254/20090404/
userdata/ para usuarios. datos. Esto permite almacenar y acceder a los datos de configuración desde
una ubicación central.
En cuanto a lo que podría estar dentro de los metadatos y los datos del usuario, se pueden desarrollar
esquemas de configuración mucho más complejos para la implementación de sus instancias en la nube.
Cloudinit admite herramientas de configuración, como Puppet (http://puppetlabs.com/puppet/tuppetopen
source) y Chef (https://www.chef.io/chef/). Estas herramientas le permiten aplicar secuencias de
comandos de información de configuración a sus instancias en la nube, incluso haciendo cosas como
reemplazar componentes o reiniciar servicios según sea necesario para devolver el sistema al estado
deseado.
En este punto, sin embargo, mi trabajo no es convertirlos en administradores de la nube en toda regla
(hace unos cientos de páginas, podría haber sido un novato de Linux). En su lugar, quiero que comprenda
a qué se enfrentará si finalmente aterriza en un centro de datos en la nube. . . porque muchas personas
creen que la mayoría de los centros de datos se administrarán como infraestructuras en la nube en un
futuro no muy lejano.
Hasta ahora, en este capítulo, ha visto el interior de la configuración de Linux para la computación en la
nube. A continuación,
en
retrocedamos
Linux más populares
y veamos para
cómo
ejecutar
puede sus
usar
propias
dos de
mláquinas
as plataformas
virtuales
de
bnasadas
ube basadas
en
Linux: OpenStack y Amazon EC2.
738
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
Uso de OpenStack para implementar imágenes en la nube
Con OpenStack, obtiene una plataforma en constante evolución para administrar su infraestructura
física de computación en la nube, así como los sistemas virtuales que se ejecutan en ella. OpenStack le
permite implementar su propia nube privada u ofrecerla al mundo como una nube pública.
'
En lugar de tener que configurar su propia nube OpenStack, uso voy a mostrar cómo se puede utilizar
OpenStack para implementar máquinas virtuales desde un OpenStack Dashboard. Si quiere probarlo
usted mismo, OpenStack está disponible de las siguientes maneras:
Las distribuciones de Linux Fedora, Ubuntu y CentOS tienen versiones gratuitas de
OpenStack que puede implementar usted mismo. Red Hat Enterprise Linux ofrece una
'
versión de Open Stack que está disponible por
Es csomplicado
uscripción. OpenStack
de configurar. puede todo en uno
Algunas configuraciones
ejecutarse en una sola máquina, pero creo que tendrá una mejor experiencia si
comienza con tres máquinas físicas: un nodo controlador y dos hipervisores.
Nubes públicas de OpenStack Puede probar las nubes públicas de OpenStack por diferentes costos.
Una lista de nubes públicas de OpenStack está disponible en el sitio del proyecto
OpenStack (http://www.openstack.org/marketplace/publicclouds/).
Mi primer punto es ayudarlo a ejecutar un sistema Linux en una nube cuando no tenga la capacidad de
hacer lo que quiera en sus propias computadoras. Sin embargo, mi otro punto es mostrarle cómo la interfaz
web de un proveedor
de la nube qdue
e nhube (como
icimos OpenStack
manualmente cD ashboard)
on pauede
cloudinit simplificar
nteriormente eenormemente
en ste capítulo. la configuración
28
A partir del panel de control de OpenStack
'
I Voy a comenzar con una configuración de OpenStack que ya existe. El entorno OpenStack
'
El administrador de s ha creado un proyecto para mí llamado cnegustestproject y una
'
cuenta de usuario (cnegus) que me permite acceder a ese proyecto. A quí
es
lo que planeo hacer:
■ Configurar redes. Así como configuraría un enrutador y conectaría físicamente mis
'
computadoras a ese enrutador,
Voy aincluiré
un cuonjunto
configurar na red vdirtual.
e direcciones
esa red vqirtual
ue se distribuyen a
mis máquinas virtuales a través de DHCP. ■ Configurar máquinas virtuales. Paso a paso
a través del proceso de elegir, configurar e implementar un par de máquinas virtuales.
La versión de OpenStack utilizada para esta demostración es Red Hat OpenStack Platform
(RHELOSP). Sin embargo, la experiencia sería similar en cualquier entorno OpenStack. La
siguiente sección le muestra cómo comenzar a configurar su red.
Configuración de su red virtual OpenStack Siga
estos pasos para configurar su red virtual OpenStack.
1. Inicie sesión en OpenStack. Utilizando el nombre de usuario y la contraseña que le ha asignado el
Administrador de OpenStack, inicie sesión en OpenStack Dashboard desde su navegador web.
Debería ver una pantalla de descripción general, similar a la que se muestra en la Figura 28.2 :
739
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
2. Crea una red. Para crear una red, desde la columna izquierda en la Vista general
pantalla, seleccione Redes. Desde la pantalla Redes que aparece, cree una nueva red de la
siguiente manera (los ejemplos que usé están entre paréntesis):
a. Seleccione el botón Crear red.
b. En la pestaña Red, escriba un nombre de red (mynet). C. En la
pestaña Subred, escriba un nombre de subred (mysub01), dirección de red
(192.168.100.0/24), versión de IP (IPv4) e IP de puerta de enlace (192.168.100.1).
Deje Desactivar puerta de enlace sin marcar.
d. En la pestaña Detalle de subred, ingrese un rango de direcciones IP separadas
por comas en el cuadro Grupo de asignación. Para mi ejemplo, elegí
192.168.100.10,192.168.100.50 para entregar un rango de direcciones IP a los clientes de
192.168.100.10 a 192.168.100.50. Obtenga una sugerencia de servidor de nombres del
administrador de su nube OpenStack o use un servidor DNS público (como el 8.8.8.8 o 8.8.4.4
de Google)
mi. Seleccione Crear para crear la nueva red. La nueva red aparece en la Red
pantalla de trabajo.
3. Cree un enrutador. Para que sus máquinas virtuales puedan acceder a Internet, debe identificar
un enrutador que esté conectado a su red privada en una
740
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
'
interfaz y una red que puede llegar a la Internet pública en el otro. Aquí cómo hacer eso: s
a. En la columna de la izquierda, seleccione Enrutadores.
b. Haga clic en el botón Crear enrutador.
C. Escriba un nombre de enrutador (myrouter01) y haga clic en Crear enrutador.
d. Seleccione el botón Establecer puerta de enlace. mi. En la pantalla Establecer
puerta de enlace, haga clic en el cuadro Red externa y elija entre las redes externas disponibles. Deje los
campos Nombre del enrutador e ID del enrutador como están. Haga clic en Establecer puerta de
enlace. El nuevo enrutador aparece en la pantalla Enrutadores.
4. Conecte su red al enrutador externo. Desde la pantalla Enrutadores (usted
aún debe estar en esa pantalla), seleccione el nombre del enrutador que acaba de crear (myrouter1):
a. En la pantalla Detalles del enrutador, seleccione el botón Agregar interfaz.
b. En la pantalla Agregar interfaz, haga clic en el cuadro Subred y elija la subred que creó anteriormente
(mynet: 192.168.100.0/24 mysub01). No debería tener que cambiar el nombre del enrutador o la
identificación del enrutador.
C. Haga clic en Agregar interfaz.
5. Ver la topología de la red. Haga clic en Topología de red en la columna de la izquierda. Luego, pase el botón
del mouse sobre el nombre del enrutador (myroute01). La figura 28.3 muestra un ejemplo de cómo podría 28
verse la configuración de su red.
Con su red en su lugar, puede crear claves para acceder a sus máquinas virtuales en OpenStack.
Configuración de claves para acceso remoto
La forma normal de configurar el acceso a sus máquinas virtuales en un entorno de nube es crear un par de
claves pública/privada que proporcione acceso seguro a sus máquinas virtuales mediante ssh y herramientas
relacionadas desde su sistema de escritorio. La clave privada se almacena en el directorio de inicio del usuario de
su escritorio y la clave pública se inyecta en la máquina virtual para que pueda iniciar sesión de forma remota (a
'
través de ssh) en la máquina virtual sin ingresar una contraseña. Aquí cómo configurar sus claves: s
1. Seleccione Acceso y seguridad. En la columna de la izquierda, seleccione Acceso y seguridad.
2. Crear pares de llaves. Si ya tiene un par de llaves, puede pasar al siguiente paso. De lo contrario,
seleccione la pestaña Keypairs y haga clic en el botón Create Keypair. Cuando aparezca la ventana
Crear par de claves, haga lo siguiente:
a. Introduzca un nombre de par de claves (mycloudkey) y haga clic en el botón Crear par de claves.
Una ventana emergente le pregunta si desea abrir o guardar el archivo *.pem.
741
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
FIGURA 28.3
Vea la topología de su red desde OpenStack Dashboard.
b. Seleccione Guardar archivo y haga clic en Aceptar. Cuando se le pregunte dónde guardarlo,
guárdelo en el directorio .ssh en su directorio de inicio.
Está listo para implementar una instancia de OpenStack (máquina virtual basada en la nube).
Lanzamiento de una máquina virtual en OpenStack
Para comenzar a lanzar una nueva instancia de máquina virtual en la nube, vaya a la columna de la izquierda y
seleccione Instancias. Luego haga clic en el botón Iniciar instancia. Aparece la pantalla Iniciar instancia. Para
completar la información que necesita para iniciar la instancia, siga estos pasos:
1. Seleccione Detalles. En la pestaña Detalles, seleccione los siguientes elementos:
a. Zona de disponibilidad. Una zona de disponibilidad consta de un grupo de hosts informáticos.
A veces se crean zonas separadas para identificar un grupo de computadoras que están físicamente
juntas (como en el mismo bastidor) o que tienen las mismas características de hardware (para que
puedan usarse para los mismos tipos de aplicaciones). Elija una de las zonas de la lista.
742
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
b. Nombre de instancia. Dale a la instancia cualquier nombre que te ayude a recordar
lo que es.
C. Sabor. Al elegir un sabor, asigna un conjunto de recursos a su virtual
instancia de máquina. Los recursos incluyen la cantidad de núcleos de CPU virtuales, la cantidad
de memoria disponible, el espacio en disco asignado y el espacio en disco efímero disponible. ( El
espacio efímero es el espacio disponible en el disco local mientras la instancia se ejecuta, pero no
se guarda cuando la instancia se cierra). Los sabores predeterminados incluyen m1.tiny, m1.small,
m1.medium, m1.large y m1. extragrande.
El administrador de la nube puede agregar otros sabores. d. Cuenta
de instancias. De forma predeterminada, se establece en 1, lo que significa iniciar una instancia.
Cambie el número para iniciar más instancias si lo desea.
mi. Origen de arranque de la instancia. La instancia se puede iniciar desde una imagen, una
instantánea, un volumen, una imagen que incluye un nuevo volumen o una instantánea de
volumen que incluye un nuevo volumen.
F. Nombre de la imágen. Seleccione la imagen que desea iniciar. Los nombres suelen incluir los
nombres de los sistemas operativos que está arrancando.
gramo. Tamaño del dispositivo y nombre del dispositivo (opcional). Si seleccionó incluir un nuevo
volumen cuando elige la fuente de arranque de su instancia, establece el tamaño (en GB) y el
nombre del dispositivo para el volumen en estos campos. Para el nombre del dispositivo, si elige
vda como el nombre del dispositivo (para el primer disco en una máquina virtual), el dispositivo que
representa ese dispositivo sería /dev/vda. 28
2. Seleccione Acceso y seguridad. Seleccione la pestaña Acceso y seguridad y elija el par de claves que
creó anteriormente.
3. Seleccione Redes. Seleccione la pestaña Redes. De la lista de red disponible
funciona, tome el que desee con el mouse y arrástrelo al cuadro Redes seleccionadas.
4. Agregue la configuración posterior a la creación. Puede agregar comandos y scripts que configuren el
sistema aún más después de que se haya iniciado. Aquí es donde puede agregar los tipos de información
que agregó en los archivos de datos de usuario descritos en las secciones sobre cloudinit anteriormente
en este capítulo.
Seleccione Iniciar para iniciar la máquina virtual. Con la máquina virtual en ejecución, puede iniciar sesión en ese
sistema seleccionando la instancia y haciendo clic en la pestaña Consola. La ventana de la consola de la máquina
virtual debería presentarle
a través un caontinúe
de la red, viso de cinicio
dse
on la sesión. sSección.
iguiente i desea poder acceder a la máquina virtual mediante ssh
Acceso a la máquina virtual a través de ssh
Con su clave pública inyectada en su máquina virtual en ejecución, está lista para que inicie sesión mediante ssh.
Sin embargo, antes de que pueda hacer eso, debe seguir estos pasos:
1. Agregue una dirección IP flotante. En OpenStack Dashboard, seleccione las instancias, haga clic
en Más en la entrada que contiene la instancia y haga clic en Asociar IP flotante.
743
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Seleccione el signo más (+) junto al cuadro Dirección IP, seleccione un grupo que tenga IP flotantes
disponibles y haga clic en Asignar IP. La dirección asignada debe aparecer en el campo Dirección
IP. Seleccione el puerto que desea asociar y haga clic en Asociar.
2. Use ssh para acceder a la instancia. Desde un sistema Linux que tenga acceso a la red
trabajo en el que se asignó la dirección flotante, ejecute el comando ssh para iniciar sesión.
Suponiendo que el archivo .pem de su clave se llamara mycloud.pem, el usuario predeterminado en
la instancia es clouduser y la dirección IP es 10.10.10.100, podría ingresar lo siguiente para iniciar
sesión:
# ssh i mycloud.pem usuarionube@10.10.10.100
Debería poder iniciar sesión ahora sin una contraseña. Para realizar la administración en el sistema, puede
usar el comando sudo como usuario predeterminado.
Uso de Amazon EC2 para implementar imágenes en la nube
Amazon Elastic Computer Cloud (Amazon EC2) es una plataforma en la nube especialmente adecuada para
la computación en la nube de pago por uso. Al igual que OpenStack, le permite elegir entre imágenes de
máquinas virtuales preconfiguradas y configurarlas según sus necesidades.
Para comenzar a usar Amazon EC2 para lanzar máquinas virtuales, vaya a la página Primeros pasos con
Amazon Web Services y siga los enlaces para crear una cuenta nueva (http://aws.amazon.com/getting
started/). Después de iniciar sesión, se muestra la gama completa de servicios de AWS.
Seleccione Iniciar sesión en la consola y verá la Consola de administración de AWS, como se muestra en la
Figura 28.4 :
FIGURA 28.4
Inicie instancias en la nube mediante la Consola de administración de Amazon EC2.
744
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
Para iniciar su primera instancia de máquina virtual Linux, haga lo siguiente:
1. Seleccione Iniciar una máquina virtual. A continuación, puede elegir entre Linux (Red Hat Enterprise Linux,
SUSE Linux, Ubuntu, etc.) y AMI de Windows (Amazon Machine Images) para iniciar.
2. Busque la imagen que desee y haga clic en el botón Seleccionar.
3. En la página Elegir un tipo de instancia, seleccione el tipo de instancia en particular
eso que quieres. Realice esa selección según la cantidad de CPU, la cantidad de memoria, el tipo de
almacenamiento y las funciones de red.
4. Con el tipo de instancia seleccionado, haga clic en Siguiente: Configurar detalles de la instancia.
5. En la pantalla Configurar detalles de la instancia, seleccione una VPC existente o cree una nueva. Luego
cambie cualquier otra configuración. Por ejemplo, seleccione Habilitar en Asignación automática de IP
pública para poder iniciar sesión en su instancia a través de Internet.
6. Seleccione Revisar y lanzar. Aparece la pantalla de lanzamiento de la instancia de revisión.
7. Revise la configuración de la instancia y seleccione Iniciar para iniciar la instancia.
La Figura 28.5 muestra un ejemplo de una instancia de RHEL 8 lista para lanzarse.
8. Seleccione un par de claves existente o elija Crear un nuevo par de claves para crear una clave privada.
y la clave pública que se usará para acceder a la instancia mediante ssh.
9. Seleccione Iniciar instancias para iniciar la instancia.
10. Seleccione Ver instancias para ver una lista de instancias en ejecución. Utilice el cuadro de búsqueda para
28
busque una cadena en el nombre de la instancia si hay una larga lista para elegir.
FIGURA 28.5
Configure y lance una instancia de RHEL 8 en AWS.
745
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
11. Seleccione su instancia y luego seleccione el botón Conectar. Siga las instrucciones para usar ssh para
iniciar sesión en la dirección IP pública que creó. Por ejemplo, el comando para iniciar sesión en la
instancia de AWS sería similar al siguiente:
# ssh i "yourraws.pem" ec2user@ec2wxxyyyzz.useast2.compute
.amazonaws.com
12. Cuando haya terminado con la instancia, puede finalizarla seleccionando el
instancia desde la página Instancias y luego seleccionando Acciones Estado de la instancia
Terminar. Cuando se le solicite, seleccione Sí, Terminar para eliminar la instancia y su almacenamiento
asociado.
Es importante recordar deshacerse de la instancia cuando haya terminado o se le seguirá cobrando por ella.
Resumen
Comprender cómo la computación en la nube difiere de la simple instalación de un sistema operativo
directamente en el hardware de la computadora lo ayudará a adaptarse a medida que más y más centros de datos
se mueven hacia la computación en la nube. Al comienzo de este capítulo, lo alenté a tener en sus manos algunas
imágenes de la nube, combinarlas con datos y ejecutarlas en un hipervisor Linux local para comprender cómo
funcionan las imágenes de la nube.
Después de eso, demostré cómo puede lanzar sus propias imágenes virtuales en una plataforma en la nube
OpenStack. Eso incluía la configuración de las interfaces de red, la elección de cómo se ejecutaría la instancia
virtual y el lanzamiento de la imagen virtual. También presenté rápidamente el servicio Amazon Elastic Compute
Cloud, en el que puede pagar para usar el almacenamiento en la nube y el tiempo de procesamiento si no tiene
suficientes recursos informáticos propios.
El siguiente capítulo describe cómo usar Ansible para automatizar la implementación de sistemas host y aplicaciones
en su centro de datos.
Ejercicios
Los ejercicios de esta sección asumen que ya ha configurado un sistema host como un hipervisor (computadora
host KVM). Debe usar ese hipervisor para ejecutar la máquina virtual creada en los ejercicios. Si está atascado, las
soluciones a las tareas se muestran en el Apéndice B.
Tenga en cuenta que las soluciones que se muestran en el Apéndice B suelen ser solo una de las múltiples formas
de completar una tarea.
1. Para poder crear una imagen de máquina virtual personalizada, instale genisoimage,
Paquetes cloudinit, qemuimg y virtviewer.
2. Obtenga una imagen de nube del proyecto Fedora.
3. Use qemuimg para crear una instantánea de esa imagen en formato qcow2 llamada
myvm .qcow2, que puede usar más adelante para combinarla con sus propios datos.
746
Machine Translated by Google
Capítulo 28: Implementación de Linux en la nube
4. Cree un archivo de metadatos cloudinit llamado metadata que establezca la instancia
id a myvm y localhostname a myvm.example.com.
'
5. Cree un archivo de datos de usuario de inicialización en la nube llamado userdata que establezca el usuario predeterminado s
contraseña para probar y establece chpasswd para que nunca caduque con {expire: False}.
6. Ejecute el comando genisoimage para combinar los archivos de metadatos y datos de usuario para
crear un archivo mydata.iso que pueda combinar con una imagen de máquina virtual más adelante.
7. Use el comando virtinstall para combinar la imagen de máquina virtual myvm.qcow2 con la imagen
mydata.iso para crear una nueva imagen de máquina virtual llamada newvm que comience a ejecutarse
en su hipervisor.
8. Use virtviewer para abrir una consola en la máquina virtual newvm.
9. Inicie sesión en la máquina virtual newvm, utilizando el usuario de fedora y la contraseña de prueba que
configuró anteriormente.
28
747
Machine Translated by Google
Machine Translated by Google
CAPÍTULO S
Automatización de aplicaciones y
Infraestructura con Ansible
EN ESTE CAPÍTULO
Comprender Ansible
Instalación de Ansible
Pasos a través de una implementación
Ejecución de comandos adhoc
Hasta
este punto
sistemas Hda
el
libro, nos haemos
aprendido centrado
instalar principalmente
software, en la cdonfiguración
editar archivos manual
e configuración de Linux
e iniciar individuales.
servicios
directamente en las máquinas donde se ejecutan. Si bien saber cómo trabajar en hosts Linux
individuales es fundamental para administrar sistemas Linux, por sí solo n
entra
o se een
scala
juego
bien.
Asi A
ble.
hí es donde
Ansible cambia la mentalidad de la administración de Linux de un enfoque en sistemas individuales a grupos de sistemas. Mueve
la configuración de esos nodos de cada máquina individual a un nodo de control. Reemplaza la interfaz de usuario de un shell en
cada máquina con libros de jugadas de Ansible que ejecutan tareas en otras máquinas a través de una red.
Si bien nuestro enfoque aquí es administrar sistemas Linux, Ansible también puede administrar muchas cosas en torno a esos
sistemas Linux. Hay módulos Ansible para asegurarse de que las máquinas estén encendidas, que los dispositivos de red estén
configurados correctamente y que se pueda acceder al almacenamiento remoto.
En todos los centros de datos, excepto en los más pequeños, saber cómo implementar y administrar automáticamente los sistemas
Linux y la infraestructura circundante se está convirtiendo en un requisito para muchos trabajos de TI en estos días. Para los centros
de datos totalmente en contenedores, las plataformas de aplicaciones basadas en Kubernetes, como OpenShift, se están convirtiendo
en el estándar de la industria para la orquestación y automatización de contenedores (consulte el Capítulo 30,
aplicaciones
"Implementación
como de
contenedores con Kubernetes"). Para la infraestructura y las implementaciones de aplicaciones más tradicionales, Ansible se está
convirtiendo en un líder.
Este capítulo lo lleva a través de lo que debe saber sobre Ansible para comenzar. Luego, lo guía a través de la implementación de
una aplicación en un conjunto de sistemas Linux con Ansible y le muestra cómo trabajar con esos sistemas más adelante al volver a
implementar libros de jugadas y ejecutar comandos adhoc.
749
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Comprender Ansible
Ansible amplía, en lugar de reemplazar, lo que ya ha aprendido sobre Linux. En su nivel más básico, Ansible
comprende lo siguiente:
■ Un lenguaje de automatización que describe las tareas que desea realizar para alcanzar un estado particular.
Estos se recopilan en libros de jugadas. ■ El motor de automatización que se utiliza para ejecutar los
playbooks. ■ Interfaces que puede usar para administrar y asegurar libros de jugadas y otras comunicaciones
de automatización
componentes, implementados con comandos y API RESTful.
Mediante el uso de inventarios (que definen conjuntos de hosts) y playbooks (que definen conjuntos de acciones
para realizar en esos hosts), Ansible configura los sistemas host de las siguientes maneras:
Configuración de funciones simple: crea inventarios y playbooks como texto sin formato
archivos, donde identifica los componentes de Linux sobre los que actúan los módulos. No se requiere
experiencia en codificación.
Establecer los resultados que desea: lo que describe aquí son recursos que defi nen el estado en el que
desea que esté una función en un nodo. Ese estado puede ser un servicio systemd en ejecución, una
interfaz de red con direcciones específicas configuradas o una partición de disco de cierto tamaño creada.
Si, por alguna razón, el estado cambia para una función, puede ejecutar un libro de jugadas nuevamente
para que Ansible devuelva un nodo al estado deseado.
Conexiones SSH: de forma predeterminada, cada nodo host debe ejecutar un servicio SSH configurado para
permitir que Ansible se comunique con él desde el nodo de control. La autenticación basada en claves
para cuentas de usuario regulares permite que esto suceda, con sudo disponible cuando se necesita una
escalada de privilegios de raíz. Debido a que está utilizando un servicio SSH que probablemente ya se está
ejecutando en el host, no necesita ejecutar agentes adicionales
para
o configurar
que esto
reglas
funcione.
especiales de firewall
Una vez que aprenda los conceptos básicos sobre cómo funciona Ansible, puede realizar una amplia gama de
actividades avanzadas y complejas, como las siguientes:
Infraestructura de aprovisionamiento: con Ansible, puede aprovisionar la infraestructura que necesitan sus
aplicaciones, ya sea instalando sistemas operativos en hardware o como hipervisores (junto con sus
máquinas virtuales), configurando dispositivos de almacenamiento o configurando dispositivos de red. En
cada uno de esos casos, Ansible puede aprovechar sus herramientas de aprovisionamiento existentes para
que todas puedan administrarse en un solo lugar.
Implementación de aplicaciones: al describir el estado deseado de sus aplicaciones, Ansible no solo puede
usar tareas para implementar conjuntos de aplicaciones en múltiples nodos y dispositivos, sino que
también puede reproducir esos libros de jugadas para devolver una aplicación a su estado deseado cuando
una característica puede haberse roto. o han sido cambiados sin querer.
Gestión de contenedores y operadores: las incorporaciones recientes a Ansible le permiten implementar
aplicaciones en contenedores en una infraestructura de Kubernetes como OpenShift. Los operadores de
OpenShift, que pueden ser administrados por un operador de Ansible, no solo pueden definir el estado
de las aplicaciones en contenedores, sino que también pueden responder a los cambios.
750
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
en tiempo real y facilitar las actualizaciones. Consulte la descripción del operador de Ansible para
obtener detalles (https://www.ansible.com/blog/ansibleoperator).
Administración de redes y almacenamiento: las tareas que a menudo se realizan manualmente para
configurar, probar, validar y mejorar su infraestructura de redes se pueden automatizar con Ansible.
Hay toneladas de libros de jugadas comerciales y comunitarios disponibles que ofrecen las mismas
herramientas intuitivas de Ansible que usa para implementar sistemas Linux, pero están hechos para
redes específicas ( https://docs.ansible.com/ansible/latest/network/ index. html) y dispositivos y entornos
de almacenamiento (https://docs.ansible.com/ansible/latest/modules/list_of_storage_modules.html).
Gestión de entornos de nube: del mismo modo que puede implementar infraestructuras sin sistema
operativo, Ansible ofrece herramientas para aprovisionar infraestructura y aplicaciones en entornos
de nube. Solo para Amazon Web Services (AWS), hay alrededor de 200 módulos Ansible disponibles
para administrar la infraestructura y las aplicaciones. También están disponibles módulos para
Alibaba, Azure, Google y algunas docenas de otros entornos en la nube.
Explorando los componentes de Ansible
Cuando se ejecuta un libro de jugadas, actúa en uno o más sistemas host de destino (representados por
inventarios) y ejecuta elementos denominados jugadas. Cada juego contiene una o más tareas que se establecen
para ser logradas por ese juego. Para realizar una tarea, la tarea llama a módulos, que se ejecutan en el orden
en que aparecen. Antes de comenzar a usar Ansible, es útil comprender un poco más acerca de estos
componentes.
Inventarios Al
reunir los sistemas host (nodos) que desea administrar en lo que se conoce como inventarios, puede
administrar máquinas que son similares de alguna manera en grupos. Las similitudes podrían incluir lo siguiente:
■ Ubicado en una ubicación similar
■ Proporcionar el mismo tipo de servicio
29
■ Asignado a una etapa particular en un proceso, como conjuntos de máquinas para desarrollo,
prueba, puesta en escena y producción
Unir hosts en más de un grupo permite que se actúe sobre ellos en función de estos diferentes tipos de atributos.
Por ejemplo, host01 podría estar tanto en un grupo llamado newy ork (por su ubicación) como en un grupo
llamado ftp (por la aplicación que proporciona). Las tareas que se ejecutan en esos grupos de inventario pueden
permitir que cada host obtenga la configuración de red según su ubicación y las aplicaciones que ejecuta según
su propósito, respectivamente.
Existen múltiples formas de crear inventarios. Puede configurar una línea de servidores estáticos o crear una
gama de sistemas. También puede usar listas dinámicas de servidores de proveedores de la nube, como Azure,
AWS y GCP.
Usando variables, puede asignar atributos a un conjunto de hosts en un inventario. Esas variables pueden
configurar cosas como el puerto desde el cual un servicio está disponible desde un host, un
751
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
valor de tiempo de espera para un servicio, o la ubicación de un servicio utilizado por un host (como una base de datos para
un servidor de protocolo de tiempo de red).
Al igual que los libros de jugadas, los inventarios pueden ser simples archivos de texto. También se pueden implementar desde
un script de inventario.
Libros de jugadas
Los libros de jugadas se crean como archivos con formato YAML que describen el estado final de algo.
Ese algo puede causar la instalación de software, la configuración de aplicaciones o el lanzamiento de servicios. Puede
centrarse solo en la aplicación o puede incluir todo el entorno (redes, almacenamiento, autenticación u otra característica)
que rodea a esa aplicación.
Los libros de jugadas están destinados a ser reutilizables: para implementar los mismos componentes más tarde, adaptarse
a otros componentes o reproducirse para restablecer la intención original de una instancia específica del libro de jugadas.
Dado que los playbooks están destinados a la reutilización, muchas personas mantienen sus playbooks bajo control de fuente.
De esa manera, puede realizar un seguimiento de los cambios a lo largo del tiempo y hacer que los libros de jugadas estén
fácilmente disponibles.
Jugadas Dentro de un libro de jugadas hay una o más jugadas. Cada juego tiene un objetivo, como un identificador de hosts
que le dice al libro de jugadas sobre qué sistemas host actuar. Eso puede ser seguido por un usuario remoto que le dice al
libro de jugadas a qué usuario autenticarse en el host. El juego también puede indicar que necesita aumentar los privilegios
con sudo antes de comenzar a ejecutar las tareas.
Después de eso, puede haber una o más tareas para defi nir la actividad real que se lleva a cabo en los hosts.
Tareas
En el nivel más básico, cada tarea ejecuta uno o más módulos. Una tarea proporciona una forma de asociar el módulo
que se ejecuta con los parámetros y valores de retorno asociados con ese módulo.
Módulos
Hay cientos de módulos de Ansible disponibles en la actualidad, y cada vez se crean más. Cuando se ejecuta, un módulo
se asegura de que se logre un estado solicitado al verificar ese estado previsto, como lo indican los parámetros que se
proporcionan, y si el objetivo no está en ese estado, entonces hace lo que se debe hacer para llegar allí. El índice de módulos
organiza esos módulos por categoría: (https://docs.ansible.com/ansible/latest/modules/modules_by_category.html).
Los ejemplos de módulos incluyen yum, mysql_db e ipmi_power. El módulo yum puede instalar, eliminar o administrar
paquetes de software y repositorios desde la instalación de YUM. Un módulo mysql_db le permite agregar o eliminar una
base de datos MySQL de un host. El módulo ipmi_power le permite verificar el estado de las computadoras con interfaces
IPMI y asegurarse de que lleguen al estado solicitado (encendido o apagado).
752
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
Se pueden aplicar condicionales a cada tarea. Por ejemplo, con el módulo yum, puede condicionar si instalar o no
un paquete por su estado. Podría decir que si el estado del paquete es instalado, entonces no instale el paquete
(incluso si hay una versión más nueva disponible).
Sás
versión m in ermbargo,
eciente dsel
i upsa
la versión
aquete si el pm ás reciente,
aquete sne
actual instalará
o una
es el más
reciente.
Los parámetros le permiten agregar información para modificar la tarea. Por ejemplo, con el módulo de
'
usuario, cuando agrega un usuario a un sistema, puede identificar el usuario y el shell.s nombre, contraseña, uid,
Además de configurar módulos para que se ejecuten desde playbooks, también puede ejecutar módulos
directamente desde la línea de comandos. Esto es útil si desea actuar en un host de inmediato, sin ejecutar un
libro de jugadas completo. Por ejemplo, puede hacer ping a un conjunto de hosts para asegurarse de que se están
ejecutando o verificar el estado de un servicio. (Consulte la sección "Ejecución de comandos adhoc de Ansible"
más adelante en este capítulo para obtener más información).
Para obtener más información sobre un módulo en particular, vaya al sitio web de documentación de Ansible
(seleccione Módulos en la página https://docs.ansible.com) o use el comando ansibledoc.
Por ejemplo, para obtener más información sobre cómo usar el módulo de copia para copiar archivos a una
ubicación remota, ingrese lo siguiente:
# copia de ansibledoc
> COPIAR (/usr/lib/python3.7/sitepackages/ansible/modules/files/
copiar.py)
El módulo 'copiar' copia un archivo de la máquina local o remota a una
ubicación en la máquina remota...
La mayoría de los módulos tienen valores de retorno para proporcionar información sobre los
resultados
de ilndican
que a acción
si dla
e
te se mfue
area ódulo.
Los (vfallida),
exitosa alores dse retorno
tarea sce
i la omunes
omitió oincluyen valores
o sbi ooleanos,
no (omitida) la tarea tuvo
que hacer cambios (cambiada).
Roles, importaciones e inclusiones
29
A medida que crece su colección de libros de jugadas, es posible que desee dividir esos libros de jugadas en
partes más pequeñas que pueda incluir en varios libros de jugadas. Puede separar partes de un libro de jugadas
grande en archivos separados y reutilizables y luego llamar esos archivos al libro de jugadas principal usando
inclusiones e importaciones. Los roles son similares, pero pueden abarcar más cosas que tareas, como módulos,
variables y controladores.
Para obtener información sobre el uso de inclusiones, importaciones y funciones, consulte "Creación de libros
de estrategias reutilizables" en https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse.html.
Pasos a través de una implementación de Ansible
Para comenzar a usar Ansible, vamos a seguir paso a paso un procedimiento para implementar un servicio web
en un conjunto de hosts. Después de instalar Ansible, el procedimiento le muestra cómo crear
753
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
el inventario y el libro de jugadas que necesita para implementar ese servicio. Luego muestra cómo usar
ansibleplaybook para implementar realmente el libro de jugadas.
requisitos previos
Para empezar, creé cuatro máquinas virtuales con los siguientes nombres:
ansible Utilizado como el nodo de control de Ansible
host01 Primer nodo de destino
host02 Segundo nodo objetivo
host03 Tercer nodo de destino
Luego ejecuté los siguientes pasos para prepararme para usar esos hosts con Ansible:
1. Instalado Fedora en cada una de las máquinas virtuales (RHEL debería funcionar también).
2. Para cada uno de los tres nodos de destino (host01, host02 y host03), me aseguré de hacer lo
siguiente:
a. Tener el servicio SSH funcionando y disponible (abriendo el puerto TCP 22 si es necesario)
al nodo de control de Ansible.
b. Cree una cuenta de usuario no root. Más tarde, cuando use el libro de jugadas, agregue
la opción askbecomepass para que se le solicite la contraseña que necesitará para escalar
los privilegios. C. Establezca una contraseña para ese usuario.
Cuando ejecuto Ansible, uso la cuenta de usuario normal para conectarme a cada sistema, luego escalo
a privilegios de root usando sudo.
Configuración de claves SSH para cada nodo Inicie
sesión en el nodo de control (ansible) y asegúrese de que pueda llegar a los otros tres nodos que está
configurando. Asegúrese de que puede acceder a los hosts a través de un servidor DNS o agréguelos al
archivo /etc/hosts en el nodo de control. Luego configure las claves para acceder a esos nodos. Por ejemplo:
1. Como usuario raíz, agregue la dirección IP y el nombre de cada nodo al que desee conectarse.
implemente sus playbooks de Ansible en el archivo /etc/hosts:
192.168.122.154 host01
192.168.122.94 host02
192.168.122.189 host03
2. Todavía en el sistema ansible, genere claves ssh para que pueda tener comunicaciones sin contraseña con
cada host. Puede ejecutar este y los comandos posteriores de Ansible como un usuario normal en el
sistema host de ansible: $ sshkeygen Generación de un par de claves rsa públicas/privadas.
Introduzca el archivo en el que guardar la clave (/home/joe/.ssh/id_rsa): <ENTER>
754
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
Directorio creado '/home/joe/.ssh'.
Ingrese la frase de contraseña (vacío si no hay frase de contraseña):
<ENTER> Ingrese la misma frase de contraseña nuevamente: Su
identificación ha sido guardada en /home/joe/.ssh/id_rsa.
Su clave pública se ha guardado en /home/joe/.ssh/id_rsa.pub.
La huella digital de la clave es:
SHA256:Wz63Ax1UdZnX+qKDmefSAZc3zoKS791hfaHy+usRP7g joe@ansible La imagen
aleatoria de la clave es: +[RSA 3072]+ | ...*| | . o+| | . ..| | + + | | S..= * + | | o+o + oo|
| .ooB.Bo+o| | *+O+oo| | ..=BEo | +[SHA256]+
.
.
3. Usando sshcopyid, copie su clave pública a la cuenta raíz en cada host. El
siguiente bucle for sigue los pasos para copiar la contraseña del usuario en los tres hosts:
$ para i en 1 2 3; haz sshcopyid joe@host0$i; done /usr/bin/sshcopyid:
INFORMACIÓN: Origen de la(s) clave(s) a instalar: "/home/joe/.ssh/id_rsa.pub" /usr/bin/ssh
copyid: INFORMACIÓN: intentando iniciar sesión con las nuevas claves, para filtrar las
que ya están instaladas /usr/bin/sshcopyid: INFO: Quedan 1 claves por instalar; es instalar
las nuevas claves joe@host01's password: <contraseña>
Número de claves agregadas: 1
Ahora intente iniciar sesión en la máquina, con: "ssh 'joe@host01'" y asegúrese de que
solo se agregaron las claves que deseaba.
29
/usr/bin/sshcopyid: INFORMACIÓN: Fuente de la(s) clave(s) a instalar: "/home/joe/.ssh/
id_rsa.pub" /usr/bin/sshcopyid: INFORMACIÓN: intentando para iniciar sesión con las
nuevas claves, para filtrar las que ya están instaladas /usr/bin/sshcopyid: INFORMACIÓN:
Quedan 1 claves por instalar; para instalar las nuevas llaves
Contraseña de joe@host02: <contraseña> ...
El siguiente paso es instalar el paquete ansible en el nodo de control (ansible). A partir de ese
momento, todo ese trabajo se realiza desde el nodo de control.
755
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Instalación de Ansible
Los paquetes de software de Ansible están disponibles para RHEL, Fedora, Ubuntu y otras
distribuciones de Linux. Debido a que los playbooks de Ansible se ejecutan desde un nodo de control, no es
necesario instalar el software de Ansible en ninguno de los nodos a los que se dirige.
Entonces, comience instalando el paquete ansible en RHEL, Fedora, Ubuntu u otro sistema Linux que desee
usar como nodo de control. Ese nodo de control simplemente debe poder conectarse al servicio SSH que se
ejecuta en los nodos de host en los que desea implementar.
Instale el paquete ansible de una de las siguientes maneras:
RHEL 8:
# repositorios del administrador de suscripciones
\ enable ansible2.9forrhel8x86_64rpms
# dnf instala ansible y
Fedora:
# dnf instala ansible y
Ubuntu:
$ sudo apt update $ sudo
apt install softwarepropertiescommon $ sudo aptaddrepository yes
update ppa:ansible/ansible $ sudo apt install ansible
Con Ansible instalado, puede comenzar a crear el inventario que proporciona los objetivos para los libros de
jugadas que ejecutará.
Creación de un inventario Un
inventario simple puede consistir en el nombre que representa el destino de un libro de jugadas y los sistemas
host asociados con ese nombre. Para comenzar, aquí hay un ejemplo de inventario que contiene tres grupos
de hosts estáticos:
[ws]
host01
anfitrión02
anfitrión03
[nuevayork]
host01
[houston]
host02
host03
Al agregar estas entradas al archivo /etc/ansible/hosts, estarán disponibles cuando ejecute los comandos y
playbooks de Ansible.
756
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
Si bien este procedimiento solo se implementa en el conjunto de hosts del grupo ws, los otros dos grupos
ilustran cómo puede configurar playbooks para tareas separadas en función de la ubicación de las máquinas
(nueva york y houston).
Autenticación en los hosts Solo para
asegurarse de que puede acceder a cada host desde el sistema Ansible, ssh a cada host.
No debería tener que introducir una contraseña:
$ ssh joe@host01 Último
inicio de sesión: miércoles 5 de febrero 19:28:39 2020 desde 192.168.122.208 $ salir
Repita para cada anfitrión.
Creación de un libro de jugadas
Este libro de jugadas hace que el software del servidor web se instale e inicie en los hosts definidos
anteriormente en el grupo ws. Asimismo, el libro de jugadas comprueba que el software del cortafuegos esté
instalado y en ejecución, y que el puerto 80 (puerto http) esté abierto en el cortafuegos para acceder al servidor
web. Agregué el siguiente contenido a un archivo llamado simple_web.yaml:
nombre: Crear servidor web
anfitriones: ws
usuario_remoto: joe se
convierte en_método: sudo
se convierte en: sí tareas:
nombre: Instalar httpd
yum:
nombre: estado de
httpd: presente nombre:
Verifique que httpd haya iniciado el servicio:
nombre: httpd 29
estado: iniciado
nombre: Instalar firewalld
mmm:
nombre: firewalld
estado: presente
nombre: Acceso de firewall a https
firewalld: servicio:
http permanente: sí
estado: habilitado
nombre: reinicie el servicio firewalld para cargar en el firewall
cambios
757
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
servicio:
nombre: firewalld
estado: reiniciado
Los tres guiones al comienzo del libro de jugadas simple_web.yaml indican el comienzo del contenido YAML en
'
el archivo. Aquí sa desglose del resto del archivo:
nombre: la obra se identifica como "Crear servidor web". hosts:
aplique este inventario a los hosts del grupo ws. usuario_remoto: el
usuario normal que se utiliza para autenticarse en cada sistema remoto.
Esto se hace porque es una buena práctica de seguridad no permitir el inicio de sesión raíz directo en
un sistema remoto.
convertirse: Habilitar esta característica (sí) le dice a Ansible que se convierta en un usuario diferente al
remote_user para ejecutar los módulos en la tarea.
Become_method: Qué característica usar para escalar privilegios (sudo).
Become_user: en qué usuario autenticarse (raíz). tareas: Inicia la sección que
contiene las tareas. nombre: El nombre es un título dado a la tarea. En el primer
caso, "Instalar httpd", luego
“Compruebe que httpd se ha iniciado”, y así sucesivamente. La siguiente línea comienza con el
nombre de un módulo (yum, service, firewalld, etc.).
Para yum, dice que verifique si el paquete httpd está presente y, si no lo está, instálelo.
Para el servicio, comprueba si el demonio httpd se está ejecutando (iniciado) o no. Si httpd no se está ejecutando,
Ansible lo inicia.
Para yum, dice que verifique si el paquete firewalld está presente y, si no lo está, instálelo.
Para firewalld, haga que el puerto para el servicio http (TCP 80) esté disponible de forma inmediata
(habilitada) y permanente (permanente: sí) a través del firewall.
Para el servicio, reinicie el servicio firewalld (reiniciado) para habilitar el acceso al nuevo puerto de firewall
del servicio http.
Ejecutar el libro de jugadas
Utilice el comando ansibleplaybook para ejecutar el libro de jugadas. Para probar el libro de jugadas antes
de ejecutarlo en vivo, use la opción C. Para ver más detalles (al menos hasta que esté seguro de que
funciona), agregue la opción v para ver la salida detallada.
Tenga en cuenta que si ejecuta un libro de jugadas con C, no puede probar completamente el libro de jugadas
para asegurarse de que sea correcto. La razón es que un paso posterior puede requerir que se complete un
paso anterior antes de que se pueda realizar. En este ejemplo, el paquete httpd debe instalarse antes de que se
pueda ejecutar el servicio httpd.
758
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
Este es un ejemplo de cómo ejecutar el libro de jugadas de Ansible en modo detallado:
$ ansibleplaybook v simple_web.yaml Usando /etc/ansible/
ansible.cfg como archivo de configuración
JUGAR [Crear servidor web] ***************************************
TAREA [Recopilación de datos] ***************************************** ok: [host03 ] bien: [host02] bien:
[host01]
TAREA [Instalar httpd]
**************************************************** **************
cambiado: [host01] => {"cambiado": verdadero, "msg": "", "rc": 0,
"resultados": ["Instalado: httpd", ... cambiado: [host02]
=> {"cambiado": verdadero, "msg": "", "rc": 0,
"resultados": ["Instalado: httpd", ... cambiado: [host03]
=> {"cambiado": verdadero, "msg": "", "rc": 0,
"resultados": ["Instalado: httpd", ...
TAREA [Compruebe que httpd se ha iniciado]
**************************************************** **************
cambiado: [host03] => {"cambiado": verdadero, "nombre": "httpd",
"estado": "iniciado", "estado":
cambiado: [host02] => {"cambiado": verdadero, "nombre": "httpd",
"estado": "iniciado", "estado": ...
cambiado: [host01] => {"cambiado": verdadero, "nombre": "httpd",
"estado": "iniciado", "estado": ...
...
TAREA [Instalar firewalld] **************************************** cambiado: [host03] => {"cambiado":
verdadero, "msg": "", "rc": 0, "resultados": ["Instalado: firewalld", "Instalado: python3decorator... cambiado:
[host02] => { "cambiado": verdadero, "msg": "", "rc": 0, "resultados": ["Instalado: firewalld", "Instalado:
python3decorator... cambiado: [host01] => {"cambiado" : verdadero, "mensaje": "", "rc": 0, "resultados":
29
["Instalado: firewalld"...
TAREA [Acceso del cortafuegos a https]****************************************
****
ok: [host03] => {"cambiado": falso, "msg": "Operación permanente, (operación sin conexión: solo se
modificaron las configuraciones en disco)"} ok: [host02] => {"cambiado": falso, "msg":
"Operación permanente (operación sin conexión: solo se modificaron las configuraciones en disco)"}
ok: [host01] => {"cambiado": falso, "msg": "Operación permanente (operación sin conexión:
solo en las configuraciones de disco fueron alteradas)"}
759
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
RESUMEN DEL JUEGO *************************************************** ***** host01: ok=6
cambiado=4 inalcanzable=0 fallido=0 omitido=0 rescatado=0 ignorado=0 host02: ok=6
cambiado=4 inalcanzable=0 fallido=0 omitido=0 rescatado=0 ignorado= 0 host03: ok=6
cambiado=4 inalcanzable=0 fallido=0 omitido=0 rescatado=0 ignorado=0
El resultado de ansibleplaybook recorre cada tarea. La primera tarea (Recopilación de datos) muestra que se
puede acceder a los tres sistemas host del inventario ws. Lo que no puede ver es que está usando las
credenciales para conectarse a cada sistema y luego escalar ese usuario al privilegio de root antes de
completar cada tarea subsiguiente.
La tarea "Instalar httpd" verifica si el paquete httpd ya está instalado en cada host.
Si no es así, Ansible solicita instalar el paquete, junto con los paquetes dependientes. A continuación,
Ansible verifica el estado del servicio httpd en cada host y, si no se está ejecutando, lo inicia.
Después de eso, se verifica cada host para ver si el paquete firewalld está instalado y lo instala si no está
allí. Luego, Ansible agrega una regla de firewall a cada host para permitir el acceso al servicio http (puerto
TCP 80) y hace que esa configuración sea permanente.
El PLAY RECAP luego le muestra los resultados de todas las tareas. Aquí puede ver que las seis tareas en
todos los hosts estaban bien. Si hubo tareas fallidas, omitidas, rescatadas o ignoradas, se enumerarían.
Puede volver a ejecutar este libro de jugadas si cree que algo se salió de lugar o si le hizo una modificación.
También puede usarlo más tarde para implementar el libro de jugadas en diferentes sistemas.
Aunque ha visto cómo Ansible es bueno para implementar múltiples tareas en libros de jugadas, también
se puede usar para acciones únicas. En la siguiente sección, muestro cómo ejecutar algunos comandos
de Ansible adhoc para consultar y modificar aún más los hosts que acabamos de implementar.
Ejecución de comandos adhoc de Ansible
Puede haber momentos en los que desee realizar tareas únicas en sus nodos administrados por Ansible.
Puede realizar esas tareas mediante comandos adhoc. Con un comando adhoc, puede llamar directamente
a un módulo desde la línea de comandos de Ansible y hacer que actúe en un inventario. Algunas de esas
tareas podrían incluir lo siguiente:
■ Instalación de paquetes de software RPM
■ Administración de cuentas de usuario ■
Copia de archivos hacia y desde nodos ■
Cambio de permisos en un archivo o directorio ■
Reinicio de un nodo
760
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
Al igual que cuando ejecuta libros de jugadas, la ejecución de comandos adhoc se enfoca en alcanzar el estado
deseado. El comando adhoc toma una declaración declarativa, descubre lo que se solicita y hace lo que debe
hacer para alcanzar el estado solicitado.
Para probar estos ejemplos de comandos de Ansible adhoc, puede usar el inventario ws creado anteriormente.
Probar comandos adhoc Cuando ejecuta
un comando adhoc de Ansible, realiza alguna acción con un módulo de Ansible.
El módulo de mando se utiliza por defecto si no se indica ningún otro módulo. Con el módulo, indica qué comando
y opciones desea ejecutar en un grupo de nodos como una actividad única.
Verifique que un inventario esté en funcionamiento. Aquí, puede ver que todos los hosts se están ejecutando en
el inventario de ws:
$ ansible ws u joe m ping host03 |
ÉXITO => { "ansible_facts":
{ "discovered_interpreter_python":
"/usr/bin/python"
},
"cambiado": falso,
"ping": "pong"
} host02 | ÉXITO => { ... host01 |
ÉXITO => { ...
Puede averiguar si el servicio httpd se está ejecutando en los hosts en el inventario ws al verificar el estado
de ese servicio con este comando ansible de la siguiente manera:
$ ansible ws u joe m service \ a "name=httpd
state=iniciado" check host02 | ÉXITO =>
{ "ansible_facts": { "discovered_interpreter_python": "/usr/bin/
python"
29
},
"cambiado": falso,
"nombre": "httpd",
"estado": "iniciado",
"estado": { ... host 01 |
ÉXITO => { ...
Por el momento, no hay contenido en los servidores web. Para agregar un archivo index.html (que contenga el
texto "¡Hola desde su servidor web!") a todos los hosts en el inventario de ws, puede ejecutar este comando
(ingrese la contraseña raíz cuando se le solicite):
$ echo "¡Hola desde su servidor web!" > index.html $ ansible ws m
copia a \
"src=./index.html destino=/var/www/html/ \
761
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
propietario=grupo apache=modo apache=0644" \ b user
joe become askbecomepass
CONVIÉRTETE en contraseña: *********
host01 | CAMBIADO => { "ansible_facts":
{ "discovered_interpreter_python":
"/usr/bin/python"
},
"cambiado": verdadero,
"suma de comprobación": "213ae4bb07e9b1e96fbc7fe94de372945a202bee", "dest":
"/var/www/html/index.html", "gid": 48, "grupo": "apache", "md5sum" :
"495feb8ad508648cfafcf69681d94f97", "modo": "0644", "propietario": "apache",
"secontext": "system_u:object_r:httpd_sys_content_t:s0", "tamaño": 52, "src": "/home/
joe /.ansible/tmp/ansibletmp1581027374.649223
29961128730253/fuente", "estado":
"archivo", "uid": 48
host02 | CAMBIADO => { ... host03 |
CAMBIADO => { ...
Puede ver que el archivo index.html se crea con el propietario de apache (UID 48) y el grupo de apache
(GID 48) en el directorio /var/www/html en host01. Luego, la copia se repitió en host02 y host03. Puede
verificar que todo funcione al intentar acceder a ese archivo desde el host ansible a través del servidor web
usando el comando curl:
$ curl host01 ¡Hola
desde su servidor web!
Automatización de tareas con Ansible Tower
Marco de automatización
Si bien la ejecución de libros de jugadas y comandos de Ansible es excelente para automatizar y
modificar posteriormente conjuntos de hosts, para una empresa totalmente administrada, puede ir aún más
lejos con Ansible. Con Ansible Tower, puede agregar un marco más grande a sus implementaciones de Ansible.
Ansible Tower proporciona una interfaz basada en web para administrar toda su infraestructura de TI con
libros de jugadas de Ansible y otros componentes. Al centralizar sus activos de Ansible en un solo lugar,
tiene un solo lugar para recibir notificaciones. Puede administrar diferentes funciones administrativas en
toda su empresa.
La interfaz de Ansible Tower facilita la actualización continua de sus activos aprovisionados.
En lugar de tener que recordar las opciones de la línea de comandos, puede hacer clic para configurar y
762
Machine Translated by Google
Capítulo 29: Automatización de aplicaciones e infraestructura con Ansible
inicie sus tareas de Ansible. La gestión del inventario es gráfica y la programación de trabajos se puede
realizar de manera visual e intuitiva.
Una API REST está disponible con Ansible Tower que puede ayudarlo a integrar sus herramientas de
infraestructura existentes en Ansible. Por lo tanto, por lo general, puede simplemente continuar con los
procesos que ya tiene implementados, pero administrarlos con Ansible en su lugar.
Puede obtener más información sobre Ansible Tower en el sitio de Ansible Tower ( https://
www .ansible.com/products/tower).
Resumen
Ansible proporciona un lenguaje de formato único y un conjunto de herramientas para automatizar muchas
de las tareas que ha aprendido en otras partes de este libro. Una vez que sepa cómo crear un libro de
jugadas de Ansible, puede identificar la configuración exacta que desea en un sistema y luego implementar
fácilmente esa configuración en uno o más sistemas host.
Con los playbooks de Ansible, usted define el estado exacto de una aplicación y los componentes que la rodean
y luego aplica ese estado a los sistemas host Linux, dispositivos de red u otros objetivos.
Puede guardar esos playbooks y reutilizarlos para producir resultados similares en otros sistemas o adaptarlos
para crear resultados nuevos y diferentes.
Ansible también puede usar comandos adhoc para actualizar sistemas. Desde la línea de comandos de
ansible, puede agregar usuarios, copiar archivos, instalar software o hacer casi cualquier otra cosa que pueda
hacer con los playbooks. Con esos comandos, puede aplicar rápidamente un conjunto de cambios en múltiples
hosts o responder a un problema que requiere una solución rápida que debe realizarse de inmediato en un
conjunto de hosts.
En este capítulo, aprendió sobre los diferentes componentes que conforman un conjunto de herramientas de
Ansible. Ha creado su propio libro de jugadas para implementar un servidor web simple. Luego ejecutó algunos
comandos adhoc para modificar los sistemas en los que implementó su libro de jugadas.
Ejercicios 29
Estos ejercicios prueban su capacidad para instalar Ansible en su sistema, crear su primer libro de jugadas de
Ansible y ejecutar algunos comandos de Ansible ad hoc. Estas tareas asumen que está ejecutando un sistema
Fedora o Red Hat Enterprise Linux (aunque algunas tareas también funcionan en otros sistemas Linux).
Aunque Ansible está diseñado para implementar tareas en sistemas remotos, los ejercicios aquí solo le
permitirán probar un libro de jugadas y algunos comandos en un solo sistema. Si está atascado, las soluciones
a las tareas se muestran en el Apéndice B (aunque en Linux, a menudo puede completar una tarea de varias
maneras).
1. Instale Ansible en su sistema Fedora o RHEL.
2. Agregue el privilegio sudo para el usuario que desea usar para hacer estos ejercicios.
763
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
3. Cree un inicio para un libro de jugadas de Ansible (llámelo my_playbook.yaml) que incluya el
siguiente contenido.
nombre: Crear servidor web
anfitriones: host local
tareas:
nombre: Instalar httpd yum:
nombre: httpd estado: presente
4. Ejecute ansibleplaybook en my_playbook.yaml en modo de verificación para ver si hay algún problema
al completar el libro de jugadas ( pista: lo hay).
5. Modifique my_playbook.yaml para aumentar los privilegios de modo que las tareas se ejecuten como el
usuario raíz.
6. Vuelva a ejecutar ansibleplaybook hasta que el paquete httpd se instale correctamente en
tu sistema.
7. Modifique my_playbook.yaml nuevamente para iniciar el servicio httpd y configúrelo para que se inicie
cada vez que se inicie el sistema.
8. Ejecute un comando ansible que verifique si el servicio httpd está activo o no.
servidor local.
9. Cree un archivo index.html que contenga el texto "El servidor web está activo" y use el comando
ansible para copiar ese archivo en el directorio /var/www/html en localhost.
10. Utilice el comando curl para ver el contenido del archivo que acaba de copiar en el
Servidor web.
764
Machine Translated by Google
CAPÍTULO S
Implementación de aplicaciones como
Contenedores con Kubernete
EN ESTE CAPÍTULO
Comprender Kubernetes
Probar Kubernetes
Cómo ejecutar los tutoriales básicos de Kubernetes
Kubernetes de calidad empresarial con OpenShift
L
Los contenedores inux separan las aplicaciones que contienen de los sistemas operativos en los que se ejecutan.
Construido correctamente, un contenedor contendrá un conjunto discreto de software que puede ser trans
portado y ejecutado eficientemente. Pero la historia no termina ahí. Una vez que tenga algunos contenedores,
el siguiente paso es involucrarlos con una plataforma como Kubernetes que le permite hacer lo siguiente: ■ Agrupar
conjuntos de contenedores para formar una aplicación más grande. Por ejemplo, implementar una web
servidor, una base de datos y herramientas de monitoreo juntos.
■ Amplíe sus contenedores según lo requiera la demanda. De hecho, desea poder escalar cada componente de la
aplicación más grande individualmente, sin tener que escalar todo. ■ Establezca el estado de su aplicación y no solo
ejecútela. Lo que esto significa es que, en lugar de
simplemente diciendo que ejecute un contenedor, desea poder decir algo como "ejecutar tres copias del contenedor
X, y si uno falla, asegúrese de iniciar otro para reemplazarlo". ■ Recupérese de las computadoras anfitrionas que se
caen o se sobrecargan. Si falla el host que ejecuta un contenedor, desea que el contenedor se recupere rápidamente y
se inicie en otra computadora host.
■ No preocuparse por la infraestructura. Desea que su aplicación se conecte a los servicios que necesita sin tener
que conocer los nombres de host, las direcciones IP o los números de puerto asociados con esos servicios.
■ Actualice sus aplicaciones en contenedores sin tiempo de inactividad.
Kubernetes ofrece todas esas características y más. Si bien al principio había otros que competían por ser la
plataforma elegida para orquestar contenedores, como Mesos y Docker Swarm, Kubernetes se ha convertido
en el líder indiscutible en la orquestación, implementación y administración de aplicaciones en contenedores.
765
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Este capítulo le presenta Kubernetes y la plataforma Kubernetes de calidad empresarial
llamada OpenShift. La mejor manera de aprender Kubernetes es iniciar un clúster de
Kubernetes y ejecutar comandos para explorar Kubernetes e implementar una aplicación en
contenedores. Antes de hacerlo, debe comprender un poco qué es un clúster de Kubernetes y
qué componentes necesita para implementar una aplicación en un clúster.
Comprender Kubernetes
Un clúster de Kubernetes está formado por nodos maestros y trabajadores. Puede ejecutar todos los
servicios maestros y trabajadores en el mismo sistema para uso personal. Por ejemplo, con Minikube,
como se describe más adelante en este capítulo, puede ejecutar un clúster de Kubernetes desde una máquina
virtual en su computadora portátil (https://kubernetes.io/docs/tasks/tools/installminikube).
En un entorno de producción, distribuiría Kubernetes en múltiples sistemas físicos o virtuales. Estos son los
diferentes componentes que debe tener en cuenta si tuviera que configurar una infraestructura de Kubernetes
con calidad de producción:
Maestros: un nodo maestro administra los componentes que se ejecutan en el clúster de Kubernetes.
Gestiona las comunicaciones entre los componentes, programa las aplicaciones para que se
ejecuten en los trabajadores, amplía las aplicaciones según sea necesario y se asegura de que se
esté ejecutando la cantidad adecuada de contenedores (distribuidos en módulos) . Debería tener al
menos un nodo maestro, pero normalmente tendría tres o más disponibles para asegurarse de que
siempre haya al menos un nodo maestro disponible.
Trabajadores: un nodo trabajador es donde realmente se ejecutan los contenedores implementados.
El número de trabajadores que necesita depende de su carga de trabajo. Para un entorno de
producción, seguramente querrá más de un trabajador en caso de que uno falle o necesite
mantenimiento.
Almacenamiento: el almacenamiento en red permite que los contenedores accedan al mismo almacenamiento,
independientemente del nodo que los ejecute.
Otros servicios: para integrar un entorno de Kubernetes en un centro de datos existente, es posible
que desee aprovechar los servicios existentes. Por ejemplo, probablemente usaría un servidor DNS
'
el servicio de para el nombre de host para abordar la resolución, LDAP o Active
directorio de su empresa para la autenticación de usuarios y un servidor NTP (Network Time Protocol)
para sincronizar la hora.
En Kubernetes, la unidad más pequeña con la que puede implementar un contenedor se denomina pod. Un
pod puede contener uno o más contenedores, junto con metadatos que describen sus contenedores.
Aunque un pod puede contener solo un contenedor, a veces es apropiado que un pod tenga más de uno.
Por ejemplo, un pod puede contener un contenedor sidecar, que está destinado a monitorear el servicio que
se ejecuta en el contenedor principal del pod.
Maestros de Kubernetes
Un nodo maestro de Kubernetes dirige las actividades de un clúster de Kubernetes. Los nodos
maestros supervisan todas las actividades del clúster a través de un conjunto de servicios. La pieza central de un
766
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
El maestro de Kubernetes es el servidor API (kubeapiserver), que recibe solicitudes de objetos.
Las comunicaciones entre todos los nodos del clúster pasan por el servidor API.
Cuando a un maestro de Kubernetes se le presenta un objeto, como una solicitud de ejecución de una
cierta cantidad de pods, el programador de Kubernetes (kubescheduler) encuentra nodos disponibles
para ejecutar cada pod y los programa para que se ejecuten en esos nodos. Para asegurarse de que cada
objeto permanezca en el estado prescrito, los controladores de Kubernetes (administrador de kube
controller) se ejecutan continuamente para hacer cosas como asegurarse de que existan espacios de nombres,
que las cuentas de servicio definidas estén disponibles, que se esté ejecutando la cantidad correcta de réplicas
y que los puntos finales definidos están activos.
Trabajadores de Kubernetes En
el corazón de cada nodo trabajador de Kubernetes se encuentra el servicio kubelet. Un kubelet registra su
nodo trabajador con el servidor API. Luego, el servidor de la API le indica al kubelet que haga cosas como
ejecutar un contenedor que se solicita desde el servidor de la API a través de un PodSpec y asegurarse de
que continúe ejecutándose en un estado saludable.
Otro servicio que se ejecuta en cada nodo es un motor de contenedor (a menudo denominado tiempo de
ejecución). Originalmente, el servicio docker era, con mucho, el motor de contenedores más popular que se
usaba para iniciar, administrar y eliminar contenedores según lo requerido por PodSpec. Sin embargo, ahora
hay disponibles otros motores de contenedores, como el motor de contenedores CRIO (https://crio.io/), que
se utiliza con algunas plataformas comerciales de Kubernetes, como OpenShift.
Los nodos de trabajo están destinados a ser lo más genéricos posible, de modo que simplemente pueda
activar un nuevo nodo cuando se necesite capacidad adicional y se configurará para manejar la mayoría de
las solicitudes para ejecutar contenedores. Sin embargo, hay formas en las que un contenedor podría no ser
apropiado para ejecutarse en un nodo en particular. Por ejemplo, un pod podría solicitar ejecutarse en un
nodo que tenga una cantidad mínima de memoria y CPU disponible, o podría solicitar ejecutarse en un nodo
que ejecuta un contenedor relacionado. Del mismo modo, si un pod requiere algo especial para ejecutarse,
como una arquitectura de computadora, hardware o sistema operativo en particular, hay formas de programar
pods en los trabajadores que satisfagan esas necesidades.
Aplicaciones de Kubernetes En
Kubernetes, las aplicaciones se administran mediante la definición de objetos API que establecen el
estado de los recursos en el clúster. Por ejemplo, puede crear un objeto de implementación en un
archivo YAML que defina pods , cada uno de los cuales ejecuta uno o más contenedores, junto con el
espacio de nombres en el que se ejecuta y la cantidad de réplicas de cada pod que ejecuta. Ese objeto
también podría definir los puertos que están abiertos y los volúmenes que están montados para cada contenedor.
Los nodos maestros de Kubernetes responden a ese tipo de solicitudes y se aseguran de que las
solicitudes se lleven a cabo en los nodos de trabajo de Kubernetes .
Kubernetes utiliza el concepto de servicios para separar la ubicación de una aplicación de su dirección IP y 30
número de puerto reales. Al asignar un nombre de servicio al conjunto de pods que brindan ese servicio, no
es necesario conocer la ubicación exacta de cada pod fuera del clúster. En cambio, depende de Kubernetes
dirigir una solicitud de ese servicio a un pod disponible.
767
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Las direcciones IP asociadas con los pods activos no se pueden direccionar directamente desde fuera del
clúster de forma predeterminada. Depende de usted definir cómo desea exponer un servicio asociado con un
conjunto de pods fuera del clúster. Usando un objeto de servicio, puede exponer los servicios de diferentes maneras.
De forma predeterminada, exponer un servicio a través de un tipo de servicio ClusterIP hace que esté
disponible solo para otros componentes dentro del clúster. Para exponer el servicio fuera del clúster, puede usar
NodePort, que hace que el pod que proporciona el servicio sea accesible a través del mismo puerto asignado por
Kuber Netes en una dirección IP externa desde cada nodo en el que se ejecuta el pod.
Un tercer método es utilizar LoadBalancer para asignar una dirección IP fija externa que actúe como un equilibrador
de carga para los pods que brindan el servicio. Con LoadBalancer, el balanceador de carga externo de una
dirige
nube el
tráfico a los pods de backend. Finalmente, puede exponer el servicio con ExternalName, que asocia el servicio con
un registro DNS CNAME particular.
Independientemente de cómo exponga un servicio de Kubernetes, cuando hay una solicitud de ese servicio,
Kubernetes actúa para enrutar las comunicaciones al conjunto de pods que brindan ese servicio. De esa manera, los
pods pueden subir y bajar sin interrumpir a los clientes que usan el servicio.
Interfaces de Kubernetes Kubernetes
tiene interfaces de consola web y de línea de comandos para acceder a un clúster de Kubernetes. Los ejemplos
de este capítulo se centran en las herramientas de línea de comandos. Los comandos incluyen minikube, que se
usa para administrar la máquina virtual de Kubernetes y subir y bajar el clúster, y kubectl, que es la herramienta de
propósito general para administrar el clúster de Kubernetes.
Probar Kubernetes
Debido a que la configuración de su propio clúster de Kubernetes con calidad de producción requiere cierta
previsión, este capítulo se centrará en un par de formas sencillas de hacer que un clúster de Kubernetes personal
se ejecute y sea accesible rápidamente. En particular, aquí hay dos formas diferentes de obtener acceso a un
clúster de Kubernetes:
Tutoriales de Kubernetes: el sitio oficial de Kubernetes ofrece tutoriales interactivos de interfaz de usuario web,
en los que puede iniciar su propio clúster y probar Kubernetes. Desde los tutoriales de Kubernetes (https://
kubernetes.io/docs/tutorials/), puede elegir entre aplicaciones básicas, de configuración, sin estado y otros
temas de tutoriales.
Minikube: con Minikube, puede ejecutar Kubernetes en su propia computadora. Un sistema Linux, MacOS
o Windows que puede ejecutar máquinas virtuales puede obtener la máquina virtual Minikube y tener
un clúster de Kubernetes ejecutándose en una computadora portátil o en un sistema de escritorio en
unos pocos minutos.
Docker Desktop: otra opción (no detallada aquí) es Docker Desktop, que le permite habilitar un clúster de
Kubernetes preconfigurado que ejecuta un nodo maestro y trabajador en su estación de trabajo.
768
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
Para comenzar, lo guiaré a través de algunos de los tutoriales de Kubernetes y explicaré los
conceptos detrás de lo que están haciendo. Puede seguir el tutorial o ejecutar los mismos comandos
en su propia configuración de Minikube. A continuación, describo cómo obtener Kubernetes de una
de estas dos formas.
NOTA
Si tiene un entorno OpenShift en funcionamiento, también puede seguir la mayoría de estos pasos en OpenShift. En la
mayoría de los casos, puede usar el comando kubectl, pero normalmente el comando oc para OpenShift puede usar las
mismas opciones y argumentos.
Obtención de Kubernetes
Las siguientes descripciones le indican cómo acceder a un clúster de Kubernetes a través del
tutorial básico de Kubernetes o instalando e iniciando Minikube.
Inicio del tutorial básico de Kubernetes
Para iniciar el tutorial interactivo básico del proyecto Kubernetes, visite la siguiente URL desde su
navegador web:
https://kubernetes.io/docs/tutorials/kubernetesbasics/createcluster/clusterinteractive
La Figura 30.1 muestra el inicio del tutorial básico de Kubernetes.
FIGURA 30.1
Paso a paso por los tutoriales del proyecto Kubernetes
30
769
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
En este punto, puede seguir las indicaciones a través del tutorial. Debido a que el tutorial inicia un clúster en vivo,
también puede usar esa interfaz para probar otros comandos.
Iniciar Minikube Hacer
que Minikube se ejecute en su computadora personal requiere algunas cosas. Esto incluye lo siguiente:
■ La computadora debe configurarse como un hipervisor, para que pueda ejecutar las máquinas
virtuales Minikube.
■ Debe instalar el comando kubectl (usado para acceder al clúster y trabajar con él) y la propia
máquina virtual Minikube.
Para sistemas Linux, MacOS y Windows, vaya aquí para encontrar las instrucciones más recientes:
https://kubernetes.io/docs/tasks/tools/installminikube/
Puede instalar Minikube como usuario raíz, pero debe ejecutarlo más tarde desde una cuenta de usuario
normal. Los pasos para instalar Minikube en Fedora, RHEL, Ubuntu u otro sistema Linux son los siguientes
(consulte la página de instalación de minikube si algo ha cambiado):
1. Instale el comando kubectl: obtenga una versión del comando kubectl que se encuentre dentro de
una versión de Kubernetes en su Minikube. La instalación de las últimas versiones de kubectl y
minikube debería encargarse de eso. Ingrese lo siguiente (todo en una línea):
# curlLO\
https://storage.googleapis.com/kubernetesrelease/release/`curl \ s https://
storage.googleapis.com/kubernetesrelease/release/ stable.txt \ ̀/bin/linux/amd64/kubectl
2. Copie kubectl en un directorio bin: copie el comando kubectl en un directorio bin accesible y hágalo
ejecutable. Por ejemplo:
# mkdir /usr/local/bin # cp
kubectl /usr/local/bin # chmod 755 /
usr/local/bin/kubectl
3. Configure el hipervisor: Configure su sistema Linux como un hipervisor. Para KVM, use las descripciones
que se encuentran en la sección "Configuración de hipervisores" en el Capítulo 27 .
4. Obtenga minikube: obtenga el ejecutable de minikube e ingrese lo siguiente (en
una línea):
# curl Lo minikube \ https://
storage.googleapis.com/minikube/releases/latest/minikube linuxamd64 \ && chmod +x
minikube
5. Instale Minikube: Ingrese lo siguiente:
# instalar minikube /usr/local/bin/
770
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
6. Ejecute Minikube: como usuario normal, ingrese los siguientes comandos para identificar el controlador si su
hipervisor es KVM (consulte https://minikube.sigs.k8s.io/docs/reference/drivers si está utilizando un hipervisor
diferente) : $ minikube config set vmdriver kvm2 $ minikube start vmdriver=kvm2
7. Comience a usar Minikube: puede comenzar a usar Minikube ejecutando algunos comandos
mini kube y kubectl. En el siguiente tutorial se muestran ejemplos de cómo hacerlo.
Cómo ejecutar el tutorial básico de Kubernetes
El Tutorial de conceptos básicos de Kubernetes lo lleva a través de un buen conjunto de comandos para
comenzar a familiarizarse con Kubernetes:
https://kubernetes.io/docs/tutorials/kubernetesbasics/createcluster/clusterinteractive
El siguiente texto lo guía a través de los primeros cinco módulos del tutorial básico de Kubernetes.
Si está ejecutando este procedimiento directamente desde la página de tutoriales de Kubernetes, continúe
e inicie Minikube (inicio de minikube). Si está utilizando Minikube desde una VM que ya se está ejecutando
en su computadora portátil, aún puede seguir este procedimiento. Los pasos son los mismos ya que ambos
usan Minikube.
Obtener información sobre su clúster
Ejecute estos comandos para obtener información básica sobre su clúster.
1. Mostrar la versión de Minikube: para ver la versión de minikube que está utilizando, ingrese el
siguiente:
$ versión minikube versión
minikube: v1.7.2
compromiso: 50d543b5fcb0e1c0d7c27b1398a9a9790df09dfb
2. Listar la información del clúster: para ver la URL desde la cual el maestro de Kubernetes y
Los servicios DNS están disponibles, ingrese lo siguiente:
$ kubectl clusterinfo Kubernetes master
se ejecuta en https://192.168.39.150:8443 KubeDNS se ejecuta en https://192.168.39.150:8443/api/v1/
namespaces/kubesystem/ services/kubedns:dns /proxy Para depurar y diagnosticar problemas de clúster,
utilice 'kubectl clusterinfo dump'.
30
3. Información de lista de nodos: para ver la cantidad de nodos en ejecución (solo un nodo maestro
para Minikube) y su estado, ingrese lo siguiente: $ kubectl get nodes
NOMBRE ESTADO ROLES EDAD VERSIÓN
minikube listo maestro 23m v1.17.2
771
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
4. Enumerar las versiones del clúster y del cliente: para enumerar las versiones del cliente kubectl y el clúster de
Kubernetes (para asegurarse de que estén dentro de una versión de cada uno), ingrese lo siguiente:
$ versión de kubectl
Versión del cliente: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2",
GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean",
BuildDate:"20200118T23 :30:10Z", GoVersion:"go1.13.5", Compilador:"gc",
Plataforma:"linux/amd64"}
Versión del servidor: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2",
GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean",
BuildDate:"20200118T23:22: 30Z", GoVersion:"go1.13.5", Compilador:"gc",
Plataforma:"linux/amd64"}
Implementar una aplicación de Kubernetes Las
solicitudes para ejecutar y administrar aplicaciones en contenedores (en forma de pods) en un clúster de Kubernetes se conocen
como implementación. Una vez que se crea una implementación, depende del clúster de Kuber Netes asegurarse de que los pods
solicitados siempre se estén ejecutando. Lo hace haciendo lo siguiente:
■ Aceptar la creación de la implementación a través del servidor API. ■ Solicitar al
programador que ejecute los contenedores solicitados de cada pod en los disponibles.
nodos trabajadores
■ Observar los pods para asegurarse de que continúen ejecutándose según lo solicitado ■ Iniciar una
nueva instancia de un pod (en el mismo nodo o en uno diferente) si el pod falla
(por ejemplo, si el contenedor deja de funcionar)
El tutorial muestra un ejemplo de cómo crear una implementación simple a partir de una imagen de contenedor. En este
ejemplo, solo le da un nombre e identifica la imagen del contenedor que se usará.
El resto de la configuración de implementación se completa a partir de los valores predeterminados.
1. Cree una implementación: para iniciar la implementación que extrae el contenedor de bootcamp de kubernetes
con un nombre de implementación de bootcamp de kubernetes, ingrese lo siguiente: $ kubectl create deployment
kubernetesbootcamp \
image=gcr.io/googlesamples/kubernetesbootcamp:v1 deployment.apps/
kubernetesbootcamp creado
2. Enumerar implementaciones: para ver que la implementación existe (y tiene una instancia solicitada y otra en
ejecución), ingrese lo siguiente. $ kubectl obtener implementaciones
NOMBRE LISTO ACTUALIZADO EDAD DISPONIBLE
bootcamp de kubernetes 1/1 1 1 4m38s
772
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
3. Describa la implementación: para ver detalles sobre la implementación, ingrese el
siguiente:
$ kubectl describir implementaciones kubernetesbootcamp
Nombre: predeterminado de kubernetesbootcamp
Espacio de nombres:
...
Réplicas: 1 deseada | 1 actualizado | 1 en total | 1 disponible | 0 no disponible
...
Plantilla de cápsula:
Etiquetas: app=kubernetesbootcamp
Contenedores:
kubernetesbootcamp: gcr.io/google
samples/kubernetesbootcamp:v1 Imagen: Puerto:
<ninguno>
Puerto host: <ninguno>
Entorno: <ninguno>
Monturas: <ninguno>
Volúmenes: <ninguno>
...
En la implementación de kubernetesbootcamp, observe que solo establece una instancia (réplica) del pod
asociado con la implementación para que esté disponible. La implementación se ejecuta en el espacio de
nombres actual, que resulta ser el predeterminado. Observe también que no hay puertos abiertos ni volúmenes
montados de forma predeterminada para los pods.
Obtenga información sobre los pods de la
implementación Con la implementación creada, puede solicitar información sobre el pod creado a partir de
esa implementación y exponer la API de Kubernetes de la VM a su sistema local, a través de un servicio de
proxy, para conectarse directamente al pod.
1. Exponga la API de Kubernetes al sistema local: para abrir un proxy desde su
sistema a la API de Kubernetes que se ejecuta en Minikube (proxy kubectl), ingrese lo siguiente: $ kubectl proxy
Comenzando a servir en 127.0.0.1:8001
2. Consulte la API de Kubernetes: abra un segundo terminal y consulte la API de Kubernetes
ejecutándose en Minikube ingresando lo siguiente:
$ curl http://localhost:8001/version { "principal": "1", "menor":
"17", "gitVersion": "v1.17.2", "gitCommit":
"59603c6e503c87169aea6106f57b9f242f64df89", "gitTreeState":
"limpiar", "fecha de compilación": "20200118T23:22:30Z", 30
773
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
"goVersion": "go1.13.5", "compilador":
"gc", "plataforma": "linux/amd64"
3. Obtener información del pod: el nombre del pod utilizado en esta implementación es kuber netes
bootcamp, seguido de una cadena de caracteres única. Ingrese estos comandos para generar el
nombre del pod y luego incluya una descripción de ese pod: $ kubectl get pods NOMBRE READY
STATUS kubernetesbootcamp69fbc6f4cfnjc4b 1/1 En ejecución 0 $ kubectl describe pod kubernetes
bootcamp69fbc6f4cfnjc4b kubernetesbootcamp69fbc6f4cfnjc4b Nombre: predeterminadoEDAD DE REINICIO
12 metros
Espacio de nombres:
Prioridad: 0
Nodo: minikube/192.168.39.150
...
Contenedores:
bootcamp de kubernetes:
Identificación del contenedor:
ventana acoplable://dd24fd43ff19d6cf12f5c759036cee74adcf2d0e2c55a42e...
Imagen: gcr.io/googlesamples/kubernetesbootcamp:v1 dockerpullable://gcr.io/
Identificación de la imagen: googlesamples...
...
Eventos:
Tipo Razón Edad desde Mensaje
Normal Programado Programador predeterminado de 14 minutos Asignado con éxito
default/kubernetesbootcamp69fbc6f4cfnjc4b a minikube 14m kubelet, imagen de
tirado normal contenedor minikube
"gcr.io/googlesamples/kubernetesbootcamp:v1" ya presente en la máquina
Normal creado 14m kubelet, minikube Contenedor creado
bootcamp de kubernetes
normal iniciado 14m kubelet, minikube Contenedor iniciado
bootcamp de kubernetes
Desde la salida recortada, puede ver el nombre del pod, el espacio de nombres en el que
se encuentra (predeterminado) y el nodo en el que se ejecuta (minikube/192.168.39.150).
En Contenedores, puede ver el nombre del contenedor en ejecución (docker://
dd24fd43ff19 . . .), la imagen de la que procede (. . . kubernetesbootcamp:v1) y el ID de
imagen de esa imagen. En Eventos, comenzando desde abajo, puede ver el kubelet en el
nodo minikube, iniciando y creando el contenedor. Va a extraer la imagen y encuentra que
ya está en el nodo. Luego asigna el pod para que se ejecute en ese nodo.
774
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
4. Conéctese al pod: use el comando curl para contactar al pod y llevarlo a
responder a su solicitud de información:
$ export POD_NAME=$(kubectl get pods o gotemplate template \ '{{range .items}}{{. metadata.name }}
{{"\n"}}{{end}}') ; \ echo Nombre del pod: $POD_NAME Nombre del pod: kubernetesbootcamp69fbc6f4cf
njc4b
$ curl \ http://
localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/ proxy/ ¡Hola, bootcamp de Kubernetes!|
Ejecutándose en:kubernetesbootcamp 5b48cfdcbdlf9t2|v=1
5. Ver los registros: para ver los registros de cualquier contenedor que se esté ejecutando dentro del seleccionado
vaina, ejecute el siguiente comando:
$ kubectl registra $POD_NAME
Aplicación Bootcamp de Kubernetes iniciada en: 20200213T21:29:21.836Z | Ejecutándose en:
kubernetesbootcamp5b48cfdcbdlf9t2
Ejecutándose en: kubernetesbootcamp5b48cfdcbdlf9t2 | Solicitudes totales: 1 | Tiempo
de actividad de la aplicación: 34.086 segundos | Hora de registro: 20200213T21:29:55.923Z
6. Ejecute comandos en el pod: use kubectl exec para ejecutar comandos dentro del pod. El
primer comando ejecuta env para ver las variables de entorno del shell desde el interior del
pod, y el segundo abre un shell dentro del pod para que pueda ejecutar los siguientes
comandos:
$ kubectl exec $POD_NAME env PATH=/usr/
local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=kubernetesbootcamp5b48cfdcbdlf9t2
KUBERNETES_SERVICE_HOST=10.96. 0.1 KUBERNETES_SERVICE_PORT=443
...
$ kubectl exec ti $POD_NAME bash root@kubernetes
bootcamp5b48cfdcbdlf9t2:/# fecha
jue 13 feb 21:57:18 UTC 2020
kubernetesbootcamp5b48cfdcbdlf9t2:/# psef
UID PID PPID C STIME TTY HORA CMD
raíz 1 0 0 21:29 ? 00:00:00 /bin/sh c nodo
servidor.js
raíz 6 1 0 21:29 ? 00:00:00 nodo server.js 00:00:00 bash
raíz 115 0 0 21:55 puntos/0 115 0
raíz 123 22:01 puntos/0 00:00:00 pdef
30
775
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
root@kubernetesbootcamp5b48cfdcbdlf9t2:/# curl localhost:8080 ¡Hola, bootcamp de Kubernetes!|Ejecutándose
en:kubernetesbootcamp 5b48cfdcbdlf9t2|v=1
root@kubernetesbootcamp5b48cfdcbdlf9t2:/# salir
Después de iniciar un shell, puede ver el resultado de los comandos date y ps. Desde ps, puede ver que
el primer proceso que se ejecuta en el contenedor (PID 1) es el script server.js. Después de eso, el
comando curl puede comunicarse con éxito con el contenedor en el puerto loc alhost 8080.
Exponer aplicaciones con servicios
Para exponer el pod de kubernetesbootcamp descrito en estos procedimientos para que sea
accesible desde una dirección IP externa desde el nodo de trabajo en el que se ejecuta, puede crear
un objeto NodePort. Aquí hay una forma de hacerlo:
1. Verifique que el pod se esté ejecutando: ingrese lo siguiente para ver que los kubernetes
El módulo de bootcamp se está
ejecutando. $ kubectl obtener pods
NOMBRE LISTO ESTADO kubernetesbootcamp765bf4c7b4fdl96 1/1 En ejecución 0 EDAD DE REINICIO
26m
2. Verifique los servicios: ingrese lo siguiente para ver los servicios que se ejecutan en el
espacio de nombres predeterminado. Tenga en cuenta que solo está disponible el servicio
de kubernetes y que no hay ningún servicio que exponga el pod de kubernetesbootcamp
fuera del clúster:
$ kubectl obtener servicios
NOMBRE TIPO CLUSTERIP EXTERNALIP PUERTO(S) ANTIGÜEDAD
Kubernetes ClusterIP 10.96.0.1 <ninguno> 443/TCP 31m
3. Cree un servicio: cree un servicio que use NodePort para que el pod esté disponible
desde una dirección IP en el host en un número de puerto específi co (8080). Por ejemplo, ingrese lo siguiente: $ kubectl
expone deployment/kubernetesbootcamp \
type="NodePort" port 8080 service/kubernetes
bootcamp expuesto
4. Ver el nuevo servicio: escriba lo siguiente para ver la dirección IP (10.96.66.230) y el número de
puerto (8080) desde el cual el servicio está disponible en el host:
$ kubectl obtener servicios
NOMBRE TIPO PUERTO(S) DE IP EXTERNA DE CLÚSTERIP EDAD
776
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
kubernetesbootcamp NodePort 10.96.66.230 <ninguno> TCP 5s 8080:32374/
$ kubectl describe servicios/kubernetesbootcamp
Nombre: predeterminado de kubernetesbootcamp
Espacio de nombres:
Etiquetas: app=kubernetesbootcamp
Anotaciones: <ninguno>
Selector: app=kubernetesbootcamp
Tipo: Puerto de nodo
IP: 10.96.66.230
Puerto: <desarmado> 8080/TCP
Puerto de destino: 8080/TCP <desarmado>
Puerto de nodo: 30000/TCP 172.17.0.6:8080
Puntos finales:
Afinidad de sesión: Ninguno
Política de tráfico externo: clúster
5. Obtener el puerto de nodo asignado: para obtener el puerto asignado al servicio y configurar el
$NODE_PORT variable a ese valor, ingrese lo siguiente: $ export
NODE_PORT=$(kubectl get services/kubernetesbootcamp \ o gotemplate='{{(index .spec.ports
0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODO_PORT=30000
6. Acceda al servicio: para verificar que el servicio está disponible desde NodePort, use el siguiente comando curl
(usando la dirección IP para su instancia de Minikube):
$ curl $(minikube ip):$NODE_PORT ¡ Hola,
bootcamp de Kubernetes!|Ejecutándose en:kubernetesbootcamp 765bf4c7b4fdl96|v=1
Etiquetar un servicio
Utilice este procedimiento para agregar una etiqueta a un servicio existente.
1. Verifique la etiqueta del pod: hasta ahora, kubernetesbootcamp es la única etiqueta asignada
a la vaina. Para asegurarse, ingrese lo siguiente: $ kubectl
describe el nombre de implementación: kubernetes
bootcamp default
Espacio de nombres:
Marca de tiempo de creación: viernes, 14 de febrero de 2020 05:43:49 +0000
Etiquetas: run=kubernetesbootcamp deployment.kubernetes.io/
Anotaciones: revision:
... 30
777
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
2. Agregue otra etiqueta: para agregar una etiqueta adicional (v1) al pod, obtenga el nombre del pod y agregue
la nueva etiqueta de la siguiente manera:
$ export POD_NAME=$(kubectl get pods o gotemplate template \ '{{range .items}}{{. metadata.name }}{{"\n"}}{{end}}') ;
\ echo Nombre del pod: $POD_NAME Nombre del pod: kubernetesbootcamp765bf4c7b4fdl96
$ kubectl label pod $POD_NAME app=v1 pod/kubernetes
bootcamp765bf4c7b4fdl96 etiquetado
3. Verifique y use la etiqueta: verifique que la etiqueta v1 se haya asignado al pod,
y luego use esa etiqueta para enumerar información sobre el pod:
$ kubectl describe pods $POD_NAME kubernetes
Nombre: bootcamp765bf4c7b4fdl96
Espacio de nombres: por defecto
Prioridad: 0
Nodo: minikube/172.17.0.62 Hora de inicio:
viernes, 14 de febrero de 2020 05:44:08 +0000 Etiquetas:
app=v1
podtemplatehash=765bf4c7b4 run=kubernetes
bootcamp $ kubectl get pods l app=v1
kubernetesbootcamp765bf4c7b4fdl96 1/1 Corriendo 0
60m
Eliminar un servicio
Si ha terminado de usar el servicio, puede eliminarlo. Esto elimina el acceso al servicio desde NodePort, pero no elimina
la implementación en sí.
1. Verifique el servicio: asegúrese de que el servicio kubernetesbootcamp
todavía existe:
$ kubectl obtener servicios
NOMBRE TIPO PUERTO(S) DE IP EXTERNA DE CLÚSTERIP
EDAD
kubernetes ClústerIP 10.96.0.1 <ninguno> 443/TCP
63m
kubernetesbootcamp NodePort 10.96.66.230 <ninguno> 8 080:32374/
PCT 30m
2. Eliminar el servicio: usando el nombre de la etiqueta, elimine el servicio:
$ kubectl delete service l run=kubernetesbootcamp service "kubernetesbootcamp" eliminado
778
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
3. Verifique el servicio y la implementación: asegúrese de que el servicio se haya eliminado pero
el despliegue todavía existe:
$ kubectl obtener servicios
NOMBRE TIPO PUERTO(S) DE IP EXTERNA DE CLÚSTERIP
EDAD
kubernetes ClústerIP 10.96.0.1 <ninguno> 443/TCP
64m
$ kubectl obtener implementación
NOMBRE LISTO ACTUALIZADO EDAD DISPONIBLE
bootcamp de kubernetes 1/1 1 1 65m
Escalar una aplicación Una
de las funciones más potentes de Kubernetes es su capacidad para escalar una aplicación según lo requiera
la demanda. Este procedimiento comienza con la implementación de kubernetesbootcamp, que ejecuta un
pod, y lo amplía para tener pods adicionales ejecutándose mediante la función ReplicaSet y un medio diferente
de exponer la aplicación al acceso externo.
1. Obtenga la implementación: enumere la información sobre la implementación de kubernetes
bootcamp y tenga en cuenta que está configurada para tener solo un conjunto de réplicas
(rs) activo: $ kubectl get deployments
NOMBRE LISTO ACTUALIZADO EDAD DISPONIBLE
kubernetesbootcamp 1/1 $ kubectl obtener rs 1 1 107s
NOMBRE EDAD PREPARADA ACTUAL DESEADA
kubernetesbootcamp5b48cfdcbd 1 1 1 3m4s
2. Escalar las réplicas: para escalar la implementación hasta cuatro conjuntos de réplicas, ingrese el
siguiente:
$ kubectl scale deployments/kubernetesbootcamp replicas=4 deployment.extensions/kubernetesbootcamp
escalado
3. Verifique las nuevas réplicas: enumere las implementaciones para asegurarse de que ahora hay
cuatro réplicas listas y disponibles: $ kubectl get deployments
NOMBRE LISTO ACTUALIZADO EDAD DISPONIBLE
bootcamp de kubernetes 4/4 4 4 8m44s
4. Verifique los pods: ahora también debería haber cuatro pods de kubernetesbootcamp
ejecutándose, cada uno con su propia dirección IP dentro del clúster. Para asegurarte, ingresa lo siguiente: $ kubectl get
pods o wide
779
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
Corriendo 0 12s
172.18.0.6
minikube <ninguno> <ninguno>
5. Ver detalles de implementación: para ver detalles de las réplicas aumentadas en la implementación
ment, ingrese lo siguiente:
$ kubectl describe implementaciones/kubernetesbootcamp
Nombre: predeterminado de kubernetesbootcamp
Espacio de nombres:
...
Réplicas: no 4 deseado | 4 actualizados | 4 totales | 4 disponibles | 0
disponible
...
NewReplicaSet: kubernetesbootcamp5b48cfdcbd (4/4 réplicas creadas)
Eventos:
Tipo Razón Edad De Mensaje
Escalado normalReplicaSet 17m controlador de despliegue escalado
arriba
conjunto de réplicas kubernetesbootcamp5b48cfdcbd en 1
Escalado normalReplicaSet 9m25s deploymentcontroller Escalado
up
replica set kubernetesbootcamp5b48cfdcbd a 4
Comprobar el equilibrador de carga
Para comprobar que el tráfico se distribuye entre los cuatro pods replicados, puede obtener el
NodePort y luego use el comando curl para asegurarse de que varias conexiones al
NodePort da como resultado que se acceda a diferentes pods:
1. Listar detalles sobre el servicio: Para ver detalles sobre el bootcamp de kubernetes
service, ingrese lo siguiente: $
kubectl describe services/kubernetesbootcamp
Nombre: predeterminado de kubernetesbootcamp
Espacio de nombres:
Etiquetas: ejecutar = bootcamp de Kubernetes
Anotaciones: <ninguno>
Selector: ejecutar = bootcamp de Kubernetes
Tipo: Puerto de nodo
IP: 10.99.183.8
780
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
Puerto: <desarmado> 8080/TCP
TargetPort: 8080/TCP <desarmado>
NodePort: Puntos 31915/TCP
finales: 1 más... 172.18.0.4:8080,172.18.0.6:8080,172.18.0.7:8080 +
Tenga en cuenta que cada pod tiene su propia dirección IP y puerto (172.18.0.4:8080,
172.18.0.4:8080, etc.).
2. Obtenga el NodePort: ingrese lo siguiente para establecer $NODE_PORT en el valor del puerto
número asignado al servicio: $ export
NODE_PORT=$(kubectl get services/kubernetesbootcamp \ o gotemplate='{{(index .spec.ports
0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODO_PORT=31915
3. Ejecute curl: ejecute el comando curl varias veces para consultar el servicio. Si lo ejecuta varias
veces, debería ver que está accediendo a diferentes pods. Así es como sabes que el balanceador
de carga está funcionando:
$ curl $(minikube ip):$NODE_PORT ¡ Hola, bootcamp
de Kubernetes!|Ejecutándose en:kubernetesbootcamp 5b48cfdcbd9j4xp|v=1
Reduzca la escala de una
aplicación Para escalar el número de ReplicaSets defi nidos en su implementación, simplemente cambie el
número de réplicas a un número más bajo.
1. Reduzca la escala de réplicas: ingrese lo siguiente para cambiar la cantidad de réplicas para la implementación
a 2: $ kubectl scale deployments/kubernetesbootcamp –replicas=2 deployment.extensions/kubernetes
bootcamp scaled
2. Verifique la implementación: para ver que la implementación está establecida en 2 y que solo se
están ejecutando dos pods, ingrese lo siguiente:
$ kubectl obtener implementaciones
LISTO ACTUALIZADO EDAD DISPONIBLE
NOMBRE kubernetesbootcamp 2/2 $ 2 2 52m
kubectl get pods o ancho
NOMBRE ESTADO LISTO IP DE EDAD DE REINICIO
NODO PUERTAS DE PREPARACIÓN DEL NODO NOMINADO
En este punto, debería sentirse cómodo consultando manualmente su clúster de Kubernetes de varias
maneras e iniciando y trabajando con implementaciones, pods y réplicas. para continuar con
781
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
tutoriales de Kubernetes más avanzados, regrese a la página principal de tutoriales de Kubernetes (https://
kubernetes.io/docs/tutorials/). También recomiendo el sitio Kubernetes By Example para obtener más
información sobre el uso de Kubernetes (https://kubernetesbyexample.com).
Kubernetes de calidad empresarial con OpenShift
Red Hat OpenShift Container Platform (www.openshift.com) es un producto diseñado para ofrecer una
plataforma Kubernetes de calidad empresarial que se puede utilizar para aplicaciones de misión crítica.
Como plataforma de nube híbrida, OpenShift está diseñado para implementarse tanto en entornos bare
metal como en la nube.
Si bien Kubernetes es un proyecto de código abierto que puede construirse y ejecutarse de muchas
maneras, los productos basados en Kubernetes, como OpenShift, están destinados a usarse cuando necesita
una plataforma sólida y compatible en la que pueda confiar su empresa. OpenShift también viene en diferentes
variantes, que pueden instalarse en su propio centro de datos y en entornos de nube, como AWS y Azure, o
simplemente usarse desde un clúster dedicado de OpenShift mantenido por Red Hat.
Cuando bloquea las funciones de Kubernetes que Red Hat integra en OpenShift, esas funciones se
pueden probar y respaldar exhaustivamente. La capacitación y la documentación se pueden construir en
torno a esas características. Además, se pueden incorporar funciones más complejas, como funciones
avanzadas de cumplimiento del gobierno e integraciones estrechas con varios entornos de nube.
Con una consola web intuitiva, Red Hat OpenShift está hecho para que sea más fácil de usar para las
personas que comienzan con Kubernetes. En la Figura 30.2 se muestra un ejemplo de la consola OpenShift.
782
Machine Translated by Google
Capítulo 30: Implementación de aplicaciones como contenedores con Kubernetes
Hay pruebas gratuitas de OpenShift disponibles en https://try.openshift.com. También hay un proyecto
upstream de código abierto para OpenShift, llamado OKD, que también puede obtener de forma gratuita
(www.okd.io).
Resumen
En los últimos años, Kubernetes se ha convertido en la plataforma elegida para implementar aplicaciones en
contenedores en grandes centros de datos. Un clúster de Kubernetes consta de nodos maestros (que dirigen
las actividades de un clúster) y nodos trabajadores (que en realidad ejecutan las cargas útiles en
contenedores).
Como alguien que usa Kubernetes para ejecutar aplicaciones en contenedores, puede crear
implementaciones que definan el estado de la aplicación que está ejecutando. Por ejemplo, puede
implementar una aplicación que esté configurada para ejecutar varias réplicas de los pods que representan
esa aplicación. Puede identificar la aplicación como un servicio y configurar la aplicación para que esté
disponible desde los puertos definidos en los nodos desde los que se ejecutan.
Los productos basados en Kubernetes están disponibles cuando necesita ejecutar aplicaciones de misión
crítica en entornos estables y compatibles. Uno de estos productos es Red Hat OpenShift Container
Platform. Con OpenShift, puede ejecutar configuraciones de clúster basadas en Kubernetes compatibles
que se ejecutan en una variedad de entornos, incluidos entornos sin sistema operativo y varios entornos de
nube.
Ejercicios
Los ejercicios de esta sección describen tareas relacionadas con probar Kubernetes, ya sea en línea o
configurando Minikube en una computadora. Si está atascado, las soluciones a las tareas se muestran en el
Apéndice B. Tenga en cuenta que las soluciones que se muestran en el Apéndice B suelen ser solo una de
las muchas maneras de completar una tarea.
1. Instale Minikube en su sistema local o acceda a una instancia de Minikube externamente (como
a través de los tutoriales de Kubernetes.io).
2. Vea su versión de Minikube, así como las versiones de su cliente kubectl y el servicio Kubernetes.
3. Cree una implementación que administre un pod que ejecute la imagen del contenedor hellonode
(gcr.io/hellominikubezeroinstall/hellonode).
4. Use los comandos de kubectl apropiados para ver la implementación de hellonode y describir la
implementación en detalle.
5. Vea el conjunto de réplicas actual asociado con su implementación de hellonode.
30
6. Amplíe la implementación de hellonode a tres (3) réplicas.
7. Exponga la implementación de hellonode fuera del clúster de Kubernetes mediante
LoadBalancer.
783
Machine Translated by Google
Parte VI: Compromiso con la computación en la nube
8. Obtenga la dirección IP de su instancia de Minikube y el número de puerto del expuesto
servicio de holanodo.
9. Use el comando curl para consultar el servicio hellonode usando la dirección IP y el número
de puerto del paso anterior.
10. Utilice los comandos kubectl para eliminar el servicio y la implementación de hellonode y,
a continuación, utilice el comando minikube para detener la máquina virtual Minikube.
784
Machine Translated by Google
rt
Apéndices
EN ESTA PARTE
Apéndice A
Medios de comunicación
Apéndice B
Respuestas al ejercicio
Machine Translated by Google
Machine Translated by Google
APÉNDICE
Medios de comunicación
EN ESTE APÉNDICE
Obtener distribuciones de Linux
Creación de un CD o DVD de arranque
a menos que haya comprado una computadora con Linux preinstalado o que alguien lo haya instalado por
EN usted, necesita encontrar una manera de obtener una distribución de Linux y luego instalarla o ejecutarla en vivo
en su computadora. Afortunadamente, las distribuciones de Linux están ampliamente disponibles y vienen en una
variedad de formas.
En este apéndice, aprenderá cómo hacer lo siguiente:
■ Obtenga algunas distribuciones de Linux diferentes
■ Cree un disco de arranque para instalar su distribución ■
Arranque Linux desde una unidad USB
'
Para usar este libro de manera efectiva, debe tener una distribución de Linux frente a usted para trabajar. s
Es importante poder experimentar Linux mientras lee. Entonces, prueba los ejemplos y haz los ejercicios.
Las distribuciones de Linux suelen estar disponibles en los sitios web de las organizaciones que las producen.
Las siguientes secciones describen sitios web asociados con distribuciones de Linux que ofrecen imágenes
ISO que puede descargar.
NOTA
Una imagen ISO es una imagen de disco que tiene el formato de sistema de archivos ISO 9660, un formato que se usa comúnmente
con imágenes de CD y DVD. Debido a que este es un formato muy conocido, los sistemas Windows, Mac y Linux lo pueden leer.
Se puede usar una imagen ISO para crear una unidad flash USB de arranque, un CD o un DVD, según el tamaño de la imagen.
Una imagen ISO en su sistema de archivos se puede montar en Linux en modo loopback, para que pueda ver o copiar su
contenido.
Cuando una imagen ISO contiene un Live CD de Linux o una imagen de instalación, las imágenes se pueden iniciar. Esto significa
'
s dla
que, en lugar de iniciar un sistema operativo, como Windows o Linux, desde la computadora, isco
duro, puede
computadora decirle
debe a su
iniciar desde
el CD o DVD. Esto le permite ejecutar un sistema operativo totalmente diferente al que está instalado en su disco duro sin cambiar
o dañar los datos en ese disco.
787
Machine Translated by Google
Parte VII: Apéndices
Conseguir Fedora
NOTA
Recomiendo descargar Fedora Workstation Live Image para usar junto con este libro porque la mayor parte del disco duro del libro hasta que
funciona con esa distribución. Puede ejecutarlo en vivo sin comprometerse a sobrescribir su computadora siéntase lo '
suficientemente cómodo como para instalarlo permanentemente.
Para probar los ejemplos de este libro, utilicé imágenes de Fedora Workstation de 64 bits de Fedora 30 y 31,
que puede obtener de GetFedora.org (https://getfedora.org/en/workstation/download). Si tiene una máquina de 64
bits, debe usar la ISO de 64 bits.
'
Las versiones posteriores de Fedora que vienen con un escritorio GNOME también deberían funcionar. en el enlace
Aquí para el ISO exacto utilizado para la estación de trabajo Fedora 31:
https://download.fedoraproject.org/pub/fedora/linux/releases/31/Workstation/x86_64/iso/Fedora
WorkstationLivex86_64311.9.iso
Tenga en cuenta que la última imagen ISO de Fedora Workstation no cabe en un CD, por lo que debe grabarla en un
DVD o en una unidad flash USB. Consulte las descripciones de las herramientas de grabación de CD/DVD disponibles
para Windows, MacOS y Linux más adelante en este apéndice.
La Figura A.1 muestra un ejemplo de la página Obtener Fedora.
788
Machine Translated by Google
Apéndice A: Medios
Hoy en día, la descarga predeterminada es una imagen ISO de un Live DVD de Fedora Workstation
(GNOME) tipo PC de 64 bits. Puede iniciar esta imagen en su computadora y, si lo desea, puede instalarla
permanentemente en el disco duro de su computadora. Para descargar esta imagen, haga lo siguiente:
1. Seleccione Estación de trabajo o Servidor de GetFedora.org. Recomiendo Workstation a
seguir junto con este libro.
2. Seleccione el botón Descargar ahora y haga clic en el botón Descargar. Una ventana emergente debe
aparecerá, preguntándote qué quieres hacer con la ISO.
3. Seleccione para guardar la ISO. Dependiendo de su configuración, se le preguntará dónde desea descargarlo
o simplemente comenzará a descargarse en una carpeta predeterminada (en Linux, probablemente sea una
carpeta de Descargas).
4. Si se le pregunta dónde colocar el ISO, seleccione una carpeta que tenga suficiente espacio para guardarlo.
Recuerde dónde se encuentra esta carpeta, porque necesita encontrar el ISO cuando vaya a grabarlo más
tarde.
Si necesita más información sobre qué hacer con la imagen descargada, hay enlaces para ayudarlo en la página de
Fedora que aparece. En el momento de escribir este artículo, el enlace Aprender aquí lo lleva a las descripciones de
cómo crear medios de instalación en vivo. Las instrucciones exactas pueden cambiar a medida que se actualice el
sitio web.
Tiene otras opciones para descargar ISO de Fedora. Desde la parte inferior de la página GetFedora.org ,
puede descargar imágenes ISO de Fedora especialmente configuradas llamadas spins (https://
spins.fedoraproject.org). Aquí hay algunos tipos especiales de giros de Fedora que podrían interesarle:
Giro de escritorio KDE: las personas que prefieren el escritorio KDE al escritorio GNOME pueden
descargue el giro de Plasma KDE.
Giro de escritorio liviano: si está probando Linux en una computadora con menos memoria o potencia de
procesamiento, considere los giros Xfce y LXQt (que representan escritorios livianos del mismo nombre).
Giro de efectos de escritorio: el giro MATECompiz ofrece más del otro extremo a los escritorios livianos, con
efectos de escritorio como ventanas tambaleantes y escritorios que giran en un cubo.
Giro de escritorio apto para niños: El escritorio SOAS es un giro del formulario Sugar Learning Plat, creado
para proporcionar una configuración simplificada y una interfaz gráfica amigable para los niños.
SOAS puede transportarse en una unidad USB y ejecutarse en cualquier computadora disponible.
Obtener Red Hat Enterprise Linux A
Muchas grandes corporaciones, agencias gubernamentales y universidades utilizan Red Hat Enterprise Linux
para ejecutar sus aplicaciones de misión crítica. Si bien la mayoría de los procedimientos de este libro funcionarán
bien en Fedora, hay muchas referencias a cómo se hacen las cosas de manera diferente en Fedora.
789
Machine Translated by Google
Parte VII: Apéndices
Red Hat Enterprise Linux porque, cuando consiga un trabajo como administrador de sistemas Linux,
en la mayoría de los casos, trabajará con sistemas Red Hat Enterprise Linux.
Aunque el código fuente de Red Hat Enterprise Linux está disponible gratuitamente, las ISO que
contienen los paquetes que instala (a menudo denominados archivos binarios) están disponibles solo
para aquellos que tienen cuentas en el portal de clientes de Red Hat (https://access. redhat.com) o a
través de copias de evaluación.
Si no tiene una cuenta, puede intentar registrarse para una prueba de 30 días. Si usted o su empresa
tienen una cuenta con Red Hat, pueden descargar los ISO que necesiten. Vaya al siguiente sitio y siga las
instrucciones para descargar un servidor ISO de Red Hat Enterprise Linux o regístrese para obtener una
copia de evaluación:
https://access.redhat.com/downloads.
Red Hat no ofrece versiones en vivo de Red Hat Enterprise Linux. En su lugar, puede descargar DVD
de instalación que puede instalar como se describe en el Capítulo 9, “Instalación
libro.
de Linux”, de este
NOTA
Si no puede obtener un DVD de instalación de Red Hat Enterprise Linux, puede obtener una experiencia similar utilizando
el DVD de instalación de CentOS. CentOS no es exactamente lo mismo que RHEL. Sin embargo, si descarga el DVD de
instalación de CentOS para CentOS 8.x desde los enlaces del sitio de CentOS ( http://www.centos.org/download/ ), el
procedimiento de instalación es similar al descrito para Red Hat Enterprise Linux. en el Capítulo 9 .
Obtener Ubuntu
Mucha gente nueva en Linux comienza descargando e instalando Ubuntu. Ubuntu tiene una gran base de
seguidores y muchos colaboradores activos. Si tiene problemas con Ubuntu, existen foros grandes y
activos donde muchas personas están dispuestas a ayudarlo a superar los problemas.
Si ya tiene un sistema Ubuntu instalado, puede seguir la mayor parte de este libro. Puede obtener
Ubuntu con un escritorio GNOME, y su shell de tablero predeterminado es similar a bash (o puede
cambiar a bash en Ubuntu para que coincida con los ejemplos de shell de este libro).
Aunque la mayoría de los ejemplos de este libro se enfocan en Fedora y RHEL, he agregado muchas
más referencias a Ubuntu a lo largo del libro en esta edición.
Para obtener Ubuntu, puede descargar una imagen ISO en vivo o un medio de instalación desde la
página Descargar Ubuntu: http://www.ubuntu.com/download/ubuntu.
La Figura A.2 muestra un ejemplo de la página Descargar escritorio de Ubuntu.
790
Machine Translated by Google
Apéndice A: Medios
Al igual que con Fedora, la forma más fácil de descargar Ubuntu es seleccionar la imagen Ubuntu Live de 64 bits,
'
descargarla y grabarla. Aquí Vea cómo hacerlo desde la página Descargar Ubuntu:
1. Haga clic en el botón Descargar. De forma predeterminada, esto descarga la imagen ISO Live ISO de
escritorio de Ubuntu de 64 bits más reciente.
2. O se le pregunta dónde desea descargar la imagen ISO, o simplemente comienza
descargando a una carpeta predeterminada.
3. Si se le pregunta dónde colocar la ISO, seleccione una carpeta que tenga suficiente espacio para guardar la
ISO. Recuerde dónde se encuentra esta carpeta porque necesita encontrar la ISO cuando vaya a grabarla
más tarde.
Una vez completada la descarga, grabe la imagen ISO en un DVD utilizando los procedimientos descritos en la sección
"Creación de CD y DVD de Linux".
También están disponibles otros tipos de medios de instalación de Ubuntu. Para encontrar otros medios de Ubuntu, vaya
a la página de descargas alternativas (http://www.ubuntu.com/download/alternativedownloads).
Desde este sitio, puede obtener medios que contienen una variedad de instalaciones de escritorio y servidor.
A
Arrancar Linux desde una unidad USB
En lugar de grabar imágenes ISO en un CD o DVD, puede colocar su sistema Linux en una unidad USB. Las
unidades USB ofrecen la ventaja de poder escribir y leer, por lo que puede
791
Machine Translated by Google
Parte VII: Apéndices
guarde su contenido entre sesiones. La mayoría de las computadoras modernas pueden iniciarse desde una unidad USB,
aunque es posible que deba interrumpir el proceso de inicio para indicarle al BIOS que inicie desde una unidad USB en
lugar de un disco duro o una unidad de CD/DVD.
Puede encontrar procedimientos para colocar Fedora y Ubuntu en una unidad USB en las siguientes ubicaciones:
Fedora en una unidad USB: con una herramienta llamada Live USB Creator, puede instalar una imagen ISO de Fedora
en una unidad USB en Windows o Linux. Para ejecutar Fedora desde esa unidad, insértela en un puerto USB de su
computadora, reinicie la computadora, interrumpa el BIOS mientras se inicia (posiblemente F12) y seleccione iniciar
desde una unidad USB. El procedimiento para usar Live USB Creator se encuentra en
https://docs.fedoraproject.org/enUS/quickdocs/creatingandusingalive
imageninstalación/index.html
Ubuntu en una unidad USB: Ubuntu tiene procedimientos para crear una unidad USB de arranque con
Ubuntu en él que funciona desde Windows, MacOS o Linux. Para averiguar cómo hacerlo, vaya a la página de
descarga de Ubuntu y, en "Formas fáciles de cambiar a Ubuntu", busque el procedimiento adecuado "Cómo crear
una memoria USB de arranque..." para Ubuntu, Windows o Windows. MacOS: https://ubuntu.com/tutorials/tutorial
createausbstickonubuntu#1overview
Creación de CD y DVD de Linux
Después de descargar una imagen de CD o DVD de Linux, puede usar varias herramientas para crear CD o DVD de
arranque para instalar o simplemente ejecutar Linux en vivo desde esos medios.
Antes de comenzar, debe tener lo siguiente:
Imágenes ISO de DVD o CD: descargue las imágenes ISO en su computadora que representan el DVD o CD físico que
finalmente grabará. Hoy en día, la mayoría de las imágenes ISO de Linux son demasiado grandes para caber en un
CD (incluidas las de RHEL, Fedora y Ubuntu).
DVD/CD en blanco: necesita DVD o CD en blanco para grabar las imágenes. Los CD aguantan hasta
alrededor de 700 MB; Los DVD tienen una capacidad de hasta 4,7 GB (capa única).
Grabadora de CD/DVD: necesita una unidad que sea capaz de grabar CD o DVD, dependiendo de cuál esté grabando.
No todas las unidades de CD/DVD pueden grabar DVD (especialmente las más antiguas).
Por lo tanto, es posible que deba encontrar una computadora con una unidad que tenga esa capacidad.
Las siguientes secciones describen cómo grabar CD y DVD de arranque desde sistemas Windows, MacOS y Linux.
Grabación de CD/DVD en Windows Si ha descargado su
imagen ISO de Linux en un sistema Windows, puede grabar esa imagen en un CD o DVD de diferentes maneras. Aquí
hay unos ejemplos:
Windows: en las últimas versiones de Windows, la función de grabar imágenes ISO en CD o DVD está integrada en
Windows. Después de descargar una imagen ISO, simplemente inserte la
792
Machine Translated by Google
Apéndice A: Medios
'
CD o DVD adecuado en su computadora), haga clic s drive (asumiendo que la unidad es de escritura
con el botón derecho en el icono de imagen ISO de la carpeta en la que lo descargó y seleccione
Grabar imagen de disco. Cuando aparezca la ventana Grabadora de imágenes de disco de Windows,
seleccione Grabar para grabar la imagen.
Roxio Creator: esta aplicación de Windows de terceros contiene muchas funciones para copiar y grabar
CD y DVD. Puede leer sobre el producto aquí: http://www .roxi o.com/en /products/creator/ .
Nero CD/DVD Burning ROM: Nero es otro popular producto de software de grabación de CD/DVD para
sistemas Windows. Puede obtener más información sobre Nero aquí: http://www.nero.com.
Grabación de CD/DVD en un sistema MacOS Al igual que Windows,
MacOS tiene un software de grabación de CD/DVD integrado en el sistema operativo. Para grabar una imagen
ISO en un disco en un sistema MacOS, siga estos pasos:
1. Descargue la imagen ISO que desee en su sistema MacOS. Debería aparecer un icono que represente la
ISO en su escritorio.
2. Inserte un CD o DVD en blanco en su grabadora de CD/DVD, según corresponda para el tamaño de
la imagen.
3. Haga clic con el botón derecho en el icono que representa la ISO de Linux que acaba de descargar y
seleccione Grabar "Linux" en disco. Aparece una ventana emergente que le pregunta si está seguro de
que desea grabar la imagen.
4. Complete el nombre que desea darle al ISO y la velocidad de escritura y luego seleccione Grabar. La
imagen comienza a grabarse en el disco.
5. Después de grabar la imagen, expulse el disco; está listo para iniciar el CD o DVD en una computadora
adecuada.
Grabación de CD/DVD en Linux Linux tiene
herramientas gráficas y de línea de comandos para grabar imágenes de CD y DVD en medios físicos. Los ejemplos
de esta sección muestran cómo usar K3b desde el escritorio o cdrecord (o wodim) para grabar imágenes ISO en
CD o DVD. Si no están instalados, puede instalar cualquiera de los dos de la siguiente manera:
Para Fedora o RHEL
# yum instalar k3b # yum
instalar wodim
Para Debian o Ubuntu
# aptget install k3b # aptget A
install wodim
793
Machine Translated by Google
Parte VII: Apéndices
Grabación de CD o DVD desde un escritorio Linux
'
Aquí s cómo crear CD o DVD de Linux de arranque desde un sistema Linux en ejecución (como Fedora) usando
K3b. K3b viene con el escritorio KDE pero también se ejecuta en el escritorio GNOME.
'
1. Descarga las imágenes ISO que quieras a tu ordenador disco duro. (Una imagen de CD
tiene menos de 700 MB de tamaño. Las imágenes de DVD de una sola capa tienen menos de 4,7 GB).
2. Abra una aplicación de grabación de CD/DVD. Para este procedimiento, recomiendo K3b CD y DVD Kreator
(http://www.k3b.org). En Fedora, seleccione Actividades y escriba K3b (o escriba k3b desde una ventana
de Terminal). Aparecerá la ventana “K3b – The CD and DVD Kreator”.
3. Desde la ventana de K3b, seleccione Herramientas Grabar imagen para grabar una imagen ISO de CD o DVD.
Se le pide que elija un archivo de imagen.
4. Busque la imagen que acaba de descargar o copiar en el disco duro y selecciónela. Después de seleccionar la
imagen que desea, aparece la ventana Grabar imagen, al igual que una suma de verificación en la imagen. La
Figura A.3 muestra la ventana K3b lista para seleccionar una imagen de Fedora.
FIGURA A.3
Utilice K3b para grabar sus CD o DVD de Linux.
5. Inserte un CD o DVD en blanco en la unidad de CD/DVD, que puede ser una combinación de CD/DVD.
Unidad de DVD. (Si aparece una ventana de CD/DVD Creator, puede cerrarla).
794
Machine Translated by Google
Apéndice A: Medios
6. Verifique la configuración en la ventana Grabar imagen (a menudo, los valores predeterminados
están bien, pero es posible que desee reducir la velocidad si se queman mal). También puede
seleccionar la casilla de verificación Simular para probar la grabación antes de escribir en el CD/DVD.
Haga clic en Iniciar para continuar.
7. Cuando el CD/DVD termine de grabarse, expúlselo (o puede expulsarse automáticamente) y
márquelo adecuadamente (información como el nombre de distribución, el número de versión, la
fecha y el nombre de la imagen ISO).
'
Ahora tu Está listo para comenzar a instalar (o iniciar) la distribución de Linux que acaba de grabar.
Grabación de CD o DVD desde una línea de comandos
de Linux Si no tiene GUI o no le importa
shell,
trabajar
puede
duesde
sar eel l
comando cdrecord para grabar los ISO. Con un
CD o DVD en blanco insertado y la imagen ISO que desea grabar en el directorio actual, puede usar la
siguiente línea de comando simple para grabar una imagen de CD en un CD o DVD usando cdrecord:
# cdrecord v lo que sea.iso
Consulte la página de manual de cdrecord (man cdrecord) para ver otras opciones disponibles con
el comando cdrecord.
795
Machine Translated by Google
Machine Translated by Google
APÉNDICE
Respuestas al ejercicio
T
Este apéndice proporciona respuestas a cada uno de los ejercicios del capítulo. Hay muchas maneras de acomodar
plish tareas en Linux. Las respuestas sugeridas se proporcionan aquí.
Algunos de los ejercicios requieren que modifique los archivos del sistema que podrían cambiar
el funcionamiento básico de su sistema, o incluso hacer que su sistema no se pueda iniciar. Por lo
tanto, le recomiendo que haga los ejercicios en un sistema Linux que pueda modificar y borrar si algo sale mal.
Usar máquinas virtuales, que puedes descartar cuando termines, es una excelente opción.
Capítulo 1: Comenzando con Linux
No hay ejercicios en el Capítulo 1 .
Capítulo 2: Creación del escritorio Linux perfecto
Esta sección detalla algunas formas en que estas tareas se pueden completar en los escritorios GNOME 2 y GNOME 3.
1. Para comenzar, necesita un sistema Linux frente a usted para realizar los procedimientos de este libro.
Es preferible un sistema instalado, para que no pierda los cambios cuando reinicie. Para comenzar, puede usar
un Live CD de Fedora (o un sistema instalado), un sistema instalado de Ubuntu o un sistema instalado de Red
Hat Enterprise Linux. Aquí están sus opciones:
a. Fedora Live CD (GNOME 3): Obtenga un Fedora Live CD como se describe en el Apéndice A.
Ejecútelo en vivo, como se describe en la sección "Comenzar con la imagen Fedora GNOME
, o instálelo
Desktop Live" en el Capítulo y eL
jecútelo
2 "Instalar inux". desde el disco duro como se describe en el Capítulo 9 ,
b. Ubuntu (GNOME 3): Instale Ubuntu y el software GNOME Shell, como se describe en la
comienzo del capitulo 2 .
C. Red Hat Enterprise Linux 8 (GNOME 3): Instale Red Hat Enterprise Linux 7, como se describe
en el Capítulo 9.
d. Red Hat Enterprise Linux 6 o anterior (GNOME 2): Instale Red Hat Enterprise Linux 6.
797
Machine Translated by Google
Parte VII: Apéndices
2. Para iniciar el navegador web Firefox e ir a la página de inicio de GNOME (http://gnome.org), hay
algunos pasos sencillos que debe seguir. Si su red no funciona, consulte el Capítulo 14,
"Administración dinalámbricas.
e redes", para obtener ayuda sobre cómo conectarse a redes cableadas e
GNOMO 3
Para GNOME 3, puede presionar la tecla de Windows para acceder a la pantalla de descripción
general. Luego escriba Firefox para resaltar solo el ícono del navegador web Firefox. Presiona
Enter para iniciarlo. Escriba http://gnome.org en el cuadro de ubicación y presione Entrar.
GNOMO 2
Para GNOME 2, seleccione el icono de Firefox en la barra de menú superior. Escribe http://gnomo
.org en el cuadro de ubicación y presione Entrar.
3. Para elegir un fondo que le guste del sitio de arte de GNOME (http://gnomelook
.org), descárguelo a su carpeta Imágenes y selecciónelo como su fondo actual.
En los sistemas GNOME 2 y GNOME 3, haga lo siguiente:
a. Escriba http://gnomelook.org/ en el cuadro de ubicación de Firefox y presione Entrar. b. Encuentra
un fondo que te guste y selecciónalo. Luego haga clic en el botón Descargar
y descárguelo a su carpeta Imágenes.
C. Abra su carpeta Imágenes, haga clic con el botón derecho en la imagen y seleccione Establecer como fondo de pantalla.
La imagen se utiliza como fondo de escritorio.
4. Para iniciar una ventana del Administrador de archivos de Nautilus y moverla al segundo espacio de trabajo en
su escritorio, haga lo siguiente:
Para GNOMO 3
a. Presione la tecla de Windows. b.
Seleccione el ícono de Archivos del Tablero (lado izquierdo). Se inicia una nueva instancia de Nautilus en el espacio
de trabajo actual.
C. Haga clic con el botón derecho en la barra de título de la ventana Archivos y seleccione Mover a monitor abajo.
La ventana Archivos se mueve al segundo espacio de trabajo.
Para GNOMO 2
a. Abra la carpeta Inicio desde el escritorio de GNOME 2 (haga doble clic). b. Haga clic con
el botón derecho en la barra de título de Nautilus que aparece y seleccione Mover a la derecha del espacio
de trabajo o Mover a otro espacio de trabajo. (Puede seleccionar el espacio de trabajo que desea de la
lista).
5. Para encontrar la imagen que descargó para usarla como fondo de escritorio y
ábralo en cualquier visor de imágenes, primero vaya a su carpeta Inicio, luego abra la carpeta
Imágenes. Haga doble clic en la imagen para abrirla en un visor de imágenes.
6. Moviéndose de un lado a otro entre el espacio de trabajo con Firefox y el que tiene
el administrador de archivos de Nautilus es bastante sencillo.
798
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Si realizó correctamente los ejercicios anteriores, Nautilus y Firefox deberían estar en diferentes espacios de
trabajo. Así es como puede moverse entre esos espacios de trabajo en GNOME 3 y GNOME 2:
GNOMO 3
Presione la tecla de Windows y seleccione el espacio de trabajo que desea en el lado derecho
columna. Como alternativa, puede ir directamente a la aplicación que desee presionando Alt+Tab y
presionando Tab nuevamente y también las teclas de flecha para resaltar la aplicación que desea abrir.
GNOMO 2
Seleccione el espacio de trabajo que desee con el mouse haciendo clic en el pequeño representante
Sentación del espacio de trabajo en el lado derecho del panel inferior. Si tiene habilitados los Efectos de
escritorio (Sistema Preferencias Efectos de escritorio Compiz), intente presionar Ctrl+Alt+flecha
derecha (o flecha izquierda) para pasar al siguiente espacio de trabajo.
7. Para abrir una lista de aplicaciones instaladas en su sistema y seleccionar una imagen
visor para abrir desde esa lista usando la menor cantidad de clics o pulsaciones de teclas posible, haga lo
siguiente:
En GNOMO 3
Mueva el mouse a la esquina superior izquierda de la pantalla para acceder a la Vista general
pantalla. Seleccione Aplicaciones, luego seleccione Utilidades en la columna de la derecha y luego
seleccione Visor de imágenes.
En GNOMO 2
8. Para cambiar la vista de las ventanas en su espacio de trabajo actual a vistas más pequeñas de esas ventanas
por las que puede pasar, haga lo siguiente:
En GNOMO 3
Con varias ventanas abiertas en varios espacios de trabajo, presione las teclas Alt+Tab. Mientras continúa
presionando la tecla Alt, presione Tab hasta que resalte la aplicación que desea. Suelte la tecla Alt para
seleccionarlo.
En GNOMO 2
Con múltiples ventanas abiertas en múltiples espacios de trabajo, mantenga presionada la tecla
Teclas Ctrl+Alt+Tab. Mientras continúa presionando las teclas Ctrl+Alt, presione Tab hasta que haya
resaltado la aplicación que desea. Suelte las teclas Ctrl y Alt para seleccionarlo.
9. Para iniciar un reproductor de música desde su escritorio usando solo el teclado, haga lo siguiente
B
siguiente:
En GNOMO 3
a. Presione la tecla de Windows para ir a la pantalla Resumen.
799
Machine Translated by Google
Parte VII: Apéndices
b. Escriba Ritmo (hasta que aparezca el icono y se resalte) y presione Entrar.
(En Ubuntu, si no tiene Rhythmbox instalado, escriba Bansh para abrir Banshee Media Player).
En GNOMO 2
Presione Alt+F2. Desde el cuadro Ejecutar aplicación que aparece. Luego escriba caja de ritmos
y presione Entrar.
10. Para tomar una foto de su escritorio usando solo las teclas, presione la tecla Imprimir pantalla para tomar una captura
de pantalla de todo su escritorio tanto en GNOME 3 como en GNOME 2. Presione Alt+Imprimir pantalla para tomar
una captura de pantalla solo de la ventana actual . En ambos casos, las imágenes se guardan en la carpeta Imágenes
de su carpeta de inicio.
Capítulo 3: Usando el Shell
1. Para cambiar de consola virtual y volver al escritorio en Fedora o Ubuntu (esta característica
tura está deshabilitada en algunos sistemas RHEL), haga lo siguiente:
a. Mantenga presionadas las teclas Ctrl+Alt y presione F2 (Ctrl+Alt+F2). Debería aparecer una consola
basada en texto. b. Escriba su nombre de usuario (presione Enter) y contraseña (presione Enter). C. Escriba
algunos comandos, como id, pwd y ls. d. Escriba exit para salir del shell y volver al indicador de inicio de
sesión. mi. Presione Ctrl+Alt+F1 para volver a la consola virtual que contiene su escritorio.
(En diferentes sistemas Linux, el escritorio puede estar en diferentes consolas virtuales.
Ctrl+Alt+F7 y Ctrl+Alt+F2 son otros lugares comunes para encontrarlo).
2. Para su ventana de Terminal, haga que la fuente sea roja y el fondo amarillo.
b. En la ventana Terminal, seleccione Editar Preferencias de perfil.
C. Seleccione la pestaña Colores y anule la selección de la casilla "Usar colores del tema del sistema".
d. Seleccione el cuadro junto a Color del texto, haga clic en el color rojo que desee de las selecciones
disponibles y haga clic en Seleccionar.
mi. Seleccione la casilla junto a Color de fondo, haga clic en el color amarillo que desee
de las selecciones disponibles y haga clic en Seleccionar.
F. Haga clic en Cerrar en la ventana Perfil para volver a la ventana Terminal con el
nuevos colores
gramo. Regrese y vuelva a seleccionar el cuadro "Usar colores del tema del sistema" para volver a los colores
predeterminados de la Terminal.
3. Busque el comando de montaje y la página man de tracepath.
a. Ejecute type mount para ver que la ubicación del comando de montaje sea /usr/
bin/montar o /bin/montar.
800
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
b. Ejecute localizar tracepath para ver que la página man de tracepath está en /usr/
compartir/hombre/man8/tracepath.8.gz.
4. Ejecute, recupere y cambie estos comandos como se describe: $
cat /etc/passwd $ ls $HOME $ date
a. Presione la flecha hacia arriba hasta que vea el comando cat /etc/passwd. Si su cursor no está ya al
final de la línea, presione Ctrl+E para llegar allí. Retroceda sobre la palabra passwd, escriba el grupo
de palabras y presione Entrar.
b. Escriba man ls y busque la opción para listar por tiempo (t). Presione la flecha hacia arriba hasta que
vea el comando ls $HOME. Use la tecla de flecha izquierda o Alt+B para colocar el cursor a la izquierda
de $HOME. Escriba t, para que la línea aparezca como ls t $HOME. Presione Entrar para ejecutar el
comando.
C. Escriba man date para ver la página de manual de fechas. Use la flecha hacia arriba para
recuperar el comando de fecha y agregue el indicador de formato que encontró. Un solo indicador
de formato %D obtiene los resultados que necesita:
$ fecha +%D
27/04/20
5. Utilice la función de completar con tabulación para escribir basename /usr/share/doc/. Escribe basen<Tab> /
u<Tab>sh<Tab>do<Tab> para obtener el nombre base/usr/share/doc/.
6. Canalice /etc/services al comando less: $ cat /etc/services | menos.
7. Haga que la salida del comando de fecha aparezca en este formato: Hoy es jueves,
23 de abril de
2020. $ echo "Hoy es $(fecha +'%A, %B %d, %Y')"
8. Ver variables para encontrar su nombre de host actual, nombre de usuario, shell y hogar
directorios.
$ echo $HOSTNAME $
echo $NOMBRE DE
USUARIO $ echo
$SHELL $ echo $HOME
9. Agregue un alias mypass permanente que muestre el contenido de /etc/
archivo de
contraseña. a. Escriba nano
$HOME/.bashrc. b. Mueva el cursor a una línea abierta en la parte inferior de la página. (Presione Enter para abrir
una nueva línea si es necesario).
B
C. En su propia línea, escriba alias m="cat /etc/passwd". d. Escriba Ctrl+O
para guardar y Ctrl+X para salir del archivo.
mi. Escriba fuente $HOME/.bashrc.
801
Machine Translated by Google
Parte VII: Apéndices
gramo. Tipo M. (El archivo /etc/passwd se muestra en la pantalla).
10. Para mostrar la página del manual para la llamada al sistema de montaje, use el comando man k para
buscar páginas del manual que incluyan la palabra montar. Luego use el comando de montaje con el
número de sección correcto (8) para obtener la página del manual de montaje adecuada:
$ hombre k montaje | grep ^mount (2)
montar montar sarchivos
istema d(e
8) montar un
montar sistema de archivos
...
punto de montaje (1) ver si un directorio es un punto de montaje
estadísticas de montaje (8) Muestra varios clientes NFS por montaje
Estadísticas
$ hombre 2 montar
MONTAJE(2) Manual del programador de Linux
MONTAJE(2)
NOMBRE
mount montar el sistema de archivos
SINOPSIS
#incluir <sys/mount.h>
.
.
.
Capítulo 4: Moverse por el sistema de archivos
1. Cree el directorio de proyectos, cree nueve archivos vacíos (casa1 a casa9) y enumere solo esos archivos.
$ mkdir $INICIO/proyectos/ $ touch $INICIO/proyectos/casa{1..9} $ ls $INICIO/proyectos/casa{1..9}
2. Cree la ruta del directorio $HOME/projects/houses/doors/ y cree algunos archivos vacíos en esa ruta.
$ cd
$ mkdir $INICIO/proyectos/casas $ touch
$INICIO/proyectos/casas/bungalow.txt $ mkdir $INICIO/proyectos/
casas/puertas/ $ touch $INICIO/proyectos/casas/puertas/bifold.txt $
mkdir p $INICIO/proyectos/exteriores/vegetación/ $ toque $INICIO/
proyectos/exteriores/vegetación/paisaje.txt
3. Copie los archivos house1 y house5 en el directorio $HOME/projects/houses/.
$ cp $HOME/proyectos/casa[15] $HOME/proyectos/casas
802
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
4. Copie recursivamente el directorio /usr/share/doc/initscripts* en $HOME/
directorio proyectos/.
$ cp ra /usr/share/doc/initscripts*/ $HOME/proyectos/
5. Enumere recursivamente el contenido del directorio $HOME/projects/. Pipe la salida
al comando less para que pueda pasar página a través de la salida. $ ls lR
$INICIO/proyectos/ | menos
6. Elimine los archivos house6, house7 y house8 sin que se le solicite.
$ rm f $HOME/proyectos/casa[678]
7. Mueva house3 y house4 al directorio $HOME/projects/houses/doors.
$ mv $HOME/proyectos/casa{3,4} $HOME/proyectos/casas/puertas/
8. Elimine el directorio $HOME/projects/houses/doors y su contenido. $ rm rf $HOME/
proyectos/casas/puertas/
9. Cambie los permisos en el archivo $HOME/projects/house2 para que pueda ser
leído y escrito por el usuario propietario del archivo, solo leído por el grupo y no
tiene permiso para otros.
$ chmod 640 $HOME/proyectos/casa2
10. Cambie recursivamente los permisos del directorio $HOME/projects/ para que nadie
tenga permiso de escritura en ningún archivo o directorio debajo de ese punto en el
sistema de archivos.
$ chmod R aw $INICIO/proyectos/ $ ls lR
$INICIO/proyectos/ /inicio/joe/proyectos/:
12 en total
rrr. 1 joe joe 0 16 Ene 06:49 casa1
rr. 1 joe joe 0 16 Ene 06:49 casa2
rrr. 1 joe joe 0 16 Ene 06:49 house5
rrr. 1 joe joe 0 16 Ene 06:49 house9
drxrxrx. 2 joe joe 4096 16 de enero 06:57 casas
drxrxrx. 2 joe joe 4096 1 de julio de 2014 initscripts9.03.40
B
drxrxrx. 3 joe joe 4096 16 de enero 06:53 al aire libre
...
803
Machine Translated by Google
Parte VII: Apéndices
Capítulo 5: Trabajar con archivos de texto
1. Siga estos pasos para crear el archivo /tmp/services y luego edítelo para que
WorldWideWeb aparece como World Wide Web.
$ cp /etc/servicios /tmp $ vi /tmp/
servicios
/WorldWideWeb <Intro>
cwWorld Wide Web<Esc>
Las siguientes dos líneas muestran el antes y el después:
2. Una forma de mover el párrafo en su archivo /tmp/services es buscar el
primera línea del párrafo, elimine cinco líneas (5dd), vaya al final del archivo (G) y coloque el texto (p):
$ vi /tmp/servicios
/Tenga en cuenta que es <Entrar>
5dd
GRAMO
pag
3. Para usar el modo ex para buscar todas las apariciones del término tcp (sensible a mayúsculas
y minúsculas) en su archivo /tmp/services y cambiarlo a LO QUE SEA, puede ingresar lo
siguiente: $ vi /tmp/services :g / tcp /s//LO QUE SEA/g<Entrar>
4. Para buscar en el directorio /etc cada archivo llamado passwd y redirigir los errores de
su búsqueda a /dev/null, puede ingresar lo siguiente: $ find /etc
name passwd 2> /dev/null
5. Cree un directorio en su directorio de inicio llamado PRUEBA. Cree archivos en ese directorio
llamados uno, dos y tres que tengan permisos completos de lectura/escritura/ejecución para todos
(usuario, grupo y otros). Cree un comando de búsqueda que encuentre esos archivos y cualquier
otro archivo que tenga permiso de escritura abierto para "otros" desde su directorio de inicio y más
abajo. $ mkdir $INICIO/PRUEBA $ toque $INICIO/PRUEBA/{uno, dos, tres} $ chmod 777 $INICIO/
PRUEBA/{uno, dos, tres} $ find $INICIO perm 002 tipo f ls 148120 0 rwxrwxrwx 1
chris chris 0 1 de enero 08:56 /inicio/
chris/PRUEBA/dos
804
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
148918 0 rwxrwxrwx 1 chris chris 0 1 de enero 08:56 inicio/chris/
PRUEBA/tres
147306 0 rwxrwxrwx 1 chris chris 0 1 de enero 08:56 /home/chris/
PRUEBA/uno
6. Busque archivos en el directorio /usr/share/doc que no hayan sido modificados en
más de 300 días. $
buscar /usr/compartir/doc mtime +300
7. Cree un directorio /tmp/FILES. Busque todos los archivos en el directorio /usr/share que tengan
más de 5 MB y menos de 10 MB y cópielos en el directorio /tmp/FILES. $ mkdir /tmp/FILES $ find /
usr/share size +5M size 10M exec cp {} /tmp/FILES \; $ du sh /tmp/FILES/* /tmp/FILES/
BidiCharacterTest.txt /tmp/FILES/BidiTest.txt /tmp/FILES/day.jpg
6,6 millones
7,6 millones
5,2 m
8. Busque todos los archivos en el directorio /tmp/FILES y haga una copia de seguridad de cada archivo
en el mismo directorio. Utilice el nombre existente
cada adrchivo
e cada
de
archivo
copia dye
asñada .mybackup
eguridad. $ find /tmp/FILES/
para crear
type f exec cp {} {}.mybackup \;
9. Instale el paquete kerneldoc en Fedora o Red Hat Enterprise Linux. Usando
grep, busque dentro de los archivos contenidos en el directorio /usr/share/doc/kerneldoc* el
término e1000 (sin distinción entre mayúsculas y minúsculas) y enumere los nombres de los archivos
que contienen ese término.
# yum install kerneldoc $ cd /usr/
share/doc/kerneldoc* $ grep rli e1000 .
./Documentación/powerpc/arranquesinde.txt ./Documentación/redes/
e100.txt
...
10. Busque el término e1000 nuevamente en la misma ubicación. Sin embargo, esta vez enumere cada
línea que contiene el término y resalte el término en color.
$ cd /usr/share/doc/kerneldoc* $ grep ri color
e1000 .
Capítulo 6: Gestión de procesos en ejecución
B
1. Para enumerar todos los procesos que se ejecutan en su sistema con un conjunto completo de columnas,
mientras canaliza la salida a menos, ingrese lo siguiente: $ ps ef | menos
805
Machine Translated by Google
Parte VII: Apéndices
2. Para enumerar todos los procesos que se ejecutan en el sistema y ordenar esos procesos por el nombre de
el usuario que ejecuta cada proceso, ingrese lo siguiente:
$ ps ef sort=usuario | menos
3. Para enumerar todos los procesos que se ejecutan en el sistema con el ID de proceso de nombres de columna,
nombre de usuario, nombre de grupo, valor agradable, tamaño de memoria virtual, tamaño de memoria
residente y comando, ingrese lo siguiente:
$ ps eo 'pid,usuario,grupo,nice,vsz,rss,comm' | menos
USUARIO PID GRUPO EN COMANDO VSZ RSS
1 raíz raíz 0 19324 1236 calor
2 raíz raíz 0 0 0 hilos
3 raíz raíz 0 0 migración/0 0
4 raíz raíz 0 0 ksoftirqd/0
4. Para ejecutar el comando superior y luego alternar entre ordenar por uso de CPU
y el consumo de memoria, ingrese lo siguiente:
$ superior
PAG
METRO
PAG
METRO
5. Para iniciar el proceso de gedit desde su escritorio y usar la ventana del Monitor del sistema para eliminar ese
proceso, haga lo siguiente: $ gedit &
6. Para ejecutar el proceso gedit y usar el comando kill para enviar una señal para pausar (detener) ese
proceso, ingrese lo siguiente:
$ gedit & [1]
21532
$ matar SIGSTOP 21532
7. Para usar el comando killall para decirle al comando gedit (en pausa en la anterior
ejercicio) para seguir trabajando, haga lo siguiente:
$ killallSIGCONT gedit
Asegúrese de que el texto que escribió después de pausar gedit ahora aparece en la ventana.
806
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
8. Para instalar el comando xeyes, ejecútelo unas 20 veces en segundo plano y ejecute killall para eliminar
los 20 procesos xeyes a la vez, ingrese lo siguiente:
# yum instalar xorgx11apps $ xeyes &
$ xeyes &
...
$ killall xeyes &
Recuerde, debe ser el usuario raíz para instalar el paquete. Después de eso, recuerda
repetir el comando xeyes 20 veces. Extienda las ventanas en su pantalla y mueva el mouse
para divertirse y ver cómo se mueven los ojos. Todas las ventanas de xeyes deberían
desaparecer a la vez cuando escribes killall xeyes.
9. Como usuario habitual, ejecute el comando gedit para que comience con un buen valor de 5.
# bonito n 5 gedit & [1] 21578
10. Para usar el comando renice para cambiar el valor agradable del comando gedit que acaba de comenzar a
7, ingrese lo siguiente:
# renice n 7 21578 21578:
antigua prioridad 0, nueva prioridad 7
Use cualquier comando que desee para verificar que el valor Niza actual para el
comando gedit ahora está establecido en 7. Por ejemplo, podría escribir lo siguiente:
# ps eo 'pid,usuario,agradable,comunicación' | grep
gedit 21578 chris 7 gedit
Capítulo 7: Escritura de scripts de Shell simples
'
1. Aquí Es un ejemplo de cómo crear un script en su directorio $HOME/bin llamado
myownscript. Cuando se ejecuta el script, debe generar información que aparece de la
siguiente manera:
Hoy es sábado 10 de junio a las 15:45:04 EDT de 2019.
Está en /home/joe y su host es abc.example.com.
Los siguientes pasos muestran una forma de crear el script llamado myownscript:
a. Si aún no existe, cree un directorio bin: $ mkdir $HOME/bin
b. Usando cualquier editor de texto, cree un script llamado $HOME/bin/myownscript que contenga lo
siguiente:
#!/bin/bash #
B
myownscript #
Enumere alguna información sobre su sistema actual
807
Machine Translated by Google
Parte VII: Apéndices
echo "Hoy es $(fecha)". echo "Está
en $(pwd) y su host es $(hostname)".
C. Haga que el script sea ejecutable:
$ chmod 755 $HOME/bin/myownscript
2. Cree un script que lea tres parámetros posicionales desde la línea de comando, asigne esos parámetros
a las variables denominadas UNO, DOS y TRES, respectivamente.
Además, reemplace X con el número de parámetros e Y con todos los parámetros
ingresados. Luego reemplace A con el contenido de la variable UNO, B con la variable DOS
y C con la variable TRES, como se muestra a continuación:
a. Para crear el script, abra un archivo llamado $HOME/bin/myposition y agregue los siguientes
contenidos:
#!/bin/bash #
myposition
UNO=$1 DOS=$2
TRES=$3 echo
"Hay $# parámetros
que incluyen: $@" echo "El primero es $UNO, el segundo es $DOS, el
tercero es $TRES. "
b. Para hacer que el script llamado $HOME/bin/myposition sea ejecutable, ingrese el
siguiente: $
chmod 755 $HOME/bin/myposition
C. Para probarlo, ejecútelo con algunos argumentos de la línea de comandos, como se muestra a continuación:
$ myposition ¿Dónde está mi Hat Buddy?
Hay 5 parámetros que incluyen: ¿Dónde está mi Hat Buddy?
El primero es Donde, el segundo es Es, el tercero es Mi.
3. Para crear el script descrito, haga lo siguiente:
a. Para crear un archivo llamado $HOME/bin/myhome y hacerlo ejecutable, ingrese el
siguiente: $
toque $HOME/bin/myhome $ chmod
755 $HOME/bin/myhome
'
b. Aquí Así es como se vería el script myhome:
#!/bin/bash #
myhome read p
"¿En qué calle creciste?" mystreet read p "¿En qué ciudad creciste?" mytown
echo "La calle en la que crecí era $mystreet and the town
era $miciudad".
808
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
C. Ejecute el script para comprobar que funciona. El siguiente ejemplo muestra lo que el
la entrada y la salida del script podrían verse así:
$ myhome
¿En qué calle creciste? Harrison ¿En qué ciudad creciste? Princeton La
calle en la que crecí fue Harrison y el pueblo fue Princeton.
4. Para crear el script requerido, haga lo siguiente: a. Con
cualquier editor de texto, cree un script llamado $HOME/bin/myos y haga que el script sea
ejecutable:
$ toque $HOME/bin/myos $ chmod 755
$HOME/bin/myos
b. El script podría contener lo siguiente:
#!/bin/bash # myos
read p "¿Cuál es tu
sistema operativo favorito, Mac? opsys if [ $opsys = Mac ] ; luego echo "Mac es bueno, pero no lo
¿Windows o Linux? " suficientemente fuerte para mí" ; luego echo "Yo usó Windows una vez. que
es esa pantalla azul
elif [$opsys = Windows]
¿para?"
elif [ $opsys = Linux ] echo "¡Gran Elección!" ; entonces
demás
echo "¿Es $opsys un sistema operativo?" fi
5. Para crear un script llamado $HOME/bin/animals que recorra las palabras moose,
cow, goose y sow a través de un bucle for y agregue cada una de esas palabras
al final de la línea “I have a. . .," Haz lo siguiente:
a. Haga que el script sea ejecutable:
$ toque $HOME/bin/animals $ chmod 755
$HOME/bin/animals
b. El script podría contener lo siguiente:
#!/bin/bash #
animales para
ANIMALES en alce vaca ganso cerda; hacer eco "Tengo un $ ANIMALES"
hecho
B
C. Cuando ejecuta el script, la salida debería aparecer de la siguiente manera:
$ animales
tengo un alce
809
Machine Translated by Google
Parte VII: Apéndices
tengo una vaca
tengo un ganso
tengo una cerda
Capítulo 8: Administración del sistema de aprendizaje
1. Para habilitar Cockpit en su sistema, ingrese lo siguiente:
# systemctl enable now cockpit.socket Enlace simbólico creado /etc/
systemd/system/sockets.target.wants/
cabina.socket → /usr/lib/
systemd/system/cabina.socket
2. Para abrir la interfaz de Cockpit en su navegador web, ingrese el nombre de host o IP
dirección del sistema que mantiene su servicio Cockpit, seguida del número de puerto 9090.
Por ejemplo, ingrese esto en el cuadro de ubicación de su navegador:
https://host1.ejemplo.com:9090/
3. Para buscar todos los archivos en el directorio /var/spool que son propiedad de usuarios que no
sean root y hacer una lista larga de ellos, ingrese lo siguiente. (Recomiendo convertirse en root
para encontrar archivos que podrían estar cerrados a otros usuarios).
$ son
Contraseña: *********
# encontrar /var/spool no usuario root ls | menos
4. Para convertirse en usuario raíz y crear un archivo vacío o de texto sin formato llamado /mnt/test.txt,
ingrese lo siguiente:
$ son
Contraseña: *********
# toque /mnt/prueba.txt # ls l /mnt/
prueba.txt rwrr. 1 raíz raíz 0 9 de
enero 21:51 /mnt/test.txt
5. Para convertirse en root y editar el archivo /etc/sudoers para permitir que su cuenta de usuario
habitual (por ejemplo, bill) tenga privilegios de root completos a través del comando sudo, haga lo
siguiente:
$ son
Contraseña: *********
# visudo
O
factura TODO=(TODO) TODO
Esc ZZ
Debido a que visudo abre el archivo /etc/sudoers en vi, el ejemplo escribe o para abrir
una línea y luego escribe la línea para permitir que bill tenga privilegios completos de raíz.
810
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Después de escribir la línea, presione Esc para volver al modo de comando y escriba ZZ para
escribir y salir.
6. Para usar el comando sudo para crear un archivo llamado /mnt/test2.txt y verificar que
el archivo está allí y es propiedad del usuario raíz, ingrese lo siguiente:
[bill]$ sudo touch /mnt/test2.txt Confiamos en que haya
recibido la conferencia habitual del administrador del sistema local. Por lo general, se reduce a estas tres cosas: #1)
Respetar la privacidad de los demás.
#2) Piensa antes de escribir.
#3) Un gran poder conlleva una gran responsabilidad. [sudo] contraseña para bill:
********* [bill]$ ls l /mnt/text2.txt rwrr. 1 raíz raíz 0 9 de enero 23:37 /mnt/text2.txt
7. Haga lo siguiente para montar y desmontar una unidad USB y ver el diario del sistema durante este
proceso:
a. Ejecute el comando journalctl f como root en una ventana de Terminal y observe
la salida de aquí para los próximos pasos.
# journalctl f 25 de enero
16:07:59 host2 kernel: usb 11.1: nuevo dispositivo USB de alta velocidad número 16 usando ehcipci 25 de enero
16:07:59 host2 kernel: usb 11.1: Nuevo dispositivo USB encontrado ,
idVendedor=0ea0, idProducto=2168
25 de enero 16:07:59 host2 kernel: usb 11.1: Nuevas cadenas de dispositivo USB:
Mfr=1, Producto=2, Número de serie=3
25 de enero 16:07:59 host2 kernel: usb 11.1: Producto: Disco flash
25 de enero 16:07:59 host2 kernel: usb 11.1: Fabricante: USB
...
25 de enero 16:08:01 host2 kernel: sd 18:0:0:0: [sdb] Write Protect está desactivado
25 de enero 16:08:01 host2 kernel: sd 18:0:0:0: [sdb]
Suponiendo caché de unidad: escribir a través
25 de enero 16:08:01 kernel host2: sdb: sdb1
25 de enero 16:08:01 host2 kernel: sd 18:0:0:0: [sdb]
Disco extraíble SCSI adjunto
b. Conecte una unidad de almacenamiento USB que monte un sistema de archivos desde esa unidad
automáticamente. Si no es así, ejecute los siguientes comandos en una segunda terminal (como
raíz) para crear un directorio de punto de montaje y montar el dispositivo:
$ mkdir /mnt/prueba $ montaje /
dev/sdb1 /mnt/prueba $ desmontar / dev/sdb1
811
Machine Translated by Google
Parte VII: Apéndices
8. Para ver qué dispositivos USB están conectados a su computadora, ingrese lo siguiente:
$ lsusb
9. Para cargar el módulo bttv, enumere los módulos que se cargaron y descárguelo, ingrese
la siguiente:
# modprobe a bttv # lsmod |
grep bttv
todotv 167936 0
té575x 16384 1 btv
tveeprom 28672 1 bttv
videobuf_dma_sg 24576 1 bttv
videobuf_core 32768 2 videobuf_dma_sg,bttv
v4l2_common videodev 16384 1 btv
233472 3 tea575x,v4l2_common,bttv
i2c_algo_bit 16384 1 btv
Tenga en cuenta que otros módulos (v4l2_common, videodev y otros) se cargaron cuando
cargó bttv con modprobe a.
10. Ingrese lo siguiente para eliminar el módulo bttv junto con cualquier otro módulo que se haya cargado con él.
Observe que todos desaparecieron después de ejecutar modprobe r.
# modprobe r bttv # lsmod |
grep bttv
Capítulo 9: Instalación de Linux
1. Para instalar un sistema Fedora desde Fedora Live media, siga las instrucciones en la sección “Instalación
de Fedora desde Live Media” en el Capítulo 9. En general, esos pasos
incluyen lo siguiente:
a. Arrancando los medios Live. b.
Seleccionar para instalar en el disco duro cuando se inicia el sistema. C. Agregar
información de la página de resumen necesaria para configurar su sistema
inicialmente.
d. Reiniciando su computadora y eliminando el medio Live para que el nuevo
El sistema instalado arranca desde el disco duro.
2. Para actualizar los paquetes, después de que se complete la instalación de Fedora Live Media, haga lo siguiente:
siguiente:
a. Reinicie la computadora y complete las primeras preguntas de arranque
cuando se le indique. b. Con una conexión por cable o inalámbrica, asegúrese de tener
una conexión a Internet. Consulte el Capítulo 14, "Administración
problemas de redes",
de sred
para que su conexión i tiene
funcione correctamente. Abra un shell como usuario root y escriba sudo dnf update.
C. Cuando se le solicite, escriba y para aceptar la lista de paquetes que se muestra. El
sistema comienza a descargar e instalar los paquetes.
812
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
3. Para ejecutar la instalación de RHEL en modo de texto, haga lo siguiente:
a. Inicie el DVD de RHEL.
b. Cuando vea el menú de inicio, resalte una de las entradas de inicio de instalación y presione
Tabulador. Mueva el cursor a la derecha hasta el final de la línea del kernel y escriba el
texto de la opción literal al final de esa línea. Presione Entrar para iniciar el instalador.
C. Pruebe el resto de la instalación en modo texto.
4. Para configurar la partición del disco como se describe en la pregunta 4 para Red Hat Enterprise
Instalación de DVD de Linux, haga lo siguiente:
NOTA
Este procedimiento finalmente elimina todo el contenido de su disco duro. Si solo desea usar este ejercicio para practicar la
creación de particiones, puede reiniciar su computadora antes de comenzar el proceso de instalación real sin dañar su disco duro.
Después de avanzar y particionar su disco, suponga que se han eliminado todos los datos.
a. En una computadora que pueda borrar con al menos 10 GB de espacio en disco, inserte un DVD
de instalación de RHEL, reinicie y comience a recorrer las pantallas de instalación.
b. Cuando llegue a la pantalla Resumen de instalación, seleccione Instalación
Destino.
C. En la pantalla Destino de la instalación, seleccione el dispositivo que utilizará para la instalación
(probablemente sda si tiene un solo disco duro que puede borrar por completo o vda para una instalación
virtual).
d. Seleccione el botón Personalizado.
mi. Seleccione Listo para acceder a la pantalla Particionamiento manual.
F. Si el espacio en disco existente ya está consumido, debe eliminar las particiones antes de continuar.
gramo. Haga clic en el botón más (+) en la parte inferior de la pantalla. Luego agregue cada uno de
los siguientes
puntos de montaje bajos:
/arranque 400M
/ 3G
/var 2G
/inicio 2G
H. Seleccione Listo. Debería ver un resumen de los cambios.
i. Si los cambios parecen aceptables, seleccione Aceptar cambios. Si solo está practicando y en realidad no B
desea cambiar sus particiones, seleccione Cancelar y volver a particiones personalizadas. Luego
simplemente salga del instalador.
813
Machine Translated by Google
Parte VII: Apéndices
Capítulo 10: Obtener y administrar software
1. Para buscar en el repositorio de YUM el paquete que proporciona el comando mogrify,
ingrese lo siguiente:
# yum proporciona mogrify
2. Para mostrar información sobre el paquete que proporciona el comando mogrify y determinar cuál
es la página de inicio (URL) de ese paquete, ingrese lo siguiente:
# yum información ImageMagick
Verá que la URL de la página de inicio de ImageMagick es http://www.
imagemagick.org .
3. Para instalar el paquete que contiene el comando mogrify, ingrese lo siguiente: # yum install
ImageMagick
4. Para enumerar todos los archivos de documentación contenidos en el paquete que proporciona el
comando mogrify, ingrese lo siguiente:
# rpm qd ImageMagick
...
/usr/share/doc/ImageMagick/README.txt
...
/usr/share/man/man1/identify.1.gz /usr/share/
man/man1/import.1.gz /usr/share/man/man1/
mogrify.1.gz
5. Para revisar el registro de cambios del paquete que proporciona el comando mogrify,
ingrese lo siguiente: # rpm q changelog ImageMagick | menos
6. Para eliminar el comando mogrify de su sistema y verificar su paquete con la base de datos de RPM
para ver si realmente falta el comando, ingrese lo siguiente:
# escriba mogrify
mogrify es /usr/bin/mogrify # rm /usr/bin/
mogrify rm eliminar el archivo regular '/
usr/bin/mogrify'? y # rpm V Falta ImageMagick /usr/bin/mogrify
7. Para reinstalar el paquete que proporciona el comando mogrify y asegurarse de que todo el paquete
esté intacto nuevamente, ingrese lo siguiente:
# yum reinstalar ImageMagick # rpm V
ImageMagick
8. Para descargar el paquete que proporciona el comando mogrify a su actual
directorio, ingrese lo siguiente:
# yum descargar ImageMagick
ImageMagick6.9.10.281.fc30.x86_64.rpm
814
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
9. Para mostrar información general sobre el paquete que acaba de descargar consultando el
archivo RPM del paquete en el directorio actual, ingrese lo siguiente:
# rpm qip ImageMagick6.9.10.281.fc30.x86_64.rpm : ImageMagick
Nombre
Época : 1
Versión : 6.9.10.28
Liberar : 1.fc30
...
10. Para eliminar el paquete que contiene el comando mogrify de su sistema, ingrese
la siguiente:
# yum eliminar ImageMagick
Capítulo 11: Administración de cuentas de usuario
Para preguntas que impliquen agregar y eliminar cuentas de usuario, puede usar la ventana Usuarios,
la ventana Administrador de usuarios o herramientas de línea de comandos como useradd y usermod.
El punto es asegurarse de obtener los resultados correctos que se muestran en las respuestas que siguen, no
necesariamente hacerlo exactamente de la misma manera que lo hice yo.
Hay varias formas de lograr los mismos resultados. Las respuestas aquí muestran cómo completar los
ejercicios desde la línea de comandos. (Conviértase en usuario raíz cuando vea un indicador #).
1. Para agregar una cuenta de usuario local a su sistema Linux que tenga un nombre de usuario
de jbaxter y un nombre completo de John Baxter, que usa /bin/sh como su shell predeterminado
y es el siguiente UID disponible (el suyo puede diferir del que se muestra aquí), ingrese lo siguiente.
Puede usar el comando grep para verificar la nueva cuenta de usuario. Luego establezca la
contraseña para jbaxter en: My1N1te0ut!
# useradd c "John Baxter" s /bin/sh jbaxter # grep jbaxter /etc/passwd
jbaxter:x:1001:1001:John Baxter:/home/jbaxter:/bin/sh # passwd jbaxter
Cambio de contraseña para el usuario jbaxter Nueva contraseña: My1N1te0ut!
Vuelva a escribir la nueva contraseña:
My1N1te0ut! contraseña: todos los tokens de autenticación actualizados con éxito
2. Para crear una cuenta de grupo llamada testing que use el ID de grupo 315, ingrese el
siguiente: B
# groupadd g 315 testing # grep testing /
etc/group testing:x:315:
815
Machine Translated by Google
Parte VII: Apéndices
3. Para agregar jbaxter al grupo de prueba y al grupo bin, ingrese lo siguiente:
# usermod aG testing,bin jbaxter # grep jbaxter /
etc/group bin:x:1:bin,daemon,jbaxter jbaxter:x:1001:
testing:x:315:jbaxter
4. Para convertirse en jbaxter y hacer que el grupo de prueba sea temporalmente el grupo
predeterminado de jbaxter, ejecute touch /home/jbaxter/file.txt para que el grupo de prueba
se asigne como el grupo del archivo y haga lo siguiente:
$ su jbaxter
Contraseña: My1N1te0ut!
sh4.2$ prueba newgrp sh4.2$
touch /home/jbaxter/file.txt sh4.2$ ls l /home/baxter/
file.txt rwrwr. 1 jbaxter testing 0 25 de enero 06:42 /
home/jbaxter/file.
TXT
sh4.2$ salir; salida
5. Tenga en cuenta qué ID de usuario se ha asignado a jbaxter y luego elimine la cuenta de usuario
sin eliminar el directorio de inicio asignado a jbaxter. $ usuario del
jbaxter
6. Use el siguiente comando para buscar cualquier archivo en el directorio /home (y cualquier
subdirectorios) que se asignan al ID de usuario que recientemente perteneció al usuario llamado
jbaxter. (Cuando lo hice, el UID/GID eran ambos 1001; el suyo puede diferir).
Tenga en cuenta que el nombre de usuario jbaxter ya no está asignado en el sistema, por lo
que todos los archivos creados por el usuario se enumeran como pertenecientes a UID 1001 y
GID 1001, a excepción de un par de archivos que se asignaron al grupo de prueba debido al
comando newgrp ejecutar antes:
# find /home uid 1001 ls 262184 4
drwx 4 1001 1001 4096 25 de enero 08:00 /home/
jbaxter
262193 4 rwrr 1 1001 1001 176 27 ene 2011 /inicio/
jbaxter/.bash_profile
262196 4 rw 1 13602 prueba 93 25 de enero 08:00 /inicio/
jbaxter/.bash_history
262194 0 rwrwr 1 13602 prueba 0 25 de enero 07:59 /home/ jbaxter/file.txt
...
7. Ejecute estos comandos para copiar el archivo /etc/services en el directorio /etc/skel/; luego
agregue un nuevo usuario al sistema llamado mjones, con un nombre completo de Mary Jones
y un directorio de inicio de /home/maryjones. Enumere su directorio de inicio para asegurarse
de que el archivo de servicios esté allí.
# cp /etc/services /etc/skel/ # useradd d /
home/maryjones c "Mary Jones" mjones
816
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
# ls l /home/maryjones
total 628
rwrr. 1 mjones mjones 640999 25 de enero 06:27 servicios
8. Ejecute el siguiente comando para buscar todos los archivos en el directorio /home que
pertenecen a mjones. Si realizó los ejercicios en orden, observe que después de eliminar al
usuario con la ID de usuario y la ID de grupo más altas, esos números se asignaron a mjones.
Como resultado, cualquier archivo que jbaxter deje en el sistema ahora pertenece a mjones. (Por
este motivo, debe eliminar o cambiar la propiedad de los archivos que quedan cuando elimina un
usuario). # find /home user mjones ls 262184 4 drwx 4 mjones mjones 4096 25 de enero
08:00 / home/jbaxter 262193 4 rwrr 1 mjones mjones 176 27 ene 2011 /home/
jbaxter/.bash_profile 262189 4
rwrr 1 mjones mjones 18 27 de enero de 2011 /inicio/
jbaxter/.bash_logout
262194 0 rwrwr 1 mjones testing 0 25 de enero 07:59 /home/ jbaxter/file.txt 262188
4 rwrr 1 mjones mjones 124 27 de enero de 2011 /home/ jbaxter/ .bashrc 262197 4 drwx 4
mjones mjones 4096 25 de enero 08:27 /
home/maryjones
262207 4 rwrr 1 mjones mjones 176 27 ene 2011 /home/ maryjones/.bash_profile
262202 4 rwrr 1 mjones mjones 18 27 ene 2011 /home/ maryjones /.bash_logout 262206 628
rwrr 1 mjones mjones 640999 25 de enero 08:27 / home/maryjones/services 262201
4 rwrr 1 mjones mjones 124 27 de enero de 2011 /home/ maryjones/.bashrc
9. Como usuario mjones, puede usar lo siguiente para crear un archivo llamado /tmp/mary file.txt, y
usar ACL para asignar el permiso de lectura/escritura del usuario bin y el permiso de lectura/
escritura del grupo lp a ese archivo . [mjones]$ touch /tmp/maryfile.txt [mjones]$ setfacl mu:bin:rw /
tmp/maryfile.txt [mjones]$ setfacl mg:lp:rw /tmp/maryfile.txt [mjones]$ getfacl /tmp/
maryfile.txt # archivo: tmp/maryfile.txt # propietario: mjones # grupo: mjones
usuario::rw
usuario:bin:rw B
grupo::rw
grupo:lp:rw
máscara::rw
otro::r& —
817
Machine Translated by Google
Parte VII: Apéndices
10. Ejecute este conjunto de comandos (como mjones) para crear un directorio llamado /tmp/mydir,
y use ACL para asignarle permisos predeterminados para que el usuario adm tenga permiso
de lectura/escritura/ejecución para ese directorio y cualquier archivo o directorios creados en él.
Pruebe que funcionó creando el directorio /tmp/mydir/testing/ y /tmp/mydir/
newfile.txt.
[mary]$ mkdir /tmp/mydir [mary]$ setfacl
md:u:adm:rwx /tmp/mydir [mjones]$ getfacl /tmp/mydir # archivo: tmp/mydir #
propietario: mjones # grupo: mjones
usuario::rwx
grupo::rwx otro::rx
predeterminado:usuario::rwx
predeterminado:usuario:adm:rwx
predeterminado:grupo::rwx
predeterminado:máscara::rwx
predeterminado:otro::rx [mjones]$
mkdir /tmp/mydir/testing [mjones]$ touch /tmp/mydir/newfile.txt
[mjones]$ getfacl /tmp/mydir/testing/ # archivo: tmp/mydir/testing / #
propietario: mjones # grupo: mjones
usuario::rwx
usuario:adm:rwx
grupo::rwx
máscara::rwx
otro::rx
predeterminado:usuario::rwx
predeterminado:usuario:adm:rwx
predeterminado:grupo::rwx
predeterminado:máscara::rwx
predeterminado: otro::rx [mjones]$
getfacl /tmp/mydir/newfile.txt # archivo: tmp/mydir/newfile.txt # propietario: mjones
# grupo: mjones
usuario::rw
usuario:adm:rwx #efectivo:rw #efectivo:rw
grupo::rwx
máscara::rw
otro::r
818
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Tenga en cuenta que el usuario adm solo tiene permiso rw. Para remediarlo, debe expandir los permisos de la
máscara. Una forma de hacerlo es con el comando chmod, de la siguiente manera:
[mjones]$ chmod 775 /tmp/mydir/newfile.txt [mjones]$ getfacl /tmp/
mydir/newfile.txt # archivo: tmp/mydir/newfile.txt # propietario:
mjones # grupo: mjones
usuario::rwx
usuario:adm:rwx
grupo::rwx
máscara::rwx
otro::rx
Capítulo 12: Administración de discos y sistemas de archivos
1. Para determinar el nombre del dispositivo de una unidad flash USB que desea insertar en su computadora,
ingrese lo siguiente e inserte la unidad flash USB. (Presione Ctrl+C después de haber visto los mensajes
apropiados).
# journalctl f kernel:
[sdb] 15667200 Bloques lógicos de 512 bytes: (8,02 GB/7,47 GiB)
11 de febrero 21:55:59 cnegus kernel: sd 7:0:0:0: [sdb] Write Protect
está desactivado
11 de febrero 21:55:59 cnegus kernel: [sdb] Suponiendo caché de
unidad: escribir a través
11 de febrero 21:55:59 cnegus kernel: [sdb] Suponiendo caché de
unidad: escribir a través
2. Para enumerar las particiones en la unidad flash USB en un sistema RHEL 6, ingrese lo siguiente:
# fdisk c u l /dev/sdb
Para enumerar particiones en un sistema RHEL 7, RHEL 8 o Fedora, ingrese lo siguiente:
# fdisk l /dev/sdb
3. Para eliminar particiones en la unidad flash USB, suponiendo que el dispositivo sea /dev/sdb, haga lo siguiente:
siguiente:
# fdisk /dev/sdb
Comando (m para ayuda): d
Número de partición (16): 6
Comando (m para ayuda): d
Número de partición (15): 5 B
Comando (m para ayuda): d
819
Machine Translated by Google
Parte VII: Apéndices
Número de partición (15): 4
Comando (m para ayuda): d
Número de partición (14): 3
Comando (m para ayuda): d
Número de partición (14): 2
Comando (m para ayuda): d
Partición seleccionada 1
Comando (m para ayuda): w #
partprobe /dev/sdb
4. Para agregar una partición Linux de 100 MB, una partición de intercambio de 200 MB y una partición LVM de
500 MB a la unidad flash USB, ingrese lo siguiente:
# fdisk /dev/sdb
Comando (m para ayuda): n
Acción de comando
e extendido
p partición primaria (14)
pag
Número de partición (14): 1
Primer sector (204815667199, predeterminado 2048): <ENTER>
Último sector, +sectores o +tamaño{K,M,G} (predeterminado 15667199): +100M
Comando (m para ayuda): n
Acción de comando
e extendido
p partición primaria (14)
pag
Número de partición (14): 2
Primer sector (6164488342527, predeterminado 616448): <ENTER>
Último sector, +sectores o +tamaño{K,M,G} (predeterminado 15667199): +200M
Comando (m para ayuda): n
Acción de comando
e extendido
p partición primaria (14)
pag
Número de partición (14): 3
Primer sector (61644815667199, predeterminado 616448): <ENTER>
Usando el valor predeterminado 616448
Último sector, +sectores o +tamaño{K,M,G} (predeterminado 15667199): +500M
Comando (m para ayuda): t
Número de partición (14): 2
Código hexadecimal (escriba L para enumerar códigos): 82
Se cambió el tipo de sistema de partición 2 a 82 (intercambio de Linux / Solaris)
Comando (m para ayuda): t
Número de partición (14): 3
Código hexadecimal (escriba L para enumerar códigos): 8e
Se cambió el tipo de sistema de partición 3 a 8e (Linux LVM)
820
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Comando (m para ayuda): w #
partprobe /dev/sdb # grep sdb /proc/
partitions
8 dieciséis 7833600 sdb
8 17 102400 sdb1
8 18 204800 sdb2
8 19 512000 sdb3
5. Para colocar un sistema de archivos ext4 en la partición de Linux, ingrese lo siguiente:
# mkfs t ext4 /dev/sdb1
6. Para crear un punto de montaje llamado /mnt/mypart y montar la partición de Linux en él,
Haz lo siguiente:
# mkdir /mnt/miparte # mount
t ext4 /dev/sdb1 /mnt/miparte
7. Para habilitar la partición de intercambio y encenderla para que haya espacio de intercambio adicional
disponible de inmediato, ingrese lo siguiente:
# mkswap /dev/sdb2 #
swapon /dev/sdb2
8. Para crear un grupo de volúmenes llamado abc desde la partición LVM, cree un logi de 200 MB.
cal de ese grupo llamado datos, cree un sistema de archivos VFAT en él, monte temporalmente
el volumen lógico en un nuevo directorio llamado /mnt/test y luego verifique que se montó
correctamente, ingrese lo siguiente:
# pvcreate /dev/sdb3 # vgcreate
abc /dev/sdb3 # lvcreate n data L
200M abc # mkfs t vfat /dev/mapper/abcdata
# mkdir /mnt/test # mount /dev/mapper/abc datos /
mnt / prueba
9. Para aumentar el volumen lógico de 200 MB a 300 MB, ingrese lo siguiente:
# lvextend L +100M /dev/mapper/abcdata # resize2fs p /dev/
mapper/abcdata
10. Para retirar la unidad flash USB de forma segura de la computadora, haga lo siguiente:
# umount /dev/sdb1 #
swapoff /dev/sdb2 # umount /
mnt/test # lvremove /dev/
mapper/abcdata # vgremove abc # pvremove /
dev/sdb3
B
Ahora puede retirar con seguridad la unidad flash USB de la computadora.
821
Machine Translated by Google
Parte VII: Apéndices
Capítulo 13: Descripción de la administración del servidor
1. Para iniciar sesión en cualquier cuenta en otra computadora usando el comando ssh, ingrese el
siguiente y luego ingrese la contraseña cuando se le solicite:
$ ssh joe@localhost
contraseña de joe@localhost:
*********
[joe]$
2. Para mostrar el contenido de un archivo /etc/systemrelease remoto y mostrar su contenido
en el sistema local usando la ejecución remota con el comando ssh, haga lo siguiente:
$ ssh joe@localhost "cat /etc/systemrelease" contraseña de
joe@localhost: *******
Lanzamiento de Fedora 30 (Treinta)
3. Para usar el reenvío X11 para mostrar una ventana de gedit en su sistema local y luego guardar
un archivo en el directorio de inicio remoto, haga lo siguiente:
$ ssh X joe@localhost "gedit newfile" contraseña de
joe@localhost: ******** $ ssh joe@localhost "cat newfile"
contraseña de joe@localhost: ********
Este es el texto del archivo que guardé en la casa remota de Joe.
directorio
4. Para copiar todos los archivos del directorio /usr/share/selinux recursivamente en un sistema
remoto al directorio /tmp en su sistema local de tal manera que todos los tiempos de modificación
en los archivos se actualicen a la hora en el sistema local cuando se copian, haga lo siguiente:
$ scp r joe@localhost:/usr/share/selinux /tmp contraseña de
joe@localhost:
********
irc.pp.bz2 100 % 9673 9,5 KB/s 00:00 100 % 15 KB
dcc.pp.bz2 $ 15,2 KB/s 00:01
ls l /tmp/selinux | cabeza total 20 drwxr
xrx. 3 root root 4096 18 de abril 05:52
devel drwxrxrx. 2 root root 4096 18 de abril 05:52 paquetes drwxrxrx.
2 raíz raíz 12288 18 de abril 05:52 objetivo
5. Para copiar todos los archivos del directorio /usr/share/logwatch recursivamente en un sistema
remoto al directorio /tmp en su sistema local de tal manera que todos los tiempos de modificación
en los archivos del remoto se mantienen en el sistema local, intente lo siguiente:
$ rsync av joe@localhost:/usr/share/logwatch /tmp contraseña de
joe@localhost: ********
822
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
recibiendo la lista de archivos incrementales
logwatch/ logwatch/default.conf/ logwatch/
default.conf/logwatch.conf $ ls l /tmp/logwatch
| cabeza
16 totales
drwxrxrx. 5 root root 4096 19 de abril de 2011 default.conf drwxrxrx. 4 raíz raíz
4096 28 de febrero de 2011 dist.conf
drwxrxrx. 2 raíz raíz 4096 19 de abril de 2011 lib
6. Para crear un par de claves pública/privada para usar en las comunicaciones
' SSH (sin frase de
cuenta
contraseña en la clave), copie el archivo de clave pública a un usuario s con
remoto ys ushcopyid,
se la autenticación
basada en clave para iniciar sesión en esa cuenta de usuario sin tener que ingresar una contraseña,
use el siguiente código: $ sshkeygen Generando un par de claves rsa públicas/privadas.
Introduzca el archivo en el que guardar la clave (/home/joe/.ssh/id_ rsa): ENTER /
home/joe/.ssh/id_rsa ya existe.
Ingrese la frase de contraseña (vacío para no tener frase de contraseña):
ENTER Ingrese la misma frase de contraseña nuevamente: ENTER Su
identificación ha sido guardada en /home/joe/.ssh/id_
rsa.
Su clave pública se ha guardado en /home/joe/.ssh/id_rsa.
pub.
La huella digital clave es:
58:ab:c1:95:b6:10:7a:aa:7c:c5:ab:bd:f3:4f:89:1e joe@cnegus.
csb
La imagen randomart de la llave es:
...
$ sshcopyid i ~/.ssh/id_rsa.pub joe@localhost contraseña de
joe@localhost: ******** Ahora intente iniciar sesión en la máquina, con
"ssh 'joe@ localhost'", y registrarse:
.ssh/authorized_keys para
asegurarnos de que no hemos agregado claves adicionales que usted no estaba
esperando
$ ssh joe@localhost $
cat .ssh/authorized_keys sshrsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAyN2Psp5/
LRUC9E8BDCx53yPUa0qoOPd
v6H4sF3vmn04V6E7D1iXpzwPzdo4rpvmR1ZiinHR2xGAEr2uZag7feKgLnww2KPcQ6S B
iR7lzrOhQjV+SGb/a1dxrIeZqKMq1Tk07G4EvboIrq//9J47vI4l7iNu0x
RmjI3TTxa
DdCTbpG6J3uSJm1BKzdUtwb413x35W2bRgMI75aIdeBsDgQBBiOdu+zuTM
rxjj2vica
823
Machine Translated by Google
Parte VII: Apéndices
XeJ7gIwRvBaMQdOSvSdlkX353tmIjmJheWdgCccM/1jKdoELpaevg9anCe/ yUP3so31
tTo4I+qTfzAQD5+66oqW0LgMkWVvfZI7dUz3WUPmcMw== chris@abc. ejemplo.com
7. Para crear una entrada en /etc/rsyslog.conf que almacene todos los mensajes de autenticación en el
nivel de información y superior en un archivo llamado /var/log/myauth, haga lo siguiente. Mire desde
una terminal a medida que ingresan los datos. # vim /etc/rsyslog.conf authpriv.info # service rsyslog
restart
/var/log/myauth
o
# systemctl restart rsyslog.service <Terminal 1> # tail
f /var/log/myauth <Terminal 2> $
ssh joe@
servidor local
18 de abril 06:19:34 abc unix_chkpwd[30631] contraseña de joe@localhost:
18 de abril 06:19:34 abc sshd [30631] Permiso
denegado, intente nuevamente
:pam_unix(sshd:auth): error de
autenticación;logname= uid=501 euid=501 tty=ssh ruser=
rhost=localhost user=joe 18 de abril 06:19:34 abc
sshd[30631]: contraseña fallida para joe de 127.0. 0.1
puerto 5564 ssh2
8. Para determinar las estructuras de directorio más grandes en /usr/share, ordénelas de mayor a menor
y enumere los 10 principales de esos directorios en términos de tamaño usando el comando du,
ingrese lo siguiente: $ du s /usr / share /* | ordenar rn | cabeza 527800 /usr/share/locale 277108 /
usr/share/fonts 196232 /usr/share/help
134984 /usr/compartir/fondos
...
9. Para mostrar el espacio utilizado y disponible de todos los sistemas de archivos
conectados actualmente al sistema local, pero excluir cualquier sistema de archivos tmpfs
o devtmpfs mediante el comando df, ingrese lo siguiente:
$ df h x tmpfs x devtmpfs
Sistema de Tamaño utilizado % de uso disponible Montado en
archivos /deev/sda4 20G 4,2G 16G 22% /
824
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
10. Para buscar archivos en el directorio /usr que tengan más de 10 MB de tamaño, haga lo siguiente.
siguiente:
$ find /usr size +10M /usr/lib/
locale/localearchive /usr/lib/jvm/java1.8.0
openjdk1.8.0.212.b040.fc30. x86_64/jre/lib/rt.jar
/usr/libexec/cni/dhcp /usr/libexec/
gdb /usr/libexec/gcc/x86_64
redhatlinux/9/lto1 /usr/libexec/gcc/x86_64redhatlinux/9/cc1
Capítulo 14: Administración de redes
1. Para utilizar el escritorio para comprobar que NetworkManager ha iniciado correctamente su
interfaz de red (alámbrica o inalámbrica), haga lo siguiente: a.
Haga clic izquierdo en la esquina superior derecha de su escritorio GNOME para ver el menú
desplegable. Cualquier conexión de red cableada o inalámbrica activa debería aparecer en
ese menú.
b. Si no se ha conectado a la red, seleccione de la lista de redes cableadas o inalámbricas
disponibles y luego ingrese el nombre de usuario y la contraseña, si se le solicita, para iniciar una
conexión activa.
2. Para ejecutar un comando para verificar las interfaces de red activas disponibles en su com
ordenador, introduzca lo siguiente:
$ ifconfig
o
Mostrar dirección IP $
3. Intente ponerse en contacto con google.com desde la línea de comandos de una manera que garantice
que el DNS funciona correctamente: $ ping google.com CtrlC
4. Para ejecutar un comando para verificar las rutas que se utilizan para comunicarse fuera de su red
local, ingrese lo siguiente:
$ ruta
5. Para rastrear la ruta que se está tomando para conectarse a google.com, use el comando
tracer oute:
$ rastrear ruta google.com B
6. Para ver las interfaces de red y las actividades de red relacionadas para su sistema Linux a través de
Cockpit, abra un navegador web en el puerto 9090 usando una dirección IP o un nombre de host.
Por ejemplo: https://localhost:9090/red.
825
Machine Translated by Google
Parte VII: Apéndices
7. Para crear una entrada de host que le permita comunicarse con su sistema de host local utilizando el
nombre myownhost, edite el archivo /etc/hosts (vi /etc/hosts) y agregue myownhost al final de la entrada
de localhost para que aparece de la siguiente manera (luego haga ping a myownhost para ver si
funcionó): localhost.localdomain localhost myownhost
127.0.0.1
# hacer ping a mi propio host
Ctrl + C
8. Para ver los servidores de nombres DNS que se utilizan para resolver nombres de host y direcciones
IP en su sistema (los suyos serán diferentes a los que se muestran a continuación), ingrese lo siguiente:
# gato /etc/resolv.conf
servidor de nombres 10.83.14.9
servidor de nombres 10.18.2.10
servidor de nombres 192.168.1.254
# tu google.com
...
google.com. 91941 EN NS ns3.google.com.
;; Tiempo de consulta: 0 ms ;;
SERVIDOR: 10.18.2.9#53(10.18.2.9)
;; CUÁNDO: Sábado 23 de noviembre 20:18:56 EST 2019;;
TAMAÑO MSG recibido: 276
9. Para crear una ruta personalizada que dirija el tráfico destinado a la
192.168.99.0/255.255.255.0 a alguna dirección IP en su red local, como
192.168.0.5 (primero asegúrese de que la red 192.168.99 no se esté utilizando
en su ubicación), haga lo siguiente:
a. Determine el nombre de su interfaz de red, por ejemplo, enp4s0. En eso
caso, como root ejecute los siguientes comandos: # cd /etc/
sysconfig/networkscripts # vi routeenp4s0
b. Agregue las siguientes líneas a ese archivo:
DIRECCIÓN0=192.168.99.0
MÁSCARA DE RED0=255.255.255.0
PUERTA DE ENLACE0=192.168.0.5
C. Reinicie la red y ejecute la ruta para ver que la ruta está activa:
# systemctl reiniciar NetworkManager # ruta n
Tabla de enrutamiento de IP del kernel
Puerta de enlace de destino Genmask Banderas métricas
Ref Usar Iface
192.168.0.1 0.0.0.0 255.255.255.0U 600
0 0 enp4s0
826
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
192.168.99.0 192.168.0.5 255.255.255.0 Y 600
0 0 enp4s0
10. Para verificar si su sistema se configuró para permitir que los paquetes IPv4 se enruten entre las
interfaces de red en su sistema, ingrese lo siguiente:
# cat /proc/sys/net/ipv4/ip_forward
0
Un 0 muestra que el reenvío de paquetes IPv4 está deshabilitado; un 1 indica que está habilitado.
Capítulo 15: Inicio y detención de servicios
1. Para determinar qué daemon de inicialización está utilizando actualmente su servidor, considere
la siguiente:
a. Actualmente, en la mayoría de los casos, PID 1 aparece como el demonio
systemd: # ps ef | cabeza
UID PID PPID C STIME TTY HORA CMD
raíz 0 0 17:01 ? 00:00:04 /usr/
1 lib/sistemad/sistemad
raíz conmutada sistema deserializar 18
Si escribe ps ef y PID 1 es init, aún podría ser el demonio systemd.
Use el comando strings para ver si systemd está en uso:
# cuerdas /sbin/init | grep i systemd systemd.unit=
systemd.log_target= systemd.log_level=
...
b. Lo más probable es que tenga el demonio de inicio Upstart, SysVinit o BSD si su init
el demonio no es systemd. Pero verifique dos veces en http://wikipedia.org/wiki/Init.
2. Las herramientas que usa para administrar los servicios dependen principalmente de qué inicialización
el sistema está en uso. Intente ejecutar los comandos systemctl y service para determinar el tipo de
script de inicialización en uso para el servicio ssh en su sistema:
a. Para systemd, un resultado positivo, que se muestra aquí, significa que el sshd se ha convertido
a systemd:
# systemctl status sshd.service sshd.service
Demonio del servidor OpenSSH Cargado: cargado (/lib/
systemd/system/sshd.service;
activado)
Activo: activo (en ejecución) desde el lun, 20 abr 2020 12:35:20... B
b. Si no ve resultados positivos para la prueba anterior, intente con el siguiente comando para
el demonio de inicio de SysVinit. Un resultado positivo aquí, junto con
827
Machine Translated by Google
Parte VII: Apéndices
resultados negativos para las pruebas anteriores, significa que sshd todavía está usando
el daemon SysVinit.
# service ssh status sshd (pid
2390) se está ejecutando...
3. Para determinar el nivel de ejecución anterior y actual de su servidor, use el nivel de ejecución
dominio. Todavía funciona en todos los demonios de inicio:
$ nivel de ejecución
nº 3
4. Para cambiar el nivel de ejecución predeterminado o la unidad de destino en su servidor Linux, puede hacer
'
de los siguientes (dependiendo de su servidor un demonio de inicio):
a. Para SysVinit, edite el archivo /etc/inittab y cambie el # en la línea
id:#:initpredeterminado: a 2, 3, 4 o 5.
b. Para systemd, cambie default.target al runlevel#.tar deseado
get, donde # es 2, 3, 4 o 5. A continuación se muestra cómo cambiar la unidad objetivo a
runlevel3.target.
# systemctl setdefault runlevel3.target Eliminado /etc/systemd/
system/default.target.
Se creó el enlace simbólico /etc/systemd/system/default.target → /usr/lib/systemd/
system/multiuser.target.
5. Para enumerar los servicios que se ejecutan (o están activos) en su servidor, necesita usar
diferentes comandos, según el demonio de inicialización que esté usando.
a. Para SysVinit, use el comando de servicio como se muestra en este ejemplo: # service
statusall | ejecución de grep | sort anacron (pid 2162) se está ejecutando... atd (pid
2172) se está ejecutando...
b. Para systemd, use el comando systemctl, de la siguiente manera: #
systemctl listunitfiles type=service | grep v deshabilitado
ARCHIVO DE UNIDAD ESTADO
abrtccpp.servicio abrt activado
oops.servicio activado
...
6. Para enumerar los servicios en ejecución (o activos) en su servidor Linux, use los comandos
apropiados determinados en la respuesta 5 para el demonio de inicialización que está usando su
servidor.
7. Para cada demonio de inicialización, los siguientes comandos muestran el estado actual de
un servicio en particular:
a. Para SysVinit, se utiliza el comando de estado service_name de servicio. b. Para
systemd, se utiliza el comando systemctl status service_name.
828
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
8. Para mostrar el estado del demonio cups en su servidor Linux, use lo siguiente:
a. Para SysVinit:
# el estado de los vasos de
servicio cupsd (pid 8236) se está ejecutando...
b. Para systemd:
# systemctl status cups.service cups.service
Servicio de impresión de CUPS cargado: cargado (/lib/
systemd/system/cups.service; habilitado)
Activo: activo (en ejecución) desde el martes 05 de mayo de 2020 04:43:5...
PID principal: 17003 (cupsd)
CGroup: nombre=systemd:/system/cups.service 17003 /usr/sbin/
cupsd f
9. Para intentar reiniciar el demonio cups en su servidor Linux, use lo siguiente:
a. Para SysVinit:
# tazas de servicio se reinician
Tazas de parada: [Aceptar ]
b. Para systemd:
# systemctl reiniciar cups.service
10. Para intentar recargar el demonio cups en su servidor Linux, use lo siguiente:
a. Para SysVinit:
# vasos de servicio recargados
Recargando vasos: [ OK ]
b. Para systemd, esta es una pregunta capciosa. ¡No puede recargar el demonio cups en un servidor
systemd Linux!
# systemctl reload cups.service Error al emitir la
llamada al método: la recarga del tipo de trabajo no se aplica a la unidad
cups.service.
Capítulo 16: Configuración de un servidor de impresión
Para preguntas que impliquen trabajar con impresoras, puede utilizar herramientas gráficas o de línea de
comandos en la mayoría de los casos. El punto es asegurarse de obtener los resultados correctos, que se
muestran en las respuestas a continuación. Las respuestas aquí incluyen una combinación de formas gráficas y
de línea de comandos para resolver los ejercicios. (Conviértase en usuario raíz cuando vea un indicador #).
1. Para usar la ventana Configuración de impresión para agregar una nueva impresora llamada B
myprinter a su sistema (impresora PostScript genérica, conectada a un puerto), haga lo siguiente
desde Fedora 30:
a. Instale el paquete systemconfi gprinter:
# dnf instalar sistemaconfigimpresora
829
Machine Translated by Google
Parte VII: Apéndices
b. En el escritorio de GNOME 3, seleccione Configuración de impresión en la pantalla Actividades. C.
Desbloquee la interfaz e ingrese la contraseña de root.
d. Seleccione el botón Agregar.
mi. Seleccione un USB u otro puerto como dispositivo y haga clic en Adelante.
F. Para el controlador, elija Genérico y haga clic en Adelante; luego elija PostScript y
haga clic en Adelante.
gramo. Haga clic en Adelante para omitir cualquier opción instalable, si es
necesario. H. Para el nombre de la impresora, llámelo myprinter, déle la descripción y la ubicación que
desee y haga clic en Aplicar. i. Haga clic en Cancelar para no imprimir una página de prueba. La
impresora debería aparecer en la ventana Configuración de impresión.
2. Para usar el comando lpstat t para ver el estado de todas sus impresoras, ingrese el
siguiente:
# lpstat t
deskjet5550 acepta solicitudes desde el lun 02 mar 2020
07:30:03 p. m., hora del este
3. Para usar el comando lpr para imprimir el archivo /etc/hosts, ingrese lo siguiente: $ lp /etc/hosts P
myprinter
4. Para comprobar la cola de impresión de esa impresora, introduzca lo siguiente:
# lpq P miimpresora
miimpresora no está lista
Rango Trabajo de propietario Anfitriones de Tamaño total
1º raíz 655 archivo(s) 1024 bytes
5. Para eliminar el trabajo de impresión de la cola (cancelarlo), ingrese lo siguiente.
# lprm P miimpresora
6. Para usar la ventana de impresión para establecer la configuración básica del servidor que publica su
impresoras para que otros sistemas en su red local puedan imprimir en sus impresoras, haga lo siguiente:
a. En un escritorio GNOME 3, desde la pantalla Actividades, escriba Ajustes de impresión y
presione Entrar.
b. Seleccione Servidor Configuración y escriba la contraseña raíz si se le solicita. C.
Haga clic en la casilla de verificación junto a "Publicar impresoras compartidas conectadas a este sistema"
y haga clic en Aceptar.
830
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
7. Para permitir la administración remota de su sistema desde un navegador web, siga
estos pasos:
a. En un escritorio GNOME 3, desde la pantalla Actividades, escriba Ajustes de impresión y
presione Entrar.
b. Seleccione Servidor Configuración y escriba la contraseña raíz si se le solicita.
C. Haga clic en la casilla de verificación junto a "Permitir administración remota" y haga clic en Aceptar.
8. Demostrar que puedes hacer administración remota de tu sistema desde una web
navegador en otro sistema, haga lo siguiente:
a. En el cuadro de ubicación de una ventana del navegador de otra computadora en su red, ingrese lo siguiente,
reemplazando el nombre de host con el nombre o la dirección IP del sistema que ejecuta su servicio de
impresión: http://hostname:631.
b. Escriba root como usuario y la contraseña de root, cuando se le solicite. La página de inicio de CUPS debería
aparecer desde ese sistema.
9. Usar el comando netstat para ver en qué direcciones se encuentra el demonio cupsd
tenencia, ingrese lo siguiente:
# netstattupln | grep 631 tcp tcp6 0
0 0 0.0.0.0:631 0.0.0.0:* ESCUCHAR 6492/tazas
0 :::631 :::* ESCUCHAR 6492/tazas
10. Para eliminar la entrada de impresora myprinter de su sistema, haga lo siguiente:
a. Haga clic en el botón Desbloquear y escriba la contraseña de root cuando se le solicite. b.
En la ventana Configuración de impresión, haga clic con el botón derecho en el icono myprinter y
seleccione Eliminar.
C. Cuando se le solicite, seleccione Eliminar nuevamente.
Capítulo 17: Configuración de un servidor web
1. Para instalar todos los paquetes asociados con el grupo de servidores web en un sistema Fedora, haga
lo siguiente:
# yum groupinstall "Servidor web"
2. Para crear un archivo llamado index.html en el directorio asignado a DocumentRoot en el archivo principal de
configuración de Apache (con las palabras “My Own Web Server” adentro), haga lo siguiente:
a. Determine la ubicación de DocumentRoot:
# grep ^DocumentRoot /etc/httpd/conf/httpd.conf B
DocumentRoot "/var/www/html"
831
Machine Translated by Google
Parte VII: Apéndices
b. Haga eco de las palabras "My Own Web Server" en el archivo index.html ubicado en
Raiz del documento:
# echo "Mi propio servidor web" > /var/www/html/index.html
3. Para iniciar el servidor web Apache y configurarlo para que se inicie automáticamente en el
momento del arranque, luego verifique que esté disponible desde un navegador web en su host
local, haga lo siguiente. (Debería ver las palabras "My Own Web Server" en pantalla si funciona
correctamente).
El servicio httpd se inicia y habilita de manera diferente en diferentes sistemas Linux. En Fedora 30 o
RHEL 7 u 8 recientes, ingrese lo siguiente:
# systemctl iniciar httpd.servicio # systemctl
habilitar httpd.servicio
En RHEL 6 o anterior, ingrese lo siguiente:
# servicio httpd iniciar # chkconfig
httpd en
4. Para usar el comando netstat para ver en qué puertos está escuchando el servidor httpd, ingrese lo siguiente:
# netstat tupln | grep httpd tcp6 tcp6
5. Intente conectarse a su servidor web Apache desde un navegador web que esté fuera del sistema
local. Si falla, corrija cualquier problema que encuentre investigando el cortafuegos, SELinux y
otras funciones de seguridad.
Si aún no tiene DNS configurado, use la dirección IP del servidor para ver su servidor Apache
desde un navegador web remoto, como http://192.168.0.1. Si no puede conectarse, vuelva a
intentar conectarse al servidor desde su navegador después de realizar cada uno de los siguientes
pasos en el sistema que ejecuta el servidor Apache:
# iptables F #
setenforce 0 # chmod
644 /var/www/html/index.html
El comando iptables F vacía las reglas del cortafuegos temporalmente. Si la conexión al servidor web
tiene éxito después de eso, debe agregar nuevas reglas de firewall para abrir los puertos tcp 80 y 443
en el servidor. En un sistema que utilice el servicio firewalld, haga clic en la casilla de verificación junto
a esos puertos en la ventana Firewall. Para los sistemas que ejecutan el servicio iptables, agregue las
siguientes reglas antes de la última regla DROP o REJECT.
A ENTRADA m estado estado NUEVO m tcp p tcp dport 80 j
ACEPTAR
A ENTRADA m estado estado NUEVO m tcp p tcp dport 443 j
ACEPTAR
832
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
El comando setenforce 0 pone a SELinux en modo permisivo temporalmente. Si la conexión
al servidor web tiene éxito después de eso, debe corregir el contexto del archivo SELinux y/o
los problemas booleanos (probablemente el contexto del archivo en este caso). Lo siguiente
debería funcionar:
# chcon reference=/var/www/html /var/www/html/index.html
Si el comando chmod funciona, significa que el usuario y el grupo de Apache no tenían
permiso de lectura para el archivo. Debería poder dejar los nuevos permisos como están.
6. Para usar el comando openssl o similar para crear su propia clave RSA privada y
certificado SSL autofirmado, haga lo siguiente:
# yum install openssl # cd /etc/
pki/tls/private # openssl genrsa out
server.key 1024 # chmod 600 server.key # cd /etc/pki/
tls/certs # openssl req new x509 nodes sha1 days
365 \ key /etc/pki/tls/private/server.key \ out server.crt
Nombre del país (código de 2 letras) [AU]: Nombre del
estado o provincia de EE. UU. (nombre completo) [Algún estado]: Nombre
de la localidad de NJ (p. ej., ciudad) []: Nombre de la organización de
Princeton (p. ej., empresa) [Internet Widgits Pty Ltd ]:PRUEBA PARA USO
SOLAMENTE Nombre de la unidad organizativa (por ejemplo, sección)
[]:PRUEBA PARA USO SOLAMENTE Nombre común (por ejemplo, SU nombre)
[]:secure.example.org Dirección de correo electrónico []:dom@example.org
Ahora debería tener un archivo de clave /etc/pki/tls/private/server.key y un archivo de
certificado /etc/pki/tls/certs/server.crt.
7. Para configurar su servidor web Apache para usar su clave y certificado autofirmado para
servir contenido seguro (HTTPS), haga lo siguiente:
a. Edite el archivo /etc/httpd/conf.d/ssl.conf para cambiar la clave y el certificado
ubicaciones para usar las que acaba de crear:
Archivo de certificado SSL /etc/pki/tls/certs/server.crt Archivo de clave
de certificado SSL /etc/pki/tls/private/server.key
b. Reinicie el servicio httpd:
# systemctl reiniciar httpd.servicio
8. Para usar un navegador web para crear una conexión HTTPS a su servidor web y ver el
contenido del certificado que creó, haga lo siguiente: B
833
Machine Translated by Google
Parte VII: Apéndices
Desde el sistema que ejecuta el servidor Apache, escriba https://localhost en el cuadro de ubicación del
navegador. Debería ver un mensaje que dice: "Esta conexión no es de confianza". Para completar la
conexión, haga lo siguiente:
a. Haga clic en Entiendo los riesgos.
b. Haga clic en Agregar excepción.
C. Haga clic en Obtener certificado.
d. Haga clic en Confi rmar excepción de seguridad.
9. Para crear un archivo llamado /etc/httpd/conf.d/example.org.conf, que activa el alojamiento virtual basado en
nombres y crea un host virtual que (1) escucha en el puerto 80 en todas las interfaces, (2) tiene un administrador
de servidor de joe@example.org, (3) tiene un nombre de servidor de joe.example.org, (4) tiene un DocumentRoot
de /var/www/html/joe. example.org, y (5) tiene un DirectoryIndex que incluye al menos index. html y luego cree un
archivo index.html en DocumentRoot que contenga las palabras "Bienvenido a la Casa de Joe" adentro, haga lo
siguiente.
Cree un archivo example.org.conf similar al siguiente:
NombreVirtualHost *:80
<Host virtual *:80>
Administrador del servidor José@
ejemplo.org
Nombre del servidor José.
ejemplo.org
ServerAlias web.ejemplo.org /var/
Raiz del documento www/html/joe.ejemplo.org/
ÍndiceDirectorio index.html </
VirtualHost>
Así es como podría crear el texto para ir al archivo index.html:
# echo "Bienvenido a la Casa de Joe" > \
/var/www/html/joe.example.org/index.html
10. Para agregar el texto joe.example.org al final de la entrada localhost en su archivo /etc/hosts en la máquina que
está ejecutando el servidor web, y compruébelo escribiendo http://joe.example.org en el cuadro de ubicación de
su navegador web para ver "Bienvenido a la Casa de Joe" cuando se muestre la página, haga lo siguiente:
a. Vuelva a cargar el archivo httpd.conf modificado en el ejercicio anterior en uno
de dos maneras:
# apachectl elegante #
systemctl reiniciar httpd
834
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
b. Edite el archivo /etc/hosts con cualquier editor de texto, para que aparezca la línea del host local
como sigue:
127.0.0.1 localhost.localdomain localhost joe.
ejemplo.org
C. Desde un navegador en el sistema local donde se ejecuta httpd, debería poder escribir http://
joe.example.org en el cuadro de ubicación para acceder al servidor web Apache mediante la
autenticación basada en el nombre.
Capítulo 18: Configuración de un servidor FTP
no
PRECAUCIÓN
No realice las tareas descritas aquí en un servidor FTP público en funcionamiento, ya que estas tareas interferirán con su funcionamiento.
ciones. (Sin embargo, podría usar estas tareas para configurar un nuevo servidor FTP).
1. Para determinar qué paquete proporciona el servicio Daemon FTP muy seguro, ingrese
lo siguiente como root:
# yum buscar "FTP muy seguro"
...
================ N/S Coincidencia: FTP muy seguro ============ vsftpd.i686 :
Daemon FTP muy seguro
La búsqueda encontró el paquete vsftpd.
2. Para instalar el paquete Very Secure FTP Daemon en su sistema y buscar el
archivos de configuración en el paquete vsftpd, ingrese lo siguiente:
# yum instalar vsftpd # rpm qc
vsftpd | menos
3. Para habilitar el FTP anónimo y deshabilitar el inicio de sesión de usuario local para el servicio
Daemon FTP muy seguro, configure lo siguiente en el archivo /etc/vsftpd/vsftpd.conf:
anonymous_enable=SÍ
write_enable=SÍ
anon_upload_enable=SÍ
local_enable=NO
4. Para iniciar el servicio Daemon FTP muy seguro y configurarlo para que se inicie cuando el sistema
arranque, ingrese lo siguiente en un sistema Fedora o Red Hat Enterprise Linux actual:
# systemctl iniciar vsftpd.servicio # systemctl
habilitar vsftpd.servicio B
835
Machine Translated by Google
Parte VII: Apéndices
En un sistema Red Hat Enterprise Linux 6, ingrese lo siguiente:
# servicio vsftpd iniciar #
chkconfig vsftpd en
5. En el sistema que ejecuta su servidor FTP, ingrese lo siguiente para crear un archivo llamado
prueba en el directorio FTP anónimo que contiene las palabras "Bienvenido a su servidor vsftpd":
# echo "Bienvenido a su servidor vsftpd" > /var/ftp/test
6. Para abrir el archivo de prueba desde el directorio de inicio de FTP anónimo utilizando un navegador web
en el sistema que ejecuta su servidor FTP, haga lo siguiente.
Abra un navegador web, ingrese lo siguiente en el cuadro de ubicación y presione Entrar:
ftp://hostlocal/prueba
El texto "Bienvenido a su servidor vsftpd" debería aparecer en la ventana del navegador.
7. Para acceder al archivo de prueba en el directorio de inicio de FTP anónimo, haga lo siguiente. (Si
no puede acceder al archivo, verifique que su firewall, SELinux y contenedores TCP estén
configurados para permitir el acceso a ese archivo, como se describe aquí).
a. Ingrese lo siguiente en el cuadro de ubicación de un navegador en un sistema en su red
trabajo que puede llegar al servidor FTP (reemplace el host con el nombre de 'totalmente calificada
host o la dirección IP de su sistema):
ftp://host/prueba
Si no puede ver el mensaje de bienvenida en la ventana de su navegador, verifique qué
puede estar impidiendo el acceso. Para apagar su cortafuegos temporalmente (vaciar sus
reglas de iptables), ingrese el siguiente comando como usuario raíz desde un shell en su
sistema de servidor FTP y luego intente acceder al sitio nuevamente:
#iptables F
b. Para deshabilitar SELinux temporalmente, ingrese lo siguiente y luego intente acceder a la
sitio de nuevo:
#setenforce 0
Una vez que haya determinado qué está causando que el archivo en su servidor FTP no
esté disponible, vuelva a la sección "Protección de su servidor FTP" en el Capítulo 18 y , y
siga los pasos para determinar qué podría estar bloqueando el acceso a su archivo. Estas son las
posibilidades probables: c. Para iptables, asegúrese de que haya una regla que abra el puerto TCP
21 en
el servidor.
d. Para SELinux, asegúrese de que el contexto del archivo esté establecido en public_content_t.
836
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
8. Para configurar su servidor vsftpd para permitir la carga de archivos por parte de usuarios anónimos a
un directorio nombrado en, haga lo siguiente como root en su servidor FTP:
a. Cree el directorio de entrada de la
siguiente manera: # mkdir /
var/ftp/in # chown ftp:ftp /var/ftp/in #
chmod 777 /var/ftp/in
b. Para un Fedora o RHEL reciente, abra la ventana Configuración de Firewall y marque la casilla
FTP en servicios para abrir el acceso a su servicio FTP. Para sistemas RHEL y Fedora anteriores,
configure su cortafuegos de iptables para permitir nuevas solicitudes en el puerto TCP 21 agregando
la siguiente regla en algún momento antes de una regla FINAL DROP o REJECT en su archivo /etc/
sysconfig/iptables:
A ENTRADA m estado estado NUEVO m tcp p tcp dport 21 j ACEPTAR
C. Configure su cortafuegos de iptables para realizar un seguimiento de la conexión cargando el
módulo apropiado en el archivo /etc/sysconfig/iptablesconfig:
IPTABLES_MODULES="nf_conntrack_ftp"
d. Para que SELinux permita la carga en el directorio, primero configure correctamente los
contextos de los archivos: # semanage fcontext a t public_content_rw_t "/var/
ftp/ in(/.*)?" # restaurarcon F R v /var/ftp/in
mi. A continuación, configure el valor booleano de SELinux para permitir la carga:
# setsebool P allow_ftpd_anon_write en
F. Reinicie el servicio vsftpd ( service vsftpd restart o systemctl
reiniciar vsftpd.servicio).
9. Para instalar el cliente FTP lftp (si no tiene un segundo sistema Linux, instale lftp en el mismo host
que ejecuta el servidor FTP). Opcionalmente, intente cargar el archivo /etc/hosts en el directorio in
del servidor, para asegurarse de que sea accesible. Ejecute los siguientes comandos como usuario root:
# yum install lftp # lftp
localhost lftp localhost:/>
cd in lftp localhost:/in> put /etc/
hosts 89 bytes transferidos lftp localhost:/in> quit
No podrá ver que copió el archivo de hosts en el directorio de entrada.
Sin embargo, ingrese lo siguiente desde un shell en el host que ejecuta el servidor FTP para B
asegurarse de que el archivo de hosts esté allí:
# ls /var/ftp/in/servidores
837
Machine Translated by Google
Parte VII: Apéndices
Si no puede cargar el archivo, resuelva el problema como se describe en el Ejercicio 7,
vuelva a verificar la configuración de vsftpd.conf y revise la propiedad y los permisos en el
directorio /var/ftp/in.
10. Usando cualquier cliente FTP que elija, visite el directorio /pub/debianmeetings en el sitio
'
ftp://ftp.gnome.org y enumere el contenido de ese directorio. Aquí para hacer eso con el
espectáculo
cliente lftp:
# lftp ftp://ftp.gnome.org/pub/debianmeetings/ cd ok, cwd=/pub/debian
meetings lftp ftp.gnome.org:/pub/debianmeetings>> ls
Capítulo 19: Configuración de un uso compartido de archivos de Windows
(Samba) Servidor
1. Para instalar los paquetes samba y sambaclient, ingrese lo siguiente como root desde
un shell en el sistema local:
# yum instalar samba sambacliente
2. Para iniciar y habilitar los servicios smb y nmb, ingrese lo siguiente como root desde un
shell en el sistema local:
# systemctl habilitar smb.servicio # systemctl
iniciar smb.servicio # systemctl habilitar
nmb.servicio # systemctl iniciar nmb.servicio
# chkconfig smb en # inicio
de servicio smb
# chkconfig nmb en # inicio
de servicio nmb
3. Para establecer el grupo de trabajo del servidor Samba en TESTGROUP, el nombre NetBIOS en
MYTEST y la cadena del servidor en Samba Test System, como usuario raíz en un editor de
texto, abra el archivo /etc/samba/smb.conf y cambie tres líneas para que aparezcan de la siguiente
manera:
grupo de trabajo = TESTGROUP
netbios name = MYTEST server
string = Samba Test System
838
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
4. Para agregar un usuario de Linux llamado phil a su sistema, y agregue una contraseña de Linux y
Contraseña de Samba para phil, ingrese lo siguiente como usuario root desde un shell. (Asegúrese de
recordar las contraseñas que estableció).
# useradd phil #
passwd phil Nueva
contraseña: ******* Vuelva a
escribir la nueva contraseña: ******* #
smbpasswd a phil Nueva contraseña
de SMB: ******* Vuelva a escribir la
nueva contraseña de SMB: ** ***** Se agregó
el usuario phil.
5. Para configurar la sección [homes] para que los directorios de inicio sean navegables (sí) y
escribible (sí), y que phil es el único usuario válido, abra el archivo /etc/samba/smb. conf file como root,
y cambie la sección [homes] para que aparezca de la siguiente manera:
[casas]
comentario = Inicio Directorios
navegable = Sí
solo lectura = No
hay usuarios válidos = phil
6. Para configurar los valores booleanos de SELinux que son necesarios para que phil pueda acceder
a su directorio de inicio a través de un cliente Samba, ingrese lo siguiente como raíz desde un shell
y reinicie los servicios smb y nmb:
# setsebool P samba_enable_home_dirs en # systemctl
reiniciar smb # systemctl reiniciar nmb
7. Desde el sistema local, use el comando smbclient para enumerar las casas que comparten
está disponible.
# smbclient L servidor local
Ingrese TESTGROUP\contraseña de root: <ENTRAR>
Inicio de sesión anónimo exitoso
8. Para conectarse al recurso compartido de hogares desde una ventana de Nautilus (administrador de archivos) en la
'
servidor samba s local para el usuario phil de una manera que le permita arrastrar y soltar archivos a
esa carpeta, haga lo siguiente:
a. Abra la ventana de Nautilus (seleccione el icono de B
archivos). b. En el panel izquierdo, seleccione Otras ubicaciones y luego haga clic en Conectar a
Caja de servidor.
C. Escriba la dirección del servidor. Por ejemplo, smb://localhost/phil/.
839
Machine Translated by Google
Parte VII: Apéndices
d. Cuando se le solicite, seleccione Usuario registrado, escriba phil como nombre de usuario, ingrese el
dominio (TESTGROUP) e ingrese la contraseña de phil.
mi. Abra otra ventana de Nautilus y suelte un archivo en la carpeta de casas de phil.
9. Para abrir el cortafuegos para que cualquiera que tenga acceso al servidor pueda acceder al
servicio Samba (daemons smbd y nmbd), simplemente abra la ventana Configuración del
cortafuegos y marque las casillas de verificación samba y sambaclient ( tanto para Runtime
como para Permanente). Si su sistema está ejecutando iptables básicas (y no el servicio de
firewalld), cambie el archivo /etc/sysconfig/iptables para que el firewall aparezca como el
siguiente (las reglas que agrega están en negrita):
*filtrar
:ENTRADA ACEPTAR [0:0]
:ADELANTE ACEPTAR [0:0]
: SALIDA ACEPTAR [0:0]
A ENTRADA m estado estado ESTABLECIDO, RELACIONADO j ACEPTAR
A ENTRADA p icmp j ACEPTAR
A ENTRADA i lo j ACEPTAR
I ENTRADA m estado estado NUEVO m udp p udp dport 137 j ACEPTAR
I ENTRADA m estado estado NUEVO m udp p udp dport 138 j ACEPTAR
I ENTRADA m estado estado NUEVO m tcp p tcp dport 139 j ACEPTAR
I ENTRADA m estado estado NUEVO m tcp p tcp dport 445 j ACEPTAR
A INPUT j REJECT rejectwith icmphostprohibited
A FORWARD j REJECT rejectwith icmphostprohibited
COMPROMETERSE
Luego ingrese lo siguiente para que se vuelvan a cargar las reglas del cortafuegos:
# servicio de reinicio de iptables
10. Para abrir el recurso compartido de casas nuevamente como el usuario phil de otro sistema en
su red (Windows o Linux), y asegúrese de que puede arrastrar y soltar archivos, haga lo siguiente:
a. Este paso es simplemente repetir el ejemplo de Nautilus descrito anteriormente o acceder
a una ventana del Explorador de archivos de Windows y abrir el recurso compartido
(seleccionando Red, luego el servidor Samba). El truco es asegurarse de que el servicio
esté disponible a través de las características de seguridad del servidor Linux.
b. Si no puede acceder al recurso compartido de Samba, intente deshabilitar su firewall y
luego deshabilitar SELinux. Si se puede acceder al recurso compartido cuando apaga
cualquiera de esos servicios, regrese y depure los problemas con el servicio que no funciona:
# setenforce 0 #
parada del servicio iptables
840
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
C. Cuando haya solucionado el problema, vuelva a configurar SELinux en el modo Enforcing y
reiniciar iptables:
#setenforce 1
# servicio de inicio de iptables
Capítulo 20: Configuración de un servidor de archivos NFS
1. Para instalar los paquetes necesarios para configurar el servicio NFS en su sistema Linux elegido,
ingrese lo siguiente como usuario raíz en un shell (Fedora o RHEL):
# yum instala nfsutils
2. Para enumerar los archivos de documentación que vienen en el paquete que proporciona el
software del servidor NFS, ingrese lo siguiente:
# rpm qd nfsutils /usr/
share/doc/nfsutils1.2.5/ChangeLog
...
/usr/share/man/man5/exports.5.gz /usr/share/
man/man5/nfs.5.gz /usr/share/man/man5/
nfsmount.conf.5.gz /usr/share/man /man7/nfsd.7.gz /usr/
share/man/man8/blkmapd.8.gz /usr/share/man/man8/
exportfs.8.gz
...
3. Para iniciar y habilitar el servicio NFS, ingrese lo siguiente como usuario raíz en el
servidor NFS:
# systemctl iniciar nfsserver.service # systemctl
habilitar nfsserver.service
4. Para verificar el estado del servicio NFS que acaba de iniciar en el servidor NFS, ingrese lo
siguiente como usuario raíz:
# systemctl status nfsserver.servicio
5. Para compartir un directorio /var/mystuff desde su servidor NFS disponible para todos, de solo
lectura y con el usuario raíz en el cliente que tiene acceso raíz al recurso compartido, primero
cree el directorio de montaje de la siguiente manera: # mkdir / var/mis cosas
Luego cree una entrada en el archivo /etc/exports similar a la siguiente:
/var/mis cosas *(ro,no_root_squash,insecure)
Para que el recurso compartido esté disponible, ingrese lo siguiente: B
# exportfs v a
exportando *:/var/mystuff
841
Machine Translated by Google
Parte VII: Apéndices
6. Para asegurarse de que el recurso compartido que creó sea accesible para todos los hosts, primero
verifique que rpcbind no esté bloqueado por contenedores TCP agregando la siguiente entrada al
comienzo del archivo /etc/hosts.allow:
rpcbind: TODOS
a. Para abrir el firewall en sistemas que usan firewalld (RHEL 8 y sistemas Fedora recientes), instale
el paquete firewallconfi g. Luego ejecute firewallconfig.
En la ventana Configuración de firewall que aparece, asegúrese de que nfs y rpcbind estén activados
para la configuración de firewall permanente.
b. Para abrir los puertos necesarios para permitir que los clientes lleguen a NFS a través del
cortafuegos de iptables (RHEL 6 y sistemas Fedora anteriores sin cortafuegos), debe abrir al
menos los puertos TCP y UDP 111 (rpcbind), 20048 (mountd) y 2049 ( nfs) agregando las
siguientes reglas al archivo /etc/sysconfig/iptables e iniciando el servicio iptables: A INPUT m
state state NEW m tcp p tcp dport 111 j ACCEPT A INPUT m estado estado NUEVO
m udp p udp dport 111 j ACEPTAR A ENTRADA m estado estado NUEVO m tcp p tcp
dport 2049 j ACEPTAR A ENTRADA m estado estado NUEVO m udp p udp dport 2049 j
ACEPTAR A ENTRADA m estado estado NUEVO m tcp p tcp dport 20048 j ACEPTAR A
ENTRADA m estado estado NUEVO m udp p udp dport 20048 j ACEPTAR
SELinux debería poder compartir sistemas de archivos NFS mientras está en modo de aplicación sin ningún
cambio en los contextos de archivos o booleanos. Para asegurarse de que el recurso compartido que creó se
pueda compartir como de solo lectura, ejecute el siguiente comando como usuario raíz en el servidor NFS:
# setsebool P nfs_export_all_ro en
7. Para ver los recursos compartidos disponibles desde el servidor NFS, suponiendo que el servidor
NFS se llame nfsserver, ingrese lo siguiente desde el cliente NFS:
# showmount e servidor nfs
Exportar lista para nfsserver: /var/
mystuff *
8. Para crear un directorio llamado /var/remote y montar temporalmente /var/
mystuff del servidor NFS (denominado nfsserver en este ejemplo) en ese punto de montaje, ingrese lo
siguiente como usuario raíz del cliente NFS:
# mkdir /var/remote # mount
t nfs nfsserver:/var/mystuff /var/remote
9. Para agregar una entrada para que el mismo montaje se realice automáticamente cuando reinicie,
primero desmonte /var/remote de la siguiente manera:
# desmontar /var/remoto
842
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Luego agregue una entrada como la siguiente a /etc/fstab en el sistema cliente:
/var/servidor nfs remoto:/var/mystuff nfs bg,ro 0 0
Para probar que el recurso compartido está configurado correctamente, ingrese lo siguiente en el cliente
NFS como usuario raíz:
# montar a
# mount t nfs4
nfsserver:/var/mystuff on /var/remote type nfs4
(ro,vers=4,rsize=524288...
10. Para copiar algunos archivos al directorio /var/mystuff, ingrese lo siguiente en el
servidor NFS:
# cp /etc/hosts /etc/services /var/mis cosas
Desde el cliente NFS, para asegurarse de que puede ver los archivos recién agregados a ese
'
directorio y para asegurarse de que puede ser cliente,
t ie
ngrese
scribir lao
rchivos
siguiente:
en ese directorio desde el
# ls /var/ hosts remotos
servicios
# toque /var/remoto/archivo1 toque:
no puede tocar '/var/remoto/archivo1': archivo de solo lectura
sistema
Capítulo 21: Solución de problemas de Linux
1. Para ingresar al modo de configuración desde la pantalla del BIOS en su computadora, haga lo siguiente:
a. Reinicie su computadora. b.
En unos segundos, debería ver la pantalla del BIOS, con una indicación de
s
qué tecla de función presionar para entrar en el modo de configuración. (En mi estación de trabajo Dell,
es la tecla de función F2).
C. Debería aparecer la pantalla del BIOS. (Si el sistema comienza a arrancar Linux, no presionó la tecla
de función lo suficientemente rápido).
2. Desde la pantalla de configuración del BIOS, haga lo siguiente para determinar si su computadora es de 32
bits o de 64 bits, si incluye soporte de virtualización y si su tarjeta de interfaz de red es capaz de arrancar
PXE.
Su experiencia puede ser un poco diferente a la mía, dependiendo de su computadora y sistema Linux.
La pantalla de configuración del BIOS es diferente para diferentes computadoras. Sin embargo, en
general, puede usar las teclas de flecha y las teclas de tabulación para moverse entre diferentes columnas
y presionar Entrar para seleccionar una entrada. B
843
Machine Translated by Google
Parte VII: Apéndices
a. En mi estación de trabajo Dell, bajo el encabezado Sistema, resalto Información del procesador para
ver que la mía es una computadora con tecnología de 64 bits. Busque en la sección Información del
procesador, o una sección similar en su computadora, para ver el tipo de procesador que tiene.
b. En mi estación de trabajo Dell, bajo el encabezado Dispositivos integrados, resalto
NIC integrada y presione Entrar. La pantalla de NIC integrada que aparece a la derecha me
permite elegir habilitar o deshabilitar la NIC (activar o desactivar) o habilitar con PXE o RPL (si tengo
la intención de iniciar la computadora a través de la red).
3. Para interrumpir el proceso de arranque para llegar al cargador de arranque GRUB, haga lo siguiente:
a. Reinicia la computadora. b.
Justo después de que desaparezca la pantalla del BIOS, cuando vea la cuenta regresiva para el arranque
el sistema Linux, presione cualquier tecla (quizás la barra espaciadora).
C. Debería aparecer el menú del cargador de arranque GRUB, listo para permitirle seleccionar qué
kernel del sistema operativo arrancar.
4. Para iniciar su computadora al nivel de ejecución 1 para que pueda hacer algo de mantenimiento del
sistema, acceda a la pantalla de inicio de GRUB (como se describe en el ejercicio anterior) y luego
haga lo siguiente:
a. Utilice las teclas de flecha para resaltar el sistema operativo y el kernel que desea
quiere arrancar.
b. Escriba e para ver las entradas necesarias para iniciar el sistema operativo. C.
Mueva el cursor a la línea que incluía el núcleo. (Debe incluir la
palabra vmlinuz en algún lugar de la línea).
d. Mueva el cursor al final de esa línea, agregue un espacio y luego escriba
init=inicio.
mi. Siga las instrucciones para iniciar la nueva entrada. Probablemente presione Ctrl+X o presione
Enter; si hay otra pantalla, escriba b.
Si funcionó, su sistema debería pasar por alto la solicitud de inicio de sesión y arrancar directamente
en un shell de usuario raíz donde puede realizar tareas administrativas sin proporcionar una
contraseña.
5. Para ver los mensajes que se produjeron en el búfer de anillo del kernel (que muestra la
actividad del kernel a medida que se inicia), ingrese lo siguiente desde el shell después de
que el sistema termine de iniciarse: # dmesg | menos
6. O, en un sistema que use systemd, ingrese lo siguiente:
# diarioctl k
844
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
7. Para ejecutar una actualización de prueba de yum desde Fedora o RHEL y excluir cualquier paquete
de kernel que esté disponible, ingrese lo siguiente (cuando se le solicite, escriba N para no
continuar con la actualización, si hay actualizaciones disponibles):
# actualización yum exclude='núcleo*'
8. Para verificar qué procesos están escuchando las conexiones entrantes en su
sistema, ingrese lo siguiente:
# netstattupln | menos
9. Para verificar qué puertos están abiertos en su interfaz de red externa, haga lo siguiente
siguiente.
Si es posible, ejecute el comando nmap desde otro sistema Linux en su red, reemplazando
yourhost con el nombre de host o la dirección IP de su sistema:
# nmap su host
'
10. Para limpiar su sistema caché de páginas y observe el efecto que tiene en su memoria
uso, haga lo siguiente:
a. Seleccione Terminal desde un menú de aplicación en su escritorio (se encuentra en diferentes menús para
diferentes sistemas).
b. Ejecute el comando superior (para ver los procesos que se están ejecutando actualmente en su
sistema), y luego escriba una M mayúscula para ordenar los procesos por aquellos que consumen la mayor
cantidad de memoria.
C. Desde la ventana de Terminal, seleccione Archivo y Abrir Terminal para abrir un segundo Ter
ventana terminal.
d. Desde la segunda ventana de Terminal, conviértase en usuario root (su ). mi.
Mientras observa la línea Mem (columna utilizada) en la primera ventana de Terminal, ingrese
lo siguiente desde la segunda ventana de Terminal:
# echo 3 > /proc/sys/vm/drop_caches
F. La memoria RES utilizada debería bajar significativamente en la línea Mem. el número
Las fibras en la columna RES para cada proceso también deben bajar.
11. Para ver el uso de la memoria y el intercambio desde Cockpit a través de su navegador web, abra su navegador
en Cockpit para su host (https://hostname:9090). Luego seleccione Sistema Memoria e intercambio.
Capítulo 22: Comprender la seguridad básica de Linux
1. Para verificar los mensajes de registro del diario systemd para los servicios NetworkManager.service,
sshd.service y auditd.service, ingrese lo siguiente: B
# journalctl u NetworkManager.servicio
...
845
Machine Translated by Google
Parte VII: Apéndices
# journalctl u sshd.servicio
...
# journalctl u auditd.servicio
...
2. Las contraseñas de usuario se almacenan en el archivo /etc/shadow. Para ver sus permisos,
escriba ls l /etc/shadow en la línea de comando. (Si no sale ningún archivo shadow, debe
ejecutar pwconv).
Los siguientes son los ajustes apropiados:
# ls l /etc/sombra
. 1 raíz raíz 1049 10 de febrero 09:45 /etc/shadow
3. Para determinar la caducidad de la contraseña de su cuenta y si caducará usando un
comando único, escriba chage l usuario _ nombre. Por ejemplo:
# cambio l chris
4. Para comenzar a auditar escrituras en /etc/shadow con el demonio auditd, ingrese el
siguiente en la línea de comando:
# auditctl w /etc/shadow pw
Para verificar su configuración de auditoría, escriba auditctl l en la línea de comando.
5. Para crear un informe desde el demonio auditd en el archivo /etc/shadow, ingrese aus
search f /etc/shadow en la línea de comando. Para desactivar la auditoría en ese
archivo, ingrese auditctl W /etc/shadow pw en la línea de comando.
6. Para instalar el paquete lemon, dañe el archivo /usr/bin/lemon, verifique que el archivo
haya sido manipulado y retire el paquete lemon, ingrese lo siguiente:
# yum install y lemon # cp /etc/
services /usr/bin/lemon # rpm V lemon /usr/bin/
lemon S.5....T. # ñam borrar limón
Del archivo de limón original, el tamaño del archivo (S), el md4sum (5) y los tiempos de
modificación (T) son todos diferentes. Para Ubuntu, instale el paquete con aptget install lemon e
ingrese debsums lemon para comprobarlo.
7. Si sospecha que ha tenido un ataque malicioso en su sistema hoy y se han modificado
archivos binarios importantes, puede encontrar estos archivos modificados ingresando
lo siguiente en la línea de comando: find directory mtime 1 para los directorios /bin, /
sbin, /usr/bin y /usr/sbin.
8. Para instalar y ejecutar chkrootkit para ver si el ataque malicioso del ejercicio anterior
instaló un rootkit, elija su distribución y haga lo siguiente:
a. Para instalar en una distribución de Fedora o RHEL, ingrese yum install chkrootkit
en la línea de comando.
846
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
b. Para instalar en una distribución basada en Ubuntu o Debian, ingrese sudo aptget
instale chkrootkit en la línea de comando.
C. Para ejecutar la verificación, ingrese chkrootkit en la línea de comando y revise
los resultados.
9. Para encontrar archivos en cualquier parte del sistema con el conjunto de permisos SUID o SGID, ingrese find / perm /
6000 ls en la línea de comando.
10. Para instalar el paquete aide, ejecute el comando aide para inicializar la base de datos de aide, copie la base de
datos en la ubicación correcta y ejecute el comando aide para verificar si se han modificado archivos importantes
en su sistema, ingrese lo siguiente .
# yum install ayudante #
ayudante i # cp /var/lib/
aide/aide.db.new.gz /var/lib/aide/aide.db.gz # ayudante C
Para hacer que la salida sea más interesante, puede instalar el paquete lemon (descrito en un
ejercicio anterior) antes de ejecutar aide i, y modificarlo antes de ejecutar aide C para ver cómo se
ve un binario modificado desde aide.
Capítulo 23: Comprender la seguridad avanzada de Linux
Para hacer los primeros ejercicios, debe tener instalado el paquete gnupg2. Esto no está instalado de
forma predeterminada en Ubuntu, aunque está instalado para las últimas versiones de Fedora y RHEL.
1. Para cifrar un archivo con la utilidad gpg2 y una clave simétrica, ingrese el siguiente comando. (La utilidad gpg2
solicita una frase de contraseña para proteger la clave simétrica).
$ gpg2 c nombre de archivo
2. Para generar un par de claves usando la utilidad gpg2, ingrese lo siguiente:
$ gpg2 genkey
Debe proporcionar la siguiente información:
a. Su nombre real y dirección de correo electrónico
b. Una frase de contraseña para la clave privada
3. Para enumerar las claves que generó, ingrese lo siguiente: $ gpg2
listkeys
4. Para encriptar un archivo y agregar su firma digital usando la utilidad gpg2, haga lo siguiente
B
siguiente:
a. Primero debe haber generado un conjunto de claves (Ejercicio 2). b. Después
de haber generado el conjunto de claves, ingrese
$ gpg2 output EncryptedSignedFile sign
FiletoEncryptSign
847
Machine Translated by Google
Parte VII: Apéndices
5. Desde la página getfedora.org, seleccione una de las distribuciones de Fedora para descargar.
Cuando se complete la descarga, seleccione Verificar su descarga para ver las instrucciones
para verificar su imagen. Por ejemplo, descargue el archivo CHECKSUM apropiado para su
imagen, luego ingrese lo siguiente:
$ curl https://getfedora.org/static/fedora.gpg | gpg import $ gpg verifyfiles
*CHECKSUM $ sha256sum c *CHECKSUM
6. Para determinar si el comando su en su sistema Linux es compatible con PAM, ingrese el
siguiente:
$ ldd $ (que su) | grep pam libpam.so.0
=> /lib64/libpam.so.0 (0x00007fca14370000) ibpam_misc.so.0 => /lib64/
libpam_misc.so.0 (0x00007fca1416c000
Si el comando su en su sistema Linux es compatible con PAM, debería ver un nombre
de biblioteca PAM en la lista cuando ejecuta el comando ldd.
7. Para determinar si el comando su tiene un archivo de configuración PAM, escriba lo siguiente:
$ ls /etc/pam.d/su /etc/
pam.d/su
Si el archivo existe, escriba lo siguiente en la línea de comando para mostrar su contenido.
Los contextos PAM que utiliza incluyen cualquiera de los siguientes: autenticación,
cuenta, contraseña o sesión.
$ gato /etc/pam.d/su
8. Para enumerar los diversos módulos PAM en su sistema Fedora o RHEL, ingrese el
siguiente:
$ ls /usr/lib64/security/pam*.so
Para enumerar los diversos módulos PAM en su sistema Ubuntu Linux, ingrese lo
siguiente:
# encontrar / nombre pam*.so
9. Para encontrar el archivo de configuración "otro" de PAM en su sistema, ingrese ls /etc/pam.d/
otro en la línea de comando. Un archivo de configuración "otro" que aplique la denegación
implícita debería tener un aspecto similar al siguiente código:
$ cat /etc/pam.d/other
#%PAM1.0 autenticación
requerida cuenta requerida
contraseña pam_deny.so
requerida sesión requerida pam_deny.so
pam_deny.so
pam_deny.so
848
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
10. Para encontrar el archivo de configuración de límites PAM, ingrese lo siguiente:
$ ls /etc/security/limits.conf
Muestre el contenido del archivo ingresando lo siguiente:
$ cat /etc/security/limits.conf
La configuración de este archivo para evitar una bomba de horquilla tiene el siguiente aspecto:
Capítulo 24: Mejora de la seguridad de Linux con SELinux
1. Para configurar su sistema en el modo permisivo para SELinux, ingrese setenforce
permisivo en la línea de comando. También sería aceptable ingresar seten force 0 en la
línea de comando.
2. Para configurar su sistema en el modo operativo obligatorio para SELinux sin cambiar el archivo de configuración
principal de SELinux, tenga cuidado. Es mejor no ejecutar este comando en su sistema para un ejercicio hasta
que esté listo para aplicar SELinux. Utilice el siguiente comando en la línea de comando: seten force enforcing.
También sería aceptable ingresar setenforce 1 en la línea de comando.
3. Para encontrar y ver el tipo de política permanente de SELinux (establecido en el momento del arranque), vaya a la
archivo principal de configuración de SELinux, /etc/selinux/config. Para verlo, ingrese cat /
etc/selinux/config | grep SELINUX= en la línea de comandos. Para estar seguro de cómo
está configurado actualmente, ingrese el comando getenforce.
4. Para enumerar el contexto de seguridad del archivo /etc/hosts e identificar los diferentes atributos del contexto de
seguridad, ingrese ls Z /etc/hosts en la línea de comando:
$ ls Z /etc/hosts rwrr. raíz
raíz system_u:object_r:net_conf_t:s0 / etc/hosts
a. El contexto de usuario del archivo es system_u, lo que indica un archivo del sistema.
b. El rol del archivo es object_r, lo que indica un objeto en el sistema de archivos (un archivo de texto,
en este caso).
C. El tipo de archivo es net_conf_t, porque el archivo es un archivo de configuración de red.
d. El nivel de sensibilidad del archivo es s0, lo que indica el nivel de seguridad más bajo. (Este número
puede aparecer en un rango de números de s0s3).
mi. El nivel de categoría del archivo comienza con ac y termina con un número. Puede aparecer en un
B
rango de números, como c0c102. Esto no es necesario excepto en entornos muy seguros y no se establece
aquí.
849
Machine Translated by Google
Parte VII: Apéndices
5. Para crear un archivo llamado test.html y asignar su tipo como httpd_sys_content_t, ingrese lo siguiente:
$ prueba táctil.html $
chcon t httpd_sys_content_t prueba.html $ ls Z
prueba.html rwrwr. chris chris
unconfined_u:object_r:httpd_sys_ content_t:s0 test.html
6. Para enumerar los atributos de 's contexto de seguridad e identificar los diferentes
contexto del proceso crond, ingrese esto en la línea de comando:
$ ps efZ | grep crond
system_u:system_r:crond_t:s0s0:c0.c1023 root 665 1 0 Sep18 ? 00:00:00 /usr/
sbin/crondn
a. El contexto de usuario del proceso es system_u, lo que indica un proceso del sistema.
b. El rol del proceso es system_r, lo que indica un rol del sistema. C. El tipo o dominio del
proceso es crond_t. d. El nivel de sensibilidad del proceso comienza en s0s0, lo que
indica que no es muy sensible. (Sin embargo, es seguro según los estándares normales de Linux
porque el proceso se ejecuta como usuario raíz).
mi. El nivel de categoría del proceso es c0.c1023, donde c0 indica que el gato
egory tampoco es muy seguro desde el punto de vista de SELinux.
7. Para crear un archivo /etc/test.txt, cambie su contexto de archivo a user_tmp_t, restáurelo a su
contenido adecuado (el contexto predeterminado para el directorio /etc) y elimine el archivo, ingrese lo
siguiente:
# toque /etc/test.txt # ls Z /
etc/test.txt rwrr. raíz raíz
unconfined_u:object_r:etc_t:s0 /etc/
prueba.txt
# chcon t usuario_tmp_t /etc/test.txt # ls Z /etc/
test.txt rwrr. raíz raíz
unconfined_u:object_r:user_tmp_t:s0 / etc/test.txt # restorecon /etc/test.txt # ls
Z /etc/test.txt rwrr. raíz raíz unconfined_u:object_r:etc_t:s0 /etc/
prueba.txt
# rm /etc/test.txt rm:
¿eliminar el archivo vacío normal ̀/etc/test.txt'? y
8. Para determinar qué valores booleanos permiten escrituras anónimas y acceso al directorio de inicio
del servicio
tftp, luego active esos valores booleanos de forma permanente, ingrese los siguientes
comandos:
# getseboola | grep tftp tftp_home_dir
> desactivado tftpd_anon_write >
desactivado
850
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
...
# setsebool P tftp_home_dir=on # setsebool P
tftp_anon_write=on # getsebool tftp_home_dir
tftp_anon_write tftp_home_dir > on tftp_anon_write > on
9. Para enumerar todos los módulos de políticas de SELinux en su sistema, junto con su número de versión
bras, ingrese semodule –l.
NOTA
Si escribió ls /etc/selinux/targeted/modules/active/modules/*.pp como respuesta, está bien, pero este
comando no le proporciona los números
los de
dve
números ersión
de los módulos de políticas. Solo semodule l proporciona
versión.
10. Para decirle a SELinux que permita el acceso al servicio sshd a través del puerto TCP 54903, ingrese
la siguiente:
# puerto semanal a t ssh_port_t p tcp 54903 # puerto semanal l |
grep ssh ssh_port_t tcp
54903, 22
Capítulo 25: Protección de Linux en una red
1. Para instalar la utilidad Network Mapper (también conocida como nmap) en su sistema Linux local: a.
En Fedora o RHEL, ingrese yum install nmap en la línea de comando.
b. En Ubuntu, nmap puede venir preinstalado. Si no, ingrese sudo aptget
instale nmap en la línea de comando.
2. Para ejecutar un análisis de conexión TCP en su dirección de loopback local, ingrese nmap sT
127.0.0.1 en la línea de comando. Los puertos que tiene en ejecución en su servidor Linux
variarán. Sin embargo, pueden tener un aspecto similar al siguiente:
# nmapsT 127.0.0.1
...
PUERTO SERVICIO ESTATAL
25/tcp abierto smtp 631/tcp
abierto ipp
3. Para ejecutar un análisis de UDP Connect en su sistema Linux desde un sistema remoto:
'
a. Determina tu servidor Linux s dirección IP ingresando ifconfig en la línea
de comando. El resultado será similar al siguiente, y la dirección IP de su sistema 's B
sigue a inet addr: en el resultado del comando ifconfig.
#ifconfig _
...
enlace p2p1 encap:Ethernet HWaddr 08:00:27:E5:89:5A
dirección de red: 10.140.67.23
851
Machine Translated by Google
Parte VII: Apéndices
b. Desde un sistema Linux remoto, ingrese el comando nmap sU dirección IP en la línea de comando,
usando la dirección IP que obtuvo anteriormente.
Por ejemplo:
# nmapsU 10.140.67.23
4. Para verificar si su sistema está ejecutando el servicio firewalld, y luego instale
e iniciarlo si no es así:
a. Ingrese systemctl status firewalld.service. b. Si el servicio firewalld no se
está ejecutando, en un sistema Fedora o RHEL, ingrese
la siguiente:
# yum install firewalld firewallconfig y # systemctl iniciar
firewalld # systemctl habilitar firewalld
5. Para abrir puertos en su firewall para permitir el acceso remoto a su servicio web local, haga
la siguiente:
a. Inicie la ventana de configuración del cortafuegos (firewalldconfig). b. Asegúrese de que
Configuración: Tiempo de ejecución esté seleccionado. C. Seleccione su zona actual (por
ejemplo, FedoraWorkstation). d. En Servicios, seleccione las casillas de verificación http y
https. mi. Seleccione Configuración: Permanente. F. En Servicios, seleccione las casillas de
verificación http y https.
6. Para determinar las políticas actuales de cortafuegos de netfilter/iptables de su sistema Linux
y reglas, ingrese iptables vnL en la línea de comando.
7. Para guardar, vaciar y restaurar su sistema Linux 's reglas actuales del cortafuegos:
a. Para guardar sus reglas actuales:
# iptablessave >/tmp/myiptables
b. Para vaciar sus reglas actuales:
#iptables F
C. Para restaurar las reglas del cortafuegos, ingrese:
# iptablesrestore < /tmp/myiptables
'
8. Para configurar su sistema Linux En la tabla de filtro del cortafuegos para la cadena de entrada a
una política de DROP, ingrese iptables P INPUT DROP en la línea de comando.
9. Para volver a cambiar la política de la tabla de filtros del cortafuegos de su sistema Linux para aceptar la cadena
de entrada, ingrese lo siguiente:
# iptables P ENTRADA ACEPTAR
852
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Para agregar una regla para eliminar todos los paquetes de red de la dirección IP 10.140.67.23, ingrese
lo siguiente:
# iptables A ENTRADA s 10.140.67.23 j DROP
10. Para eliminar la regla que acaba de agregar, sin vaciar ni restaurar las reglas del firewall del sistema
Linux, ingrese iptables
anteriormente
D INPUT 1
e
s
eln
a lra
egla
línea
1.
dDe
e
clomando.
o contrario,
Esto
cambie
supone
el q
1ue
al n
la
úmero
regla qdue
e regla
agregó
apropiado en su comando iptables.
Capítulo 26: Cambio a nubes y contenedores
1. Para instalar e iniciar podman (para cualquier sistema RHEL o Fedora) o
ventana acoplable (RHEL 7):
# yum instalar subman y
o
# yum install docker y # systemctl
iniciar docker # systemctl habilitar
docker
2. Para usar docker o podman para extraer esta imagen a su host, registro. acceso.redhat.com/ubi7/
ubi:
# podman tire del registro.access.redhat.com/ubi7/ubi
o
# ventana acoplable registro.access.redhat.com/ubi7/ubi
3. Para ejecutar la imagen ubi7/ubi para abrir un shell bash:
# podman ejecutar it ubi7/ubi bash
o
# ventana acoplable ejecuta it ubi7/ubi bash
4. Para ejecutar comandos para ver el sistema operativo en el que se basa el contenedor, instale el
paquete procps y ejecute un comando para ver los procesos que se ejecutan dentro del contenedor:
bash4.4# gato /etc/osrelease | grep ^NOMBRE NOMBRE="Red Hat
Enterprise Linux" bash4.4# yum install procps y bash4.4# ps ef UID
PID PPID C STIME TTY HORA CMD
raíz 1 0 0 03:37 puntos/0 1 0 00:00:00 fiesta
raíz 20 03:43 puntos/0 00:00:00 pdef
bash4.4# salir
5. Para reiniciar y conectarse al contenedor que acaba de cerrar usando un shell interactivo, ingrese lo B
siguiente:
# subman ps a
IMAGEN DE IDENTIFICACIÓN DEL CONTENEDOR COMANDO CREADO
853
Machine Translated by Google
Parte VII: Apéndices
ESTADO PUERTOS NOMBRES eabf1fb57a3a ...ubi8/
ubi:latest bash Hace 7 minutos
Salió (0) hace 4 segundos # podman compasivo_hawking
start a eabf1fb57a3a bash4.4# exit
6. Para crear un archivo Docker simple a partir de una imagen base de ubi7/ubi, incluya una secuencia de
comandos llamada cworks.sh que haga eco de "The Container Works!", y agregue esa secuencia de comandos
a la imagen para que se ejecute, haga lo siguiente:
a. Crear y cambiar a un nuevo directorio: #
proyecto mkdir # proyecto cd
b. Cree un archivo llamado Dockerfile con el siguiente contenido:
DESDE registro.access.redhat.com/ubi7/ubiminimal COPIAR ./cworks.sh /
usr/local/bin/CMD ["/usr/local/bin/cworks.sh"]
C. Cree un archivo llamado cworks.sh con el siguiente contenido:
#!/bin/bash set
o errexit
conjunto o sustantivo
set o pipefail echo
"¡El contenedor funciona!"
7. Use docker o podman para construir una imagen llamada containerworks desde el
Dockerfile que acaba de crear. #
podman build t miproyecto .
o
# docker build t miproyecto .
8. Para obtener acceso a un registro de contenedores, ya sea instalando el dockerdistribution
paquete u obtener una cuenta en Quay.io o Docker Hub:
# yum install dockerdistribution y # systemctl start
dockerdistribution # systemctl enable dockerdistribution
u obtenga una cuenta de Quay.io (https://quay.io/plans/) o Docker Hub, luego:
#podman inicio de sesión quay.io
Nombre de usuario: <nombre de usuario>
Contraseña: *********
9. Para etiquetar y enviar una nueva imagen a un registro de contenedor elegido:
# podman tag aa0274872f23 \ quay.io/
<usuario>/<nombre de imagen>:v1.0 # podman
push \ quay.io/<usuario>/<nombre de
imagen>:v1.0
854
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Capítulo 27: Uso de Linux para computación en la nube
1. Para verificar si su computadora es compatible con la virtualización KVM, ingrese el
siguiente:
# cat /proc/cpuinfo | grep color E "vmx|svm|lm" indicadores: fpu vme de
pse tsc msr pae mce cx8 apic sep mtrr
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb
rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni
pclmulqdq dtes64 monitor ds_cpl vmx smx es...
...
La CPU debe ser compatible con vmx o svm. La lm indica que es una computadora de 64
bits.
2. Para instalar un sistema Linux junto con los paquetes necesarios para usarlo como host
KVM y ejecutar la aplicación Virtual Machine Manager, haga lo siguiente:
a. Obtenga una imagen en vivo o de instalación de un sitio de Linux (como getfedora.org)
y grábela en un DVD (o de lo contrario, hágala disponible para instalar). b. Inicie la
imagen de instalación y seleccione instalarla en un disco duro. C. Para una estación de
trabajo Fedora, una vez completada la instalación y reiniciado,
instale el siguiente paquete (para diferentes distribuciones de Linux, es posible que necesite
instalar un paquete que también proporcione libvirtd): # yum install virtmanager libvirtdaemon
confignetwork
3. Para asegurarse de que los servicios sshd y libvirtd se estén ejecutando en el sistema,
introduzca la siguiente:
# systemctl iniciar sshd.servicio # systemctl
habilitar sshd.servicio # systemctl iniciar
libvirtd.servicio # systemctl habilitar libvirtd.servicio
4. Obtenga una imagen ISO de instalación de Linux que sea compatible con su hipervisor y
cópielo en el directorio predeterminado utilizado por Virtual Machine Manager para almacenar imágenes.
Por ejemplo, si el DVD de Fedora Workstation está en el directorio actual, puede ingresar lo
siguiente: # cp FedoraWorkstationLivex86_64301.2.iso /var/lib/libvirt/images/
5. Para verificar la configuración en el puente de red predeterminado (virbr0), ingrese lo siguiente:
# ip addr show virbr0 4: virbr0:
<SIN PORTADORA, BROADCAST, MULTICAST, UP> mtu 1500 qdisc B
noqueue state UP group default link/ether
de:21:23:0e:2b:c1 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd
192.168.122.255 scope global virbr0
válido_lft para siempre preferido_lft para siempre6.
855
Machine Translated by Google
Parte VII: Apéndices
6. Para instalar una máquina virtual utilizando la imagen ISO que copió anteriormente, haga lo
siguiente.
a. Ingrese este comando:
# virtgerente &
b. Seleccione Archivo y luego seleccione Nueva máquina virtual.
C. Seleccione Medios de instalación local y haga clic en Reenviar.
d. Seleccione Examinar, elija el ISO en vivo o de instalación, haga clic en Elegir volumen y
haga clic en Adelante.
mi. Seleccione la memoria y las CPU y haga clic en Adelante. F.
Seleccione el tamaño del disco que desea usar y haga clic en Adelante.
gramo. Seleccione "Valor predeterminado de red virtual: NAT" (es posible que ya esté
seleccionado). H. Si todo se ve bien, haga clic en Finalizar. i. Siga el proceso de instalación
indicado por la ISO de instalación.
7. Para asegurarse de que puede iniciar sesión y utilizar la máquina virtual, haga lo siguiente:
a. Haga doble clic en la entrada de la nueva máquina virtual. b. Cuando
aparezca la ventana del visor, inicie sesión como lo haría normalmente.
8. Para verificar que su máquina virtual pueda conectarse a Internet u otra red fuera del hipervisor, realice una de las
siguientes acciones:
a. Abra un navegador web e intente conectarse a un sitio web en Internet. b. Abra una ventana de
Terminal, ingrese ping redhat.com y luego presione
Ctrl+C para salir.
9. Para detener la máquina virtual para que ya no se esté ejecutando:
a. Haga clic con el botón derecho en la entrada de la máquina virtual en la ventana de virt
manager. b. Seleccione Apagar y luego seleccione Apagar nuevamente.
C. Si la máquina virtual no se apaga inmediatamente, puede seleccionar Forzar apagado en su lugar, pero
eso es como sacar el enchufe y corre el riesgo de perder datos.
10. Vuelva a iniciar la máquina virtual para que esté funcionando y disponible:
a. Haga clic con el botón derecho en la entrada de la máquina virtual en la ventana de virtmanager.
b. Haga clic en Ejecutar.
856
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
Capítulo 28: Implementación de Linux en la nube
1. Para instalar el paquete genisoimage, cloudinit, qemuimg y virtviewer
edades, ingrese:
# dnf instalar genisoimage cloudinit qemuimg virtviewer
2. Para obtener una imagen de la nube de Fedora, vaya a https://getfedora.org/en/cloud/download/ y
descargue una imagen qcow2. Hay uno en la lista con OpenStack llamado FedoraCloud
Base311.9.x86_64.qcow2.
3. Para crear una instantánea de esa imagen en formato qcow2 llamada myvm.qcow2, ingrese el
siguiente:
# qemuimg create f qcow2 \ o
backing_file=FedoraCloudBase311.9.x86_64.qcow2 \ myvm.qcow2
4. Cree un archivo de metadatos de inicialización en la nube llamado metadatos que incluya lo siguiente
contenido de entrada:
ID de instancia: myvm
nombre de host local: myvm.example.com
5. Cree un archivo de datos de usuario de inicialización en la nube llamado datos de usuario que incluya lo siguiente
contenido de entrada:
#contraseña de
configuración de la
nube: prueba chpasswd: {caducidad: falso}
6. Ejecute el comando genisoimage para combinar los archivos de metadatos y datos de usuario
para crear un archivo mydata.iso: # genisoimage output mydata.iso volid cidata \ jolietlong
rock userdata metadata
7. Use el comando virtinstall para combinar la imagen de máquina virtual myvm.qcow2 con la imagen
mydata.iso para crear una nueva imagen de máquina virtual llamada newvm que se ejecuta como una
máquina virtual en su hipervisor.
# virtinstall import name newvm \ ram 4096 vcpus
2 \ disk path=myvm.qcow2,format=qcow2,bus=virtio
\ disk path=mydata.iso,device=cdrom \ network red=predeterminado
&
8. Para abrir la máquina virtual newvm con virtviewer, ingrese lo siguiente:
# virtvisor newvm
B
9. Inicie sesión en la máquina virtual newvm usando la prueba de usuario y contraseña de Fedora:
Iniciar sesión: fedora
contraseña: prueba
857
Machine Translated by Google
Parte VII: Apéndices
Capítulo 29: Automatización de aplicaciones e
infraestructura con Ansible
1. Para instalar el paquete ansible, haga lo siguiente:
RHEL 8
# repositorios del administrador de
suscripciones \ enable ansible2.9forrhel8x86_64rpms
# dnf instala ansible y
Fedora
# dnf instala ansible y
ubuntu
$ sudo apt update $ sudo
apt install softwarepropertiescommon $ sudo aptaddrepository
yes update ppa:ansible/ansible $ sudo apt install ansible
2. Para agregar privilegios sudo para el usuario que ejecuta los comandos de Ansible, ejecute
visudo y cree una entrada similar a la siguiente (cambiando joe por su nombre de usuario):
Joe TODO = (TODO) SIN CONTRASEÑA: TODOS
3. Abra un archivo llamado my_playbook.yaml y agregue el siguiente contenido:
nombre: Crear servidor web
anfitriones: tareas del
host local:
nombre: Instalar httpd
yum:
nombre: httpd
estado: presente
4. Para ejecutar el libro de jugadas my_playbook.yaml en modo de verificación, haga lo
siguiente. (Debería fallar porque el usuario no tiene privilegios para instalar un paquete).
$ ansibleplaybook C my_playbook.yaml
...
TAREA [Instalar httpd]
**************************************************** ***********
fatal: [localhost]: ¡FALLIDO! => {"cambiado": falso, "mensaje":
"Este
el comando debe ejecutarse con el usuario raíz.", "resultados": []}
...
858
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
5. Realice los siguientes cambios en el archivo my_playbook.yaml:
nombre: Crear servidor web
anfitriones: host local
convertirse: sí
convertirse en_método: sudo
convertirse en_usuario: root
tareas:
nombre: Instalar httpd yum:
nombre: httpd estado: presente
6. Para ejecutar el archivo my_playbook.yaml nuevamente para instalar el paquete httpd, ingrese el
siguiente:
$ ansibleplaybook my_playbook.yaml
...
TAREA [Instalar httpd] ************************************** cambiado: [localhost]
RESUMEN DEL JUEGO ***************************************************
localhost: ok=2 cambiado=1 inalcanzable=0 fallido=0 omitido=0
rescatado=0 ignorado=0
7. Modifique my_playbook.yaml de la siguiente manera para iniciar el servicio httpd y configúrelo para que
que se iniciará cada vez que arranque el sistema:
nombre: Crear servidor web
anfitriones: host local
convertirse: sí
convertirse en_método: sudo
convertirse en_usuario: root
tareas:
nombre: Instalar httpd yum:
nombre: estado httpd: presente
nombre: iniciar servicio
httpd:
nombre: httpd
estado: iniciado
8. Para ejecutar un comando ansible para que verifique si el servicio httpd está activo o no en localhost,
ingrese lo siguiente:
$ ansible localhost m service \ a "name=httpd
B
state=iniciado" check localhost | ÉXITO => {
859
Machine Translated by Google
Parte VII: Apéndices
"cambiado": falso,
"nombre": "httpd",
"estado": "iniciado",
"estado": { ...
9. Para crear un archivo index.html en el directorio actual que contenga el texto "El servidor web
está activo" y ejecute el comando ansible para copiar ese archivo en el directorio /var/www/
html en localhost, haga lo siguiente ( cambiando joe a su nombre de usuario):
$ echo "El servidor web está activo" > index.html $
ansible localhost m copy a \ "src=./index.html dest=/
var/www/html/ \ propietario=apache group=apache
mode=0644" \ b user joe becomeuser root become
method sudo
host01 | CAMBIADO => { ...
10. Para usar el comando curl para ver el contenido del archivo que acaba de copiar al
servidor web, haga lo siguiente:
$ rizo servidor local
El servidor web está activo
Capítulo 30: Implementación de aplicaciones como
contenedores con Kubernetes
1. Para obtener acceso a una instancia de Minikube,
ya sea: a. Instale Minikube como se describe aquí: https://kubernetes.io/docs/tasks/tools/
installminikube, o
b. Acceda a una instancia remota de Minikube disponible, como a través de Kubernetes.
tutoriales de io: https://kubernetes.io/docs/tutorials/
2. Para ver las versiones de su instalación de Minikube, el cliente kubectl y el servicio Kuber
netes, ingrese lo siguiente:
$ versión minikube $
versión kubectl
3. Para crear una implementación que administre un pod que ejecuta el contenedor hellonode
imagen, ingrese lo siguiente: $
kubectl create deployment hellonode \ image=gcr.io/
hellominikubezeroinstall/hellonode
4. Para ver la implementación de hellonode y describirla en detalle, ingrese
lo siguiente: $
kubectl get deployment $ kubectl
describe deployment hellonode
860
Machine Translated by Google
Apéndice B: Respuestas al ejercicio
5. Para ver el conjunto de réplicas actual asociado con su implementación de hellonode,
introduzca la siguiente:
$ kubectl obtener rs
6. Para ampliar la implementación de hellonode a tres (3) réplicas, ingrese lo siguiente:
$ kubectl scale deployments/hellonode replicas=3
7. Para exponer la implementación de hellonode fuera del clúster de Kubernetes mediante
LoadBalancer, ingrese lo siguiente:
$ kubectl expone el despliegue hellonode \ type=LoadBalancer
port=8080
8. Para obtener la dirección IP de su instancia de Minikube y el número de puerto del expuesto
servicio hellonode, ingrese lo siguiente: $ minikube ip
192.168.39.150
$ kubectl describe el servicio hellonode | puerto de nodo grep
NodePort: <sin configurar> 31302/TCP
9. Use el comando curl para consultar el servicio hellonode, usando la dirección IP
y el número de puerto del paso anterior. Por ejemplo: $ curl
192.168.39.105:31302 ¡Hola mundo!
10. Para eliminar el servicio y la implementación de hellonode y luego detener la máquina
virtual Minikube, ingrese lo siguiente:
$ kubectl eliminar servicio hellonode $ kubectl eliminar
implementación hellonode $ minikube stop
861
Machine Translated by Google
Machine Translated by Google
Índice
( (paréntesis izquierdo), 78 interfaces de red, 360–361 usando,
< (menor que), 78 ' (comilla 81–83 archivo de alias, 181
grave), 80 ? (signo de amanda, 566
interrogación), 99 & (caracter
de ampersand), 78 ; (punto y Amazon EC2, imágenes en la nube, 744–
coma), 78 ) (paréntesis derecho), 746 carácter comercial (&), 78 anaconda,
78 | (carácter de tubería), 78–79 ; instalación de Linux, 205
(punto y coma), 79 { } (llaves), 101 Instalador de Anaconda, 17
~ (tilde) en comandos, 97 # servidor FTP anónimo, 456
indicador de shell, 63 $ indicador Ansible, 749
de shell, 63 > (mayor que), 78 comandos adhoc, 760–762
efectos de escritorio 3D, AIGLX, aplicaciones, implementación, 749
54–57 contenedores, 749–750 requisitos
previos de implementación, 754
Claves SSH, 754–755
sistemas host, configuración, 749
un
infraestructura, 749 autenticación de
camino absoluto, 96 instalación, 757 inventarios, 756–757
Directorios de ACL (Listas de creación de playbook, 757–758
control de acceso), 267 ejecución de playbook, 758–760
habilitación, 265–266 inventarios, 751–752 operadores,
directorio de eliminación restringida, 268–269 749–750 playbooks, 749
establecer directorio GID, 267–268 comando importaciones, 753 incluye, 753
setfacl, 262–264 configuración, 262–264 módulos, 752–753 juegos, 752 roles,
predeterminado, 264–265 753 tareas, 752
AD (Active Directory), 712
comandos adhoc, Ansible, 760–762
comandos administrativos directorio /bin,
179 /sbin, 178 directorio /usr/bin, 179 /
usr/sbin, 179 privilegios administrativos,
168 utilidades administrativas, 4– 5 Ansible Tower, 762–763
software antivirus, 591
Servidor web Apache HTTPD, 427–428, 432–433 error
de acceso denegado, 452 configuración
AIGLX (GLX indirecto acelerado), 54–57 predeterminada de archivos de configuración, 438–
AlcatelLucent, 9 440 directivas, 435–436, 435–438 paquete
comando de alias, 81–83 httpd, 428–431 error de índice no encontrado,
alias, 71 finalización, 75 452 instalación, 431
creación, 81–83
863
Machine Translated by Google
Índice
Servidor web Apache HTTPD (continuación) propiedad
del archivo de seguridad, 433 permisos de
B
comandos en segundo plano, 79
archivo, 433 cortafuegos, 433–434
procesos en segundo plano, 137–140 acento
grave ('), 80 secuencia de comandos de
SELinux y, 434–435 copia de seguridad, 162 utilidades de copia
de seguridad, 566 imagen base, 696 imagen
SSL/TLS y, 443–445 solicitud
de contenedor, 694 bash shell, 61, 148
de firma de certificado, 448–449 certificados
archivos de configuración, 84 comando
autofirmados, 447–448
de corte, 159 grep, 159 solicitud, caracteres,
Configuración de SSL, 445–447
86 comando sed, 160 manipulación de
Generación de claves SSL, 447–448
texto, 159–161 comando tr, 160
resolución de errores de configuración, 449–
451 errores, acceso, 451–452 contenido variables, sin tipo, 152–153 archivo
publicado por usuarios, 442–443 hosts bashrc, 181
virtuales, 440–442 applets, GNOME, 51
firewalls de capa de aplicación, 674 aplicaciones
Ansible, 749–750 Laboratorios Bell, 7–8
implementación como contenedores, 765–783 Modelo de seguridad BellLaPadula Acceso Obligatorio, 639
comando aptitude, 226 argumentos, comandos, 67–
68 expresiones aritméticas, expansión, 80 aritmética Distribución Berkeley, 9–10 proceso
de enteros, 152–153 scripts de shell, 152–153 bigcommand, 141 directorio /bin, 94
BIOS (Sistema básico de entrada y salida), 526–528 interfaz
bond0, 362 interfaces de red enlazadas, 362
ASF (Apache Software Foundation), 428 caparazón de
cenizas, 61 Booleanos, SELinux, 653–654 directorio /
AT&T, 8 boot, 94 cargadores de arranque
auditorías, 595–596
servicios de red, 663–665 utilidad GRUB (GRand Unifi ed Bootloader), 528–530
nmap, 665–672 puertos, 666 instalación, 217–218 resolución
autenticación, 4 nube, 712 de problemas, 528–530
herramientas basadas en claves, Secure GRUB 2, 530–531
Shell, 324–326 solución de problemas, 530–531
opciones de inicio deshabilitar función, 210
PAM kickstarts, 211–212 comprobación de
contextos, 619–620 medios, 212 modo de rescate, 212
indicadores de control, 620– instalación especial, 210–211 problemas
621 módulos, 621–622 clave de video, 210 orden de inicio, solución
pública, 313 derechos de autor, GPL de problemas, 527–528 inicio, 523–524
y, 12 del firmware, 526–528
autofs
montaje automático del directorio de inicio, 518–
520 directorio /net, 517–518 automatización, Ansible
Tower y, 762–763 Cargador de arranque GRUB 2, 530–531
AWS (servicios web de Amazon), 694 Cargador de arranque GRUB, 528–530
864
Machine Translated by Google
Índice
inicio del kernel, 532–541 con guración, 715–718
métodos de inicio, 524 instalación configuración, 714 imágenes
init, 524–525 instalación
systemd, 525 Amazon EC2, 744–746
desde unidad USB, 791–792 OpenStack y, 739–744 instancias,
recompensas, software, 21 730 clonación, 734–738 investigación,
Bourne, Esteban, 61 años 733–734
Bourne shell, 61
metacaracteres de expansión de llave, 101 redes, configuración, 714
herramientas de administración basadas en navegador, 173 plataformas, 712 privado, 730
BSD (distribución de software de Berkeley), 10, 12–13 público, 730 almacenamiento,
FreeBSD, 13 711 configuración, 718–720
demonio de inicio, 371–377 configuración, 714 compartido,
NetBSD, 13 713 máquinas virtuales, 713
OpenBSD, 13 creación, 720–724
comandos integrados, 71 computación en la nube, 5
autenticación, 712 configuración,
712 controladores , 711
C implementación, 712 instalaciones
lenguaje de programación C, 9 basadas en la nube, 204–205
Cifrado César, comando cloudinit, 730 confi guración,
de caso 602, comando de cd 156– 731–733 informática empresarial,
157, 96–97 738 ejecución, 731–733
CD/DVD, grabación, 792–795 agrupación en clústeres, 5 cnegustestproject,
739
Certificación Ceph, 5, 21–22
RHCE (Ingeniero certificado de Red Hat), 21, 22 temas,
23–25
RHCSA (Sistema certificado de Red Hat)
administrador), 21, 22 temas,
22–23 cgroups, 143–144, 695 Cockpit, 168, 169–171, 249–252 reglas de
comando chage, 72 comando chkconfig, 385– cortafuegos, 677–678 gestión de
386 comando chkrootkit, 592 comando almacenamiento y, 301–303
chmod, 100, 106–108, 162 paquete chronyd, lenguajes de comando, shell y, 62 línea de
309 comandos
argumento, 148, 150–151
finalización, 75–76 edición, 73–
CIFS (Sistema común de archivos de Internet), 475–476 75 configuración de red, comando
CISA (Ciberseguridad y Seguridad de Infraestructura) nmtui, 354
Agencia), 596 NetworkManager TUI, conexión de edición, 354–355 recuperación, 76–
clases 78 comandos, 418 ' (comentario grave), 80 ~ (tilde), 97 adhoc
implícito, 404 (Ansible), 760–762 administrativo
clases de impresora, 404, 408
nivel de clasificación, 639
clonación, instancias de nube, 734–738 nube,
3–4 híbrida, 731 hipervisores, 710, 713
/sbin, 178 /usr/
sbin, 179
865
Machine Translated by Google
Índice
comandos (continuación) mv, 109–110
alias, 81–83 alias, 71 agradable, 142–
aptitude, 226 143 nmtui, 354
argumentos, 67–68 acciones de un solo comando,
fondo, 79 integrado, 156 opciones, 67–68 ruta, 70
71 case, 156–157 cd, canalización ( | )metacaracter,
96–97 chage, 72 78–79 podman, 694, 697 ps, 132–
chkconfig, 385–386 134 pwd, 67 renice , 142–143
chmod, 100, 106– palabras reservadas, 71 rm, 110
108, 162 finalización, rpm, 241–245 en ejecución, 66–72
75 conexión, 78–81 cp, sar, 332–333 secon, 648–649 sed,
110 cryptsetup, 612 corte, 159 160 secuencial, 79 setfacl, 262–
fecha, 66 df, 334 du, 334–335 264 sftp, 324 ssh, 316 su, 168,
expansión, 78, 80 exportfs, 175–176 sudo, 168 sintaxis, 67–70
507 archivos, 96–98 sistema systemctl, 381 telinit, 374 formato
de archivos, 71 buscar, 122– de texto, 79 top, 134–135 touch,
128, 335–336 firewallconfig, 98–99 tr, 160 type, 71 umount, 299
674–675 funciones, 71 gedit, useradd, 252–255 userdel, 258 –
113–114 grep, 128–129 259 modo de usuario, 257–258
groupadd, 260–261 ayuda, 88
texto aquí, 100 historial, 72–
78 historial, 72 –78 id, 69 info,
89 información sobre, 88–90
journalctl, 184 kill, 140 killall,
140, 141–142 lftp, 470–472
localizar, 72, 120–122 localizar,
70–72 lp, 419 lprm, 419 –420
lpstat, 419 ls, 67–68, 101–105
hombre, 89 mkfs, 300 montaje,
297–298
virsh, 711 virt
install, 720–721 virtmanager,
714 virtviewer, 714 quién
soy, 65 yum, 229–232, 233–
241 Compiz, 55 revisiones
de cumplimiento, 595–596
nodos de computación, 710.
Consulte también configuración
de hipervisores en la nube nube, 712 hipervisores,
715–718 almacenamiento, 718–720 archivos, 310
866
Machine Translated by Google
Índice
administrativo, 179–185 hashing, 600–601
archivos de texto sin formato, implementación de
179 seguridad, 314 servidores, directorios, 613–615
310–311 archivos de configuración, cifrado desde el escritorio, 617–618 cifrado
310 configuración de archivos, 616 integridad de archivos, 610–
predeterminada, 310–311 comandos 611 cifrado del sistema de archivos,
de conexión, 78–81 protocolos sin conexión, instalación, 611–613 herramientas, 616–617 generación
UDP, 666 registros de contenedores, 694, 695– de pares de claves, 605– 606 uso compartido de claves
696 imágenes empujando a, 705–706 etiquetado, públicas, 607 cifrados de flujo, 600 claves simétricas, 603–
705–706 contenedores, 693–694 604 archivos de archivo tar, 604 herramientas, 617
Ansible, 749–750 en
empresa, 706 comando cryptsetup, 612 csh (C
FTP, GitHub y, 703–705 shell), 61, 65 archivo csh.cshrc, 182
imágenes, 694 imagen base, CUPS (Sistema de impresión común
694, 696 edificio, 702–703 de UNIX), 403–404 configuración desde un navegador, 404
manual, 404, 417–418 controladores de impresora, 404
paquetes RPM y, 246 espacios impresoras , agregar automáticamente, 405–406
de nombres, 694, 695 extracción, imprimir desde Windows, 405 impresoras remotas,
697–698 servidores FTP en 413
ejecución, 699–701 shells en ejecución,
698–699 sidecar, 766 inicio/detención,
701–702 plano de control, 336 copia
de archivos, 110 copia interactiva, 324 servidor
comando scp, 321–324 configuración, 415–416
inicio, 417 impresoras
compartidas, 420–422
administración basada en web, 406
derechos de autor, GPL y, 12 detección automática, 407–408
cp comando, 110 cpio, 566 administración remota, 406–407 llaves (),
101 comando de corte, 159 cortar texto, 159
CPU (unidad de procesamiento de
computadora), 273 cracklib, 571 cron,
actualizaciones de software y, 545 archivo CVE (vulnerabilidades y exposiciones comunes), 580
crontab, 182 cifrados criptográficos, 602–603
criptografía, 599–600 claves asimétricas, 604–
605 cifrados de bloque, 600 claves de cifrado, D
603–608 cifrados, 600 descifrado, 600 DAC (control de acceso discrecional), 635–636 procesos
firmas digitales, 608–610 cifrado de daemon, 5, 179, 307. Ver también servicios
mensajes de correo electrónico, 607–608 apache, 185
cifrado/descifrado avahi, 185 bin,
185 chrony, 185
archivos de
configuración, 311 lp, 185
noticias, 186 permisos y, 311
claves de cifrado, 603–608 números de puerto, 311
cifrados, 602–603 firmas
digitales, 608–610
867
Machine Translated by Google
Índice
procesos daemon (continuación) /etc/systemd, 181 /etc/
postfix, 185 rpc, 186 servicios, X11, 183 /etc/xinetd.d,
369 dash shell, 61, 65 fuentes 181 particiones de disco
de datos, 738 comando de duro, 216 jerarquía, 94 /home,
fecha, 66 empaquetado DEB, 225 94 identificación, 104 /lib, 94
Centro de software de Ubuntu, 225 listado, 101–105 /media, 94 /
Debian, 19 depuración, scripts de misc , 94 /mnt, 94 número de
shell, 148 dependencias, 369 caracteres, 103 /opt, 94 rutas,
software dependiente , 224 70 ruta absoluta, 96 orden, 71 /
despliegue, automático, 336 escritorio. proc, 95 directorio de
Véase también GNOMO; GNOMO 2; eliminación restringida, 268–
GNOMO 3; Efectos 3D del sistema X 269 root, 93 /root, 95 /sbin, 95 /
Window, AIGLX, 54–57 GNOME, 29, sys, 95 columna de fecha y
30 GNOME 3, 31 KDE (K Desktop hora, 103 /tmp, 95 /usr, 95 /
Environment), 29 LXDE (Lightweight X11 Desktop var, 95 recuperación ante
Environment), desastres, seguridad, 566
imágenes de disco,
montaje en loopback, 298–299
espacio en disco, 197 almacenamiento en
disco, 273
29
gestor de ventanas, 29
Xfce, 29
redes de escritorio
configuración, NetworkManager, 340–342
NetworkManager, 340–342 directorio /dev, 94
comando df, 334 DHCP, 340–341 firmas digitales,
608–610 directorios /bin, 94 /boot, 94 /dev, 94
cifrado, 613–615 /etc, 94, 180 /etc/cron, 180 /etc/
cups, 180, 405 /etc/default, 180 /etc/exports, 504,
505 /etc/httpd, 181 /etc/mail, 181 /etc/postfix , 181 / distribuciones
etc/ppp, 181 /etc/rc?.d, 181 /etc/security, 181 / componentes, 16
etc/skel, 181 /etc/sysconfig, 181 embalaje DEB, 225
Débian, 19
Fedora, 1819
GPL y, 12
sombrero rojo
Instalador de anaconda,
17 administración gráfica, 17
Gestión de paquetes RPM, 16–17
Red Hat OpenShift, 18
Plataforma OpenStack de Red Hat, 18
RHEL (Red Hat Enterprise Linux), 17–18
Embalaje RPM, 225
Ubuntu, 19
DNF (Dandifi ed YUM), 229
ventana acoplable,
697 comando de ventana acoplable, 694, 697
868
Machine Translated by Google
Índice
demonio acoplable, 694 archivo de alias, 181
Docker Escritorio, 768 archivo bashrc, 181
Centro acoplable, 696 archivo crontab, 182
Proyecto Docker, 694 archivo csh.cshrc, 182
controladores, controladores de archivo de exportaciones,
impresora, 404 comando du, 334–335 182 archivo fstab, 182
arranque dual, 208–209 terminales archivo de grupo, 182 archivo
tontas, 137 volcado/restauración, 566 gshadow, 182 archivo
host.conf, 182 archivo de
DVD, instalación de Linux, 196 nombre de host, 182 archivo
unidad de DVD, 197 de hosts, 182 archivo inittab ,
182 archivo mtab, 182
archivo mtools.conf, 182
Y archivo named.conf, 182 archivo
declaración de eco, 148 nsswitch.conf, 182 archivo
ecryptfs, 613–615 editor de ntp.conf, 182 archivo passwd, 182
emacs, 114 correo electrónico, archivo printcap, 183 archivo de
mensajes de cifrado, 607–608 claves de cifrado de perfil, 183 archivo de protocolos,
cifrado/descifrado claves asimétricas, 604–605 183 archivo rpc, 183 archivo
cifrado de mensajes de correo electrónico, 607– rsyslog.conf, 183 archivo de
608 generación de pares de claves, 605– servicios, 183 archivo shadow, 183
606 uso compartido de claves públicas, 607 archivo shells, 183 archivo sudoers,
claves simétricas, 603–604 archivos tar, 604 183 archivo xinetd .conf, 183
cifrados, 602–603 firmas digitales, 608–610 directorio /etc/cron, 180 directorio /
Enterprise Cloudinit, 738 contenedores y 706 etc/cups, 180, 405 /etc/directorio
instalación de Linux, 196 configuración de red predeterminado, 180 Configuración
de archivo /etc/exports, 504 nombres
de host, 505–506 nfsnobody, 506
opciones, 506 usuario raíz, 506 opciones
de asignación de usuario, 506
Linux como servidor DHCP, 365
Linux como servidor DNS, 365–366
Linux como servidor proxy, 366
Linux como enrutador, 364
Samba y, 497 gestión
de servidores, 336 gestión de Archivo /etc/fstab, sistemas de archivos montables, 295–297 Archivo /
software, 245–246 gestión de usuarios, 261 etc/hostname, 358 Archivo /etc/hosts, 358 Directorio /etc/httpd, 181
Directorio /etc/mail, 181 /etc/nsswitch. archivo conf, 359–360 directorio /
ACL (listas de control de acceso), 262–269 etc/postfix, 181 directorio /etc/ppp, 181 directorio /etc/rc?.d, 181
configuración de permisos, 262–269 redes directorio /etc/rc.d/init.d, 375–376 /etc/resolv archivo .conf, 359
empresariales, 340 variables de entorno, 81, 82–83
RUTA, 70
shell, adición, 87
caracteres de escape de shell, 149
directorio /etc, 94
869
Machine Translated by Google
Índice
archivo /etc/samba/smb.conf [global], administración de cuentas de usuario, 815–819
486–487 [casas], 486, 487–489 configuración del servidor web, 831–835 salida
[impresoras], 486, 489–493 de shell, 83–84 comandos de expansión, 78, 80
directorio /etc/security, 181 archivo / parámetros de expansión, 151–152 variables de
etc/services, 663– 664 Directorio /etc/skel, expansión, 80–81 comando exportfs, 507 exportación
181 Directorio /etc/sysconfig, 181 Archivo / de sistemas de archivos compartidos, 507
etc/sysconfig/network, 358 Directorio /etc/ exportaciones archivo, 182 página del manual de
systemd, 181 Directorio /etc/X11, 183 exportaciones, 504 expresiones aritméticas,
Directorio /etc/xinetd.d, 181 Interfaz eth0 , 362 expansión, 80 expresiones de prueba, 154
Ethernet, 339 vinculación de canales, 361–362
operadores, 155–156
memoria extendida, 4
Ejecutar permisos, 106 ejercicio
respuestas
Ansible, 858–860 F
automatización de aplicaciones, 858–860 FCoE (Canal de fibra sobre dispositivos Ethernet), 213
computación en la nube, 855–856 Fedora, 18–19, 27
implementación en la nube, 857 cambio descarga, 788–789 instalación
a, 853–854 creación de escritorio, 797– desde Live media bare metal
800 administración de discos, 819–821 system, 198 arranque múltiple,
administración de archivos, 819–821 sistema 198 arranque único, 198
de archivos, 802–803 sistema virtual, 198
Configuración del servidor FTP, Ventana de terminales, 64
835–838 automatización Fibre Channel, 5
de la infraestructura, 858–860 metacaracteres de coincidencia de archivos, 98–
Kubernetes, 860–861 99 nombres de archivo, scripts de shell, 148
Instalación de Linux, 812–813 metacaracteres de redirección de archivos, 99–100
administración de red, 825–827 comandos de archivos, 96–98 copia, 110 comando
Configuración del servidor de archivos NFS, 841– scp, 321–324 cifrado, 616 listado, 101–105 en
843 Configuración del servidor de impresión, 829– movimiento, 109–110
831 Procesos, en ejecución, 805–807
Configuración del servidor Samba, 838–841
seguridad avanzada, 847–849 básica, 845–847
seguridad de red, 851–853
Nautilus, 42, 43
organización del sistema de archivos, 42–
SELinux y, 849–851 43 propiedad
administración de servidores, 822–825 servidor web Apache, 433
servicios, inicio/parada, 827–829 shell, 800–802 cambio, 109 archivos de
escritura de scripts de shell, 807–810 adquisición contraseña, 574–576 permisos,
de software, 814–815 administración de software, 105–106
814–815 administración de sistemas, 810–812 Servidor web Apache, 433
archivos de texto, 804 –805 solución de cambio, chmod, 106–108
problemas, 843–845 predeterminado, 108–109 errores,
452
Ejecutar, 106
870
Machine Translated by Google
Índice
Leer, 106 Servidor web Apache, 433–434
vsftpd, 465 firewalls de capa de aplicación, 674
Escribir, implementación, 674–688 iptables,
106 eliminar, 673 iptables, 313 firewalls de capa
110 buscar por de red, 674 reglas, Cockpit y, 677–
fecha y hora, 125–126 comando 678
de búsqueda, 122–128
comando grep, 128–129 Samba, 482–483
comando de localización, 120 solución de problemas y, 552–553
por nombre, 123–124 no, 126– fi rmware
127 o, 126–127 por permiso, Dispositivos RAID,
125 por tamaño, 124 por 213 a partir de, 526–528
usuario, 124 sistemas de carpetas, Nautilus, 42, 43
archivos, 4, 93, 273, 275, 500 creación, 43 Carpeta
comandos, 71, 96–98 creación, de inicio, 42 for...do
300 directorios, 94 cifrado en la loop, 157–158 procesos en
instalación, 611–613 primer plano, 137–138 comandos,
139–140 FOSS (software libre
y de código abierto), 12, 666 distribución gratuita, GPL
y 12 software libre, 12 Free Software Directory, 12
Linux en comparación con Windows, FreeBSD, 13 FSF (Free Software Foundation), 11 fstab
95 file, 182 FTP (File Transfer Protocol), 455–456 conexión
montaje, 291–293 activa, 456 clientes, 469–473 command clientes
autofs, on demand, 517–520 orientados, 456 contenedores, GitHub y, 703–705
definición de sistemas montables, 295–297 conexión pasiva, 456 servidor, 309 acceso, 470–472
archivo /etc/fstab, 295–297 comando de anónimo, 456 cortafuegos, 461–463 cliente gFTP, 472–
montaje, 297–298 473 herramientas gráficas, 456 SELinux,
NFS, 512–520 configuración, 463– 465 cargar, permitir, 467–468
opciones, 515–517 acceso de usuario, configuración, 465–466 vsftpd,
desactivación 457–461 servidores, ejecutar desde contenedor,
de áreas de intercambio, 699–701 funciones, 71 finalización, 75
294–295 habilitación, 293–294
organización Nautilus, 42–43
noauto, 514–515 particiones, 273
directorio raíz, 93 permisos
peligrosos de seguridad, 576–577
bloqueo, 578–579 asegurar
archivos, 577–578
compartido, exportando,
507 administrador del sistema y,
168 tabla de filtros, 678 comando de
búsqueda, 122–128, 335–336
Firefox, acceso FTP, 470
paquete firefox, 227
GRAMO
Ventana de configuración del cortafuegos, 509, 674–
675 comando firewallconfig, 674–675 servicio gconfeditor, 173
cortafuegos, 674–675, 675–677 cortafuegos, 313, comando gedit, 113–114
672–674 impresión de expresión regular general. Ver comando grep
871
Machine Translated by Google
Índice
Gentoo, 16, 207 redes, 39 búsquedas,
cliente gFTP, 472–473 37 configuración, 38–
Corporación de Investigación Gibson, 596 39 extensiones de
GitHub, contenedores FTP, 703–705 shell, 39–40 sonido, 39 detener,
GlusterFS, 5 46
GNOMO, 30–31
GNOMO 2 ventana de configuración del sistema,
Preferencia de apariencias, 49 38 alternar, 32 barra superior, 36
Compiz, 46
Paneles GNOME, 47 Tweak Tool, 40–41 vistas,
Metaciudad, 46, 48–49 36 menú de ventana, 35
Nautilus, 46 ventanas activas, 37
paneles, 50 minimizadas, 33 abriendo,
agregar, 52 32
applets, 51
lanzador de aplicaciones, 52–53
Menú de aplicaciones, 51 Vista de Windows, 36
cajones, 53 mover elementos, espacios de trabajo, múltiples, 34–35
50 propiedades, 54 cambiar el Terminal GNOME, 64
tamaño de elementos, 51 gnomedisks, 173 gnome
utils, 173
menú Sistema, 51 GNU (GNU no es UNIX), 11–12
Lista de ventanas, 51 Licencia BSD (Berkeley Software Distribution), 15
preferencias, 47 LGPL (Licencia Pública General Menor), 15
GNOME 3, 31 licencia MIT, 15
aplicaciones, 41 Licencia de Mozilla, 15–16
adicionales, 34 Página del Proyecto GNU, 11
lanzamiento, 37–38 GPL (licencia pública GNU), 12
apertura, 32 herramientas gráficas, 172 ventanas
Vista de aplicaciones, 37 gráficas, 168 gráficos, Red Hat, 17
Bluetooth, 39 mayor que (>), 78 comando grep, 128–
arranque, 31 129, 159 cuentas de grupo, 259–261
comandos, lanzamiento, 37–38 guión, archivo de grupo, 182 comando groupadd ,
36 dispositivos, 39 teclado, tecla de 260–261 grupos, 249
Windows, 36
Archivos
Nautilus, 42–43 GRUB (GRand Unifi ed Bootloader), 217–218, 528–530
carpetas, 42, 43 solución de problemas, 528–530
FTP con inicio de sesión, 43 Cargador de arranque GRUB 2, 530–
FTP público, 43 531 solución de problemas, 530–
contenido remoto, 43 531 archivo gshadow, 182
Caja de ritmos, 45–46 GUID (Globally Unique Identifi er), tablas de partición, 276
Seguro (HTTPS), 43 GUI (interfaces gráficas de usuario), 61
software, 43–45
SSH y, 43
WebDav (HTTP), 43
H
Compartir Windows, 43 disco duro, asignación de
teclado de navegación, 36–38 particiones a directorio, 216 tipos de
ratón, 32–35 sistemas de archivos, 214
Particiones Linux, 215
872
Machine Translated by Google
Índice
Particiones LVM, 215 nube
varios sistemas operativos, 214 discos de Amazon EC2, 744–746
varias particiones, 281–285 tablas de OpenStack y, 739–744 para
particiones, 275–276 particiones RAID, 215 nubes, 731–733 registros de
discos de una sola partición, 277–281 contenedores y, 705–706 máquinas
particiones de intercambio, 215 particiones virtuales, 721 clases implícitas, 404
de visualización, 276–277 hardware, 4
comprobaciones, 187–189 kernel y, 186– Infi niband, 5
193 módulos, cargables, 191–193 extraíbles, comando de información,
189–191 requisitos, 196–197 contraseñas 89 información sobre comandos, 88–90 init,
cifradas, 574–576 encabezados, 369, 370–371, 371–377, 524–525
encabezados de paquetes, 673 comando niveles de ejecución,
de ayuda, 88 aquí texto, 100 jerarquía de 373–374 systemd, 370–371
directorios, 94 comando de historial, 72–78 SysVinit, 370
directorio /home, 94 sistemas host, genérico, solución de problemas,
336 archivo host.conf, 182 nombre de host 533 archivo inittab, 182
redirección de entrada/salida, 8
instalación
Servidor web Apache HTTPD, 431
funciones de opciones de arranque
desactivadas, 210 kickstarts, 211–
212 mediacheck, 212 modo de
rescate, 212 instalación especial,
210–211 problemas de video, 210
finalización, 75 /etc/ arranque dual desfragmentación, 209
exports, 505 archivo de disco duro, agregar, 208
nombre de host, 182 hosts
individuo, 505
red IP, 505 Cambiar el tamaño de la partición de Windows, 208
Dominio TCP/IP, 505 GRUB (GRand Unifi ed Bootloader), 217–218
archivo de host, 182 demonio Servidor NFS,
httpd, 442–443 paquete httpd, utilidad 502 nmap, 665–666
310 nube híbrida, 731 hipervisor, Samba, 476–478
709, 713 configuración, 715–718 desde cero, 207
servidores, 308–310
software, 221–222
DNS, configuración, almacenamiento, especializado, 213
718 /etc/hosts, edición, 718 servidor de instalación, 206
Linux, instalación, 716–717 instalación de instalaciones
denominación, 717 servicios, 717– basadas en la nube de Linux, 204–205 desde
718 configuración, 714 DVD, 196
Red Hat Enterprise, 201–204
en empresa, 196, 205–207
I GRUB (GRand Unifi ed Bootloader), 217–218 discos
duros, partición, 214–217 de Live media, 195
comando id, 69 IDS
(Sistema de detección de intrusos), 592–595 Instalación de Fedora, 198–201
declaraciones if...then, 153–154 imágenes, 694 edificio, desde cero, 207 virtualización y, 209
702–703 aritmética de enteros, 152–153
873
Machine Translated by Google
Índice
copia interactiva, 324 interfaces, historial de comandos, 77–78
4 intérprete, shell script, 148 edición de línea de comandos, 74
archivos kickstart, 206 opciones de
IP (Protocolo de Internet), 341 alias arranque y, 211–212
de direcciones, configuración, instalación linux, 205
350–351 configuración manual, Paquetes RPM y, 246 comando
349–350 rutas, configuración, 351– killall, 141–142 procesos de eliminación
352 fuente, bloqueo, 684–685 comando kill, 140 comando killall, 140,
141–142
Enmascaramiento de IP, 673
IPC (comunicaciones entre procesos), 695 KNOPPIX, 16
IPP (Protocolo de impresión de Internet), 404 ksh (cáscara Korn), 61, 65
cortafuegos de iptables, 313 utilidad de iptables, Kubernetes, 5, 765–766
673, 674, 680 cadenas, 679 confi guración, acceso, 769–771
guardado, 687–688 aplicaciones, 767–768
clústeres, 766 motores de
DROP, 683 contenedores, 767 contenedores
tabla de filtros, 678 tabla y 694
mangle, 678 tabla nat, Docker Desktop, 768
678 opciones, 683 interfaces, 768
políticas, modificación, Minikube y, 766, 768 inicio, 770–
680–683 bloqueo de puertos, 685–687 771 nodos nodo maestro,
bloqueo de protocolos, 685–687 tabla 766–767 nodo trabajador, 766,
sin formato, 678 reglas, modificación, 767
680–683 tabla de seguridad , 678
bloqueo de direcciones IP de origen, OpenShift y, 782–783 pods, 766
684–685 iSCSI, 5, 213 servicios, 766 contenedores
sidecar, 766 almacenamiento,
766 tutoriales, 768
Imágenes ISO, 787
j Tutorial de conceptos básicos de Kubernetes, 769–770, 771–
772 implementación de aplicaciones, 772–773 exposición
Java, JBoss, 18
de aplicaciones, 776–777 escalado hacia abajo, 781–
JBoss, 18
782 escalado hacia arriba, 779–780 balanceador
comando journalctl, 184 de carga, 780–781 información de pod, 773–776
servicios
k
KaliLinux, 595
KDE (Entorno de escritorio K), 29
eliminación, 778–779
Kerberos, 309, 712
etiquetado, 777–778
kernel, 13, 16 hardware
KVM (máquina virtual basada en kernel), 5, 209, 710, 713
y, 186–193 búfer de anillo, 532
inicio, 532–541 inicio, 532–541
L
Pila LAMP (Linux, servidor web Apache, base de datos MySQL, lenguaje
Kernighan, Brian, de secuencias de comandos web PHP), 3 portátiles, red, 340
autenticación basada en 9 claves, herramientas Secure Shell, 324–326
pulsaciones de teclas LDAP (Protocolo ligero de acceso a directorios), 270, 309
874
Machine Translated by Google
Índice
impresoras LDP/LPR, 413 METRO
paréntesis izquierdo ( ( ), 78
direcciones MAC, 341
menos que (<), 78 comando lftp,
servidor de correo, 309
470–472 directorio /lib, 94
man command, 89 man
Libvirt Service Daemon, 713 libvirtd pages, 502 exportaciones,
service, 713, 715–718 paquete libvirt 504 secciones, 89
daemonconfignetwork,
717 mandrágora, 16
linux Mandriva, 16
arranque desde unidad USB, 791–792 en tabla mangle, 678
comparación con otros sistemas operativos, 6 encabezados de paquetes mangling,
funciones, 4–5 historial, 3 673 nodos maestros, 336
MBR (registro de arranque maestro), 275
Laboratorios Bell, 7–8 MCS (Seguridad multicategoría), 638 /directorio
BSD, 12–13 de medios, 94 comprobación de medios, 212
UNIX comercial, 9–11 memoria, 4
GNU, 11–12
OSI, 14–16 Condición OOM, 556
UNIX, 7–8 cachés de página, 558
kernel, 13 procesos, eliminación, 558
Minix, 7 resolución de problemas, 553–
como sistema operativo similar a UNIX de 559 metacaracteres, 78 expansión de
código abierto, 14 Linux Foundation, 14 llaves, 101 coincidencia de
particiones de Linux, 215 listado de directorios, archivos, 98–99 redirección de
101–105 archivos, 101–105 Live media, archivos, 99–100
instalación de Linux desde, 195 Fedora, metadatos, 730
198–201 comando de localización , 72, Microsoft Active Directory. Consulte migración de AD (Active Directory),
120–122 servicio logwatch, 331–332 bucle invertido, máquinas virtuales, 725–727 Minikube, 766, 768
montaje de imagen de disco, 298–299 bucles
para...hacer, 157–158 hasta...hacer, 158–159 comenzando, 770–771
mientras...hacer, 158–159 lp comando, 419 Minix, 7
comando lprm, 419–420 comando lpstat, 419 comando directorio /misc, 94
ls, 67–68, 101–105 LUKS (configuración de clave comando mkfs, 300
unificada de Linux), 612 LVM (administrador de MLS (seguridad multinivel), directorio 638–639 /
volumen lógico), 273, 274, mnt, 94 módulos
cargado, listado, 191–192
cargando, 192 eliminando, 192–
193 monitoreando servidores
Cockpit, 314
crackers, 315
538 configuración de registro, 314
particiones, 215, 285 actualizaciones de software, 315
creación de volúmenes lógicos, 289–290 informes de actividad del sistema, 314
visualización, 286–288 crecimiento de comando de montaje, 297–298
volumen, 290–291 volúmenes físicos, 273 montaje, 274 imágenes de disco,
en loopback, 298–299 sistemas de archivos,
LXDE (Entorno de escritorio ligero X11), 29 291–293
875
Machine Translated by Google
Índice
montaje (continuación) NetBEUI, 475
definición de sistemas montables, 295–297 NetBSD, 13
archivo /etc/fstab, 295–297 comando de montaje, tablas de netfilter/iptables, 678–679 políticas, 679–
297–298 opciones, 515–517 áreas de intercambio, 680 reglas, 679–680 objetivos, 679–680 puente
293–295 desmontaje de NFS, 520–521 de red, máquinas virtuales, 721 tarjetas de red,
197 alias de interfaces de red, 360–361
vinculado, 362
NFS
autofs, montaje bajo demanda, 517–520 en el
momento del arranque, 513–517 manualmente, 512–
513 comando de desmontaje, 299
Cabina y, 343–345 línea
seguridad de nivel de montaje, de comandos y, 345–349
499 archivos en movimiento, configuración
109–110 sistemas de archivos Alias de dirección IP, 350–351
MSDOS, 95 servidor MTA (agente de transporte Configuración manual de dirección IP, 349–
de correo), 309 archivo mtab, 182 archivo 350 configuración de ruta, 351–352 nombres
mtools.conf, 182 Multics, 8 dispositivos multirruta, de dominio, 349 nombres de host, 349
213 multitarea, 167 funciones multiusuario, 167
comando mv, 109–110 NetworkManager y, 342–343 información
de enrutamiento, 347–348 solución de
problemas y, 547–548 visualización,
desde la línea de comandos, 345–347
Network Mapper, 665
servicios de red, auditoría, 663–665 utilidad
norte
nmap, 665–672 red en la nube,
archivo named.conf, 182 configuración, 714 línea de comando de
espacios de nombres, contenedores, 694, configuración, 353–364 empresa, 364–
695 editor nano, 114 tabla nat, 678 archivos 366 archivos, 355–360 rutas personalizadas,
Nautilus, 42, 43 organización del sistema 363–364 escritorio , 340–353 empresa,
de archivos, 42–43 carpetas, 42, 43 340
creación, 43 carpeta de inicio, 42 FTP
con inicio de sesión, 43 FTP público,
43 contenido remoto, 43 Rhythmbox, 45–46
Seguro (HTTPS), 43 software
Vinculación de canales Ethernet, 361–362
nombres de host, solución de problemas y, 549–550
computadora portátil, 340 conexiones físicas, solución
de problemas y, 548 conexiones proxy, configuración, 352–
353
rutas
personalizado, 363–
instalación, 43–45 364 solución de problemas y, 548–549
gestión, 43–45 servidores, 340 solución de problemas de
SSH y, 43 conexiones entrantes, 550–553 conexiones
WebDav (HTTP), 43 salientes, 547–550 cortafuegos de capa
Compartir Windows, 43 de red, 674
NCSA (Centro Nacional de Supercomputación)
Aplicaciones), 428 Administrador de red, 340
876
Machine Translated by Google
Índice
DHCP
O
respuesta del servidor, 340
OEM (fabricación de equipos originales), 10 acciones de un
solicitud de servicio, 340
solo comando, 156
servidor de nombres de dominio, 341
Condición OOM, 556 de
puerta de enlace, predeterminado, 341
dirección IP, 341 código abierto, plataformas de almacenamiento
cefalograma, 5
tiempo de concesión,
GlusterFS, 5
341 configuración local,
Laboratorios de desarrollo de código abierto, 14
342 interfaces de red, activación, 340 configuración
software de código abierto, 12
de red, 350 máscara de subred, 341
OpenBSD, 13
Abrir PGP, 616
NetworkManager TUI, conexión, edición, 354–355
Turno abierto, 173
Kubernetes y, 782–783
servidor NFS (Network File System), 309, 499 sistemas de
paquete openssh, 316 paquete
archivos, uso compartido, 503–507 instalación, 502
opensshclients, 316 paquete opensshserver,
montaje de autofs, montaje bajo demanda, 517–520 en el
316–318
momento del arranque, 513–517 cliente, 500 manualmente,
OpenStack, 5
512–513 seguridad, 508 exposición de la estructura del
sistema de archivos, 508 cortafuegos, 508–510 usuarios imágenes en la nube, 739–744
root, 508 claves de acceso remoto, 741–742
Acceso a máquina virtual a través de ssh, 743–744
Lanzamiento de máquina virtual, 742–743
operadores
Ansible, 749–750
expresiones, expresiones de prueba, 155–156 directorio /
opt, 94 opciones, comandos, 67–68
Configuración de SELinux, 511–512
Envolturas TCP, 510–511
OSI (Iniciativa de código abierto), 14–16
comunicaciones sin cifrar, 508 mapeo de usuarios,
OSs (sistemas operativos), Linux y, 6 oVirt project, 5
508
propiedad de archivos, 109
recursos compartidos,
visualización, 512 desmontaje,
520–521 servicio de servidor nfs, inicio, 502–503 paquete
nfsutils, 502 comando agradable, 142–143 NIS (servicio de
PAG
información de red), 270 grupos, 506 instalación de la
utilidad nmap, 665–666 escaneos de puertos, 666 estados colecciones de paquetes, 308
de puerto, 667 inicio de servicio nmbd, 480–481 paquetes
detención, 481–482 comando nmtui, 354 sistema de archivos nfsutils, 502 abresh, 316
noauto, 514–515 Nokia, 9 archivo nsswitch.conf, 182 abreshclientes, 316
archivo ntp.conf, paquete 182 ntpd , 309 abreshservidor, 316
servidores
servidor de directorio, 309
servidor DNS, 309
servidor FTP, 309
servidor de correo, 309
Servidor de protocolo de tiempo de red, 309
servidor de archivos NFS,
309 servidor de impresión,
309 servicio rsyslog, 308–309
877
Machine Translated by Google
Índice
paquetes (continuación) creación de volúmenes, 289–290
servidor SQL, 309 visualización, 286–288 crecimiento
servidor de registro del sistema, 308–309 del volumen, 290–291 discos de
servidor web, 309 varias particiones, 281–285 tablas de
servidor de archivos de Windows, particiones, 275–276 discos de una sola
309 fi ltros de paquetes, 674 encabezados partición, 277–281 visualización, 276–277
de paquetes, manipulación, 673 paquetes, archivo passwd, 182 contraseñas , 312–313
bloquear/permitir, 673 cambiar, 571–572 hacer cumplir las mejores
PAM (Módulo de autenticación conectable), 312 administración prácticas, 572–574 archivos, 574–576 hashes,
de archivos de configuración de aplicaciones, 622–623 574–576
ejecución de contraseñas, 628–632 sudo y, 632–
633 archivos de configuración de eventos del
sistema,
PAM, 628–632
623–626 autenticación de clave pública, 313
restricciones de tiempo, 626–627 selección, 570–571 configuración, 571–
proceso de autenticación, 619 572 ruta, 70 absoluta, 96 orden, 71
contextos, 619–620 banderas de
control, 620–621 módulos, 621–
622 recursos, 633
Variable de entorno PATH, 70, 88
Instalación PAM, 312 PE (extensión física), 286 pruebas
paneles (GNOME), 50 de penetración, 595 permisos,
agregados, 52 105–106 cambio, chmod, 106–108
subprogramas, 51 demonios y, 311 valor predeterminado,
iniciador de aplicaciones, 52–53 umask, 108–109 errores, 452
Menú de aplicaciones, 51
cajones, 53 mover elementos,
50 propiedades, 54 cambiar el Ejecutar, 106
tamaño de elementos, 51 Leer, 106
Escritura, 106
menú Sistema, 51 servicios persistentes, habilitación, 391–394
Lista de ventanas, seguridad física, 565–566
51 parámetros, expansión de PID (ID de proceso), 131, 370
shell script, 151–152 caracteres de canalización ( | ), 78
lecturas, 151 tablas de archivos de texto sin formato, 179
partición, GUID, 276 sistemas de libros de jugadas (Ansible), 749
archivos de partición, 273 discos creación, 757–758
duros importaciones, 753 incluye,
753 módulos, 752–753
asignación a directorio, 216 tipos de reproducciones, 752 roles,
sistemas de archivos, 214 753 en ejecución, 758–760
Particiones Linux, 215 tareas, 752 comando podman,
Particiones LVM, 215 694, 697 números de puerto,
múltiples sistemas operativos, 214 procesos daemon, 311
Particiones RAID, 215 portabilidad, 8–9 puertos, 666
particiones swap, 215
hipervisores y, 717
LVM (Administrador de volumen lógico), 285
878
Machine Translated by Google
Índice
auditoría, 666 procesos daemon, 5, 179 primer
bloqueo, 685–687 plano, 137–138
escaneos comandos, 139–140
Conexión TCP, 666 comando killall, 141–142 asesinato,
UDP, 666 135, 558 comando kill, 140 comando
estados, 667 killall, 140 limitación, 143–144
parámetros posicionales, 150–151 listado comando ps, 132–134
POSIX (interfaz de sistema operativo portátil), 10 PostgreSQL,
309 servidor de impresión, 309 configuración de impresora
CUPS compartida, 420–422 impresora Samba compartida,
422–424 Ventana de configuración de impresión, 403 Monitor del sistema, 136–137
adición de impresoras locales, 409–411 edición, 411– comando superior, 134–135
412 impresoras CUPS remotas, 413 impresoras LDP/ ( | )tubería, 133 prioridades, 142–
LPR remotas, 413 impresoras remotas, configuración, 412– 143 renicing, 135
413 impresoras UNIX remotas, 413 impresora Windows
(SMB), 414–415 archivo printcap, 183 exploración RSS (tamaño de conjunto residente), 133
de impresora, 404 impresora clases, 404 impresoras, VSZ (tamaño de conjunto virtual),
agregando automáticamente, 405–406 imprimiendo. 133 procesadores, 196 oportunidades
Véase también CUPS (Sistema de impresión común de profesionales, 19–21 archivo de perfil, 183
UNIX) cancelación de trabajos, 408 comandos, 418 lp, programación, utilidades, 5 indicaciones,
419 lprm, 419–420 lpstat, 419 controladores, 404 configuración, 85–87 protocolos, bloqueo,
directorio /etc/cups, 405 IPP (Protocolo de impresión de 685–687 archivo de protocolos, 183
Internet), 404 lista de trabajos de impresión, 407 mover servidores proxy, confi configuración de
trabajos, 408 clases de impresoras, 408 comandos de conexiones, 352–353 comando ps, 132–
impresión UNIX, 404 ver impresoras, 408 nube privada, 730 134 nube pública, 730 autenticación de clave pública, 313
criptografía de clave privada, 603 directorio /proc, 95 procesos, extracción de contenedores, 697–698 comando pwd, 67
4, 131–132
servidor PXE, 206
Paquetes RPM y, 246
q
QEMU, 713
proceso qemu, 713
signo de interrogación (?),
99 Qwest, 9
R
Particiones RAID, 215
RAM (memoria de acceso aleatorio), 197, 273–274
antecedentes, 137–138 resolución de problemas y, 554–555 tabla sin
comandos, 139–140 formato, 678
bigcommand, 141 cgroups, RBAC (control de acceso basado en roles), 635
143–144 cambio, 134–135 TE (aplicación de tipo) y, 637–638 rc.sysinit,
resolución de problemas, 533–534
879
Machine Translated by Google
Índice
Permisos de lectura, 106 archivo de interfaz de ruta, 363 archivo
computación en tiempo real, 5 rpc, 183 servicio rpcbind, 503 instalación
instalador de Red Hat de paquetes de comandos rpm, 241–
Anaconda, 17 administración 242 eliminación de paquetes, 241–242
gráfica, 17 administración de paquetes consulta de información, 242–244
RPM, 16–17 descarga de Red Hat Enterprise,
789–790 instalación, desde DVD, 201–204 Red
Hat OpenShift, 18 Red Hat OpenStack Gestión de paquetes RPM, 16–17
Platform, 18 Red Hat Virtualization, 5 acceso RPM (RPM Package Manager) empaquetado, 225, 226–228 imágenes de
remoto, 307. Véase también herramientas Secure contenedor, 246 dependencias, 228 instalación, 228 archivos kickstart,
Shell, copia interactiva, 324 hardware extraíble, 246 ubicación, 228 orígenes, 227–228
189–191 ventana de medios extraíbles, 189–190
comando renice, 142–143 repositorios, software, 223 modo de
rescate, 212 solución de problemas en, 559–561 palabras
reservadas, 71 REST API, Ansible Tower y 763 directorio de
eliminación restringida, 268–269 revisiones Arranque PXE,
246 servidor satélite, 246
Paseo espacial, 246
verificación de paquetes, 244–245
YUM y, 229–232
repositorios de software de terceros, 233 transición
a DNF, 229 comando yum, 233–241 RSS (tamaño
de conjunto residente), 133 comando rsync, 322–
323, 566 servicio rsyslog, 308, 326–331 archivo rsyslog.conf,
cumplimiento, 595–596 183, 327–329 Daemon rsyslogd, 326–327 Instalación rsyslogd
seguridad, 596 y, 184–185 niveles de ejecución, 369, 373–374 predeterminado,
RHCE (Ingeniero certificado de Red Hat), 21, 22 servicios 369 configuración, 394–395 solución de problemas, 534–538
de red, 24–25 configuración y administración del
sistema, 24 temas, 23–25
RHCSA (Administrador de sistemas certificado por Red Hat), 21, 22 temas,
22–23
RHEL (Red Hat Enterprise Linux), 17–18
Ventana de terminales, 64
RHELOSP (Red Hat Enterprise Linux OpenStack
Plataforma), 173
S
RHEV (virtualización de Red Hat), 173 Samba, 475–476
Rhythmbox (Nautilus), 45–46 paréntesis empresa, 497
derecho ( ) ), 78 archivo /etc/samba/smb.conf [global],
Ritchie, Dennis, 8, 9 rlogin, 486–487 [hogares], 486, 487–489
316 comando rm, 110 [impresoras], 486, 489–493
directorio raíz, 93 directorio / cortafuegos, configuración, 482 –483
root, 95 usuario raíz, 174 carpetas
instalación sudo, 176–178
vía GUI, 176 vía shell, 175– comprobación de recursos
176 rootkits, 590–595 compartidos, 490–493 compartidos,
489–490 permisos de host/usuario,
486 instalación, 476–478 configuración
de impresora, 422–424
880
Machine Translated by Google
Índice
SELinux, configuración, acceso compartido nivel de montaje, 499
484–486 servicios de red, auditoría, 663–665, 665–672
Administrador de archivos Linux, 493– PAM (Módulos de autenticación conectables), 618 administración,
495 montaje desde la línea de comandos, 495–496 622–633 proceso de autenticación, 619–622 recursos, 633
Windows, 496–497 inicio, contraseñas, 570–576 servidores físicos, 565–566, 312–
478–480 parada, 481–482 314 configuración de archivos de configuración, 314
paquete samba, 309, 476–478 cortafuegos, 313 contraseñas, 312–313
paquete sambaclient, 476 paquetes
sambacommon, 476 paquete samba
winbind, 476
dispositivos SAN, 213
instituto SANS, 596 SELinux, 313
comando sar, 332–333 servidor TCP Wrappers, 313
satelital, paquetes RPM y, 246 directorio /sbin, 95 servicios, 579–580 software,
579–580 administración de
SCO (Operación Santa Cruz), 10 comando sistemas y, 169 supervisión de sistemas,
scp, copia de archivo y, 321–324 scripts, script de 580–581 sistema de archivos, 587–595
respaldo, 162 comando secon, 648–649 criptografía archivos de registro, 581–584 cuentas
de clave secreta, 603 de usuario, 584–587
Herramientas Secure Shell, 316 cuentas de usuario, 566–569
herramientas de cliente, 318– autorización de seguridad, 639
324 autenticación basada en claves, 324–326 revisiones de seguridad, 596
seguridad, 307 tabla de seguridad, 678 comando
Propiedad de archivos del sed, 160
servidor web Apache, 433 SELinux (Security Enhanced Linux), 313 benefi cios de,
permisos de archivos, 433 635–636
cortafuegos, 433–434 Booleanos y, 653–654
SELinux y, 434–435 Booleanos para Samba, 484–485
Modelo de acceso obligatorio de BellLaPadula, 639 configuración, servidor NFS, 511–512 errores,
criptografía, 599–600 cifrados de bloque, 600 cifrados, 600 452 contextos de archivos para Samba, 485–
descifrado, 600 cifrado/descifrado, 602–610 hash, 600– 486 acceso con privilegios mínimos, 636 modo,
601 implementación, 610–618 cifrados de flujo, 600 configuración, 645–647 monitoreo, 654–656
recuperación ante desastres, 566 sistema de archivos , modos operativos modo deshabilitado, 639–640
576–579 cortafuegos, 672–674 cortafuegos de capa de modo de aplicación, 640 modo permisivo, 640
aplicación, 674
reglas de políticas, 644–645
administración de paquetes, 651–653 tipos
de políticas, 643 mínimo, 644
Cockpit y, 677–678
implementación, 674–688 MLS (seguridad multinivel), 644 configuración,
iptables, 673 cortafuegos de 647–648 objetivo, 644 proceso de sandboxing,
capa de red, 674 636
MCS (Valor multicategoría), 638
MLS (seguridad multinivel), 638–639 RBAC, 636
881
Machine Translated by Google
Índice
paquetes (continuación) servidor web, 309
recursos, 659 contextos servidor de archivos de Windows, 309
de seguridad, 640–641 seguridad de PXE, 206
archivos, 650–651 archivos, 642 protección, 312–314
atributo de nivel, 641 procesos, configuración de archivos de configuración,
642–643 atributo de rol, 641 314 cortafuegos, 313 contraseñas, 312–
segundo comando, 648–649 313
atributo de tipo, 641 usuario, 649 SELinux, 313
–650 atributo de usuario, 641 TCP Wrappers, 313
usuarios, 641–642 modelos de configuración, 316 inicio, 311–
seguridad, implementación, 639–645 312 administración del
sistema y 169 servicios
firewalld, 674–675, 675–677 persistente,
TE (aplicación de tipos), 637–638 pruebas, habilitación, 391–394 recarga, 388
636 resolución de problemas seguridad, 579–580 inicio, 5 estado,
verificación, 384–387 systemd, nuevo, 399–
Valores booleanos configurados 401
incorrectamente, 658–659 etiquetas de
contexto, perdido, 658 registro, 656–657
directorio no estándar como servicio, SysVinit nuevo,
657 396–398 iniciar y
puerto no estándar como servicio, 658 detener, 387–391 archivo de servicios, 183
carácter de punto y coma (;), 78, 79 comandos establecer bit GID, 267–268 establecer bit UID, 268
secuenciales, 79 servidores, 307 comprobación, 316 comando setfacl, 262–264 comando sftp, 324 sh
configuración, 310–311 empresa y, 336 servidor de shell, 65 archivo shadow, 183 compartido sistemas
instalación, 206 instalación, 308–310 supervisión, de archivos, exportación, 507 shell, 4, 61 # indicador,
314–315 63 $ indicador, 63 acceso, 62–63 ash, 61 bash shell,
61 archivos de configuración, 84
Cockpit, 314
crackers, 315
configuración de registro, 314
actualizaciones de software, 315
informes de actividad del sistema, 314
red, 340 servidor de directorio de paquetes,
309 Bourne shell, 61
lenguajes de comando y, 62
servidor DNS, 309 configuración, 84–85 csh (C shell), 61,
servidor FTP, 309 65 guión, 65 guión shell, 61 entorno,
servidor de correo, 309 84–87 variables de entorno, 87 salida,
Servidor de protocolo de tiempo de red, 309 83–84 ksh, 65 metacaracteres
servidor de archivos NFS,
309 servidor de impresión,
309 servicio rsyslog, 308–309
Servidor SQL, 309
servidor de registro del sistema, 308–309
882
Machine Translated by Google
Índice
expansión de llaves, 101 archivo smb.conf, 422–423
coincidencia de archivos, recompensas de software, 21
98–99 redirección de software dependiente,
archivos, 99–100 indicador, 63 224 software gratuito, 12
configuración, 85–87 razones instalación, 221–222
para aprender, 62 usuario root, administrador del sistema y,
175–176 ejecución desde 168 Nautilus, 43–45 software de
contenedor, 698–699 selección, 65– 66 código abierto, 12 repositorios, 223
sh, 65 tcsh, 61, 65 variables, 81 historial seguridad, 579–580 avisos , 580
de shell, 72–73 entrada aritmética del actualizaciones de paquetes, 579–580
script de shell, 152–153 script de copia suscripciones, 20–21 proveedores de
de seguridad, 162 comando case, 156– software ascendente, 228 Ventana de
157 comando chmod, 162 argumento de línea software, 222–223 código fuente,
de comando, 148, 150–151 comando cut, 159 UNIX y, 10 Spacewalk, paquetes RPM y,
bucle for...do, 157–158 grep, 159 246 caracteres especiales, escape, 149
declaraciones if...then, 153–154 intérprete, almacenamiento especializado, 5 Squid Proxy
148 expansión de parámetros, 151–152 Servidor, 366 SSH (Secure Shell), 307 comando
lectura, 151 parámetros posicionales, ssh, 316
150–151 construcciones de programación, 153
–159 comando sed, 160 caracteres especiales,
escape, 149 ejemplo de lista de teléfonos, 161–
162
ejecución remota, 320–321 inicio
de sesión remoto, 318–320
servicio sshd, 718
inicial, 317–318 en el
arranque, 318
estado, 317
Stallman, Richard M., 11
métodos de inicio instalación
init, 524–525 instalación
texto systemd, 525
cortar, 159–160 declaraciones, eco, 148
eliminar, 160 traducir, sticky bits, 103, 268–269 nube
160 manipular texto, de almacenamiento, 711, 713
159–161 comando tr, 160 configuración, 718–720
hasta...hacer bucle, 158–159 instalación, 714
variables, 149 while...do bucle,
158–159 scripts de shell, 147–148 Cabina, 301–303
archivo shells, 183 contenedores especializados, 5, 213
sidecar, 766 señales, 141 discos de grupos de volumen, 274
partición única, 277–281 Slackware, editor de flujo (sed), 160
16 SLES (SUSE Linux Enterprise comando su, 168, 175–176
Server), 730 SMB (Server Message suscripciones, 20–21 comando
Block), 475 sudo, 168, 632–633 instalación sudo,
176–178 sudoers fi le, 177, 183
superusuario, 167
883
Machine Translated by Google
Índice
SVID (Definición de interfaz System V), 10 particiones de finalización, 136
intercambio, 215 espacio de intercambio, 4, 274 resolución eliminación, 136
de problemas y 554–555 listado, 136–137
prioridades, 137
SYN (paquete de sincronización), 666 detención, 136 espacio
sintaxis, comandos, 67–68 directorio /sys, del sistema consumo de
95 paquete sysstat, comando sar, 332–333 disco, 335–336 verificación de uso del
System Activity Reporter, 332–333. Véase también comando disco, 334–335 visualización, 334
sar
System V, instalación de inicio, 524–525
administración del sistema, 167 resolución de problemas, 533 herramientas
herramientas basadas en navegador, 173 de configuración del sistema*, 171 autenticación
Cockpit, 168, 169–171 de configuración del sistema, 172 vinculación de configuración
comandos, 178–179 archivos del sistema, 172 fecha de configuración del sistema, 172
de configuración, 179–185 procesos cortafuegos de configuración del sistema, 172 configuración
daemon apache, 185 avahi, 185 bin, del sistema httpd, 172 systemconfigkickstart, 173 system
185 chrony, 185 lp, 185 noticias, configlanguage, 172 systemconfignfs, 172 systemconfig
186 postfix, 185 rpc, 186 sistemas printer, 172 systemconfigrootpassword, 172 systemconfig
de archivos y, 168 herramientas samba, 172 systemconfig selinux, 172 systemconfig
gráficas, 172 hardware services, 172 systemconfigusers, 172 comando systemctl,
381 systemd, 370–371, 525
comprobación, 187–189
módulos cargables, 191–193 inicialización, 377–384 diario,
extraíbles, 189–191 archivos de 183–184 unidades de servicio,
registro, 183–184 instalación rsyslogd y, 378–380 servicios
184–185 interfaces de red, 169 usuario raíz,
174 vía shell, 175–176 seguridad, 169 servidores, nuevo, 399–401
169 instalación de software y, 168 herramientas de recarga, 390–391 reinicio,
configuración del sistema*, 171–173 systemd 389–390 arranque, 389
journal, 183–184 cuentas de usuario y, 168 parada, 389
administrador del sistema, 167 activación del
registro del sistema, 326–331 loghost, 330–331 SysVinit, compatibilidad con versiones anteriores,
logwatch, 331–332 archivo de registro de mensajes , 382–384 unidades de destino, 377, 378,
329 demonio rsyslogd, 326–327 381–382, 395 solución de problemas, 538–541
unidades, 377
monitoreo de sistemas, 580–581 sistema
de archivos, 587 rootkits, 590–595
escaneo, 589–590 verificación
de paquetes de software, 588
detección de virus, 590–595 archivos de registro,
581
Monitor de sistema, procesos
884
Machine Translated by Google
Índice
comandos especiales, 582–583 editores de texto
directorio /var/log, 581–582 cuentas de emacs, 114 jed,
usuario, 584 malas contraseñas, 586–587 114 joe, 114
cuentas falsificadas y privilegios, 584–586 kate, 114 kedit,
114 mcedit, 114
SysVinit, 370, 372 nano, 114 nedit,
compatibilidad con versiones anteriores, 382– 114 vi, 113–119
384 niveles de ejecución, predeterminado, teclas de flecha,
394–395 comprobación de servicios, 385–387 116–117 modo de
nuevo, 396–398 persistente, 391–394 comando, 115
iniciar/detener, 387–391 repetición de comando, 118
cursor, 115 modo ex, 120
salir, 118–119 modo de
entrada, 115 moverse por el
archivo, 119 texto, 115–120
T vim, 113–114
tomando, 566
cifrado/descifrado, 604 tarballs, 16, 224–
225 unidades objetivo, 377, 395 política
dirigida, 638–639 objetivos, 369
Thompson, Ken, 8 tilde
(~), 97 directorio /tmp,
Exploración de puertos de conexión TCP, 666, 668 95 comando superior, 134–
Envolturas TCP, 313 135
Acceso NFS, 510 Torvalds, Linus, 7, 13–14 comando
tcsh shell, 61, 65 táctil, 98–99 comando tr, 160
TE (aplicación de tipo), 637–638 comando capacitación, 21 traducción de
telinit, 374 telnet, 316 texto, 160 solución de problemas
Emulador de terminal, 63–64
ventana terminal, 63 BIOS (Sistema básico de entrada y salida),
Terminal GNOME, 64 526–527
lanzamiento, 64 ventanas orden de arranque, 527–
de terminal, 62–63 expresiones de 528 arranque y, 523–524
prueba, 154–156 desde fi rmware, 526–528
texto arranque del kernel, 532–541
agregar, editor vi, 115–116 cambiar, métodos de arranque, 524–525
editor vi, 117 comandos, 79 copiar, cargador de arranque GRUB 2, 530–531
editor vi, 117 cortar, 159 eliminar, 160 cargador de arranque GRUB, 528–530
editor vi, 117 grep, 159 texto aquí, sistema de inicio, 533 memoria, 553–554
100 moverse dentro, editor vi, 116– detección de problemas, 554–559
117 pegar , vi editor, 118 buscando, conexiones de red entrantes, 550–553
vi editor, 119–120 traduciendo, conexiones salientes, 547–550 RAM y, 554–
160 555 rc.sysinit, 533–534 en modo de rescate,
559–561 niveles de ejecución, 534–538
885
Machine Translated by Google
Índice
solución de problemas (continuación) interfaces de usuario, 4
paquetes de software, 542–545 comandos useradd
Bases de datos y cachés de RPM, 545–546 agregar usuarios, 252–255
inicialización de systemd, 538–541 tipo de valores predeterminados,
comando, 71 configuración, 255–257 comando
userdel, 258–259 comando usermod,
EN 257–258 nombre de usuario, finalización, 75
USL (UNIX System Laboratories), 10 directorios /
Ubuntu, 19
usr, 95 utilidades
descargas, 790–791
Centro de Software Libre, 225
administrativo, 4–5 copia
Escaneo de puertos UDP, 666
de seguridad, 566 cracklib,
UEFI (interfaz de firmware extensible unificada), 526–528 valor umask, 108– 571 iptables, 673–674,
109 comando umount, 299 unidades, systemd, 377
678–688 nmap, 665–672 programación, 5
UNIX, 7–8
Espacio de nombres UTS, 695
ensamblador, 9
comercial, distribución Berkeley, 9–10 sistema de
archivos, 8 redirección de entrada/salida, 8 laboratorio,
10–11 portabilidad, 8–9 comandos de impresión, 404 directorio V /var, 95 salida
impresoras, remotas, 413 interfaces publicadas, 10 de comando de variables,
fuente código, 10 149 finalización, 75 variables
de entorno, 81, 82–83 agregar
a shell, 87
RUTA, 70
USL (laboratorios de sistemas UNIX), 10 expansión, 80–81 shell,
desmontar sistemas de archivos, 520–521 81 scripts de shell, 149
variables sin tipo, 152–153 actualizaciones, sin tipo, 152–153
Gentoo, 207 actualizaciones desde cero, 207
proveedores de software upstream, 228 verizon, 9
Demonio FTP muy seguro, 309
Unidad USB, 197 VFAT, 275
arranque de Linux desde, 791–792 nosotros, editor, 85, 113–114
cuentas de usuario teclas de flecha, 116–117
centralizando, 269–270 modo de comando, 115
Cabina, 249–252 comandos, repetir, 118 cursor, 115
creación, 249–250 modo ex, 120 salir, 118–119 modo
valores predeterminados, de entrada, 115 moverse en un
255–257 eliminación, archivo, 119
258–259 modificación, 257–
258 seguridad, 566 número
de usuarios, 567 raíz, texto
acceso, 567 caducidad agregar, 115–116
temporal de la cuenta, 567–568 sin usar, 568–569 cambiar, 117 copiar,
administrador del sistema y, 168 comando useradd, 117 eliminar, 117
252–255 mover, 116–117
886
Machine Translated by Google
Índice
pegar, 118
EN
buscar, 119–120 video,
servidor web, 309
opciones de arranque, 210 vim editor,
113–114 Apache HTTPD, 427–428
vimtutor, 177 comando instalación, 431 a quién
mando yo, 65 comodines, 505
virsh, 711 comando virtinstall,
720–721 virtmanager, 711, 717, 720–724,
Winbind,
722 administrador de 270
ventanas, 29 ventanas
comando virtmanager, 714 consolas
gráfico, 168
virtuales, 65
ventanas de terminal, 62–63
Administrador de máquinas virtuales, 711,
714 Impresora Windows (SMB), 414–415
Sistemas de archivos basados en Windows,
inicio, 722
95 redes cableadas, 339 redes inalámbricas,
memoria virtual, 556
339 nodos trabajadores, 710
VirtualBox, 209 virtualización,
5, 709 instalación de Linux,
permisos de escritura, 106
209 visor, 714 comando virt
viewer, 714 detección de virus,
590 detección de intrusiones, 592–595 X
monitoreo de rootkits, 591–592 monitoreo
Sistema X Window, 28 fondo,
de virus, 591 firma de virus, 591
28 clientes, 28
máquinas virtuales (máquinas virtuales), 693–
694, 709, 713. Consulte también conexiones servidores, 28
de hipervisor, 722 creación, 720–724 imágenes,
administrador de ventanas,
721 instalación, 724 administración, 724–725 migración, 725–727 puente 29 Xen, 5, 209, 710 Xfce, 29
de red y, sistema 721, visualización, 724–725 archivo xinetd.conf, 183
Y–Z
YUM (actualización modificada de YellowDog)
DNF (Dandifi ed YUM), 229 grupos
de paquetes, actualización, 239–
240 instalación, 236–237
Vmware, 209 mantenimiento, 240 eliminación, 236–
Instalaciones de VNC, opciones de arranque, 237 búsqueda, 234–235 actualización,
212 238
grupos de volumen, 274
VPN (red privada virtual), 339 vsftpd, 309, 458–
461 permisos de archivo, 465 instalación, 457– Descarga RPM, 241
458 configuración, 468–469 repositorios de software de terceros, 233 comando
yum, sintaxis, 229–232 caché yum, 546 comando
yum, 229–241
VSZ (tamaño de plató virtual), 133
887
Machine Translated by Google