Está en la página 1de 928

Machine Translated by Google

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:  978­1­119­57888­8
ISBN:  978­1­119­57891­8  (ebk)
ISBN:  978­1­119­57889­5  (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)  750­8400,  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)  748­6011,  fax  (201)  748­6008,  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)  762­2974,  fuera  de  los  Estados  Unidos  al  (317)  572­3993  o  al  fax  (317)  572­4002.

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  best­sellers  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  I:  Primeros  pasos. . . . . . . . .  1  Capítulo   . . . 1. . . . . . . . . . .


:  Comenzando   con  . . . . . . . . . . . . . . . . .
Linux................................................ ............................................  3  Capítulo  2:  Creación  de  la  Perfect  
Linux  Desktop  x  Desktop.................................................... ...................27

Parte  II:  Cómo  convertirse  en  un  usuario  avanzado  . . . . . . . . de  Linux. . .  5. . . . . . . . . . . . . .


9  Capítulo   3:  Uso  del   . . .
Shell.................................................. ....................................................  61  Capítulo  4:  Moverse  por  el  
sistema  de  archivos ....................................... ..........................  93  Capítulo  5:  Trabajar  con  archivos  
de  texto .................. .................................................... ............  113  Capítulo  6:  Gestión  de  procesos  
en  ejecución ........................... ..................................  131  Capítulo  7:  Escritura  de  scripts  de  Shell  
simple .. .................................................... .....................  147

Parte  III:  Convertirse  en  un  administrador  del  sistema  Linux. . . . . . . . . . . . . . . . . . .  165


Capítulo  8:  Administración  del  sistema  de  aprendizaje ........................................ .....................  167  
Capítulo  9:  Instalación  de  Linux ....................... .................................................... ..........  195  Capítulo  
10:  Obtener  y  administrar  software ........................... ..........................................221  Capítulo  11:  
Administración  de  cuentas  de  usuario .... .................................................... ......................  249  Capítulo  
12:  Administración  de  discos  y  sistemas  de  archivos .................. .............................................273

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

Parte  V:  Aprendizaje  de  las  técnicas  de  seguridad  de  Linux. . . . . . . . . . . . . . . . . . . . . . .  563


Capítulo  22:  Comprender  la  seguridad  básica  de  Linux.................................... ..........565  Capítulo  23:  
Comprensión  de  la  seguridad  avanzada  de  Linux .................. ..........................599  Capítulo  24:  Mejora  
de  la  seguridad  de  Linux  con  SELinux .................. ...................................  635  Capítulo  25:  Protección  
de  Linux  en  una  red ... .................................................... ................663

XIII
Machine Translated by Google

Contenido  de  un  vistazo

Parte  VI:  Compromiso  con  la  computación  en  la  nube. . . . . . . . . . . . . . . . . . . . . . . . .  691


Capítulo  26:  Cambio  a  nubes  y  contenedores ........................................... ..................  693  Capítulo  27:  Uso  de  
Linux  para  computación  en  la  nube .................. ..........................................709  Capítulo  28:  Implementación  de  
Linux  en  el  Nube ................................................. ....729  Capítulo  29:  Automatización  de  aplicaciones  e  
infraestructura  con  Ansible .................. ..........  749  Capítulo  30:  Implementación  de  aplicaciones  como  
contenedores  con  Kubernetes ....................... .........  765

Parte  VII:  Apéndices . . . . . .  785   . . . . . . . . . . . . . .


Apéndice   A:   . . . . . . . . . . . . . . . . . . . .
Medios ............................................. .................................................... ......  787  Apéndice  B:  
Respuestas  a  los  ejercicios .................................. ...............................................  797

Índice .................................................. .................................................... .....................863

xiv
Machine Translated by Google

Expresiones  de  gratitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  xi

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  xxxv

Parte  I:  Primeros  pasos 1

Capítulo  1:  Comenzando  con  Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  3


Comprender  qué  es  Linux .................................................. ..................................  4  Comprensión  de  las  
diferencias  entre  Linux  y  otros  sistemas  operativos ....... .......................  6  Explorando  la  historia  de  
Linux ....................... .................................................... ...............  7
7
.................................................... .........
Cultura  UNIX  de  flujo  libre  en  Bell  Labs  
Commercial  UNIX ....................................... ....................................................  9  
Llega  Berkeley  Software  Distribution ............................................... .....  
UNIX  Laboratorio  y   9  
comercialización......................................... .......10  GNU  hace  la  transición  
de  UNIX  a  la  libertad .................................. ............................11  BSD  pierde  algo  
de  fuerza .................. .................................................... ...............12  Linus  construye  
la  pieza  que  falta ............................... ..........................................13  Definición  de  
fuente  abierta  OSI .... .................................................... .....................14  Comprender  
cómo  surgieron  las  distribuciones  de  Linux .................. ............................16  Elección  de  
una  distribución  de  Red  Hat .................. ....................................................  .16  Uso  
de  Red  Hat  Enterprise  Linux ........................... ..........................17  Uso  de  
Fedora .............. .................................................... ......................18  Elección  
de  Ubuntu  u  otra  distribución  Debian .................. ......................19  Encontrar  
oportunidades  profesionales  con  Linux  hoy .................. ..........................19  Comprender  
cómo  las  empresas  ganan  dinero  con  Linux .................. ...............20  Obtención  de  
la  certificación  Red  Hat ............................... .............................................21  Temas  
de  la  RHCSA.. .................................................... ....................................22  
Temas  de  RHCE ............. .................................................... .........................23  
Resumen ....................... .................................................... ..........................25  Capítulo  
2:  Creación  del  escritorio  Linux  perfecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
Comprender  la  tecnología  de  escritorio  de  Linux ............................................. ...............28  Comenzando  
con  la  imagen  en  vivo  de  Fedora  GNOME  Desktop ........................... ....................30  Uso  del  escritorio  
GNOME  3 ........................... .................................................... ........31  Después  de  que  la  computadora  
arranque .................................. ....................................31  Navegación  con  el  
ratón ......... .................................................... .......32  Navegación  con  el  
teclado ...................................... ..........................36  Configuración  del  escritorio  GNOME  
3 .................. ...............................................38

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  4:  Moverse  por  el  sistema  de  archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  93


Uso  de  los  comandos  básicos  del  sistema  de  archivos .................................. ..........................96  
Uso  de  metacaracteres  y  operadores .................. .................................................... ..98  
Uso  de  metacaracteres  de  coincidencia  de  archivos ............................... .....................98  
Uso  de  metacaracteres  de  redirección  de  archivos .................. .....................................99  
Uso  de  caracteres  de  expansión  de  llaves ........ .................................................... .....  
101  Listado  de  archivos  y  directorios ........................................ .......................................  
101  Descripción  de  los  permisos  y  la  propiedad  de  los  
archivos ..... .............................................105  Cambio  de  permisos  con  chmod  
(números)..................................................  .106  Cambiar  permisos  con  chmod  
(letras) ........................................... ........  107  Configuración  del  permiso  de  archivo  
predeterminado  con  umask .................................. ..... ..........108  Cambiar  la  propiedad  
del  archivo ............................... .......................................109  Mover,  copiar  y  eliminar  
archivos . .................................................... ...............109  
Resumen .................................. .................................................... .......................  111  Ejercicios ......................... ............

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  6:  Gestión  de  procesos  en  ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  131


Comprensión  de  los  procesos .................................................. ..................................  131  
Procesos  de  listado ........... .................................................... ..................................132  
Listado  de  procesos  con  ps ........... .................................................... ..............132  
Listado  y  cambio  de  procesos  con  top ............................... ..........................134  
Listado  de  procesos  con  System  Monitor .................. ..........................................136  
Gestión  de  procesos  en  segundo  plano  y  en  primer  plano ........ ..........................................  
137  Inicio  de  procesos  en  segundo  plano.... .................................................... .............138  
Uso  de  comandos  de  primer  plano  y  de  fondo ............................... ...............139  
Procesos  de  Matanza  y  Renicing ............................... .............................................140  
Procesos  de  matanza  con  matar  y  matar  a  todos .................................. ........................140  
Uso  de  kill  para  señalizar  procesos  mediante  PID .................. ..........................140  
Uso  de  killall  para  señalar  procesos  por  su  nombre .......... ..................................  
141  Establecer  la  prioridad  del  procesador  con  nice  y  renice ........ ...................................142  
Limitación  de  procesos  con  cgroups .......... .................................................... .............  143  
Resumen ................................... .................................................... .....................144  
Ejercicios .......................... .................................................... .............................  145

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  8:  Administración  del  sistema  de  aprendizaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  167


Explicación  de  la  administración  del  sistema .............................................. ...........  167  Uso  
de  las  herramientas  de  administración  gráfica .................. ......................................  169  Uso  
de  la  administración  basada  en  navegador  de  Cockpit ..... ..........................................  
169  Uso  de  system­confi  g­*  herramientas ................................................. ......................  
171  Uso  de  otras  herramientas  de  administración  basadas  en  
navegador .................. ...................................  173  Uso  de  la  cuenta  de  usuario  
raíz ......... .................................................... ..................  174  Convertirse  en  root  
desde  el  shell  (comando  su) .................. ............................  175  Permitir  el  acceso  
administrativo  a  través  de  la  GUI .................. ..................................  176  Obtener  
acceso  administrativo  con  sudo .......... ..........................................  176  Exploración  de  
comandos  administrativos,  archivos  de  configuración  y  archivos  de  registro ..........  
178  Comandos  administrativos .................................................. .........................  178  
Archivos  de  configuración  administrativa .................. ..........................................  
179  Archivos  de  registro  administrativo  y  systemd  journal ..................................183  
Uso  de  journalctl  para  ver  el  diario  de  systemd... ..........................184  
Administrar  mensajes  de  registro  con  rsyslogd ......... ..........................................184  Uso  de  
otras  cuentas  administrativas ..... .................................................... ...........185  Comprobación  
y  con  guración  de  hardware ............................... ...................................186  
Comprobación  de  su  hardware ........... .................................................... ...............187  
Administrar  hardware  extraíble ............................... ..................................189  Trabajar  
con  módulos  cargables ......... .................................................... .......  191  
Listado  de  módulos  cargados  es .................................................. ....................  
191  Módulos  de  carga........................... .................................................... ..  192  
Extracción  de  módulos.................................................. ...............................  192  
Resumen .................. .................................................... .......................................  193  Ejercicios ......... .............................

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

Capítulo  10:  Obtención  y  administración  de  software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  221


Gestión  de  software  en  el  escritorio .............................................. ..........................221  Ir  más  
allá  de  la  ventana  del  software .................. ..........................................223  Comprensión  
Empaquetado  de  software  DEB  y  RPM  de  Linux ..........................................  224  Comprensión  
del  empaquetado  DEB .................................................... ...........225  Comprender  el  
empaquetado  de  RPM ........................... .......................................226  ¿Qué  hay  en  un  
RPM? .................................................... .......................226  ¿De  dónde  vienen  las  
RPM? .................................................... .............227  Instalación  de  
RPM .................................. .............................................228  Gestión  de  paquetes  
RPM  con  YUM................................................... ......................229  Transición  de  yum  a  
dnf ...................... .............................................229  Comprender  cómo  funciona  
yum .................................................... ..........229  Uso  de  YUM  con  repositorios  de  software  
de  terceros ......................... ..............233  Gestión  de  software  con  el  comando  
yum ............................... ...................233  Búsqueda  de  
paquetes........................... ..........................................234  Instalación  y  eliminación  
de  paquetes .. .................................................... ..236  Actualización  de  
paquetes........................................... ..............................238  Actualización  de  
grupos  de  paquetes .............. ...................... ..........................239  Mantenimiento  
de  la  base  de  datos  y  la  memoria  caché  del  paquete  RPM .................. ............240  
Descarga  de  RPM  desde  un  repositorio  de  YUM ............................... ...........  241  
Instalación,  consulta  y  verificación  de  software  con  el  comando  rpm ..................  241  Instalación  
y  eliminación  de  paquetes  con  rpm ..........................................  241  Consulta  información  
de  revoluciones ................................................. ..........................242  Verificación  de  
paquetes  RPM .................. .................................................... ......244  Gestión  de  software  
en  la  empresa ........................................... ............................  245  
Resumen .................... .................................................... ....................................246  
Ejercicios............ .................................................... .............................................  247

XX
Machine Translated by Google

Contenido

Capítulo  11:  Administración  de  cuentas  de  usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  249


Creación  de  cuentas  de  usuario .............................................. .......................................249  
Adición  de  usuarios  con  useradd...... .................................................... ...........252  
Configuración  de  los  valores  predeterminados  del  
usuario ............... .................................................... ..255  Modificando  usuarios  con  
usermod ........................................... ..........................257  Eliminación  de  usuarios  con  
userdel .................. ....................................................  .258  Comprender  las  cuentas  de  
grupo ............................................... .............................259  Uso  de  cuentas  de  
grupo .................. .................................................... ..............259  Crear  cuentas  de  
grupo .................................. ............................................260  Administración  de  usuarios  en  la  
empresa .................................................... ..........................  261  Configuración  de  
permisos  con  listas  de  control  de  acceso . ..........................................  262  
Configuración  de  ACL  con  setfacl . .................................................... ...............  
262  Configuración  de  ACL  predeterminadas .................. ..........................................264  
Habilitación  de  ACL ..... .................................................... ..........................265  
Adición  de  directorios  para  que  los  usuarios  colaboren .................. ..........................  
267  Creación  de  directorios  de  colaboración  grupal  (establecer  bit  
GID) .............. ............  267  Creación  de  directorios  de  eliminación  restringida  (sticky  
bit) ...............................  268  Centralización  de  cuentas  de  
usuario ............................................... ....................................269  Resumen ............. .................................................... .........

Capítulo  12:  Administración  de  discos  y  sistemas  de  archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  273


Información  sobre  el  almacenamiento  en  disco ............................................. ..........................273  
Particionamiento  de  discos   275  
duros ............... .................................................... .......................  
Explicación  de  las  tablas  de  
particiones ....................... ..........................................  
de  disco ... .................................................... ..........................  
275  Visualización  de  particiones  
276  Creación  de  un  disco  de  una  sola  partición .................. .............................................277  
Creación  de  un  disco  de  varias  particiones ............................................. ..........281  Uso  
de  particiones  del  Administrador  de  volúmenes  lógicos .................. ..........................285  
Comprobación  de  un  LVM  existente ............ .................................................... ............286  
Creación  de  volúmenes  lógicos  LVM .................................. ..................................289  
Volúmenes  lógicos  LVM  crecientes ......... .................. ..........................................290  
Montaje  de  sistemas  de  archivos .... .................................................... ..................................291  
Sistemas  de  archivos  compatibles ............ .................................................... ...........291  
Habilitación  de  áreas  de  intercambio .................. .................................................... ....293  
Deshabilitar  el  área  de  intercambio ....................................... .......................................294  
Uso  del  archivo  fstab  para  defi  nir  sistemas  de  archivos  montables ..........................295  
Uso  del  comando  mount  para  montar  sistemas  de  archivos . .......................................297  
Montaje  de  una  imagen  de  disco  en  loopback.... .................................................... .......298  
Uso  del  comando  umount ...................................... ..........................299  Uso  del  
comando  mkfs  para  crear  un  sistema  de  archivos ......... ..........................................300  
Gestión  del  almacenamiento  con  Cockpit .... .. .................................................... ...................301  
Resumen ............................. .................................................... ............................303  
Ejercicios ...................... .................................................... ....................................303

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  
openssh­server ....... .................................................... ...  
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  14:  Administración  de  redes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  339


Con  guración  de  redes  para  escritorios ............................................... .....................340  
Comprobación  de  sus  interfaces  de  red ........................... ......................................342  
Comprobación  de  su  red  desde  NetworkManager ...... ..........................342  
Comprobación  de  su  red  desde  Cockpit .............. ....................................343  
Comprobación  de  su  red  desde  la  línea  de  comandos ...... ............................345  
Configuración  de  interfaces  de  red .................. ..................................................349  
Configuración  manual  de  direcciones  IP ............................................. .............349  
Configuración  de  alias  de  direcciones  IP........................... ..................................350  
Configuración  d351   e  rutas ............... .................................................... ...................  
Con  guración  de  una  conexión  de  proxy  de  
red .................. .............................  352  Con  guración  de  redes  desde  la  línea  de  
comandos ..... .............................................  353  Configurar  la  red  con  
nmtui.................................................. ..............354  Edición  de  una  conexión  TUI  de  
NetworkManager.................................. ...........354  Comprensión  de  los  archivos  de  
configuración  de  redes .................. ......................  355  Archivos  de  interfaz  de  
red ....................... .............................................  356  Otras  redes  
archivos ................................................ ......................358  Configuración  de  
interfaces  de  red  de  alias .................. ..........................................360  Configuración  
de  enlaces  de  canales  Ethernet .. .................................................... .....  361  
Configuración  de  rutas  personalizadas ....................................... ......................................363  
Con  guración  de  redes  en  la  empresa ..... .................................................... .....364  Con  
gurar  Linux  como  enrutador ........................ .............................................364  
Configuración  de  Linux  como  Servidor  DHCP ................................................ ............365  
Con  guración  de  Linux  como  servidor  DNS ............................... ..........................365  
Con  guración  de  Linux  como  servidor  proxy .......... ....................................................  
366  Resumen .................................................. .................................................... ........366  
Ejercicios ................................................ .................................................... ...........367

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

Capítulo  16:  Configuración  de  un  servidor  de  impresión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  403


Sistema  de  impresión  UNIX  común.................................................... .............................403  
Configuración  de  impresoras .................. .................................................... .......................405  
Adición  automática  de  una  impresora ............... .............................................405  Uso  de  
la  web  Administración  basada  en  CUPS .............................................. ..........406  Permitir  
la  administración  de  impresión  remota ........................... .............406  Añadir  una  
impresora  no  detectada  automáticamente ............................... .............407  Uso  de  
la  ventana  Ajustes  de  impresión ............................... ..........................409  Con  guración  
de  impresoras  locales  con  la  ventana  Configuración  de  impresión ....... ............409  
Con  guración  de  impresoras  remotas .................................. .............................  412  
Adición  de  una  impresora  CUPS  remota ............... .............................................  
413  Adición  de  un  UNIX  remoto  (LDP/LPR)  pri  nter..................................................  
413  Adición  de  una  ventana  ( SMB)  impresora ............................................. ...........  
414  Trabajar  con  la  impresión  CUPS .................................. ..........................................  415  Con  
guración  del  servidor  CUPS  ( cupsd.conf) ............................................... .....  415  Inicio  del  
servidor  CUPS ........................................... ..................................  417  Con  guración  
manual  de  las  opciones  de  la  impresora  CUPS ........ .......................................  417  Uso  
de  los  comandos  de  impresión ..... .................................................... ............................  418  
Impresión  con  lp .................. .................................................... ...................  419  Listado  
de  estado  con  lpstat  ­t ........................ .............................................  419  Eliminación  de  
impresión  trabajos  con  lprm .................................................... ....................  419  Con  
guración  de  Impr  Servidores  t.................................................. ...................................420  Con  
guración  de  una  impresora  CUPS  compartida ........ .................................................... ....420  
Con  gurar  una  impresora  Samba  compartida ....................................... .....................422  
Comprensión  de  smb.conf  para  imprimir ...................... ..........................422  
Configuración  de  clientes  SMB .................. .................................................... ..423  
Resumen .............................................. .................................................... ..........424  
Ejercicios .......................................... .................................................... ...................424

XXIV
Machine Translated by Google

Contenido

Capítulo  17:  Configuración  de  un  servidor  web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  427

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  19:  Configuración  de  un  servidor  de  uso  compartido  de  archivos  de  Windows  (Samba). . . . . . . . . . . . . . . . . .  475


Comprensión  de  Samba .................................................. ........................................  475  
Instalación  de  Samba ....... .................................................... ......................................  476  Iniciar  
y  detener  Samba ....... .................................................... .....................  478  Inicio  del  servicio  
Samba  (smb) ........................... .......................................  
nombres  NetBIOS   478  Inicio  del  servidor  de  
(nmbd) ....................................................  .480  Detención  de  los  servicios  Samba  (smb)  
y  NetBIOS  (nmb) ..............................481  Protección  de  
Samba .................................................... ............................................482  Configuración  de  fi  
cortafuegos  para  Samba ............................................... ...................482  Con  guración  de  
SELinux  para  Samba ......................... .......................................484  Configuración  de  
valores  booleanos  de  SELinux  para  Samba ... .................. ..............................484  
Configuración  de  contextos  de  archivos  de  SELinux  para  
Samba ............ ..........................485  Con  guración  de  permisos  de  host/usuario  de  
Samba ......... ..........................................486  Con  guración  de  
Samba .... .................................................... ...................................486  Con  guración  de  
la  sección  [global] ... .................................................... ............486  Con  guración  de  la  
sección  [viviendas] ........................... ...................................487  Con  guración  de  la  
sección  [impresoras] ....... .................................................... .....489  Crear  una  
carpeta  compartida  de  Samba.................................... ...................489  Agregando  
la  carpeta  compartida  a  Samba ........................ ............................490  Comprobación  
del  recurso  compartido  de  Samba .................. .............................................490  Acceder  
Acciones  de  Samba ................................................ .............. .......................  
a  los  recursos  compartidos  de  Samba  e4n   93  Acceder  
Linux .................. ..........................................  493  Acceso  a  recursos  compartidos  
de  Samba  desde  un  Linux  administrador  de  archivos ...........  493  Montar  un  
recurso  compartido  de  Samba  desde  una  línea  de  comando  de  Linux ....... ...................  
495  Acceder  a  los  recursos  compartidos  de  Samba  en  Windows ......................... ..................................  
496  Uso  de  Samba  en  la  empresa ........... .................................................... ................  497  
Resumen ................................ .................................................... ........................  
497  
Ejercicios .......................... .................................................... .............................  
498

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

Capítulo  21:  Resolución  de  problemas  de  Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  523


Solución  de  problemas  de  arranque ............................................... ......................................523  
Comprensión  de  los  métodos  de  inicio ........ .................................................... .......  524  
Comenzando  con  scripts  de  inicio  de  System  V .................................. ................  
524  Comenzando  con  systemd .............................. ..........................................  
525  Inicio  desde  el  fi  rmware  (BIOS  o  UEFI ) ..................................................  526  
Solución  de  problemas  de  configuración  del  BIOS ............................... ..................  
526  Resolución  de  problemas  del  orden  de  arranque .................. ...................................  
527  Solución  de  problemas  del  cargador  de  arranque  
GRUB ......... .............................................528  El  GRUB  Cargador  de  arranque  
heredado ............................................. ..............528  Cargador  de  arranque  GRUB  
2 ............................... .................................................... ..530  Iniciando  el  ker  
nel .................................................. ..................................  532  Solución  de  
problemas  del  sistema  de  inicialización ........... .............................  533  Resolución  
de  problemas  de  inicialización  del  Sistema  V .................. .............................  533  
Solución  de  problemas  de  rc.sysinit ............... ....................................................  
533  Resolución  de  problemas  de  procesos  de  nivel  de  
ejecución ............................... .......534  Resolución  de  problemas  de  inicialización  de  
systemd ........................... .......538  Solución  de  problemas  de  paquetes  de  
software ........................... ..............................542  Corrección  de  bases  de  datos  RPM  y  
caché .............. ....................................................  .545  Solución  de  problemas  de  
red.................................................. ..........................547  Solución  de  problemas  
de  conexiones  salientes .................. ..........................................547  Ver  interfaces  
de  red... .................. ..........................................547  Comprobar  conexiones  
fisicas.................................................. ...............548  Consultar  
rutas ................................ .................................................... ..548  Comprobar  la  
resolución  del  nombre  de  host.................................. ....................549  Solución  de  
problemas  de  conexiones  entrantes .................. .............................550  Compruebe  
si  el  cliente  puede  llegar  a  su  sistema  en  absoluto .......... ........................  551  
Verificar  si  el  servicio  está  disponible  para  el  cliente................ ......................  551  
Compruebe  el  cortafuegos  en  el  servidor .................. .....................................  552  Comprobar  
el  servicio  en  el  servidor ...... ....................................................  553  Resolución  de  
problemas  de  la  memoria .................................. ......................................  553  
Descubrir  problemas  de  memoria ........ .................................................... ... ............554  Comprobación  de  probl

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

Capítulo  22:  Comprender  la  seguridad  básica  de  Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  565

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

Capítulo  23:  Comprender  la  seguridad  avanzada  de  Linux. . . . . . . . . . . . . . . . . . . . . . . . . . .  599

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

Capítulo  24:  Mejora  de  la  seguridad  de  Linux  con  SELinux. . . . . . . . . . . . . . . . . . . . . . . . . . . .  635


Comprender  los  beneficios  de  SELinux ............................................... ..........................  635  
Entender  cómo  funciona  SELinux .................. ....................................................  637  
Comprensión  de  la  aplicación  de  tipo ............................................... ..................  637  
Comprender  la  seguridad  multinivel ........................... ..................................638  
Implementación  de  modelos  de  seguridad  de  SELinux ........... ..........................................  
639  Comprensión  de  los  modos  operativos  de  SELinux . ..........................................  
639  Comprender  los  contextos  de  seguridad  de  
SELinux ..... ..........................................640  Comprensión  de  los  tipos  de  políticas  
de  SELinux ....... ..........................................643  Descripción  de  los  paquetes  de  
reglas  de  políticas  de  SELinux . .....................................644  Con  guración  de  
SELinux ......... .................................................... ..............................645  Configuración  
del  modo  SELinux ..... .................................................... ...................645  Configuración  
del  tipo  de  política  de  SELinux .................. ..........................................647  Administrar  
contextos  de  seguridad  de  SELinux ..... .................................................... ...648  
Administrar  el  contexto  de  seguridad  del  usuario......................................... ..........649  
Administrar  el  contexto  de  seguridad  de  archivos .................. ...........650  
Administrar  el  contexto  de  seguridad  del  proceso .................. .......................  651  
Administrar  paquetes  de  reglas  de  políticas  de  SELinux .................. ..........................  
651  Administrar  SELinux  a  través  de  booleanos ............ .................................................... ...  653  Supervisión  y  solución  de  p

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

Capítulo  25:  Protección  de  Linux  en  una  red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  663


Auditoría  de  servicios  de  red ............................................... ..................................663  
Evaluación  del  acceso  a  los  servicios  de  red  con  nmap ........ ..........................665  Uso  
de  nmap  para  auditar  sus  anuncios  de  servicios  de  red ......... ...........668  Trabajar  con  
cortafuegos.................................. .................................................... ........  672  Comprender  
los  cortafuegos....................................... .......................................673  Implementación  
de  cortafuegos ....... .................................................... .....................  674  Comenzando  
con  firewalld......................... .............................................  675  Cambiar  el  
cortafuegos  reglas  con  Cockpit ............................................................. ...677  
Comprensión  de  la  utilidad  iptables ........................................... ...........  678  Uso  
de  la  utilidad  iptables .................................. ..........................680  Suma  
ario .................................................. .................................................... .......688  
Ejercicios .............................................. .................................................... ................688

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

Capítulo  27:  Uso  de  Linux  para  computación  en  la  nube. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  709


Descripción  general  de  Linux  y  la  computación  en  la  nube ............................................... ...................  
710  Hipervisores  en  la  nube  (también  conocidos  como  nodos  de  
cómputo) .................. ..............................  710  Controladores  en  la  
nube ................ .................................................... .....................  711  Almacenamiento   la  
en  
nube .......................... .................................................... ..........  711  Autenticación  en  la  
nube ............................... ....................................................  712  Despliegue  y  
configuración  de  la  nube ............................................... .............  712  Plataformas  en  la  
nube ............................... .................................................... .....  712  Probar  la  tecnología  básica  
en  la  nube.................................... ....................................  713  Configuración  de  una  nube  
pequeña ........ .................................................... ..........................  714  Con  guración  de  
hipervisores ................ .................................................... ..........  715  Paso  1:  
Obtenga  el  software  de  Linux ........................... .............................  715  Paso  2:  
Verifique  sus  computadoras ............ ..........................................  715  Paso  3:  
Instalar  Linux  en  hipervisores ............................................... .......  716  Paso  4:  
Iniciar  servicios  en  los  hipervisores.................................... ..........  717  Paso  5:  
Edite /etc/hosts,  o  configure  DNS........................... .......................  718  Con  guración  de  
almacenamiento ....................... .................................................... ..........  718  Paso  
1:  Instalar  el  software  de  Linux ........................... ..........................  718  Paso  2:  
Con  gurar  el  recurso  compartido  NFS ............... ..........................................  719  
Paso  3:  Inicie  el  servicio  NFS ............................................. ..........  719  Paso  4:  
Montar  el  recurso  compartido  NFS  en  los  hipervisores .................. ..... ......720  Creación  
de  máquinas  virtuales ...................................... .............................720  Paso  1:  
Obtener  imágenes  para  hacer  máquinas  virtuales ...... ..........................  721  Paso  
2:  Comprobar  el  puente  de  red .......... .............................................  721  Paso  3:  
Iniciar  Administrador  de  máquinas  virtuales  (virt­manager)...........  722  Paso  4:  
Verifique  los  detalles  de  la  conexión ........... .............................................  722  
Paso  5:  Crear  una  nueva  máquina  virtual .............................................. ....  722  
Administrar  máquinas  virtuales ........................................... .............................  724  
Migración  de  máquinas  virtuales .................. .................................................... ......  
725  Paso  1:  Identifique  otros  hipervisores ...................................... ..........  726  
Paso  2:  Migrar  la  máquina  virtual  en  ejecución  a  otro  hipervisor .................. .........  726  
Resumen ....................................... ........... .................................................... ......  727  Ejercicios .......................................... ..

Capítulo  28:  Implementación  de  Linux  en  la  nube. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  729


Lograr  que  Linux  se  ejecute  en  una  nube ........................................... .............................729  
Creación  de  imágenes  de  Linux  para  nubes .................. .................................................... .........  
731  Con  guración  y  ejecución  de  una  instancia  de  nube  cloud­init ............................... .....  
731  Investigando  la  instancia  de  la  nube ........................................... ..........................  
733  Clonación  de  la  instancia  en  la  nube .................. .................................................... ..734  
Expansión  de  la  configuración  de  cloud­init ........................................... ....  735

xxi
Machine Translated by Google

Contenido

Adición  de  claves  ssh  con  cloud­init ........................................... ..............736  
Adición  de  software  con  cloud­init ............................... ..........................  737  
Uso  de  cloud­init  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...........................................

Capítulo  29:  Automatización  de  aplicaciones  e  infraestructura  con  Ansible . . . . . . . . . . . . . . . . . . . .  749

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  ad­hoc  de  Ansible ....................... .............................................  
760  Probando  ad­hoc  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

Apéndice  A:  Medios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  787

Apéndice  B:  Respuestas  al  ejercicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  797

í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  ad­hoc.

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  
ad­hoc   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.bell­labs.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.bell­labs.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  Alcatel­Lucent  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/en­US/).  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/
training­and­certification/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/ex200­red­hat­certified
administrador­del­sistema­rhcsa­examen

RHCE
https://redhat.com/en/services/training/ex294­red­hat­ingeniero­certificado­rhce­exam­red­hat­
enterprise­linux­8

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/
training­and­certification.  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,  system­config­firewall  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/en­us/red_hat_enter  prise_linux/7/html­single/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/en­us/red_hat_enter  prise_linux/7/html­single/
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  gnome­calculator  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  gnome­tweaks.  (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,  gconf­editor  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  

general  de  su  escritorio  GNOME  seleccionando  Sistema     Preferencias     Apariencia.  En  la  ventana  Preferencias  de  apariencia,  seleccione  


entre  tres  pestañas:

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.

2.  Haga  clic  en  Agregar  al  panel     Lanzador  de  aplicaciones  personalizado     Agregar.  El  lanzador  Crear


aparece  la  ventana.

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

active  Efectos  de  escritorio,  seleccione  Sistema     Preferencias     Efectos  de  escritorio.  Cuando  aparezca  la  ventana  


Efectos  de  escritorio,  seleccione  Compiz.  (Si  la  selección  no  está  disponible,  instale  el  paquete  com  piz).

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://gnome­look.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.0­42.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  gnome­terminal).

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:

1.  Seleccione  Aplicaciones     Utilidades     Terminal  (o  haga  clic  en  el  menú  Actividades  y  escriba  Terminal).  


Una  ventana  de  Terminal  debería  abrirse  en  su  escritorio.
2.  Seleccione  Editar     Preferencias  de  perfil  o  Preferencias.

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   2019­10­21  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 .gstreamer­0.10   Plantillas
Música Vídeos
.xsesión
errores
.bash_profile .esd_auth .gtk­bookmarks  Imágenes  Imágenes .zshrc
.bashrc .fsync.log .gvfs
$  anular  nombre
linux
$  uname  ­a  
Linux  mydesktop  5.3.7­301.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:s0­s0: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

pulsación  de  tecla Nombre  completo Significado

Ctrl  +  K Cortar  el  final  de  la  línea Corta  el  texto  hasta  el  final  de  la  línea.

Control  +  U Cortar  el  comienzo  de  la  línea Corta  el  texto  hasta  el  principio  de  la  línea.

Control+W Cortar  palabra  anterior Corta  la  palabra  que  se  encuentra  detrás  del  cursor.

Alt+D Cortar  la  siguiente  palabra Cortar  la  palabra  siguiendo  el  cursor.

Ctrl+Y    Pegar  texto  reciente Pegue  el  texto  cortado  más  recientemente.

Alt+Y Pegar  texto  anterior Gire  de  nuevo  al  texto  previamente  cortado  y  péguelo.

Ctrl  +  C Eliminar  línea  completa Eliminar  toda  la  línea.

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

Llaves) Nombre  de  la  función Descripción

Flecha Paso Presione  las  teclas  de  flecha  hacia  arriba  y  hacia  abajo  para  pasar  


teclas  (↑  y  ↓) por  cada  línea  de  comando  en  su  lista  de  historial  para  llegar  a  la  
que  desea.  (Ctrl+P  y  Ctrl+N  hacen  las  mismas  funciones,  
respectivamente).
Control+R Búsqueda   Después  de  presionar  estas  teclas,  ingresa  una  cadena  de  búsqueda  
incremental  inversa para  realizar  una  búsqueda  inversa.  A  medida  que  escribe  la  cadena,  
aparece  una  línea  de  comando  coincidente  que  puede  ejecutar  o  editar.

Control  +  S Reenviar   Esta  es  la  misma  que  la  función  anterior  pero  para  la  búsqueda  


búsqueda  incremental hacia  adelante.  (Es  posible  que  no  funcione  en  todos  los  casos).
Alt+P búsqueda  inversa Después  de  presionar  estas  teclas,  ingresa  una  cadena  para  realizar  
una  búsqueda  inversa.  Escriba  una  cadena  y  presione  Entrar  para  
ver  la  línea  de  comando  más  reciente  que  incluye  esa  cadena.

Alt+N Búsqueda  hacia  adelante Esta  es  la  misma  que  la  función  anterior  pero  para  la  búsqueda  


hacia  adelante.  (Es  posible  que  no  funcione  en  todos  los  casos).

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  |  nroff­c­hombre  |  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­
xr­x.  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  i386­linux.  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  linux­gnu,  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/Bash­Prompt­HOWTO)  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

awk d.f. papar  moscas acceso nano

nombre  base  dmesg obtener  texto ls netstat

intento nombre  de  dominio  dns  grep lsblk lindo

gato nombre  de  dominio gtar lscgroup  nisdomainname

chgrp eco pistola lssubsys  ping

chmod educar
gzip correo ping6

Chon egrep nombre  de  host correo PD

c.p. env ipcalc mkdir personas  con  discapacidad

cpio ex modo_kbd mknod enlace  de  lectura

csh FALSO teclactl mktemp rojo

cortar fgrep matar más redhat_lsb_init


estrellarse encontrar enlace montar rm

fecha encontrar en punto  de  montaje  rmdir

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

papelera etc. raíz usuario


varios
desarrollador
optar

sbin tmp era


Medios  domésticos  de  arranque  lib mnt proceso

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  CD­ROM  (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  MS­DOS  y  Windows.  Estas  son  algunas  de  estas  diferencias:  ■  En  los  

sistemas  de  archivos  MS­DOS  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­
xr­x  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  (rwxr­xr­x),  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  Bill­Desayuno  Bill­
Almuerzo  John­Cena  Sally­Desayuno  Sally­Lunch  Bill­Cena  John­Desayuno  
John­Almuerzo  Sally­Cena  $  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
­rw­rw­r­­.  1  joe  joe  0  18  de  diciembre  13:38  apple  lrwxrwxrwx.  1  
joe  joe  5  18  de  diciembre  13:46  pointer_to_apple  ­>  apple  ­rwxr­xr­x.  1  joe  joe  0  18  de  diciembre  
13:37  scriptx.sh  drwxrwxr­x.  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  
drwxr­xr­x  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  
­rw­r­­r­­  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  
­rw­r­­r­­  1 11  de  mayo  22:49  carta
­rw­r­­r­­  1
a  través­r­­r­­  1
­rw­rw­r­­  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  "2019­05­12",  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  
(­rwsr­xr­x)  o  grupo  (­rwxr­sr­x),  o  ambos  (­rwsr­sr­x),  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  ­rwsr­xr­x.  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,  drwxrwxr­t).  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,  ­rw­rw

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/  
drwxrwxr­x.  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:

$  ls­S
...

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

Leer Ver  lo  que  hay   Vea  qué  archivos  y  subdirectorios  contiene.


en  el  archivo.

Escribir Cambie  el  contenido   s Agregue  archivos  o  subdirectorios  al  directorio.  Eliminar  archivos  o  directorios  del  


del  archivo,  cámbiele  el   directorio.
nombre  o  elimínelo.

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  ­rw­rw­r­­  
1  joe  sales  4983  18  de  enero  22:13  ch3  drwxr­xr­x  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:  rwxr­xr­x

#  archivo  chmod  755

El  siguiente  comando  chmod  da  como  resultado  este  permiso:  rw­r­­r­­

#  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  (rwxr­xr­x),  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:  r­xr­xr­x

$  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  go­rwx

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:  ­­x­­x­­x

$  chmod  a+x  archivos

El  siguiente  comando  chmod  da  como  resultado  este  permiso:  r­xr­x­­­

$  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  rw­rw­r­­  
otorga  el  
dpe  
ermiso  
forma  predeterminada.  Un  directorio  recibe  
el  permiso  rwxrwxr­x.  Para  el  usuario  root,  los  permisos  de  archivo  y  directorio  son  rw­r­­r­­  y  rwxr­xr­x,  
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  (rwxrwxr­x) .  Ese  mismo  umask  da  como  resultado  un  permiso  de  archivo  de  644  (rw­
rw­r­­).  (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/  ­rw­rw­rw­.  1  joe  
joe  0  19  de  diciembre  10:59  file02  $  umask  022 ;  toque  
archivo03;  mkdirdir03;  ls  ­ld  archivo03  dir03  drwxr­xr­x.  2  joe  joe  6  dic  19  11:07  dir03  ­rw­r­­
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  ­rw­r­­r­­.  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  ­rw­r­­r­­.  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/bash­completion* /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  bash­completion  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   a­lgunos  
* )  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  
vim­enhanced.

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 .arch­ids  {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/
Fedora­16­i686­Live­Desktop.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  5­00  
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­
r­­r­­  1  chris  chris  379  29  de  junio  de  2014 ./.bashrc  #  find /home  \( ­user  chris  ­or  
­user  joe  \)  ­ls  131077
4  ­rw­r­­r­­  1  chris  chris  379  29  de  junio  de  2014 ./.bashrc  4  ­rw­r­­r­­  1  
181022 joe  joe  #  find /etc  ­group  ntp  ­ls  4  drwxrwsr­x  
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 ­rw­rw­­­­  1  rpc  0  ­rw­rw­­­­  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  c­orreo  
2848   de  f1actura
rw­rw­­­­     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  ­rwxr­xr­x  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  rwxr­xr­x  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  ­rw­rw­r­­  1  chris  
685035 chris 0  30  de  diciembre  16:34 /solomilectura/abc

$  encontrar .  ­perm  ­002  ­tipo  f  ­ls  266230  0  
­rw­rw­rw­  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.

Con   ' '


'  y  no o '  al  encontrar  archivos
las  opciones  ­not  y  ­or,  puede  refinar  aún  más  sus  búsquedas.  Puede  haber  ocasiones  en  las  que  desee  
encontrar  archivos  que  pertenecen  a  un  usuario  en  particular  pero  que  no  están  asignados  a  un  grupo  en  
particular.  Es  posible  que  desee  archivos  más  grandes  que  cierto  tamaño  pero  más  pequeños  que  otro  
tamaño.  O  puede  que  desee  encontrar  archivos  que  pertenecen  a  varios  usuarios.  Las  opciones  ­not  y  ­or  
pueden  ayudarte  a  hacerlo.  Considere  los  siguientes  ejemplos:

■  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  ­rw­r­­r­­  1  chris  chris 0  31  dic  12:57
/var/alluses/myjoe
679977  1812  ­rw­r­­r­­  1  joe  joe  4379  31  de  diciembre  13:09 /var/allusers/dict.dat

679972 0  ­rw­r­­r­­  1  joe  sales /var/allusers/one 0  31  dic  13:02

■  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  ­rw­r­  ­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  ­rw­r­­r­­  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  
c­oincidente  
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/icon­theme.cache  69048 /usr/share/icons/gnome/icon­theme.cache  20564 /
usr/share/fonts/cjkuni­uming/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  escritorio­dna  2763/udp #  ADN  de  escritorio
#  ADN  de  escritorio

$  grep  ­i  escritorio /etc/servicios  sco­dtmgr  
617/tcp  617/udp  sco­dtmgr  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/
dnsmasq­2.66/setup.html /usr/share/doc/
initscripts­9.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  kernel­doc  en  Fedora  o  Red  Hat  Enterprise  Linux.  Usando
grep,  busque  dentro  de  los  archivos  contenidos  en  el  directorio /usr/share/doc/kernel­doc*  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  ( gnome­system­monitor)  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  (gnome­system­monitor)  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:

USUARIO  PID PR  NI  VIRT  RES  SHR  S  %CPU  %MEM TIEMPO+  COMANDO


10432  cristian 20  0  471m  121m  18m  S  99.9  3.2  77:01.76  gran  comando

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  gnome­shell  fuera  1833,  hay  dos  formas  de  enviarle  una  señal  SIGHUP:

#  kill  ­1  1833  #  killall  
­HUP  gnome­shell

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:

USUARIO  PID PR  NI  VIRT  RES  SHR  S  %CPU  %MEM TIEMPO+  COMANDO


20284  raíz 25  5  98.7m  932  644  D  2.7  0.0  0:00.96  actualizadob

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/en­us/red_hat_enterprise_linux/7/html­single/
resource_management_guide/index  _
■  Documentación  del  núcleo  en  cgroups:  Consulte  los  archivos  en /usr/share/doc/
directorio  kernel­doc­*/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  xorg­x11­apps).  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|wc­l)

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  c­adena  
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"  608­555­1212  Mary  Jones  608­555­1212  
agregado  a  la  base  de  datos  $ ./ph  Mary  Mary  Jones  608­555­1212

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  608­555­1212  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  system­config­*.  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  cockpit­bridge.  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://cockpit­project.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  system­confi  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  system­config*  (como  system­config­network).

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  (system­config­bind):  crea  y  configura  zonas  si  tu  computadora  está  
actuando  como  un  servidor  DNS.

HTTP  (system­config­httpd):  Configura  tu  computadora  como  un  servidor  web  Apache.

NFS  (system­config­nfs):  configure  directorios  de  su  sistema  para  compartirlos  con
otras  computadoras  en  su  red  usando  el  servicio  NFS.

Contraseña  raíz  (system­config­rootpassword):  cambia  la  contraseña  raíz.

Samba  NFS  (system­config­samba):  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  ( system­config­services):  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  (system­config­authentication):  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  (system­config­date):  establezca  la  fecha  y  la  hora  o  elija  tener  un  NTP
El  servidor  mantiene  la  hora  del  sistema  sincronizada.

Cortafuegos  (system­config­firewall):  Configure  su  cortafuegos  para  permitir  o  denegar
servicios  a  las  computadoras  de  la  red.

Idioma  (system­config­language):  Seleccione  el  idioma  predeterminado  utilizado  para
el  sistema.

Impresión  (system­config­printer):  Configura  impresoras  locales  y  de  red.

Gestión  de  SELinux  ( system­config­selinux):  Establezca  los  modos  de  cumplimiento  de  SELinux  y
política  predeterminada.

Usuarios  y  grupos  ( system­config­users):  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  (gconf­editor):  edite  directamente  la  configuración  de  GNOME
base  de  datos  de  información.

Analizador  de  uso  de  disco  (gnome­utils):  muestra  información  detallada  sobre  sus  discos  duros  y  dispositivos  
de  almacenamiento  extraíbles.

Utilidad  de  disco  (gnome­disks):  Administre  particiones  de  disco  y  agregue  sistemas  de  archivos  (paquete  
de  utilidad  de  disco  gnome).

Kickstart  ( system­config­kickstart):  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:

José TODO=(TODO) TODO

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  ­rw­r­­r­­.  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,  CD­ROM,
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  ­­list­boots  |  head  ­2  93bdb6164...  
Sáb  2020­01­04  21:07:28  EST—Sáb  2020­01­04  21:19:37  EST
­1  7336cb823...  Dom  2020­01­05  10:38:27  EST—Lun  2020­01­06  09:29:09  EST
0  eaebac25f...  Sáb  2020­01­18  14:11:41  EST—Sáb  2020­01­18  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  –list­boots.  
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  www­data  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.9­301.fc30.x86_64  
(mockbuild@bkernel04.phx2.fedoraproject.org)  (gcc  versión  9.0.1
20190312
(Red  Hat  9.0.1­0.10)  (GCC))  #1  SMP  martes  23  de  abril  23:57:35  UTC  2019
[ 0.000000]  Línea  de  comando:  
BOOT_IMAGE=(hd0,msdos1)/vmlinuz­5.0.9­301.fc30.x86_64  root=/dev/mapper/
fedora_localhost­­live­root  ro  resume=/dev/mapper/fedora_localhost­­live­  intercambiar  
rd.lvm.lv=fedora_localhost­live/root  rd.lvm.lv=fedora_localhost­live/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:  0­3
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  (x86­64),  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  Blu­ray,  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.8­200.fc30.x86 _ 5.3.8­200.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/modinfo­d  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  AMD­V  o  Intel­VT.
'
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),  
Hyper­V  (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  Fedora­Workstation­Live.
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/
linux­platforms/enterprise­linux.

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  rhel­8.0­x86_64­dvd.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/en­us/red_hat_enterprise_linux/8/
html­single/performing_a_standard_rhel_installation/index#preparar  fuente­de­
instalación_preparar­para­su­instalació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/en­us/red_hat_enterprise_linux/8/  html­single/
performing_a_standard_rhel_installation/index#booting­the  installation­using­pxe_booting­
the­installer
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/anaconda­ks.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/en­us/red_hat_enter  prise_linux/8/html­single/
performing_an_advanced_rhel_installation/index/#performing_an_automated_installation_using_kickstart . . .  y  creando  
sus  propios  archivos  kickstart  https://access.redhat.com/documentation/en­us/red_hat_enterprise_linux/8/html­single/  
performing_an_advanced_rhel_installation/index/#creating­kickstart­files_installing­rhel­as­an­experienced  ­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/en­us/personal/disk­manager)  
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  Linux­NTFS  para  cambiar  el  tamaño  de  las  particiones  NTFS  de  Windows).

NOTA

Escriba  dnf  install  gparted  (en  Fedora)  o  apt­get  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.linux­kvm.  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
num­apagado 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/en­us/red_hat_enterprise_linux/8/  html­single/
performing_a_standard_rhel_installation/index#custom­boot  options_booting­the­installer

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/grub2­efi.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.0­80.el8.x86_64)  8.0  (Ootpa)  versión  
4.18.0­80.el8.x86_64  linux /vmlinuz­4.18.0­80.el8.x86_64  initrd /initramfs­4.18.0  
­80.el8.x86_64.img  $tuned_initrd  options  $kernelopts  $tuned_params  id  
rhel­20190313123447­4.18.0­80.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.  
0­80.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  (/vmlinuz­4.18.0­80.el8.x86_64),  seguida  de  la  ubicación  
del  initrd  (/initramfs­4.18.0­80.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  apt­get,  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.
(apt­get,  apt,  apt­config,  apt­cache,  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  apt­obtener  actualización Obtenga  las  últimas  versiones  del  paquete  $  
sudo  apt­cache  search  vsftpd  Busque  el  paquete  por  palabra  clave  (como  vsftpd)  $  sudo  apt­cache  show  vsftpd  
Muestre  información  sobre  un  paquete  $  sudo  apt­get  install  vsftpd  Instale  el  paquete  vsftpd  $  sudo  apt­get  mejora

Actualice  los  paquetes  instalados  si  la  actualización  está  lista  $  
sudo  apt­cache  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  
firefox­67.0­4.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  
firefox­67.0­4.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:

#  rpm­qi  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:  firefox­67.0­4.fc30.src.rpm  Fecha  de  compilación:  jueves  23  
de  mayo  de  2019  10:03:55  a.  m.  EDT  Host  de  compilación:  
buildhw­08.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  firefox­67.0­4.fc30.x86_64.rpm  como  
una  opción  si  el  RPM  estuviera  en  el  directorio  actual  o  en  http://example.com/
firefox­67.0­4.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/rpm­software­management/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/rpm­gpg/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/rpmfusion­free­
release­stable.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/rpmfusion­nonfree­
release­stable.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
...
eclipse­veditor.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 :  emacs­26.2­1.fc30.src.rpm
Repositorio:  actualizaciones
Resumen :  Editor  de  texto  GNU  Emacs :  http://
URL www.gnu.org/software/emacs/
Licencia :  GPLv3+  y  CC0­1.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  
wodim­1.1.11­41.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.2­1.fc30 actualizaciones

#  yum  lista  disponible  CUnit.i686  
2.1.3­17.el8  rhel­8­for­x86_64­
appstream­rpms
CUnit.x86_64   2.1.3­17.el8  rhel­8­para­x86_64­appstream­rpms  3.2.6­22.el8  rhel­8­para­
GConf2.i686 x86_64­appstream­rpms  0.19.1­1.el8  rhel­8­para­x86_64  ­appstream­rpm
LibRaw.i686
...
#  yum  lista  instalada  Paquetes  
instalados  GConf2.x86_64  
ModemManager.x86_64   3.2.6­22.el8 @AppStream  
1.8.0­1.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:  
emacs­1:26.1­8.fc30.x86_64
dependencia: /bin/sh  
proveedor:  bash­5.0.7­1.fc30.i686  proveedor:  
bash­5.0.7­1.fc30.x86_64  dependencia: /usr/sbin/ 10
alternatives  proveedor:  alternativas­1.11­4.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.2­1.fc30 actualizaciones 3,2  millones

Instalación  de  dependencias:  x86_64  
emacs­común x86_64  x86_64 1:26.2­1.fc30 38M
ImageMagick­libs  fftw­ actualizaciones  1:6.9.10.28­1.fc30   2,2  
libs­doble 3.3.8­4.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  emacs­common  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.2­1.fc30 actualizaciones 38M

236
Machine Translated by Google

Capítulo  10:  Obtener  y  administrar  software

Eliminando  dependencias  no  utilizadas:  
ImageMagick­libs x86_64   1:6.9.10.28­1.fc30  fedora 8,9  millones

emacs­común x86_64   1:26.2­1.fc30 89  millones

fftw­libs­doble x86_64 3.3.8­4.fc30 actualizaciones  fedora


4,2  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  |  2019­06­22  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  emacs­1:26.2­1.fc30.x86_64  Instalar   @actualizaciones  

emacs­common­1:26.2­1.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  check­update  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.36­3.fc30  actualizaciones  file­libs.x86_64  5.36­3.fc30  
actualizaciones  firefox.x86_64  67.0.4­1.fc30  actualizaciones  
firewalld.noarch  0.6.4­1.fc30  actualizaciones

...
#  yum  update  
Dependencias  resueltas.
==================================================  ============

Paquete Versión  de  arco Repositorio Tamaño


==================================================  ============

Actualización:  
NetworkManager  x86_64  1:1.16.2­1.fc30  actualizaciones  NetworkManager­adsl  x86_64   1,7  millones

1:1.16.2­1.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:
...
lxde­común
lxdm  
lxinput  
lxlauncher  
lxmenu­datos
...

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  db5­Recurso  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  
firefox­67.0.4­1.fc30.x86_64.rpm 6,1  MB/seg  |  92  MB 00:14

Para  usar  el  comando  dnf,  escriba  esto:
#  dnf  descargar  firefox  
firefox­60.7.0­1.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  
zsh­5.5.1­6.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  zsh­5.5.1­6.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  zsh­5.5.1­6.el8.x86_64.rpm  Verificando...  
########################  [100%]
Preparando...  ########################  [100%]  1:zsh­5.5.1­6.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:

#  rpm­Fhv  *.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  emacs­26.1­5.el8.x86_64.rpm  #  rpm  ­Uhv  ­­oldpackage  
zsh­5.0.2­25.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  emacs­common,  que  se  instaló  como  una  dependencia  de  emacs.  Si  hubiera  intentado  
eliminar  primero  emacs­common,  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  emacs­common /bin/sh /
usr/bin/pkg­config /usr/sbin/alternatives

...
#  rpm  ­q  ­­provides  emacs­common  
config(emacs­common)  =  1:26.2­1.fc30  emacs­
common  =  1:26.2­1.fc30
emacs­común(x86­64)  =  1:26.2­1.fc30  emacs­el  =  
1:26.2­1.fc30
pkgconfig(emacs)  =  1:26.2  #  rpm  ­q  
­­scripts  httpd  postinstall  scriptlet  
(usando /bin/sh):  if  [ $1  ­eq  1 ] ;  luego  #  Instalación  
inicial  systemctl  ­­no­reload  preset  httpd.service...

...
#  rpm  ­q  ­­registro  de  cambios  httpd  |  
menos  *  jue  02  de  mayo  de  2019  Lubos  Uhliarik  <luhliari@redhat.com>  ­  
2.4.39­4  ­  No  se  especifica  la  dependencia  de  httpd  en  initscripts  (#1705188)
*  Martes  9  de  abril  de  2019  Joe  Orton  <jorton@redhat.com>  ­  2.4.39­3
...

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  zsh­5.7.1­1.fc30.x86_64.rpm  Ver  información  sobre  el  archivo  RPM  #  rpm  ­qlp  
zsh­5.7.1­1.fc30.x86_64.rpm  Listar  todos  los  archivos  en  el  archivo  RPM  #  rpm  ­  qdp  zsh­5.7.1­1.fc30.x86_64.rpm  
Mostrar  documentos  en  el  archivo  RPM  #  rpm  ­qcp  zsh­5.7.1­1.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  zsh­5.7.1­1.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  zsh­5.7.1­1.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  AAAA­MM­DD .
Reemplace  expire_date  con  una  fecha  que  desee  usar.  (Por  ejemplo,  para  caducar  una  cuenta  el  5  de  mayo  de  
2022,  use  ­e  2022­05­05).

­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­
MM­DD  (por  ejemplo,  ­e  2011­10­17).  ­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  AAAA­MM­DD
formato.  Reemplace  expire_date  con  una  fecha  que  desee  usar.  (Para  el  15  de  octubre  de  2022,  use  ­e  
2022­10­15).

­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/
­rw­rw­r­­.  1  raíz  de  ventas 0  14  de  enero  09:32 /var/salesstuff/file.txt

Si  observa  los  permisos  en  el  directorio /var/salesdocs  (rwxrwxr­x),  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*  ­rw­rw­r­­.  1  
sara  sara  0  18  de  enero  22:22  
file1  ­rw­rw­r­­.  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  ­rw­rw­r­­.  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  ­rw­rw­r­­+  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  rw­rw­r­­+.  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/
mybox­home  on /home  type  ext4  (rw)  #  tune2fs  ­l /dev/mapper/mybox­home  |  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é  c­omo  
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:

/dev/sdc1 /var/cosas ext4 ac 1  2

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

Nombre Valor  numérico valor  de  la  letra

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
­rwsr­xr­x.  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  (rwxrwsr­x):

#  su  ­  mary  
[mary]$  touch /mnt/salestools/test.txt  [mary]$  ls  ­ld /
mnt/salestools/ /mnt/salestools/test.txt  drwxrwsr­x.  2  root  sales  4096  22  de  
enero  14:32 /mnt/salestools/  ­rw­rw­r­­.  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­
rw­rw­.  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,  CD­ROM  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  MS­DOS  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

Arranque  del   Comenzar Fin Sistema  de  identificación  de  bloques


dispositivo /dev/sda1   2048 1026047 512000  83  Linux
* /dev/sda2 1026048  304281599  151627776  8e  Linux  LVM

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  4­1:  nuevo  dispositivo  USB  SuperSpeed  Gen  1  número  3  usando
xhci_hcd
kernel:  usb  4­1:  Nuevo  dispositivo  USB  encontrado,  idVendor=0781,  
idProduct=5581,  bcdDevice=  1.00
kernel:  usb  4­1:  Nuevas  cadenas  de  dispositivos  USB:  Mfr=1,  Product=2,
Número  de  serie  =  3
kernel:  usb  4­1:  Producto:  Ultra
núcleo:  usb  4­1:  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/7DEB­B010
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:

Número  Inicio  Fin Tamaño  Sistema  de  archivos  Nombre   banderas


1 1049kB  123GB  123GB  xfs alldisk

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:

/dev/sdb1 /mnt/prueba xfs predeterminados 0  1

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  (util­linux  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  (1­4,  predeterminado  1):  1
Primer  sector  (2048­240254975,  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  (2­4,  predeterminado  2):  2
Primer  sector  (10487808­240254975,  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  (20973568­240254975,  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  (27265024­240254975,  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  
(27267072­240254975,  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  
(33560576­240254975,  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  (1­6):  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  (1­6):  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  (1­6):  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 wlvuIv­UiI2­pNND­f39j­oH0X­9too­AOII7R

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 KU9H­wbXM­sgca­EtBr­UXAq­
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 33VeDc­jd0l­hlCc­RMuB­tkcw­QvFi­cKCZqa  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_abc­lv_home,  vg_abc­lv_root  y  vg_abc­lv_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_abc­lv_root / /dev/mapper/vg_abc­ valores  predeterminados  ext4 1  1
lv_home /home  ext4  defaults /dev/mapper/vg_abc­lv_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.

/papelera /bota /etc /casa...

/dev/mapper/vg_abc­lv_root /
Volúmenes  lógicos
dev/mapper/vg_abc­lv_home /
dev/mapper/vg_abc­lv_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/myvg0­music

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/myvg0­music  #  mkdir /mnt/
mymusic  #  mount /dev/mapper/myvg0­music /mnt/mymusic  
#  df  ­h /mnt/mymusic  Filesystem /dev/mapper/myvg0­music  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/myvg0­music /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/myvg0­music 976M  2.6M  987M  1% /mnt/mimúsica

2.  Expanda  el  volumen  lógico  usando  el  comando  lvextend:

#  lvextend  ­L  +1G /dev/mapper/myvg0­music
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/myvg0­music

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/myvg0­music   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  CD­ROM).
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  CD­ROM  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  MS­DOS.  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  MS­DOS  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

total usado búferes  compartidos  gratuitos en  caché


Memoria: 1955 1720 235 0 42 1310
­/+  búfer/caché: 367 1588

Intercambio: 1843 0 1843

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

Memoria: 1955 1720 235 0 42 1310


­/+  búfer/caché:  367 1588
Intercambio: 819 0 819

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_abc­lv_root   / valores  predeterminados  ext4 1  1
UUID=78bdae46­9389­438d­bfee­06dd934fae28 /boot  ext4  defaults  1  2 /dev/mapper/vg_abc­lv_home /home /
más  tvalores  
dev/mapper/vg_abc­lv_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="78bdae46­9389­438d­bfee­06dd934fae28"  TIPO="ext4" /dev/sda2:

UUID="wlvuIv­UiI2­pNND­f39j­oH0X­9too­AOII7R"  TIPO="LVM2_miembro"
/dev/mapper/vg_abc­lv_root:
UUID="3e6f49a6­8fec­45e1­90a9­38431284b689"  TIPO="ext4"
/dev/mapper/vg_abc­lv_swap:
UUID="77662950­2cc2­4bd9­a860­34669535619d"  TIPO="intercambiar"
/dev/mapper/vg_abc­lv_home:
UUID="7ffbcff3­36b9­4cbb­871d­091efb179790"  TIPO="ext4" /dev/sdb1:

SEC_TYPE="msdos"  UUID="75E0­96AA"  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  ntfs­3g.

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  sea­i686­disc1.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­
i686­disc1.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  fuser­v /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  ascii­ci=0  ftype=0  bsize=4096  bloques=2560,  
interno version=2  sectsz=512  sunit=0  blks,  lazy­count=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:  
6379d82e­fa25­4160­8ffa­32bc78d410eee  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  (system­config­printer)  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  (httpd­manual),  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  nfs­utils  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  postgresql­server)
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  ssh­copy­id).
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,  openssh­clients  y  openssh­
server  de  la  siguiente  manera:

#  lista  yum  instalada  |  grep  abresh
...
abresh.x86_64  7.9p1­5.fc30  abresh­clients.x86_64   @anaconda

7.9p1­5.fc30  abresh­server.x86_64  7.9p1­5.fc30 @anaconda
@anaconda

En  Ubuntu,  solo  está  instalado  el  paquete  openssh­clients.  Incluye  la  funcionalidad  del  paquete  openssh.  
Si  necesita  instalar  el  servidor,  use  el  comando  sudo  apt­get  install  openssh­server.

316
Machine Translated by Google

Capítulo  13:  Descripción  de  la  administración  del  servidor

$  sudo  dpkg  ­­lista  |  grep  openssh  openssh­client/
bionic­updates,bionic­security,now  1:7.6p1­4ubuntu0.3  amd64  [instalado]  cliente  de  shell  seguro  (SSH),  
para  acceso  seguro  a  máquinas  remotas

abresh­cliente­ssh1/bionic  1:7.5p1­10  amd64
cliente  de  shell  seguro  (SSH)  para  el  protocolo  SSH1  heredado

abresh­sftp­server/bionic­updates,bionic­security,ahora  1:7.6p1­4ubuntu0.3  amd64  [instalado]

módulo  de  servidor  sftp  de  shell  seguro  (SSH),  para  acceso  SFTP  desde  máquinas  remotas  $  sudo  
apt­get  install  openssh­server

Inicio  del  servicio  openssh­server  Los  sistemas  
Linux  que  vienen  con  el  paquete  openssh­server  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  openssh­server  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  
ssh­rsa
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  system­config­printer  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:  **********  $  system­config­printer  &  $  
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*  ­rw­r­­r­­.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*  
­rw­r­­r­­.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:

$  ssh­keygen  
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:

$  ssh­copy­id  ­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,  gssapi­keyex,  gssapi­with­mic).

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:

#  netstat­tupln  |  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.8­200.fc30.x86_64  (fedora30host)  28/11/2019  _x86_64_  (1  CPU)

23:27:46 REINICIO  LINUX  (1  CPU)

23:30:05  CPU %usuario  %agradable  %sistema  %ioesperar %robar %inactivo


23:40:06  todo 0.90 0.00 1.81 1.44 0.28 95.57
Promedio: todo 0.90 0.00 1.81 1.44 0.28 95.57

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.

#  sar­d  |  menos  Linux  
5.3.8­200.fc30.x86_64  (fedora30host)  28/11/2019  _x86_64_  (1  CPU)

23:27:46 REINICIO  LINUX  (1  CPU)

23:30:05 DEV  tps  rkB/s  wkB/s  areq­sz  dev8­0  49,31  5663,94  50,38 aqu­sz  espera...


23:40:06 115.89 0,03  1,00
23:40:06  dev253­0  48,99  5664,09 7.38 115.78 0,05  0,98
23:40:06  dev253­1  10,84 0,01  43,34 4.00 0,04  3,29
Promedio: dev8­0  49,31  5663,94  50,38 115.89 0,03  1,00
Promedio: dev253­0  48.99  5664.09 7.38 115.78 0,05  0,98
Promedio: dev253­1  10.84 0,01  43,34 4.00 0,04  3,29

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.8­200.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

Promedio:  pan0 0.00 0,00  0,00  0,00 0.00 0.00 0.00


Promedio:  tun0 3.70 2,90  4,42  0,19 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:

$  df­h
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  (­­
block­size=#).

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.

' ' '


Aquí Es  otro  ejemplo,  excepto  que  en  lugar  de  buscar  archivos  de   s  fin  las,  we que  estas  buscando
usuario  de  más  de  100  kilobytes  (­tamaño  +100M):

#  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  cloud­int  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  ssh­copy­id,
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  Wi­Fi  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

172.17.0.0 0.0.0.0 255.255.0.0 EN 0 0 0  docker0


192.168.1.0  * 255.255.255.0U 600 0 0  wlp3s0

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  rrcs­70­62­95­197.midsouth.biz.rr.com  (70.62.95.197) ...  8  ge­2­1­0.rlghncpop­
rtr1.southeast.rr.com  (24.93.73.62) . ..  9  ae­3­0.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­
in­f8.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  NetworkManager­tui)  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/network­scripts.

Abra  el  archivo /usr/share/doc/initscripts/sysconfig.txt  para  obtener  descripciones  de  los  archivos  de  
configuración  de  net  work­scripts  (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/network­scripts  que  comienzan  
con  ifcfg­interface.  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=f16259c2­f350­4d78­a539­604c3f95998c
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  ifcfg­enp4s0,  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  ifcfg­enp4s1  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  ifcfg­enp4s1,  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/network­scripts  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  apply­changes.

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  us­smtp­inbound­1.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  us­smtp­inbound­2.mimecast.com.  $  excavar  redhat.com ;  
<<>>  DiG  9.11.11­RedHat­9.11.11­1.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/network­scripts  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  ifcfg­eth0:?  
archivos  (ifcfg­eth0:1,  ifcfg­eth0: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  ifcfg­p4p1:

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,  ifcfg­bond0)  y  luego  apuntar  múltiples  
ifcfg­eth?  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  kernel­docs  y  leyendo  el  
archivo  bonding.txt  del  directorio /usr/share/doc/kernel­doc*/  Documentation/networking/.

Este  es  un  ejemplo  del  archivo  que  define  una  interfaz  enlazada.  El  archivo  de  este  ejemplo  es /etc/
sysconfig/network­scripts/ifcfg­bond0:

DISPOSITIVO=bond0
ONBOOT=sí  
IPADDR=192.168.0.50
MÁSCARA  DE  RED=255.255.255.0
BOOTPROTO=ninguno

BONDING_OPTS="mode=active­backup"

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/network­scripts/ifcfg­eth0  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/network­scripts.  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  route­eth0.  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  route­eth0.  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  dhcp­server  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/dhcp­server  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,  bind­utils  y  bind­libs.  Para  mayor  seguridad,  algunas  personas  instalan  el  paquete  bind­chroot.

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  bind­chroot,  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/en­US/quick­docs/understanding­and­
administering­systemd,  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:

#  ps­e  |  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  CTRL­ALT­DELETE  
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
K02avahi­dnsconfd k89dund s25bluetooth
Administrador  de  red  K02 K89netplugd fusible  S25
K02NetworkManagerDispatcher  K89pand s25netfs
k05saslauthd K89rdisco S25pcscd
K10dc_servidor K91capi S26  oculto
K10psacct S00microcódigo_ctl S26udev­post
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 S97yum­actualizacionesd
K74nscd S13settrobleshoot  S98avahi­daemon
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
avahi­daemon   red  hidd configurar  solucionar  
avahi­dnsconfd 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   udev­post
cups­config­daemon  killall  dc_client   servidor  vnc

dc_server kuzu readahead_early   winbind


mcstrans  readahead_later  mdmonitor   wpa_supplicant
dhcdbd restorecond xfs
primer   bus  de  mensajes  rpcbind   ypbind  
arranque microcódigo  rpcgssd yum­updatesd
'
Tenga  en  cuenta  que  cada  servicio  tiene  un  solo  script  en /etc/rc.d/init.d.  Hay  scripts   no  separar
para  detener  e  iniciar  un  servicio.  Estos  scripts  detendrán  o  iniciarán  un  servicio  dependiendo  del  
parámetro  que  les  pase  el  daemon  init.

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  lista­unidades  |  grep .servicio
...
tazas.servicio   cargado  activo  en  ejecución  Servicio  de  impresión  CUPS  
dbus.servicio cargado  activo  en  ejecución  Bus  de  mensajes  D­Bus
...
NetworkManager.service  cargado  activo  ejecutando  Network  Manager  prefdm.service  
cargado  activo  ejecutando  Display  
salido  
Manager  
Remount  
remount­rootfs.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
systemd­logind.service  cargado  activo  en  ejecución  Servicio  de  inicio  de  sesión
...
#  systemctl  lista­unidades  |  grep .target  basic.target  
cryptsetup.target  getty.target  graphical.target  
cargado  activo  
local­fs­
activo  Sistema  básico  cargado  
pre.target  local­fs.target  multi­user.target  
activo  activo  Volúmenes  cifrados  cargado  activo  activo  
network.target  remote­fs.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  list­unit­files  ­­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  list­unit­files  ­­type=objetivo
ARCHIVO  DE  UNIDAD ESTADO
anaconda.objetivo   estático  
básico.objetivo   estático
bluetooth.objetivo   estático  
cryptsetup.objetivo  ctrl­ estático
alt­del.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  sshd­keygen.objetivo

[Servicio]
Type=notify  
EnvironmentFile=­/etc/crypto­policies/back­ends/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=multi­usuario.objetivo

[Instalar]
WantedBy=multi­usuario.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,  multi­user.target,  se  utiliza  en  el  archivo  de  configuración  de  la  unidad  de  
servicio  sshd.  La  unidad  de  servicio  sshd  es  solicitada  por  multi­user.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"  multi­usuario.objetivo  Quiere=irqbalance.servicio  
firewalld.servicio  plymouth­quit.service  systemd­update­utmp­runlevel.service  systemd­ask­password­
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"  multi­user.target  \  |  fmt­10  |  sed  's/Quiere=//
g'  |  ordenar  atd.servicio

servicio  de  auditoría  
avahi­daemon.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  multi­user.target.  Por  lo  tanto,  no  se  necesita  un  formato  especial  de  la  salida.

#  systemctl  show  ­­property  "Requiere"  multi­user.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  multi­user.target.

#  cat /lib/systemd/system/multi­user.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  multi­user.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,  multi­user.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  
multi­user.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  multi­user.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.  #  #  Ctrl­Alt­Delete  es  manejado  por  # /etc/systemd/system/ctrl­alt­del.target  #  #  systemd  
usa  'objetivos'  en  lugar  de  niveles  de  ejecución.

#  De  forma  predeterminada,  hay  dos  objetivos  principales:  #  #  
multi­user.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  get­default  # 15

383
Machine Translated by Google

Parte  IV:  Convertirse  en  un  administrador  de  servidor  Linux

#  Para  establecer  un  destino  predeterminado,  
ejecute:  #  systemctl  set­default  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
udev­post 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
yum­updatesd 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  ­­status­all  |  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...  console­kit­
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...  yum­updatesd  (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  list­unit­files  ­­type=service  |  grep  ­v  deshabilitado
ARCHIVO  DE  UNIDAD ESTADO
abrt­ccpp.servicio  abrt­ activado
oops.servicio  abrt­ activado
vmcore.servicio  abrtd.servicio activado
activado
alsa­restore.servicio  alsa­ estático  
store.servicio estático
anaconda­shell@.service  arp­ estático
ethers.service  atd.service   activado
auditd.service activado
activado
avahi­daemon.servicio   activado
bluetooth.servicio activado
consola­kit­log­system­restart.service  consola­kit­log­ estático  
system­start.service  consola­kit­log­system­stop.service   estático
crond.service estático
activado
tazas.servicio activado
...
sshd­keygen.servicio   activado
sshd.servicio activado
system­setup­keyboard.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  2019­09­18  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  2019­09­18  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  2019­09­18  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/multi­user.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/multi­user.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  D­Bus  cargado:  cargado  (/lib/systemd/
system/dbus.service;  estático)
Activo:  activo  (en  ejecución)  desde  lun,  20  abr  2020  12:35:...
PID  principal:  707  (dbus­daemon)
...
#  systemctl  deshabilitar  dbus.service  #  systemctl  
status  dbus.service  dbus.service  ­  Bus  de  mensajes  
del  sistema  D­Bus
Cargado:  cargado  (/lib/systemd/system/dbus.service;  estático)
Activo:  activo  (en  ejecución)  desde  lun,  20  abr  2020  12:35:...
PID  principal:  707  (dbus­daemon)
...

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  multi­user.target:
#  systemctl  get­default  
graphical.target  #

systemctl  set­default  runlevel3.target  Eliminado /etc/
systemd/system/default.target.
Enlace  simbólico  creado /etc/systemd/system/default.target  →
/usr/lib/systemd/system/multi­user.target.  #  systemctl  get­
default  multi­usuario.objetivo

Cuando  se  reinicia  el  servidor,  multi­user.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/S26udev­post

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  daemon­reload .

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=multi­usuario.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  multi­user.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/multi­user.target.wants  abrt­ccpp.service  
cups.path  abrtd.service  fcoe.service remote­fs.target  
rsyslog.service  
abrt­oops.service  abrt­ irqbalance.service  sendmail.service
vmcore.service  lldpad.service  atd.service   sm­cliente.servicio
mcelog.service  auditd.service  msshd.service
dmonitor.service   sshd­keygen.servicio

...
#  ls  ­l /etc/systemd/system/multi­user.target.wants  total  0  lrwxrwxrwx.  1  
raíz  raíz  37  2  de  noviembre  22:29  abrt­ccpp.service  ­>

/lib/systemd/system/abrt­ccpp.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/multi­user.target.wants/My_New_Service.service
Se  crea  un  enlace  simbólico  en  el  directorio  multi­user.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  cups­client

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  sistema­config­impresora

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  system­config  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  config­printer.  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:

#  sistema­config­impresora  &

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  hp­maple.

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  (system­config­printer)  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  NS1­PS

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/ns1­hp1>
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  ns1­hp1  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  2016­07­23  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  
deskjet­555  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  deskjet­555  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):

#  netstat­tupln  |  grep  631  tcp  6492/
0
cupsd  #  netstat­tupln   0  
6131  
|  grep   27.0.0.1:631
tcp   0.0.0.0:* ESCUCHAR

6492/cupsd

0 0  0.0.0.0:631 0.0.0.0:* ESCUCHAR

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  system­config­printer)  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,  Urbana­Champaign,  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:  httpd­2.4.41­1.fc30.src.rpm  Fecha  de  compilación:  
jueves  15  de  agosto  de  2019  06:07:29  p.  m.  EDT  Host  de  compilación:  
buildvm­30.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/00­base.conf /etc/httpd/
conf.modules.d/00­dav.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:

httpd­manual  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.

crypto­utils  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  php­ldap  (para  ejecutar  código  PHP  que  
necesita  acceder  a  bases  de  datos  LDAP)  y  php­mysql  (para  agregar  soporte  de  base  de  datos  al  servidor  
Apache). 17
php­ldap  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  (httpd­manual).  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
└─  
php­fpm.conf
Activo:  activo  (en  ejecución)  desde  el  lunes  2019­09­02  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:

$  ps­ef  |  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:

#  netstat­tupln  |  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  selinux­policy­doc.)

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  httpd­manual,  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 /cgi­bin/  "/var/www/cgi­bin/"

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  cgi­bin  debe  encontrarse  en  el  directorio /var/www/cgi­
bin.  Por  ejemplo,  un  cliente  podría  acceder  a  un  script  ubicado  en /var/www/cgi­bin/script.  cgi  ingresando  una  URL  como  
http://example.com/cgi­bin/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/cgi­bin  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:

#  netstat­nltp
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  selinux­policy­devel  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  apt­get  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,  2019­09­18
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:

#  netstat­tupln  |  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/iptables­config.  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  firewall­config  y  ejecute  firewall­config  
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  ­­reject­with  icmp­host­prohibited
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/iptables­config  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  selinux­policy­doc  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

­rw­r­­r­­ 1  13597 13597 1394  23  de  octubre  de  2014


inscrito­20141012
­rw­r­­r­­ 1  13597 13597 514  23  de  octubre  de  2014
inscrito­20141013
lftp  chris@localhost:~/cosas/estado> !pwd /root  lftp  chris@localhost:~/cosas/
estado>  obtener  encuesta­20141023.txt  3108  bytes  transferidos  lftp  
chris@localhost:~/cosas/estado>  poner /etc/  hosts  201  bytes  transferidos  lftp  chris@localhost:~/cosas/estado>  
ls

18

­rw­r­­r­­ 1  13597 13597 1394  23  de  octubre  de  2014


inscrito­20141012
­rw­r­­r­­ 1  13597 13597 514  23  de  octubre  de  2014
inscrito­20141013
­rw­r­­r­­ 1  0 0 201  03  de  mayo  20:22  hosts  lftp  
chris@localhost:~/stuff/state> !ls  install.log  anaconda­ks.cfg  dog
papelera

Fotos enviado
Descargas Público encuesta­20141023.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  encuesta­20141023.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  Survey­20141023.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/debian­meetings  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  system­config­samba  
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  samba­common,  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  samba­client:  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  samba­winbind:  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  (samba­common  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  samba­cliente  samba­winbind
...
Ú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)

==================================================  ===================

Paquete Arquitectura Repositorio  de  versiones


Tamaño
==================================================  ===================

Instalación:
samba x86_64  4.10.4­101.el8_1  rhel­8­para­x86_64­baseos
rpm  739  k
samba­winbind  x86_64  4.10.4­101.el8_1  rhel­8­para­x86_64­baseos
rpm  570  k
Instalación  de  dependencias:  samba­
common­tools
x86_64  4.10.4­101.el8_1  rhel­8­para­x86_64­baseos
rpm  469  k
samba­libs x86_64  4.10.4­101.el8_1  rhel­8­para­x86_64­baseos
rpm  185  k
samba­winbind­modules
x86_64  4.10.4­101.el8_1  rhel­8­para­x86_64­baseos
rpm  122  k
samba­cliente  x86_64  4.10.4­101.el8_1  rhel­8­para­x86_64­baseos
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  samba­common /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  samba­common  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  2020­01­31  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=network­online.target  
After=network.target  network­online.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  ­­no­process­
group  $SMBDOPTIONS  ExecReload=/bin /kill  ­HUP  $MAINPID  LimitCORE=infinity  
Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba  [Instalar]

WantedBy=multi­usuario.objetivo

El  proceso  del  demonio  Samba  (smbd)  se  inicia  después  de  los  objetivos  network,  network­online,  
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  (multi­user.  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
­­­­­­­­­  ­­­­ ­­­­­­­

imprimir  $ Disco Controladores  de  impresora


IPC$ CIP Servicio  de  PCI
(Versión  del  servidor  Samba  4.10.10)
Impresora  deskjet  
Reconectando  con  SMB1  para  la  lista  de  grupos  de  trabajo.
Inicio  de  sesión  anónimo  exitoso
Servidor 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  ­­reject­with  icmp­host­prohibited
­A  FORWARD  ­j  REJECT  ­­reject­with  icmp­host­prohibited
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  selinux­policy­doc  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

­rw­r­­r­­.  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
­­­­­­­­­ ­­­­ ­­­­­­­

impresión  de   Disco Datos  de  ventas  del  año  en  curso


datos  de  ventas$ Disco Controladores  de  impresora
IPC$   CIP Servicio  IPC  (Samba  4.10.4)
chris Disco Inicio  Directorios
Reconectando  con  SMB1  para  la  lista  de  grupos  de  trabajo.
Servidor Comentario
­­­­­­­­­ ­­­­­­­

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  cifs­utils  
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  cifs­utils  ­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  samba­client.
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,  CD­ROM  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
nfs­server  
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  CD­ROM).  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  nfs­utils.  En  RHEL  8  y  Fedora  30,  los  componentes  necesarios  se  incluyen  
en  la  siguiente  instalación  predeterminada:

#  yum  instala  nfs­utils

Además  de  algunos  documentos  en  el  directorio /usr/share/doc/nfs­utils,  la  mayoría  de  la  documentación  en  el  
paquete  nfs­utils  incluye  páginas  man  para  sus  diversos  componentes.  Para  ver  la  lista  de  documentación,  escriba  
lo  siguiente:

#  rpm  ­qd  nfs­utils  |  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  nfs­utils,  puede  ejecutar  los  siguientes  comandos  para  ver  
información  sobre  el  paquete,  los  archivos  de  configuración  y  los  comandos,  respectivamente:

#  rpm  ­qi  nfs­utils  #  rpm  ­qc  
nfs­utils  #  rpm  ­ql  nfs­utils  |  
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  nfs­server.  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  nfs­server.service  #  systemctl  
habilitar  nfs­server.service

502
Machine Translated by Google

Capítulo  20:  Configuración  de  un  servidor  de  archivos  NFS

#  systemctl  status  nfs­server.service  •nfs­server.service  ­  
Servidor  y  servicios  NFS
Cargado:  cargado  (/lib/systemd/system/nfs­server.service;  preajuste  de  proveedor  habilitado:  deshabilitado)

Activo:  activo  (salido)  desde  el  lunes  2019­9­02  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/nfs­server.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  nfs­server  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  firewall­config)  para  abrir  el  firewall  para  su  servicio  NFS.  
Escriba  firewall­config,  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:

tcp  0  0  0.0.0.0:49001  0.0.0.0:*  tcp  0  0  0.0.0.0:49002   ESCUCHAR 4682/rpc.rcuota


ESCUCHAR ­
0.0.0.0:*  tcp  0  0  0.0.0.0:49004  0.0.0.0:*  tcp  0  
0 :::49002 :::*  tcp  0  0 :::49004  udp  0  0  0.0.0.0:49001   ESCUCHAR 4698/rpc.montado
ESCUCHAR ­
0.0.0.0:*  udp  0  0  0.0.0.0:49003  0.0.0.0:*  udp  0.0.0.0:49004  
0  0  
0.0.0.0:*  udp  0  0 : ::49003  upp  0  0 :::49004:::* ESCUCHAR 4698/rpc.montado  4682/
rpc.rquotad
­

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:

host:directorio  punto  de  montaje nfs opciones 0 0

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:

roble:/aplicaciones /roble/aplicaciones  nfs  noauto,ro,duro 0  0

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  apt­get  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  multi­user.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  multi­user.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  
vmlinuz­2.6.32.el6.x86_64)  y  la  partición  que  contiene  el  sistema  de  archivos  raíz  (como /dev/mapper/
abc­root).  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/admin­guide/
kernel­parameters.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  Ctrl­x  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  2019­11­23  10:36:31  EST,
finaliza  el  dom  2019­12­08  08:09:42  EST.  ­­
23  de  noviembre  10:36:31  kernel  rhel81:  versión  de  Linux  4.18.0­147.0.3.el8_1.x86_64
(mockbuild@x86­vm­09.build.eng.bos.redhat.com)
(gcc  versión  8.3.1  20190507  (Red  Hat  8.3.1­4)
(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)/vmlinuz­4.18.0­147.0.3.el8_1.x86_64  root=/dev/mapper/
rhel­root  ro  resume=/dev/mapper/rhel­swap  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:  kvm­clock:  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.

network­pre.target  
NetworkManager.service  (859ms)  
network.target  
cups.service  (1.493s)  
rhsmcertd.service  (1.092s)  
sshd.service  (946ms)  
iscsi­shutdown.service
remote­fs­pre.target  
remote­fs.target  
httpd.service  (4.456s)  
systemd­user­sessions.service  (1.239s)  
tuned.service  (20.089s)
NetworkManager­wait­online.service  (20.539s)  
gdm.service  (1.155s)  
atd.service
plymouth­quit­wait.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=multi­user.target  
Wants=display­manager.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  display­manager.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  multi­user.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  display­manager.se  inicia  después  de  eso.

Al  continuar  descubriendo  lo  que  requieren  esas  dos  unidades,  puede  encontrar  qué  más  se  requiere.
Por  ejemplo,  multi­user.target  requiere  basic.target  (que  inicia  una  variedad  de  servicios  básicos)  y  
display­manager.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  multi­user.target,  enumere  el  contenido  del  directorio /etc/systemd/
system/multi­user.target.wants,  como  en  este  ejemplo:

#  ls /etc/systemd/system/multi­user.target.wants/  atd.service  ksm.service
rhsmcertd.servicio
auditd.service  rpcbind.service  avahi­daemon.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  
dnf­makecache.timer  ModemManager.service  firewalld.service   sintonizado.servicio
NetworkManager.service  vdo.service  
irqbalance.service  
client.target   nfs­
kdump.service  remote­fs.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

proc­sys­fs­binfmt_misc.automount  cargado  activo  en  espera  Formatos  de  archivos  ejecutables  arbitrarios  Sistema  de  
archivos  sys­devices­pc...:00:1b.0­sound­card0.device  cargado  activo  conectado  Sistema  de  control  de  audio  
de  alta  definición  631xESB/632xESB  dispositivos­pc...:00:1d.2­usb4­4\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  rhel81­bible  systemd[1]:  Inicio  de  Apache  HTTP
Servidor...
08  de  diciembre  09:30:36  rhel81­bible  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  rhel81­bible  systemd[1]:  httpd.service:  Proceso  principal  cerrado,  código=salido,  estado=1/FALLO

08  de  diciembre  09:30:36  rhel81­bible  systemd[1]:  httpd.service:
Error  con  el  resultado  'código  de  salida'.
08  de  diciembre  09:30:36  rhel81­biblia  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  systemd­analyze.  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:

#  systemd­analyze  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  systemd­analyze  > /tmp/systemd­plot.svg  #  eog /tmp/
systemd­plot.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  systemd­analyze

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  apt­get  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  dnf­plugin­system­upgrade:

#  dnf  install  dnf­plugin­sistema­actualizació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  apt­get  en  Ubuntu  para  actualizar  sus  paquetes,  tenga  en  cuenta  que  hay  diferentes  
significados  para  las  opciones  de  actualización  y  mejora  en  Ubuntu  con  apt­get  que  con  el  comando  dnf  o  yum  
(Fedora  y  RHEL).
En  Ubuntu,  apt­get  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  apt­get  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  1­3  
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,  ifcfg­eth0  en  el  directorio /etc/sysconfig/
'
network­scripts).  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  2019­12­08  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:

#  iptables­vnL
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:

#  netstat­tupln  |  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:

tcp 0  0  127.0.0.1:80 :::* ESCUCHAR 2567/httpd

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/kernel­doc*/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  aaaa­mm­dd  nombre_usuario.  En  el  siguiente  código,  la  cuenta  tim  se  ha  
configurado  para  que  caduque  el  1  de  enero  de  2021.
#  usuariomod  ­e  2021­01­01  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/common­password  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  ­rw­r­­r­­.  
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  ­rwsr­xr­x.  
1  root  root  28804  17  de  agosto  20:50 /usr/bin/passwd  $  ls  ­l /usr/bin/sudo  ­­­s­­x­­x.  
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  ­rwxr­sr­x  1  juegos  raíz  51952  21  de  diciembre  de  2013 /usr/bin/atc  4589119  20  ­rwxr­
sr­x  1  raíz  tty  19552  18  de  noviembre  de  2013 /usr/bin/  escribir  4587931  60  ­rwsr­xr­x  1  
root  root  57888  2  de  agosto  de  2013 /usr/bin/at  4588045  60  ­rwsr­xr­x  1  root  root  57536  25  
de  septiembre  de  2013 /usr/bin/crontab  4588961  32  ­rwsr­xr­  x  1  raíz  raíz  32024  18  de  
noviembre  de  2013 /usr/bin/su
...
5767487  85  ­rwsrwsr­x  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  ­rw­r­­
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  ­rwsr­xr­
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:

/dev/sdb1 / /inicio  ext4 /tmp   valores  predeterminados,  nodev,  noexec,  nosuid  1  2  


dev/sdc1 /dev/ ext4 /usr /var valores  predeterminados,  nodev,  noexec,  nosuid  1  1  
sdb2 /dev/ ext4 valores  predeterminados,  nodev  1  2  valores  
sdb3 ext4 predeterminados,  nodev,  noexec,  nosuid  1  2

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

apache /var/log/httpd/  access_log Registra  las  solicitudes  de  información  de  su  servidor  web  Apache.


Registro  de  acceso

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  inicios  de  sesión  incorrectos bmp Registra  malos  intentos  de  inicio  de  sesión.

Registro  de  arranque boot.log Contiene  mensajes  que  indican  qué  servicios  del  sistema  se  han  iniciado  y  cerrado  


correctamente  y  cuáles  (si  los  hay)  no  se  han  podido  iniciar  o  detener.  Los  mensajes  
de  inicio  más  recientes  se  enumeran  cerca  del  final  del  archivo.

Registro  del  núcleo dmesg Registra  los  mensajes  impresos  por  el  núcleo  cuando  se  inicia  el  


sistema.

Registro  cron   cron Contiene  mensajes  de  estado  del  demonio  crond.

Registro  dpkg dpkg.log Contiene  información  sobre  los  paquetes  Debian  instalados.

Registro  FTP vsftpd.log Contiene  mensajes  relacionados  con  las  transferencias  realizadas  mediante  el  


demonio  vsftpd  (servidor  FTP).

Registro  de  transferencia  FTP  xferlog Contiene  información  sobre  los  archivos  transferidos  mediante  el  servicio  
FTP.

Pantalla  GNOME /var/log/ Contiene  mensajes  relacionados  con  la  pantalla  de  inicio  de  sesión  (administrador  


Registro  del  administrador gdm/:0.log de  pantalla  de  GNOME).  Sí,  realmente  hay  dos  puntos  en  el  nombre  del  archivo.

Último  registro último  registro Registra  la  última  vez  que  una  cuenta  inicia  sesión  en  el  sistema.

(continuado)

581
Machine Translated by Google

Parte  V:  Aprendizaje  de  las  técnicas  de  seguridad  de  Linux

TABLA  22.3  (Continuación)

Nombre  de  registro  del  sistema Nombre  del  archivo Descripción

Iniciar/cerrar  sesión wtmp Contiene  un  historial  de  inicios  y  cierres  de  sesión  en  el  sistema.

Registro  electrónico registro  electrónico Contiene  información  sobre  las  direcciones  a  las  que  y  desde  las  que  se  envió  el  

correo  electrónico.  Útil  para  detectar  spam.

mysql mysqld.log Incluye  información  relacionada  con  las  actividades  del  servidor  de  base  de  


Registro  del  servidor datos  MySQL  (mysqld).

Registro  de  noticias cola  de  impresión Proporciona  un  directorio  que  contiene  registros  de  mensajes  del  servidor  de  


noticias  de  Usenet,  si  está  ejecutando  uno.

registro  de  samba /var/log/samba/ Muestra  mensajes  del  demonio  de  servicio  de  archivos  SMB  de  


smbd.log /var/log/samba/ Samba.
nmbd.log

Registro  de  seguridad seguro Registra  la  fecha,  la  hora  y  la  duración  de  los  intentos  de  inicio  de  sesión  y  las  


sesiones.

Registro  de  envío  de  correo enviar  correo Muestra  los  mensajes  de  error  registrados  por  el  demonio  sendmail.

Registro  de  calamar /var/log/calamar/acceso.log Contiene  mensajes  relacionados  con  el  servidor  de  caché/proxy  squid.

Registro  del  sistema mensajes Proporciona  un  archivo  de  registro  de  propósito  general  donde  muchos  programas  


registran  mensajes.

Registro  de  UUCP uucp Muestra  mensajes  de  estado  del  demonio  de  protocolo  de  copia  de  UNIX  a  UNIX.

Registro   yum.log Muestra  mensajes  relacionados  con  paquetes  de  software  RPM.

YUM  Registro  X.Org  X11 Xorg.0.log Incluye  mensajes  emitidos  por  el  servidor  X.Org  X.

'
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 volcado­utmp  btmp

dmesg dmesg

último  registro último  registro

wtmp volcado­utmp  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  2019­06­09  18:59:23  EDT,  finalizan  a  las
Dom  2019­10­20  18:11:06  EDT. 22
19  de  octubre  11:43:04  kernel  localhost.localdomain:
Linux  versión  5.0.9­301.fc30.x86_64  
(mockbuild@bkernel04.phx2.fedoraproject.org)  (gcc  versión  9.0.1  
20190312  (Red  Hat  9.0.1­0.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)/vmlinuz­5.0.9­301.fc30.x86_64
root=/dev/mapper/fedora_localhost­­live­root  ro  resume=/dev/mapper/
fedora_localhost­­live­swap  rd.lvm.lv=fedora_localhost­live/root  
rd.lvm.lv=fedora_localhost­live/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  avahi­daemon.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  ­­list­boots  ­3  
6b968e820df345a781cb6935d483374c
Dom  2019­08­25  12:42:08  EDT—Lun  2019­08­26  14:30:53  EDT
­2  f2c5a74fbe9b4cb1ae1c06ac1c24e89b

583
Machine Translated by Google

Parte  V:  Aprendizaje  de  las  técnicas  de  seguridad  de  Linux

lun  2019­09­02  15:49:03  EDT—jue  2019­09­12  13:08:26  EDT
­1  5d26bee1cfb7481a9e4da3dd7f8a80a0
Dom  2019­10­13  12:30:27  EDT—Jue  2019­10­17  13:37:22  EDT
0  c848e7442932488d91a3a467e8d92fcf
Sáb  2019­10­19  11:43:04  EDT—Dom  2019­10­20  18:11:06  EDT
#journalctl  ­b  c848e7442932488d91a3a467e8d92fcf
­­  Los  registros  comienzan  el  domingo  2019­06­09  18:59:23  EDT,
finaliza  el  dom  2019­10­20  18:21:18  EDT.  ­­
19  de  octubre  11:43:04  kernel  localhost.localdomain:  Linux  versión  5.0.9­301.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)/vmlinuz­5.0.9­301.fc30.x86_64  root=/dev/mapper/
fedora_local>
...
19  de  octubre  11:43:04  kernel  localhost.localdomain:
DMI:  Red  Hat  KVM,  BIOS  1.9.1­5.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:s0­s0: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  apt­get  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.1­3.fc16.i686/modules.devname /lib/modules/
...T..... 3.2.1­3.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  apt­get  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:  2016­02­03  03:34:57.276589176  ­0500
Modificar:  2016­02­02  23:40:39.139872288  ­0500  Cambiar:  2016­02­02  
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

Archivo  o  configuración Comando  de  escaneo Problema  con  archivo  o  configuración

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  

asarme  encaje encontrar /home   Permite  que  un  sistema  confíe  completamente  en  otro  


­nombre .rhosts sistema.  No  debe  estar  en  los  directorios /home.

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  apt­cache  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

Nombre  del  DNI Instalación Sitio  web

ayudante yum  asistente  de  instalación   http://aide.  


apt­get  asistente  de  instalación sourceforge.net
Bufido paquetes  rpm  o  tarball  del  sitio  web  yum  install   http://snort.org  http://

cable  trampa tripwire  apt­get  install  tripwire tripwire.org


22

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:  2020­02­10  13:00:44,   , 2020­02­11  03:05:52
MD5:  <NINGUNO> rUJj8NtNa1v4nmV5zfoOjg==
RMD160:  <NINGUNO> ,  0CwkiYhqNnfwPUPM12HdKuUSFUE= ,  
SHA256:  <NINGUNO> jg60Soawj4S/UZXm5h4aEGJ+xZgGwCmN

Archivo: /bin/ls
Tamaño :  112704  6122
,
Hora:  2020­02­10  13:04:57 , 2020­02­11  03:05:52
MD5:  POeOop46MvRx9qfEoYTXOQ==,  IShMBpbSOY8axhw1Kj8Wdw==
RMD160:  N3V3Joe5Vo+cOSSnedf9PCDXYkI= ,
e0ZneB7CrWHV42hAEgT2lwrVfP4=
SHA256:  vuOFe6FUgoAyNgIxYghOo6+SxR/zxS1s,
Z6nEMMBQyYm8486yFSIbKBuMUi/+jrUi
...
Archivo: /bin/ps
Tamaño :  76684 , 4828
Hora:  2020­02­10  13:05:45 , 2020­02­11  03:05:52
MD5 :  1pCVAWbpeXINiBQWSUEJfQ== ,  4ElJhyWkyMtm24vNLya6CA==
RMD160 :  xwICWNtQH242jHsH2E8rV5kgSkU= ,
AZlI2QNlKrWH45i3/V54H+1QQZk=
SHA256:  ffUDesbfxx3YsLDhD0bLTW0c6nykc3m0 ,
w1qXvGWPFzFir5yxN+n6t3eOWw1TtNC/
...
Archivo: /usr/bin/du
Tamaño :  104224  4619
,
Hora:  2020­02­10  13:04:58 , 2020­02­11  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:  2020­02­10  13:02:18,  ry/ , 2020­02­11  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.offensive­security.com/  information­security­training/).

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.us­cert.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/security­resources  ■  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  SHA­256.
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  Fedora­Workstation­Live­x86_64­30­1.2.iso  
a4e2c49368860887f1cc1166b0613232d4d5de6b46f29c9756bc7cfd5e13f39f
Fedora­Workstation­Live­x86_64­30­1.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  ­­force­mdc  
\
­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  ­­force­mdc /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

archivo  sin  cifrar Archivo   Archivo   archivo  sin  cifrar


encriptado encriptado

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  ­­gen­key.  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  ­­gen­clave  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/openpgp­revocs.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  2019­10­27  [SC]  [expira:  2021­10­26]

7469BCD3D05A43130F1786E0383D645D9798C173
uid  John  Doe  <jdoe@example.com>  sub  rsa2048  2019­10­27  [E]  [expira:  2021­10­26]

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  ­­list­keys,  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  ­­list­keys /home/
jdoe/.gnupg/pubring.kbx
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

publicación  rsa2048  2019­10­27  [SC]  [expira:  2021­10­26]
7469BCD3D05A43130F1786E0383D645D9798C173
fluido [último]  John  Doe  <jdoe@example.com>  sub  rsa2048  
2019­10­27  [E]  [expira:  2021­10­26]

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  
­­list­keys  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  ­­list­keys /home/
jill/.gnupg/pubring.gpg
­­­­­­­­­­­­­­­­­­­­­­­­­­­­

publicación  rsa2048  2019­10­27  [SC]  [expira:  2021­10­26]
7469BCD3D05A43130F1786E0383D645D9798C173 23
uid  [desconocido]  John  Doe  <jdoe@example.com>  sub  rsa2048  2019­10­27  [E]  
[expira:  2021­10­26]

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
2019­10­27
"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  SHA­2.  La  única  diferencia  entre  las  distintas  herramientas  SHA­2  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  SHA­2  fue  creado  por  la  Agencia  de  Seguridad  Nacional  (NSA).
SHA­3  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/luks­b099fbbe­0e56­425f­91a6­44f129db9f4b(56) /dev/mapper/luks­
b099fbbe­0e56­425f­91a6­44f129db9f4b(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  apt­get  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­
b099fbbe­0e56­425f­91a6­44f129db9f4b
UUID=b099fbbe­0e56­425f­91a6­44f129db9f4b  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  luks­b099fbbe­0e56­425f­91a6­44f129db9f4b /dev/mapper/luks­
b099fbbe­0e56­425f­91a6­44f129db9f4b  está  activo  y  en  uso.

tipo:   LUX1
cifrado:  aes­xts­plain64  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  ecryptfs­utils.
Si  no  está  instalado  en  un  sistema  Debian,  use  el  comando  sudo  apt­get  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)  pkcs11­helper  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/sig­cache.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/sig­cache.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  ecryptfs­setup­private  y  ecryptfs­mount­private  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  apt­get  
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  apt­get  
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  apt­get  install  duplicity  en  la  línea  de  comando.

Duplicidad  gpg­zip  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  Linux­PAM  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/pam­modules/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  postlogin­ac.

#  ls  ­l /etc/pam.d  total  204

­rw­r­­r­­.  1  raíz  raíz  272  15  de  noviembre  10:06  atd
...
­rw­r­­r­­.  1  raíz  raíz  232  31  de  enero  12:35  config­util  ­rw­r­­r­­.  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

...
­rw­r­­r­­.  1  root  root  109  28  de  febrero  01:33  postlogin

...
­rw­r­­r­­.  1  root  root  981  28  de  febrero  01:33  system­auth
...
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  system­auth  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  
#%PAM­1.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/system­auth.

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/*  fingerprint­auth:#  
Generado  por  authselect  el  lunes  21  de  octubre  a  las  19:24:36
2019
contraseña­auth:#  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  smartcard­auth:#  Generado  por  
authselect  el  lunes  21  de  octubre  a  las  19:24:  36  2019  system­auth:#  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  system­auth  es  en  
realidad  un  enlace  simbólico  que  apunta  al  archivo /etc/authselect/system­auth.  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  system­auth  ­> /etc/authselect/system­
auth

NOTA
En  algunas  distribuciones  de  Linux,  la  utilidad  pam­auth­config  es  similar  a  la  utilidad  authselect  en  su  capacidad  para  
sobrescribir  archivos  de  configuración.  Esto  puede  suceder  si  se  ingresa  el  comando  pam­auth­config  ­­force  en  la  línea  de  
comando.  Lea  la  página  del  manual  man  pam­auth­config  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  pam­limits  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  #.

#@facultad duro nproc 50

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.

johndoe duro inicios  de  sesión  máximos 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/
fingerprint­auth:sesión  requerida /etc/pam.d/password­auth: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  (shadow­960129).

#  #  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 ;  Wd0700­1900

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/*  config­util:auth  
suficiente  pam_timestamp.so  config­util:session  opcional  pam_timestamp.so

Debido  a  que  pam_time  no  aparece  en  la  lista,  debe  modificar  el  archivo /etc/pam.d/system­auth  para  que  PAM  
aplique  las  restricciones  de  tiempo.  El  archivo  de  configuración  de  PAM  system­auth  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/common­auth  en  lugar  del  archivo  de  configuración  system­
auth.

Recuerde  que  system­auth  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  apt­get  install  libpam­cracklib .

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/system­auth.  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  
#%PAM­1.0  #  Esta  herramienta  
solo  usa  la  pila  de  contraseñas.  subpila  de  contraseña  
system­auth  ­contraseña  subpila  de  contraseña  opcional  
postlogin pam_gnome_keyring.so  use_authtok

NOTA  
En  Ubuntu,  debe  modificar  el  archivo /etc/pam.d/common­password  en  lugar  del  archivo  de  configuración  
system­auth.

La  configuración  actual  del  archivo  system­auth  se  muestra  aquí.  Actualmente,  una  entrada  llama  al  módulo  
PAM  pam_cracklib.

#  cat /etc/pam.d/system­auth  
#%PAM­1.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/  system­auth:

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  #%PAM­1.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  system­auth  system­auth  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  Linux­PAM:  http://linux­pam.org  ■  La  guía  del  
administrador  del  sistema  Linux­PAM:  http://linux­pam.org/
Linux­PAM­html/Linux­PAM_SAG.html
■  Referencia  del  módulo  PAM:  http://linux­pam.org/Linux­PAM­html/sag
módulo­referencia.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  apt­get  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­
rw­r­­.  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­
rw­r­­.  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  Bell­LaPadula.  El  modelo  
Bell­LaPadula  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  Bell­LaPadula.

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  Bell­LaPadula.  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  bajo­nivel  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  (s0­s0).
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:s0­s0: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  ­rw­rw­
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

0  S  1000  5289  1583  0  80  golpe 0  ­  1653  espera  puntos/1 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.
#  ps­eZ  |  grep  bash  
unconfined_u:unconfined_r:unconfined_t:s0­s0:c0.c1023  1589  pts/0
00:00:00  fiesta
no  confinado_u:no  confinado_r:no  confinado_t:s0­s0:c0.c1023  5289  pts/1
00:00:00  fiesta
no  confinado_u:no  confinado_r:no  confinado_t:s0­s0: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  Bell­LaPadula.  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  "bare­bones"  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

selinux­policy­doc/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  selinux­policy­doc  en  la  línea  de  
comando.  En  Ubuntu,  escriba  sudo  apt­get  install  selinux­policy­doc  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  selinux­policy­mls  o  yum  list  selinux­policy­minimum

NOTA

Para  verificar  los  paquetes  de  políticas  de  SELinux  en  Ubuntu,  use  el  comando  sudo  apt­cache  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
s0­s0:c0.c1023 *
sesión  __predeterminado__ unconfined_u  
raíz unconfined_u s0­s0: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  ­rw­r­­
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­
rw­r­­.  johndoe  johndoe  
unconfined_u:object_r:user_home_t:s0  file.txt  #  chcon  ­u  
system_u  file.txt  #  ls  ­Z  file.txt  ­rw­rw­r­­.  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/selinux­policy/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  policycoreutils­gui.  En  Ubuntu,  use  el  comando  sudo  apt­get  install  policycoreutils.  Para  
utilizar  esta  herramienta  de  configuración,  simplemente  escriba  el  comando  system­config­selinux  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="dm­0"  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="dm­0"  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  mi­httpd  #  semodule  ­X  300  ­i  mi­httpd.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="dm­0"  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:

#  getsebool­a  |  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  
2013­04­10  #

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:  #  #  nombre­servicio  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

systat   udp  13/ 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
ftp­data  ftp­ tcp  20/
data  #  21   udp
está  registrado  en  ftp,  pero  también  lo  utiliza  fsp  ftp
21/tcp
...
http   80/tcp  80/ www  www­http   #  WorldWideWebHTTP
http upd www  www­http #  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  com­bardac­dw  48556/tcp  
48129/udp  
com­ #  Localizador  de  Bloomberg  #  
bardac­dw  48556/udp  48619/tcp  iqobject   com­bardac­dw  #  com­bardac­
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.
==================================================  ===================

Paquete Versión  de  arco Repositorio Tamaño


==================================================  ===================

Instalación:  nmap  
5,8  M x86_64  2:7.70­4.el8  rhel­8­para­x86_64­appstream­rpm

Resumen  de  Transacciones
==================================================  ===================

Instalar  1  paquete

Tamaño  total  de  descarga:  5,8  M  Tamaño  
instalado:  24  M
...
Instalado:
nmap­2:7.70­4.el8.x86_64

¡Completo!

Para  instalar  la  utilidad  nmap  en  una  distribución  de  Ubuntu,  escriba  sudo  apt­get  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/man­port­scanning­techniques.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  (SYN­ACK)  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  SYN­SYN­ACK  o  SYN,  SYN­ACK,  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  2020­1­10  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.

#  nmap­sU  127.0.0.1

A  partir  de  Nmap  7.70  ( https://nmap.org )  a  las  2020­1­10  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

PUERTO ESTADO SERVICIO


68/udp  abierto|dhcpc  filtrado  631/udp  abierto|
ipp  filtrado

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  Host­A.  Host­A  es  el  servidor  Linux  cuyos  servicios  de  red  se  van  a  
proteger.  Host­B  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  Host­A,  utilizando  no  la  dirección  de  
loopback  sino  la  dirección  IP  real.  Primero,  la  dirección  IP  para  el  Host­A  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  Host­A,  se  emite  un  escaneo  de  nmap  TCP  Connect  desde  el  
Host­A.  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  2020­1­31  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  Host­A  hasta  su  origen  en  el  Host­B.  Ahora  se  
' '
intenta  el  escaneo  TCP  Connect  en  el  Host­As  puertos  del  Host­B línea  de  comandos.
$  nmap  ­sT  10.140.67.23  A  partir  
de  Nmap  7.80  ( https://nmap.org )  a  las  2020­1­31  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.  Host­A  parece  estar  inactivo,  o  simplemente  podría  estar  bloqueando  las  
sondas.  Entonces,  se  intenta  otro  escaneo  nmap  desde  el  Host­B,  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  2020­1­31  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  Host­A  (10.140.67.23)  está  funcionando  y  todos  sus  puertos  tienen  un  estado  de  
filtrado.  Esto  significa  que  hay  un  cortafuegos  en  el  Host­A.  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  Host­A  no  son  tan  "jugosos".  En  el  siguiente  
ejemplo,  se  inicia  otro  servicio,  sshd,  en  el  Host­A  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  2020­1­30  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  Host­B,  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  Host­A  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  Host­A   Si  se  reduce  el  firewall,  los  escaneos  de  nmap  deberían  encontrar
algo.  A  continuación,  los  escaneos  nmap  se  ejecutan  nuevamente  desde  el  Host­B.  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  Host­A,  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  2020­1­31  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  2020­1­31  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

PUERTO ESTADO SERVICIO


68/udp  abierto|dhcpc  filtrado  631/udp  abierto|
ipp  filtrado
...
Nmap  hecho:  1  dirección  IP  (1  host  arriba)  escaneada  en  1081.83  segundos

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  firewall­config)  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  2019­10­19  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  firewall­config  #  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,  PRE­ENRUTAMIENTO,  SALIDA,  POST­ENRUTAMIENTO

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  Host­B  en  la  dirección  IP  
10.140.67.22  y  el  otro  es  Host­C  en  la  dirección  IP  10.140.67.25.  Su  objetivo  es  lograr  lo  siguiente:

■  Permita  que  el  Host­C  tenga  acceso  completo  al  Host­A.

■  Bloquee  las  conexiones  de  inicio  de  sesión  remotas  mediante  ssh  del  Host­B  al  Host­A.

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
Host­A  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.

#  iptables­vnL

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  Host­A
'
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  Host­B  intenta  hacer  ping  al  Host­A  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  Host­B.
$  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  Host­C  intenta  hacer  ping  al  Host­A  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  Host­C  alcance
Host­B  Host­A.  ¿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  
'
Host­B 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

Host­C  ahora  puede  hacer  ping  y  ssh  con  éxito  en  Host­A,  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  Host­B  no  puede  hacer  ping  ni  ssh  en  el  Host­A.  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  Host­B  (puerto   loquearon  
Host­B,   las  direcciones  IP?  ¿Alcanzaría  eso  el  objetivo  de  permitir  que  Host
C  tiene  acceso  completo  al  Host­A  y  solo  bloquea  las  conexiones  ssh  del  Host­B?

En  el  siguiente  ejemplo,  las  reglas  de  iptables  para  el  Host­A  se  modifican  para  intentar  bloquear  el  
'
protocolo   pirección  
s  d articular  IdP  
el  
dH ost­B,  
el   como,  
puerto   por  ejemplo,  
22.  Tenga   ­p  tqcp.  
en  cuenta   ue  Ala  
ntes  
de  a­gregar  
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  (Host­B).

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  Host­C  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  Host­B  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  iptables­save.

#  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  ­­  *
...

#  iptables­save  > /tmp/myiptables

Para  restaurar  esas  reglas  más  adelante,  puede  comenzar  por  vaciar  las  reglas  actuales  (iptables  ­F)  y  
restaurarlas  (iptables­restore).

#  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  iptables­restore.  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.

#  iptables­restore  < /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  iptables­save  para  crear  un  archivo  de  configuración  de  
iptables  a  partir  de  la  configuración  actual  de  iptables  y  usar  iptables­restore  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  walld­config  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  
firewall­config  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  apt­get  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  s­release  
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/os­release  |  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  pd­ef
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  
21100­21110:21100­21110  \  ­v /etc/vsftpd/:/etc/
vsftpd/  \  ­v /var/ftp/pub:/  var/ftp/pub  \  ­­name  vsftpd  
vsftpd  #  podman  ps

IMAGEN  DE  IDENTIFICACIÓN  DEL  CONTENEDOR DOMINIO CREADO


ESTADO PUERTOS NOMBRES

3a5d094dd4b5  vsftpd:latest /usr/local/s2...  Hace  9  segundos  Arriba  Hace  10  segundos  
0.0.0.0:20­21­>20­21/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  (21100­21110).
­­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
#  firewall­cmd  ­­zone=público  ­­add­service=ftp  #  firewall­cmd  ­­zone=público  \

­­permanente  ­­añadir­servicio=ftp
#  firewall­cmd  ­­zone=público  \
­­añadir­puerto=21100­21110/tcp
#  firewall­cmd  ­­zone=public  \  ­­permanent  ­­add­
port=21100­21110/tcp  #  firewall­cmd  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:20­21­>20­21/tcp  vsftpd  #  podman  ps  ­a  IMAGEN  DE  ID  DE  CONTENEDOR

DOMINIO CREADO
ESTADO PUERTOS NOMBRES

7da88bd62667  ubi8/ubi:último intento 2  minutos


atrás
Salió  hace  7  segundos silly_wozniak  
4d6be3e63fe3  localhost/vsftpd:latest /usr/local/s2i/ru...  Hace  aproximadamente  una  hora  Arriba  Hace  
aproximadamente  una  hora  0.0.0.0:20­21­>20­21/tcp  vsftpd

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/ubi­minimal  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/ubi­minimal  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/container­images/vsftpd.git  #  cd  vsftpd  #  ls  default­conf/  
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.3­32.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  default­conf/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  docker­distribution  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  docker­distribution  ­y  #  systemctl  start  
docker­distribution  #  systemctl  enable  docker­
distribution  #  systemctl  status  docker­distribution  •docker­
distribution.service­v2  Servidor  de  registro  para  Docker

cargado:  cargado
(/usr/lib/systemd/system/docker­distribution.service;  habilitado;  presión  del  
proveedor>  Activo:  activo  (en  ejecución)  desde  el  miércoles  01­01­2020...

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:

#  cortafuegos­cmd  ­­zone=público
­­añadir­puerto=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  tls­verify,  porque  docker­registry  usa  el  protocolo  http:
#  podman  push  ­­tls­verify=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  ­­tls­verify=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  proc­ps,  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  virt­manager,  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/red­hat­openstack­platform)  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  virt­manager,  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  back­end  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  virt­manager  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  virt­manager)  es  
una  herramienta  GUI  para  administrar  máquinas  virtuales.  Además  de  permitirle  solicitar  iniciar  y  
detener  máquinas  virtuales,  virt­manager  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  virt­viewer  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)  i7­4800MQ  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  virt­manager  libvirt­daemon­config­network  #  reiniciar

El  paquete  virt­manager  contiene  la  herramienta  GUI  para  administrar  sus  máquinas  virtuales.
El  paquete  libvirt­daemon­config­network  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:

■  libvirt­client  (para  el  comando  virsh)  ■  libvirt­daemon  
(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  (virt­manager)  
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  nfs­utils.  Para  Ubuntu,  necesita  
el  paquete  nfs­kernel­server.  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  nfs­utils

Para  Ubuntu  y  sistemas  similares,  escriba  esto:

#  apt­get  install  nfs­kernel­servidor

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  nfs­server.service  #  systemctl  
habilitar  nfs­server.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:  #  firewall­cmd  ­­permanent  ­­add­
service=rpc­bind  #  firewall­cmd  ­­permanent  ­  ­add­service=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  qemu­kvm  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  (virt­manager)  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  virt­install  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  virt­install  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  virt­manager  para  el  almacenamiento   27
( /var/lib/libvirt/images):

#  cp  Fedora­Workstation­Live­x86_64­30­1.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  (virt­manager)
Desde  el  escritorio  en  cualquiera  de  los  hipervisores,  haga  lo  siguiente  para  abrir  Virtual  Machine  Manager  y  
conectarlo  al  hipervisor:

a.  Inicie  virt­manager.  Vaya  a  la  pantalla  Actividades,  escriba  Virtual  Machine  Man
ager  en  el  cuadro  de  búsqueda  y  presione  Entrar,  o  escriba  virt­manager  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  virt­manager  e  inicie  sesión.  La  Figura  27.2  muestra  un  ejemplo  de  la  ventana  de  
virt­manager  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  virt­man  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  virt­manager  para  mostrar  la  consola  de  una  VM  directamente  con  virt­viewer.  Por  ejemplo,  
para  una  máquina  virtual  denominada  rhel8­01,  escriba  virt­viewer  rhel8­01.

■  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  openssh­askpass  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  virt­manager  (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  cloud­init  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  cloud­init  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  cloud­init  (http://launchpad.net/cloud­init)  
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  cloud­init  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  cloud­init.  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  (instancia­id),  un  nombre  de  host  (local­hostname)  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  cloud­init.  Cree  un  archivo  llamado  user­data  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  cloud­init  
no  caduque  la  contraseña:

#cloud­config  
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  CD­ROM  de  la  
imagen  de  Linux  para  que  cloud­init  sepa  cómo  configurar  la  imagen  de  Linux.  (Instale  primero  los  paquetes  
genisoimage  y  cloud­init,  si  aún  no  lo  ha  hecho.  El  paquete  cloud­init  no  es  necesario  en  el  hipervisor).

#  yum  install  genisoimage  cloud­init  #  genisoimage  
­output  fedora31­data.iso  ­volid  cidata  \
­joliet­long  ­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  cloud­init.  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  Fedora­Cloud­Base­31­1.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:  #  qemu­img  create  ­f  qcow2  \

­o  backing_file=Fedora­Cloud­Base­31­1.9.x86_64.qcow2  \  Fedora­Cloud­
Base­01.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  Fedora­Cloud­Base­31­1.9.x86_64.qcow2  \  Fedora­
Cloud­Base­01.qcow2  \  fedora31­data.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  #  virt­install  
­­import  ­­name  fedora31­01  ­­ram  4096  ­­vcpus  2  \
­­disk  path=Fedora­Cloud­Base­01.qcow2,format=qcow2,bus=virtio  \  ­­disk  path=fedora21­
data.iso,device=cdrom  \  ­­network  red=predeterminado  &

El  ejemplo  anterior  de  virt­install  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  fedora31­01  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  virt­viewer:

#  virt­visor  fedora31­01

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/user­data.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,  systemd­journal]  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  virt­manager,  haga  lo  siguiente:

1.  Inicie  virt­manager.  En  el  sistema  host  que  ejecuta  la  máquina  virtual,  ejecute  el  comando  virt­manager  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  virt­manager  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  cloud­init  en  Cloud­Init

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  cloud­init  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  ssh­rsa  
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  ssh­authorized­keys:

­  ssh­rsa  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  ssh­rsa  de  mi  cuenta  raíz  en  host2.example.com  se  proporciona  aquí  bajo  ssh­authorized­
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  cloud­init  
'
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/rpm­gpg/RPM­GPG­KEY­MYREPO  nombre:  Mis  
paquetes  de  repositorio  de  software  personal:

­nmap­
28
mycoolcmd­
[libmystuff,  3.10.1­2.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.  0­25]

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  Cloud­Init  (http://cloudinit.readthedocs.org/en/  
Latest/topics/examples.html)  para  obtener  detalles.

Uso  de  cloud­init  en  la  informática  empresarial  Hasta  ahora,  los  
ejemplos  de  cloud­init  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  cloud­init  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.

Cloud­init  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  
loud­init  
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,  cloud­init  consulta  una  dirección  IP  particular  
(http://169.254.169.254/)  para  obtener  datos.  Por  ejemplo,  puede  consultar  http://
169.254.169.254/2009­04­04/meta­data/  para  metadatos  y  http://169.254.169.254/2009­04­04/
user­data/  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.  
Cloud­init  admite  herramientas  de  configuración,  como  Puppet  (http://puppetlabs.com/puppet/tuppet­open­
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/public­clouds/).

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  
cloud­init   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  cnegus­test­project  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  
(RHEL­OSP).  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  cloud­init  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  cloud­user  y  la  dirección  IP  es  10.10.10.100,  podría  ingresar  lo  siguiente  para  iniciar  
sesión:

#  ssh  ­i  mycloud.pem  usuario­nube@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"  ec2­user@ec2­w­xx­yyy­zz.us­east­2.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  cloud­init,  qemu­img  y  virt­viewer.

2.  Obtenga  una  imagen  de  nube  del  proyecto  Fedora.
3.  Use  qemu­img  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  cloud­init  llamado  meta­data  que  establezca  la  instancia

id  a  myvm  y  local­hostname  a  myvm.example.com.
'
5.  Cree  un  archivo  de  datos  de  usuario  de  inicialización  en  la  nube  llamado  user­data  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  virt­install  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  virt­viewer  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  ad­hoc

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  ad­hoc.

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/ansible­operator).

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  ad­hoc  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  ansible­doc.
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  ansible­doc
>  COPIAR (/usr/lib/python3.7/site­packages/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  
ansible­playbook  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  ­­ask­become­pass  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:  $  ssh­keygen  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  ssh­copy­id,  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  ssh­copy­id  joe@host0$i;  done /usr/bin/ssh­copy­id:  
INFORMACIÓN:  Origen  de  la(s)  clave(s)  a  instalar:  "/home/joe/.ssh/id_rsa.pub" /usr/bin/ssh­
copy­id:  INFORMACIÓN:  intentando  iniciar  sesión  con  las  nuevas  claves,  para  filtrar  las  
que  ya  están  instaladas /usr/bin/ssh­copy­id:  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/ssh­copy­id:  INFORMACIÓN:  Fuente  de  la(s)  clave(s)  a  instalar:  "/home/joe/.ssh/
id_rsa.pub" /usr/bin/ssh­copy­id:  INFORMACIÓN:  intentando  para  iniciar  sesión  con  las  
nuevas  claves,  para  filtrar  las  que  ya  están  instaladas /usr/bin/ssh­copy­id:  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  ansible­2.9­for­rhel­8­x86_64­rpms
#  dnf  instala  ansible  ­y

Fedora:
#  dnf  instala  ansible  ­y

Ubuntu:
$  sudo  apt  update  $  sudo  
apt  install  software­properties­common  $  sudo  apt­add­repository  ­­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  ansible­playbook  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:

$  ansible­playbook  ­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:  python3­decorator...  cambiado:  
[host02]  =>  { "cambiado":  verdadero,  "msg":  "",  "rc":  0,  "resultados":  ["Instalado:  firewalld",  "Instalado:  
python3­decorator...  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  ansible­playbook  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  ad­hoc  para  consultar  y  modificar  aún  más  los  hosts  que  acabamos  de  implementar.

Ejecución  de  comandos  ad­hoc  de  Ansible
Puede  haber  momentos  en  los  que  desee  realizar  tareas  únicas  en  sus  nodos  administrados  por  Ansible.
Puede  realizar  esas  tareas  mediante  comandos  ad­hoc.  Con  un  comando  ad­hoc,  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  ad­hoc  se  enfoca  en  alcanzar  el  estado  
deseado.  El  comando  ad­hoc  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  ad­hoc,  puede  usar  el  inventario  ws  creado  anteriormente.

Probar  comandos  ad­hoc  Cuando  ejecuta  
un  comando  ad­hoc  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  ­­ask­become­pass
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/ansible­tmp­1581027374.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  ad­hoc  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  ad­hoc  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  ansible­playbook  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  ansible­playbook  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/install­minikube).

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  (kube­apiserver),  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  (kube­scheduler)  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  CRI­O  (https://cri­o.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  back­end.  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/kubernetes­basics/create­cluster/cluster­interactive

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/install­minikube/
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):

#  curl­LO\
https://storage.googleapis.com/kubernetes­release/release/`curl  \  ­s  https://
storage.googleapis.com/kubernetes­release/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  linux­amd64  \  &&  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  vm­driver  kvm2  $  minikube  start  ­­vm­driver=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/kubernetes­basics/create­cluster/cluster­interactive

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  cluster­info  Kubernetes  master  
se  ejecuta  en  https://192.168.39.150:8443  KubeDNS  se  ejecuta  en  https://192.168.39.150:8443/api/v1/
namespaces/kube­system/  services/kube­dns:dns /proxy  Para  depurar  y  diagnosticar  problemas  de  clúster,  
utilice  'kubectl  cluster­info  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:"2020­01­18T23  :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:"2020­01­18T23: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  
kubernetes­bootcamp  \

­­image=gcr.io/google­samples/kubernetes­bootcamp:v1  deployment.apps/
kubernetes­bootcamp  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  kubernetes­bootcamp
Nombre:  predeterminado  de  kubernetes­bootcamp
Espacio  de  nombres:
...
Réplicas:  1  deseada  |  1  actualizado  |  1  en  total  |  1  disponible  |  0  no  disponible

...
Plantilla  de  cápsula:
Etiquetas:  app=kubernetes­bootcamp
Contenedores:
kubernetes­bootcamp:  gcr.io/google­
samples/kubernetes­bootcamp:v1  Imagen:  Puerto:
<ninguno>

Puerto  host: <ninguno>

Entorno:  <ninguno>
Monturas: <ninguno>

Volúmenes: <ninguno>

...

En  la  implementación  de  kubernetes­bootcamp,  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":  "2020­01­18T23: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  kubernetes­bootcamp­69fbc6f4cf­njc4b  1/1  En  ejecución  0  $  kubectl  describe  pod  kubernetes­
bootcamp­69fbc6f4cf­njc4b  kubernetes­bootcamp­69fbc6f4cf­njc4b  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/google­samples/kubernetes­bootcamp:v1  docker­pullable://gcr.io/
Identificación  de  la  imagen: google­samples...
...
Eventos:
Tipo Razón Edad  desde Mensaje
­­­­ ­­­­­­ ­­­­  ­­­­ ­­­­­­­

Normal  Programado  Programador  predeterminado  de  14  minutos  Asignado  con  éxito
default/kubernetes­bootcamp­69fbc6f4cf­njc4b  a  minikube  14m  kubelet,  imagen  de  
tirado  normal contenedor  minikube
"gcr.io/google­samples/kubernetes­bootcamp: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  (. . .  kubernetes­bootcamp: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  go­template  ­­template  \  '{{range .items}}{{.  metadata.name }}
{{"\n"}}{{end}}') ;  \  echo  Nombre  del  pod:  $POD_NAME  Nombre  del  pod:  kubernetes­bootcamp­69fbc6f4cf­
njc4b

$  curl  \  http://
localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/  proxy/  ¡Hola,  bootcamp  de  Kubernetes!|
Ejecutándose  en:kubernetes­bootcamp  5b48cfdcbd­lf9t2|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:  2020­02­13T21:29:21.836Z  |  Ejecutándose  en:  
kubernetes­bootcamp­5b48cfdcbd­lf9t2

Ejecutándose  en:  kubernetes­bootcamp­5b48cfdcbd­lf9t2  |  Solicitudes  totales:  1  |  Tiempo  
de  actividad  de  la  aplicación:  34.086  segundos  |  Hora  de  registro:  2020­02­13T21: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=kubernetes­bootcamp­5b48cfdcbd­lf9t2  
KUBERNETES_SERVICE_HOST=10.96.  0.1  KUBERNETES_SERVICE_PORT=443

...
$  kubectl  exec  ­ti  $POD_NAME  bash  root@kubernetes­
bootcamp­5b48cfdcbd­lf9t2:/#  fecha
jue  13  feb  21:57:18  UTC  2020

kubernetes­bootcamp­5b48cfdcbd­lf9t2:/#  ps­ef
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  pd­ef
30

775
Machine Translated by Google

Parte  VI:  Compromiso  con  la  computación  en  la  nube

root@kubernetes­bootcamp­5b48cfdcbd­lf9t2:/#  curl  localhost:8080  ¡Hola,  bootcamp  de  Kubernetes!|Ejecutándose  
en:kubernetes­bootcamp  5b48cfdcbd­lf9t2|v=1

root@kubernetes­bootcamp­5b48cfdcbd­lf9t2:/#  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  kubernetes­bootcamp  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  kubernetes­bootcamp­765bf4c7b4­fdl96  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  kubernetes­bootcamp  
fuera  del  clúster:

$  kubectl  obtener  servicios
NOMBRE TIPO CLUSTER­IP  EXTERNAL­IP  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/kubernetes­bootcamp  \

­­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ÚSTER­IP EDAD

kubernetes ClústerIP  10.96.0.1 <ninguno> 443/TCP 33m

776
Machine Translated by Google

Capítulo  30:  Implementación  de  aplicaciones  como  contenedores  con  Kubernetes

kubernetes­bootcamp  NodePort  10.96.66.230  <ninguno>  TCP  5s 8080:32374/

$  kubectl  describe  servicios/kubernetes­bootcamp
Nombre:  predeterminado  de  kubernetes­bootcamp
Espacio  de  nombres:
Etiquetas: app=kubernetes­bootcamp
Anotaciones: <ninguno>

Selector: app=kubernetes­bootcamp
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/kubernetes­bootcamp  \  ­o  go­template='{{(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:kubernetes­bootcamp  765bf4c7b4­fdl96|v=1

Etiquetar  un  servicio

Utilice  este  procedimiento  para  agregar  una  etiqueta  a  un  servicio  existente.

1.  Verifique  la  etiqueta  del  pod:  hasta  ahora,  kubernetes­bootcamp  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=kubernetes­bootcamp  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  go­template  ­­template  \  '{{range .items}}{{.  metadata.name }}{{"\n"}}{{end}}') ;  
\  echo  Nombre  del  pod:  $POD_NAME  Nombre  del  pod:  kubernetes­bootcamp­765bf4c7b4­fdl96

$  kubectl  label  pod  $POD_NAME  app=v1  pod/kubernetes­
bootcamp­765bf4c7b4­fdl96  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: bootcamp­765bf4c7b4­fdl96
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  
pod­template­hash=765bf4c7b4  run=kubernetes­
bootcamp  $  kubectl  get  pods  ­l  app=v1

NOMBRE ESTADO  LISTO REINICIA


EDAD

kubernetes­bootcamp­765bf4c7b4­fdl96  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  kubernetes­bootcamp
todavía  existe:

$  kubectl  obtener  servicios
NOMBRE TIPO PUERTO(S)  DE  IP  EXTERNA  DE  CLÚSTER­IP
EDAD
kubernetes ClústerIP  10.96.0.1 <ninguno> 443/TCP
63m
kubernetes­bootcamp  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=kubernetes­bootcamp  service  "kubernetes­bootcamp"  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ÚSTER­IP
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  kubernetes­bootcamp,  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

kubernetes­bootcamp  1/1  $  kubectl  obtener  rs 1 1 107s

NOMBRE EDAD  PREPARADA  ACTUAL  DESEADA

kubernetes­bootcamp­5b48cfdcbd  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/kubernetes­bootcamp  ­­replicas=4  deployment.extensions/kubernetes­bootcamp  
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  kubernetes­bootcamp
ejecutándose,  cada  uno  con  su  propia  dirección  IP  dentro  del  clúster.  Para  asegurarte,  ingresa  lo  siguiente:  $  kubectl  get  
pods  ­o  wide

NOMBRE ESTADO  LISTO IP  DE  EDAD  DE  REINICIO


NODO PUERTAS  DE  PREPARACIÓN  DEL  NODO  NOMINADO 30

779
Machine Translated by Google

Parte  VI:  Compromiso  con  la  computación  en  la  nube

kubernetes­bootcamp­5b4...  1/1 Corriendo  0 8m43s


172.18.0.4
minikube  <ninguno>   <ninguno>

kubernetes­bootcamp­5b4...  1/1  172.18.0.8   Corriendo  0 12s


minikube  <ninguno>  kubernetes­bootcamp­5b4...  
1/1 <ninguno>

Corriendo  0 12s
172.18.0.6
minikube  <ninguno>   <ninguno>

kubernetes­bootcamp­5b4..  1/1  172.18.0.7   Corriendo  0 12s


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/kubernetes­bootcamp
Nombre:  predeterminado  de  kubernetes­bootcamp
Espacio  de  nombres:
...
Réplicas:  no   4  deseado  |  4  actualizados  |  4  totales  |  4  disponibles  |  0
disponible
...
NewReplicaSet:  kubernetes­bootcamp­5b48cfdcbd  (4/4  réplicas  creadas)

Eventos:
Tipo Razón Edad De Mensaje
­­­­ ­­­­­­ ­­­­  ­­­­ ­­­­­­­

Escalado  normalReplicaSet  17m controlador  de  despliegue  escalado
arriba

conjunto  de  réplicas  kubernetes­bootcamp­5b48cfdcbd  en  1
Escalado  normalReplicaSet  9m25s  deployment­controller  Escalado
up  
replica  set  kubernetes­bootcamp­5b48cfdcbd  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/kubernetes­bootcamp
Nombre:  predeterminado  de  kubernetes­bootcamp
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/kubernetes­bootcamp  \  ­o  go­template='{{(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:kubernetes­bootcamp  5b48cfdcbd­9j4xp|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/kubernetes­bootcamp  –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  kubernetes­bootcamp  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

kubernetes­bootcamp­5b4...  1/1  172.18.0.4   Corriendo  0 8m43s


minikube  <ninguno>  kubernetes­bootcamp­5b4...  
1/1 <ninguno>
30
Corriendo  0 12s
172.18.0.8

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  hello­node  
(gcr.io/hello­minikube­zero­install/hello­node).
4.  Use  los  comandos  de  kubectl  apropiados  para  ver  la  implementación  de  hello­node  y  describir  la  
implementación  en  detalle.

5.  Vea  el  conjunto  de  réplicas  actual  asociado  con  su  implementación  de  hello­node.
30
6.  Amplíe  la  implementación  de  hello­node  a  tres  (3)  réplicas.
7.  Exponga  la  implementación  de  hello­node  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  hola­nodo.
9.  Use  el  comando  curl  para  consultar  el  servicio  hello­node  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  hello­node  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­
Workstation­Live­x86_64­31­1.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  MATE­Compiz  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/alternative­downloads).
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/en­US/quick­docs/creating­and­using­a­live
imagen­instalació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­
create­a­usb­stick­on­ubuntu#1­overview

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
#  apt­get  install  k3b  #  apt­get   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://gnome­look

.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://gnome­look.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

Seleccione  Aplicaciones     Gráficos     Visor  de  imágenes  para  abrir  una  ventana  de  visor  de  imágenes  en


el  escritorio.

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.

a.  Desde  el  escritorio  de  GNOME,  seleccione  Aplicaciones     Herramientas  del  sistema     Terminal  para  abrir  


una  ventana  de  Terminal.

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

F.  Escriba  alias  m  para  asegurarse  de  que  el  alias  se  configuró  correctamente:  alias  m= ' gato /


etc/contraseña  '.

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

­r­­r­­r­­.  1  joe  joe 0  16  Ene  06:49  casa1

­r­­r­­­­­.  1  joe  joe 0  16  Ene  06:49  casa2

­r­­r­­r­­.  1  joe  joe 0  16  Ene  06:49  house5

­r­­r­­r­­.  1  joe  joe 0  16  Ene  06:49  house9

dr­xr­xr­x.  2  joe  joe  4096  16  de  enero  06:57  casas

dr­xr­xr­x.  2  joe  joe  4096  1  de  julio  de  2014  initscripts­9.03.40
B
dr­xr­xr­x.  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:

http   80/tcp   www  www­http   #  WorldWideWebHTTP


http 80/tcp www  www­http #  HTTP  de  la  World  Wide  Web

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  kernel­doc  en  Fedora  o  Red  Hat  Enterprise  Linux.  Usando
grep,  busque  dentro  de  los  archivos  contenidos  en  el  directorio /usr/share/doc/kernel­doc*  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  kernel­doc  $  cd /usr/
share/doc/kernel­doc*  $  grep  ­rli  e1000 .

./Documentación/powerpc/arranque­sin­de.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/kernel­doc­*  $  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  &

A  continuación,  en  GNOME  2,  seleccione  Aplicaciones     Herramientas  del  sistema     Monitor  del  


sistema,  o  en  GNOME  3,  desde  la  pantalla  Actividades,  escriba  Monitor  del  sistema  y  presione  Entrar.  
Busque  el  proceso  de  gedit  en  la  pestaña  Procesos.  (Puede  ordenar  alfabéticamente  para  que  sea  más  
fácil  haciendo  clic  en  el  encabezado  Nombre  del  proceso).  Haga  clic  con  el  botón  derecho  en  el  comando  
gedit  y  luego  seleccione  Finalizar  proceso  o  Terminar  proceso;  la  ventana  de  gedit  en  su  pantalla  debería  
desaparecer.

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:

$  killall­SIGCONT  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  xorg­x11­apps  $  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  ­rw­r­­r­­.  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  ­rw­r­­r­­.  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  1­1.1:  nuevo  dispositivo  USB  de  alta  velocidad  número  16  usando  ehci­pci  25  de  enero  
16:07:59  host2  kernel:  usb  1­1.1:  Nuevo  dispositivo  USB  encontrado ,

idVendedor=0ea0,  idProducto=2168
25  de  enero  16:07:59  host2  kernel:  usb  1­1.1:  Nuevas  cadenas  de  dispositivo  USB:
Mfr=1,  Producto=2,  Número  de  serie=3
25  de  enero  16:07:59  host2  kernel:  usb  1­1.1:  Producto:  Disco  flash
25  de  enero  16:07:59  host2  kernel:  usb  1­1.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  
ImageMagick­6.9.10.28­1.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  ImageMagick­6.9.10.28­1.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!  
sh­4.2$  prueba  newgrp  sh­4.2$  
touch /home/jbaxter/file.txt  sh­4.2$  ls  ­l /home/baxter/
file.txt  ­rw­rw­r­­.  1  jbaxter  testing  0  25  de  enero  06:42 /
home/jbaxter/file.
TXT
sh­4.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  ­rw­r­­r­­  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  ­rw­rw­r­­  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
­rw­r­­r­­.  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  ­rw­r­­r­­  1  mjones  mjones  176  27  ene  2011 /home/

jbaxter/.bash_profile  262189  4  
­rw­r­­r­­  1  mjones  mjones  18  27  de  enero  de  2011 /inicio/
jbaxter/.bash_logout
262194  0  ­rw­rw­r­­  1  mjones  testing  0  25  de  enero  07:59 /home/  jbaxter/file.txt  262188  
4  ­rw­r­­r­­  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  ­rw­r­­r­­  1  mjones  mjones  176  27  ene  2011 /home/  maryjones/.bash_profile  
262202  4  ­rw­r­­r­­  1  mjones  mjones  18  27  ene  2011 /home/  maryjones /.bash_logout  262206  628  
­rw­r­­r­­  1  mjones  mjones  640999  25  de  enero  08:27 /  home/maryjones/services  262201  
4  ­rw­r­­r­­  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  (1­6):  6
Comando  (m  para  ayuda):  d
Número  de  partición  (1­5):  5 B
Comando  (m  para  ayuda):  d

819
Machine Translated by Google

Parte  VII:  Apéndices

Número  de  partición  (1­5):  4
Comando  (m  para  ayuda):  d
Número  de  partición  (1­4):  3
Comando  (m  para  ayuda):  d
Número  de  partición  (1­4):  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  (1­4)
pag

Número  de  partición  (1­4):  1
Primer  sector  (2048­15667199,  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  (1­4)
pag

Número  de  partición  (1­4):  2
Primer  sector  (616448­8342527,  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  (1­4)
pag

Número  de  partición  (1­4):  3
Primer  sector  (616448­15667199,  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  (1­4):  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  (1­4):  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/abc­data  
#  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/abc­data  #  resize2fs  ­p /dev/
mapper/abc­data

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/abc­data  #  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/system­release  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/system­release"  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­
xr­x.  3  root  root  4096  18  de  abril  05:52  
devel  drwxr­xr­x.  2  root  root  4096  18  de  abril  05:52  paquetes  drwxr­xr­x.  
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
drwxr­xr­x.  5  root  root  4096  19  de  abril  de  2011  default.conf  drwxr­xr­x.  4  raíz  raíz  
4096  28  de  febrero  de  2011  dist.conf
drwxr­xr­x.  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  ush­copy­id,
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:  $  ssh­keygen  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:
...
$  ssh­copy­id  ­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  ssh­rsa  
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/locale­archive /usr/lib/jvm/java­1.8.0­
openjdk­1.8.0.212.b04­0.fc30.  x86_64/jre/lib/rt.jar

/usr/libexec/cni/dhcp /usr/libexec/
gdb /usr/libexec/gcc/x86_64­
redhat­linux/9/lto1 /usr/libexec/gcc/x86_64­redhat­linux/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  Ctrl­C

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/network­scripts  #  vi  route­enp4s0

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  set­default  runlevel3.target  Eliminado /etc/systemd/
system/default.target.
Se  creó  el  enlace  simbólico /etc/systemd/system/default.target  → /usr/lib/systemd/
system/multi­user.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  

­­status­all  |  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  list­unit­files  ­­type=service  |  grep  ­v  deshabilitado
ARCHIVO  DE  UNIDAD ESTADO
abrt­ccpp.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  system­confi  g­printer:
#  dnf  instalar  sistema­config­impresora

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  
deskjet­5550  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:

#  netstat­tupln  |  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

0 0 :::80 :::* ESCUCHA  2496/httpd


0 0 :::443 :::* ESCUCHA  2496/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.

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/iptables­config:

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/debian­meetings  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/debian­meetings/  cd  ok,  cwd=/pub/debian­
meetings  lftp  ftp.gnome.org:/pub/debian­meetings>>  ls

drwxr­xr­x 3  ftp  6   ftp   3  13  de  enero  de  2014  2004


drwxr­xr­x ftp  8  ftp ftp   6  13  de  enero  de  2014  2005
drwxr­xr­x ftp 8  dic  20  2006  2006
...

Capítulo  19:  Configuración  de  un  uso  compartido  de  archivos  de  Windows

(Samba)  Servidor
1.  Para  instalar  los  paquetes  samba  y  samba­client,  ingrese  lo  siguiente  como  root  desde  
un  shell  en  el  sistema  local:
#  yum  instalar  samba  samba­cliente

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

Nombre  compartido Tipo Comentario


­­­­­­­­­ ­­­­ ­­­­­­­

casas Disco Inicio  Directorios


...

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  samba­client  ( 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  ­­reject­with  icmp­host­prohibited
­A  FORWARD  ­j  REJECT  ­­reject­with  icmp­host­prohibited
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  nfs­utils

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  nfs­utils /usr/
share/doc/nfs­utils­1.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  nfs­server.service  #  systemctl  
habilitar  nfs­server.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  nfs­server.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  firewall­confi  g.  Luego  ejecute  firewall­config.
En  la  ventana  Configuración  de  firewall  que  aparece,  asegúrese  de  que  nfs  y  rpc­bind  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:
#  netstat­tupln  |  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  apt­get  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  apt­get
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  ­­gen­key

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  ­­
list­keys

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  ­­verify­files  
*­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  
#%PAM­1.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:

@alumno duro inicios  de   50


@alumno ­ sesión  máximos  de  nproc 4

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  ­rw­r­­r­­.  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  s0­s3).

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  c0­c102.  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  ­rw­rw­r­­.  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:s0­s0:c0.c1023  root  665  1  0  Sep18 ?  00:00:00 /usr/
sbin/crond­n

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  s0­s0,  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  ­rw­r­­r­­.  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  ­rw­r­­r­­.  raíz  raíz  
unconfined_u:object_r:user_tmp_t:s0 /  etc/test.txt  #  restorecon /etc/test.txt  #  ls  
­Z /etc/test.txt  ­rw­r­­r­­.  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:

#  getsebool­a  |  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  apt­get
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:
#  nmap­sT  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:
#  nmap­sU  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  firewall­config  ­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  (firewalld­config).  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:

#  iptables­save  >/tmp/myiptables

b.  Para  vaciar  sus  reglas  actuales:

#iptables  ­F
C.  Para  restaurar  las  reglas  del  cortafuegos,  ingrese:

#  iptables­restore  < /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  proc­ps  y  ejecute  un  comando  para  ver  los  procesos  que  se  ejecutan  dentro  del  contenedor:

bash­4.4#  gato /etc/os­release  |  grep  ^NOMBRE  NOMBRE="Red  Hat  
Enterprise  Linux"  bash­4.4#  yum  install  procps  ­y  bash­4.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  pd­ef
bash­4.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  bash­4.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/ubi­minimal  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  docker­distribution
paquete  u  obtener  una  cuenta  en  Quay.io  o  Docker  Hub:
#  yum  install  docker­distribution  ­y  #  systemctl  start  
docker­distribution  #  systemctl  enable  docker­distribution

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  virt­manager  libvirt­daemon­
config­network

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  Fedora­Workstation­Live­x86_64­30­1.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:

#  virt­gerente  &

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  virt­manager.

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,  cloud­init,  qemu­img  y  virt­viewer
edades,  ingrese:

#  dnf  instalar  genisoimage  cloud­init  qemu­img  virt­viewer

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  Fedora­Cloud­
Base­31­1.9.x86_64.qcow2.

3.  Para  crear  una  instantánea  de  esa  imagen  en  formato  qcow2  llamada  myvm.qcow2,  ingrese  el
siguiente:  
#  qemu­img  create  ­f  qcow2  \  ­o  
backing_file=Fedora­Cloud­Base­31­1.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  \  ­joliet­long  
­rock  user­data  meta­data

7.  Use  el  comando  virt­install  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.
#  virt­install  ­­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  virt­viewer,  ingrese  lo  siguiente:
#  virt­visor  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  ansible­2.9­for­rhel­8­x86_64­rpms
#  dnf  instala  ansible  ­y

Fedora
#  dnf  instala  ansible  ­y

ubuntu
$  sudo  apt  update  $  sudo  
apt  install  software­properties­common  $  sudo  apt­add­repository  ­­
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).

$  ansible­playbook  ­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:

$  ansible­playbook  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  ­­become­user  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/
install­minikube,  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  hello­node
imagen,  ingrese  lo  siguiente:  $  
kubectl  create  deployment  hello­node  \  ­­image=gcr.io/
hello­minikube­zero­install/hello­node

4.  Para  ver  la  implementación  de  hello­node  y  describirla  en  detalle,  ingrese
lo  siguiente:  $  
kubectl  get  deployment  $  kubectl  
describe  deployment  hello­node

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  hello­node,
introduzca  la  siguiente:
$  kubectl  obtener  rs

6.  Para  ampliar  la  implementación  de  hello­node  a  tres  (3)  réplicas,  ingrese  lo  siguiente:
$  kubectl  scale  deployments/hello­node  ­­replicas=3

7.  Para  exponer  la  implementación  de  hello­node  fuera  del  clúster  de  Kubernetes  mediante  
LoadBalancer,  ingrese  lo  siguiente:
$  kubectl  expone  el  despliegue  hello­node  \  ­­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  hello­node,  ingrese  lo  siguiente:  $  minikube  ip

192.168.39.150
$  kubectl  describe  el  servicio  hello­node  |  puerto  de  nodo  grep
NodePort:  <sin  configurar>  31302/TCP

9.  Use  el  comando  curl  para  consultar  el  servicio  hello­node,  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  hello­node  y  luego  detener  la  máquina  
virtual  Minikube,  ingrese  lo  siguiente:

$  kubectl  eliminar  servicio  hello­node  $  kubectl  eliminar  
implementación  hello­node  $  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  ad­hoc,  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  ad­hoc,  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–
Alcatel­Lucent,  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  Bell­LaPadula  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   cloud­init,  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  cnegus­test­project,  
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  ad­hoc  

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  firewall­config,   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  virt­manager,  
714  virt­viewer,  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,  18­19
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  Cloud­init,  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  firewall­config,  674–675  servicio   gconf­editor,  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 gnome­disks,  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

daemon­config­network,
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
MS­DOS,  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  
openssh­clients,  316  paquete  openssh­server,  
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  

nfs­utils,  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   nfs­utils,  502  abresh,  316  

noauto,  514–515  Nokia,  9  archivo  nsswitch.conf,  182   abresh­clientes,  316  

archivo  ntp.conf,  paquete  182  ntpd ,  309 abresh­servidor,  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  samba­client,  476  paquetes  
samba­common,  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  Bell­LaPadula,  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  system­config­kickstart,  173  system­
185  chrony,  185  lp,  185  noticias,   config­language,  172  system­config­nfs,  172  system­config­
186  postfix,  185  rpc,  186  sistemas   printer,  172  system­config­rootpassword,  172  system­config­
de  archivos  y,  168  herramientas   samba,  172  system­config­  selinux,  172  system­config­
gráficas,  172  hardware services,  172  system­config­users,  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  virt­install,  
720–721  virt­manager,  711,  717,  720–724,
Winbind,  

722 administrador  de  270  
ventanas,  29  ventanas
comando  virt­manager,  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

También podría gustarte