sábado, 27 de mayo de 2017

19. Búsqueda de archivos mediante el comando Find en Linux


Uno de los desafíos que enfrentan los usuarios al trabajar con el sistema de archivos, es tratar de recordar la ubicación donde se almacenan los archivos. Hay miles de archivos y cientos de directorios en un sistema de archivos Linux típico, por lo que recordar dónde se encuentran estos archivos puede plantear desafíos.

El comando find es una herramienta muy potente que puedes usar para buscar archivos en el sistema de archivos. Este comando puede buscar archivos por nombre, incluyendo el uso de caracteres comodín para cuando no esté seguro del nombre de archivo exacto. Además, puede buscar archivos basados en metadatos de archivo, como el tipo de archivo, el tamaño del archivo y la propiedad del archivo.

La sintaxis del comando find es:
find [starting directory] [search option] [search criteria] [result option]

Una descripción de todos estos componentes:

  • [Directorio inicial]: Aquí es donde el usuario especifica dónde comenzar la búsqueda. El comando find buscará este directorio y todos sus subdirectorios. Si no se proporciona ningún directorio de inicio, se utiliza el directorio actual para el punto de inicio.

  • [Opción de búsqueda]: Aquí es donde el usuario especifica una opción para determinar qué tipo de metadatos buscar; Hay opciones para el nombre de archivo, tamaño de archivo y muchos otros atributos de archivo.

  • [Criterio de búsqueda]: Este es un argumento que complementa la opción de búsqueda. Por ejemplo, si el usuario utiliza la opción para buscar un nombre de archivo, el criterio de búsqueda sería el nombre de archivo.

  • [Opción de resultado]: Esta opción se utiliza para especificar qué acción debe tomarse una vez que se encuentra el archivo. Si no se proporciona ninguna opción, el nombre del archivo se imprimirá en STDOUT.

Buscar por nombre de archivo

Para buscar un archivo por nombre, use la opción -name del comando find:

sysadmin@localhost:~$ find /etc -name hosts                           
find: `/etc/dhcp': Permission denied
find: `/etc/cups/ssl': Permission denied  
find: `/etc/pki/CA/private': Permission denied  
find: `/etc/pki/rsyslog': Permission denied
find: `/etc/audisp': Permission denied 
find: `/etc/named': Permission denied
find: `/etc/lvm/cache': Permission denied 
find: `/etc/lvm/backup': Permission denied
find: `/etc/lvm/archive': Permission denied                           
/etc/hosts
find: `/etc/ntp/crypto': Permission denied
find: `/etc/polkit-l/localauthority': Permission denied   
find: `/etc/sudoers.d': Permission denied  
find: `/etc/sssd': Permission denied 
/etc/avahi/hosts
find: `/etc/selinux/targeted/modules/active': Permission denied  
find: `/etc/audit': Permission denied                                
sysadmin@localhost:~$
Tenga en cuenta que se encontraron dos archivos: /etc/hosts y /etc/avahi/hosts. El resto de la salida eran mensajes STDERR porque el usuario que ejecutó el comando no tenía permiso para acceder a determinados subdirectorios.

Recuerde que puede redirigir STDERR a un archivo para que no necesite ver estos mensajes de error en la pantalla:

sysadmin@localhost:~$ find /etc -name hosts 2> errors.txt             
/etc/hosts 
/etc/avahi.hosts                                                      
sysadmin@localhost:~$
Mientras que la salida es más fácil de leer, realmente no hay ningún propósito para almacenar los mensajes de error en el archivo error.txt. Los desarrolladores de Linux se dieron cuenta de que sería bueno tener un "archivo basura" para enviar datos innecesarios; Cualquier archivo que envíe al archivo /dev/null se descarta:

sysadmin@localhost:~$ find /etc -name hosts 2> /dev/null              
/etc/hosts
/etc/avahi/hosts                                                      
sysadmin@localhost:~$

Visualización del detalle del archivo

Puede ser útil obtener detalles de archivo cuando se utiliza el comando find, porque sólo el nombre del archivo en sí puede no ser suficiente información para que pueda encontrar el archivo correcto.

Para ver estos detalles de archivo, utilice la opción -ls en el comando find:

sysadmin@localhost:~$ find /etc -name hosts -ls 2> /dev/null
    41   4 -rw-r--r--   1 root     root      158 Jan 12 2010 /etc/hosts
  6549   4 -rw-r--r--   1 root     root      1130 Jul 19 2011 /etc/avahi/hosts 
sysadmin@localhost:~$

Búsqueda de archivos por tamaño

Una de las muchas opciones de búsqueda útiles es la opción que le permite buscar archivos por tamaño. La opción -size le permite buscar archivos que sean más grandes o más pequeños que un tamaño especificado, así como buscar un tamaño de archivo exacto.

Cuando especifica un tamaño de archivo, puede dar el tamaño en bytes (c), kilobytes (k), megabytes (M) o gigabytes (G). Por ejemplo, lo siguiente buscará archivos en la estructura de directorios /etc que son exactamente 10 bytes de gran tamaño:

sysadmin@localhost:~$ find /etc -size 10c -ls 2>/dev/null    
   432    4 -rw-r--r--   1 root     root           10 Jan 28  2015 /etc/adjtime
 8814    0 drwxr-xr-x   1 root     root           10 Jan 29  2015 /etc/ppp/ip-d
own.d                                                           
8816    0 drwxr-xr-x   1 root     root           10 Jan 29  2015 /etc/ppp/ip-u
p.d                                                            
 8921    0 lrwxrwxrwx   1 root     root           10 Jan 29  2015 /etc/ssl/cert
s/349f2832.0 -> EC-ACC.pem                                    
  9234    0 lrwxrwxrwx   1 root     root           10 Jan 29  2015 /etc/ssl/cert
s/aeb67534.0 -> EC-ACC.pem                                     
 73468    4 -rw-r--r--   1 root     root           10 Nov 16 20:42 /etc/hostname
sysadmin@localhost:~$

Si desea buscar archivos que sean mayores que un tamaño especificado, coloque un carácter + antes del tamaño. Por ejemplo, lo siguiente buscará todos los archivos en la estructura de directorios /usr que tengan más de 100 megabytes de tamaño:

sysadmin@localhost:~$ find /usr -size +100M -ls 2> /dev/null
574683 104652 -rw-r--r--   1 root      root      107158256 Aug  7 11:06 /usr/share/icons/oxygen/icon-theme.cache                    
sysadmin@localhost:~$









viernes, 26 de mayo de 2017

18. Archivos zip en Linux

La utilidad de archivo de facto en el mundo de Microsoft es el archivo ZIP. No es tan frecuente en Linux, pero está bien soportado por los comandos zip y unzip. Con tar y gzip / gunzip se pueden usar los mismos comandos y opciones para hacer la creación y la extracción, pero esto no es el caso con zip. La misma opción tiene diferentes significados para los dos comandos diferentes.

El modo predeterminado de zip es agregar archivos a un archivo comprimido y comprimirlo.

bob:tmp $ zip logs.zip logs/*
  adding: logs/access_log (deflated 93%)
  adding: logs/access_log.1 (deflated 62%)
  adding: logs/access_log.2 (deflated 88%)
  adding: logs/access_log.3 (deflated 73%)
  adding: logs/access_log.4 (deflated 72%)
El primer argumento en el ejemplo anterior es el nombre del archivo para ser operado, en este caso es logs.zip. Después de eso, es una lista de archivos que se añadirán. La salida muestra los archivos y la relación de compresión. 
Debe tenerse en cuenta que tar requiere la opción -f para indicar que se está pasando un nombre de archivo, mientras que zip y unzip requieren un nombre de archivo y por lo tanto no es necesario que diga explícitamente que se está pasando un nombre de archivo.

El listado de archivos en el zip se realiza mediante el comando unzip y la opción -l (lista):

bob:tmp $ unzip -l logs.zip
Archive:  logs.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  10-14-2013 14:07   logs/
     1136  10-14-2013 14:07   logs/access_log.3
      362  10-14-2013 14:07   logs/access_log.1
      784  10-14-2013 14:07   logs/access_log.4
    90703  10-14-2013 14:07   logs/access_log
   153813  10-14-2013 14:07   logs/access_log.2
---------                     -------
   246798                     6 files
Extraer los archivos es como crear el archivo, ya que la operación predeterminada es extraer:

bob:tmp $ unzip logs.zip
Archive:  logs.zip
   creating: logs/
  inflating: logs/access_log.3
  inflating: logs/access_log.1
  inflating: logs/access_log.4
  inflating: logs/access_log
  inflating: logs/access_log.2

Las páginas de zip y unzip man describen las otras cosas que puedes hacer con estas herramientas, como reemplazar archivos dentro del archivo, usar diferentes niveles de compresión e incluso usar cifrado.


17. Archivado en Linux (tar)


Si tuviera varios archivos para enviar a alguien, podría comprimir cada uno individualmente. Usted tendría una cantidad menor de datos en total que si envió archivos sin comprimir, pero todavía tendría que tratar con muchos archivos al mismo tiempo.

Archivar es la solución a este problema. La utilidad UNIX tradicional para archivar archivos se llama tar, que es una forma corta de TApe aRchive. Tar se utilizó para transmitir muchos archivos a una cinta para copias de seguridad o transferencia de archivos. Tar toma varios archivos y crea un archivo de salida único que se puede dividir de nuevo en los archivos originales en el otro extremo de la transmisión.

Tar tiene 3 modos:
  • Crear: crear un nuevo archivo de una serie de archivos
  • Extraer: extraer uno o más archivos de un archivo
  • Lista: muestra el contenido del archivo sin extraer

Aquí, mostramos un archivo tar, también llamado tarball, que se crea a partir de registros de acceso múltiples.

bob:tmp $ tar -cf access_logs.tar access_log*
bob:tmp $ ls -l access_logs.tar
-rw-rw-r-- 1 sean sean 542720 Oct 12 21:42 access_logs.tar

Crear un archivo requiere dos opciones con nombre. La primera, c, especifica el modo. El segundo, f, indica a tar que espera un nombre de archivo como el siguiente argumento. El primer argumento en el ejemplo anterior crea un archivo llamado access_logs.tar. Los demás argumentos se toman como nombres de archivo de entrada, ya sea como comodín, una lista de archivos o ambos.

El ejemplo anterior hace un listado de directorio largo del archivo creado. El tamaño final es 542.720 bytes que es ligeramente mayor que los archivos de entrada. Tarballs se puede comprimir para facilitar el transporte, ya sea por gzipping el archivo o por tener tar hacerlo con la bandera z de la siguiente manera:

bob:tmp $ tar -czf access_logs.tar.gz  access_log*
bob:tmp $ ls -l access_logs.tar.gz
-rw-rw-r-- 1 sean sean 46229 Oct 12 21:50 access_logs.tar.gz
bob:tmp $ gzip -l access_logs.tar.gz
         compressed        uncompressed  ratio uncompressed_name
              46229              542720  91.5% access_logs.tar

El ejemplo anterior muestra el mismo comando que el ejemplo anterior, pero con la adición del parámetro z. La salida es mucho más pequeña que el tarball en sí, y el archivo resultante es compatible con gzip

Aunque UNIX no trata extensiones de archivos especialmente, la convención es usar .tar para archivos tar, y .tar.gz o .tgz para archivos tar comprimidos
Puede utilizar bzip2 en lugar de gzip sustituyendo la letra j por z y utilizando .tar.bz2, .tbz o .tbz2 para una extensión de archivo (por ejemplo, tar -cjf file.tbz access_log *).

Dado un archivo tar, comprimido o no, puede ver lo que hay en él mediante el comando t:

bob:tmp $ tar -tjf access_logs.tbz
logs/
logs/access_log.3
logs/access_log.1
logs/access_log.4
logs/access_log
logs/access_log.2

Este ejemplo utiliza 3 opciones:

t: lista de archivos en el archivo
j: descomprimir con bzip2 antes de leer
f: opera sobre el nombre de archivo dado access_logs.tbz

A continuación, se muestra el contenido del archivo comprimido. Puede ver que un directorio estaba prefijado a los archivos. Tar se recurse en subdirectorios automáticamente al comprimir y almacenará la información de ruta dentro del archivo.

Finalmente puede extraer el archivo con el indicador -x:

bob:tmp $ tar -xjf access_logs.tbz
bob:tmp $ ls -l
total 36
-rw-rw-r-- 1 sean sean 30043 Oct 14 13:27 access_logs.tbz
drwxrwxr-x 2 sean sean  4096 Oct 14 13:26 logs
bob:tmp $ ls -l logs
total 536
-rw-r--r-- 1 sean sean 372063 Oct 11 21:24 access_log
-rw-r--r-- 1 sean sean    362 Oct 12 21:41 access_log.1
-rw-r--r-- 1 sean sean 153813 Oct 12 21:41 access_log.2
-rw-r--r-- 1 sean sean   1136 Oct 12 21:41 access_log.3
-rw-r--r-- 1 sean sean    784 Oct 12 21:41 access_log.4
Agregue el indicador -v y obtendrá una salida detallada de los archivos procesados. Esto es útil para que pueda ver lo que está sucediendo:

bob:tmp $ tar -xjvf access_logs.tbz
logs/
logs/access_log.3
logs/access_log.1
logs/access_log.4
logs/access_log
logs/access_log.2

Bibliografía

NDG Linux Essentials - Chapter 7 - Archiving and Compression

16. Archivado y compresión en Linux

El archivado de archivos se utiliza cuando uno o más archivos necesitan ser transmitidos o almacenados de la manera más eficiente posible. Hay dos aspectos a esto:
  • Archivando: Combinando múltiples archivos en uno, lo que elimina la sobrecarga en archivos individuales y facilita la transmisión
  • Comprimir: Reducir los archivos eliminando información redundante

Puede archivar varios archivos en un único archivo y comprimirlo, o puede comprimir un archivo individual. El primero se conoce como archivo, mientras que el último se llama compresión. Cuando usted toma un archivo, descomprímalo y extrae uno o más archivos, usted lo está des-archivando.

A pesar de que el espacio en disco es relativamente barato, el archivo y la compresión aún tienen valor:
  • Si desea hacer un gran número de archivos disponibles, como el código fuente de una aplicación o una colección de documentos, es más fácil para las personas descargar un archivo comprimido que descargar archivos individuales.
  • Los archivos de registro tienen el hábito de llenar los discos, por lo que es útil dividirlos por fecha y comprimir versiones anteriores.
  • Cuando realiza una copia de seguridad de los directorios, es más fácil guardarlos todos en un archivo que hacerlo en cada archivo.
  • Algunos dispositivos de transmisión, como cintas, funcionan mejor si envía un flujo de datos en lugar de archivos individuales.
  • A menudo puede ser más rápido comprimir un archivo antes de enviarlo a una unidad de cinta o sobre una red más lenta y descomprimirlo en el otro extremo de lo que sería para enviarlo sin comprimir.

Comprimir archivos

La compresión de los archivos los hace más pequeños eliminando la duplicación de un archivo y almacenándola de tal manera que se pueda restaurar el archivo. El algoritmo de compresión es un procedimiento que la computadora hace para codificar el archivo original, y como resultado lo hace más pequeño. Los científicos informáticos investigan estos algoritmos y proponen mejores que pueden trabajar más rápido o hacer que el archivo de entrada sea más pequeño.

Tipos de compresión

  • Con pérdidas: No se quita ninguna información del archivo. Comprimir un archivo y descomprimirlo deja algo idéntico al original.
  • Sin pérdidas: La información puede quitarse del archivo a medida que se comprime, de modo que la descompresión de un archivo dará lugar a un archivo que es ligeramente diferente del original. Por ejemplo, una imagen con dos tonos sutilmente diferentes de verde podría hacerse más pequeña tratando esos dos tonos como iguales. A menudo, el ojo no puede escoger la diferencia de todos modos.
Generalmente los ojos y los oídos humanos no notan imperfecciones leves en cuadros y el audio, especialmente como se exhiben en un monitor o se tocan sobre los altavoces. La compresión con pérdidas a menudo beneficia a los medios porque resulta en tamaños de archivo más pequeños y la gente no puede distinguir entre el original y la versión con los datos modificados. Para cosas que deben permanecer intactas, como documentos, registros y software, necesita compresión sin pérdidas.

La mayoría de los formatos de imagen, como GIF, PNG y JPEG, implementan algún tipo de compresión con pérdidas. En general, puede decidir cuánta calidad desea conservar. Una calidad inferior resulta en un archivo más pequeño, pero después de la descompresión puede notar artefactos como bordes ásperos o decoloraciones. La alta calidad se parecerá mucho a la imagen original, pero el tamaño del archivo será más cercano al original.

Linux proporciona varias herramientas para comprimir archivos, el más común es gzip. Aquí mostramos un archivo de registro antes y después de la compresión.

bob:tmp $ ls -l access_log*
-rw-r--r-- 1 sean sean 372063 Oct 11 21:24 access_log
bob:tmp $ gzip access_log
bob:tmp $ ls -l access_log*
-rw-r--r-- 1 sean sean 26080 Oct 11 21:24 access_log.gz
Gzip le dará esta información si lo pide, usando el parámetro -l, como se muestra aquí:

bob:tmp $ gzip -l access_log.gz
      compressed     uncompressed  ratio uncompressed_name
           26080           372063  93.0% access_log
Aquí, puede ver que la relación de compresión se da como 93%, que es la inversa de la relación 14:1, es decir 13/14.

Lo contrario del comando gzip es gunzip. Alternativamente, gzip -d hace lo mismo.
Gzip también puede actuar como un filtro que significa que no lee ni escribe nada al disco, sino que recibe datos a través de un canal de entrada y lo escribe a un canal de salida.

Hay otro par de comandos que operan virtualmente idénticamente a gzip y gunzip. Estos son bzip2 y bunzip2. Las utilidades de bzip utilizan un algoritmo de compresión diferente que puede comprimir archivos más pequeños que gzip a expensas de más tiempo de CPU. Puede reconocer estos archivos porque tienen una extensión .bz o bz2 en lugar de .gz.

Bibliografía

NDG Linux Essentials - Chapter 7 - Archiving and Compression

miércoles, 24 de mayo de 2017

15. Descripción de archivos y directorios


Los archivos se utilizan para almacenar datos como texto, gráficos y programas. Los directorios (AKA, "carpetas") se utilizan para proporcionar una estructura de organización jerárquica. Esta estructura es algo diferente de lo que podría estar acostumbrado a si ha trabajado previamente en sistemas Microsoft Windows.

En un sistema Windows, el nivel superior de la estructura de directorios se denomina Mi PC. Cada dispositivo físico (unidad de disco duro, unidad de DVD, unidad flash USB, unidad de red, etc.) aparece en Mi PC, cada uno asignado una letra de unidad, como C: o D :. Una representación visual de esta estructura:


Al igual que Windows, una estructura de directorios de Linux tiene un nivel superior, sin embargo, no se llama Mi PC, sino el directorio raíz y está simbolizado por el carácter /. También no hay unidades en Linux; Cada dispositivo físico es accesible bajo un directorio, no una letra de unidad. Una representación visual de una estructura típica de directorios de Linux:


Esta estructura de directorio es llamada el sistema de archivos por la mayoría de los usuarios de Linux.

Para ver el sistema de archivos raíz, escriba ls /:

sysadmin@localhost:~$ ls /                                            
bin   dev  home  lib    media  opt   root  sbin     selinux  sys  usr  
boot  etc  init  lib64  mnt    proc  run   sbin???  srv   tmp  var

Ruta de directorio

Usando el gráfico en la sección anterior como un punto de referencia, verá que hay un directorio llamado sound bajo un directorio llamado etc, que está en el directorio /. Una manera más fácil de decir esto, es referirse a la ruta.

Una ruta le permite especificar la ubicación exacta de un directorio. Para el directorio de sonido, la ruta sería /etc/sound. El primer carácter / representa el directorio raíz(root), mientras que cada carácter / se utiliza para separar los nombres de directorio.

Este tipo de ruta se denomina ruta absoluta. Con una ruta absoluta, siempre proporciona direcciones a un directorio (o un archivo) a partir de la parte superior de la estructura de directorios, el directorio raíz. Más adelante, se cubrirá un camino diferente llamado ruta relativa.

El siguiente gráfico muestra tres rutas absolutas adicionales:

Directorio Home

El directorio de inicio del término a menudo causa confusión a los usuarios principiantes de Linux. Para empezar, en la mayoría de las distribuciones de Linux hay un directorio llamado home bajo el directorio raíz: /home.

En este directorio /home habrá un directorio para cada usuario en el sistema. El nombre del directorio será el mismo que el nombre del usuario, por lo que un usuario llamado "bob" tendría un directorio home llamado /home/bob.

Su directorio home es un directorio muy importante. Para empezar, cuando abra un shell, debe colocarse automáticamente en su directorio de inicio, ya que aquí es donde va a hacer la mayor parte de su trabajo.

Además, su directorio de inicio es uno de los pocos directorios donde tiene el control total para crear y eliminar archivos y directorios adicionales. La mayoría de los otros directorios de un sistema de archivos Linux están protegidos con permisos de archivo, un tema que se tratará en detalle en un capítulo posterior.

En la mayoría de las distribuciones de Linux, los únicos usuarios que pueden acceder a los archivos de su directorio principal son usted y el administrador del sistema (el usuario root). Esto se puede cambiar utilizando permisos de archivo.

Su directorio home tiene incluso un símbolo especial que puede utilizar para representarlo: ~. Si su directorio home es /home/sysadmin, simplemente puede escribir ~ en la línea de comandos en lugar de /home/sysadmin. También puede referirse al directorio de inicio de otro usuario utilizando la notación ~user, donde user es el nombre de la cuenta de usuario cuyo directorio home al que desea hacer referencia. Por ejemplo, ~bob sería el mismo que /home/bob. Aquí, vamos a cambiar al directorio de inicio del usuario:

sysadmin@localhost:~$ cd ~                                             
sysadmin@localhost:~$ ls                                               
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  
Videos      
sysadmin@localhost:~$

Directorio actual

Su directorio actual es el directorio donde está trabajando actualmente en un terminal. Cuando abre un terminal por primera vez, el directorio actual debe ser su directorio personal, pero esto puede cambiar a medida que explora el sistema de archivos y cambia a otros directorios.

Mientras esté en un entorno de línea de comandos, puede determinar el directorio actual mediante el comando pwd:

sysadmin@localhost:~$ pwd                                             
/home/sysadmin                                                         
sysadmin@localhost:~$

Cambio de directorios

Si desea cambiar a un directorio diferente, utilice el comando cd (cambiar directorio). Por ejemplo, el siguiente comando cambiará el directorio actual a un directorio llamado /etc/sound/events:

sysadmin@localhost:~$ cd /etc/sound/events                                    
sysadmin@localhost:/etc/sound/events$
Tenga en cuenta que no hay salida si el comando cd tiene éxito.Si intenta cambiar a un directorio que no existe, recibirá un mensaje de error:

sysadmin@localhost:/etc/sound/events$ cd /etc/junk                           
-bash: cd: /etc/junk: No such file or directory                               
sysadmin@localhost:/etc/sound/events$
Si desea volver a su directorio de inicio, puede escribir el comando cd sin argumentos o utilizar el comando cd con el carácter ~ como argumento:

sysadmin@localhost:/etc/sound/events$ cd                                      
sysadmin@localhost:~$ pwd                                                     
/home/sysadmin                                                                
sysadmin@localhost:~$ cd /etc                                                 
sysadmin@localhost:/etc$ cd ~                                                 
sysadmin@localhost:~$ pwd                                                     
/home/sysadmin                                                                
sysadmin@localhost:~$

Nombres de ruta absolutos vs. relativos

Recuerde que una ruta de acceso es esencialmente una descripción de dónde se encuentra un archivo o directorio en el sistema de archivos. También puede considerar una ruta de acceso como direcciones que indican al sistema dónde encontrar un archivo o directorio. Por ejemplo, el comando cd /etc/perl/Net significa "cambiar al directorio Net, que encontrará en el directorio perl, que encontrará en el directorio etc, que encontrará en el directorio /".

sysadmin@localhost:~$ cd /etc/perl/Net                                 
sysadmin@localhost:/etc/perl/Net$ 
Sin embargo, ¿qué pasaría si estuviera en el directorio /etc/perl y quisiera ir al directorio /etc/perl/Net? Sería tedioso para escribir el camino completo para llegar a un directorio que es sólo un nivel por debajo de su ubicación actual. En una situación como esta, desea utilizar una ruta relativa:

sysadmin@localhost:/etc/perl$ cd Net                                    
sysadmin@localhost:/etc/perl/Net$ 
Una ruta relativa proporciona direcciones utilizando su ubicación actual como punto de referencia. Recuerde que esto es diferente de rutas absolutas, que siempre requieren que utilice el directorio raíz como un punto de referencia.

Hay una práctica técnica de ruta relativa que puede utilizar para subir un nivel en la estructura de directorios: el directorio .. Independientemente del directorio en el que se encuentre, .. siempre representa un directorio más alto que su directorio actual (con la excepción de cuando se encuentra en el directorio /):

sysadmin@localhost:/etc/perl/Net$ pwd                                 
/etc/perl/Net                                                          
sysadmin@localhost:/etc/perl/Net$ cd ..                                
sysadmin@localhost:/etc/perl$ pwd                                      
/etc/perl                                                              
sysadmin@localhost:/etc/perl$

Mientras que el doble punto (..) se utiliza para referirse al directorio por encima del directorio actual, el punto único (.) Se utiliza para referirse al directorio actual. Sería inútil que un administrador se mueva al directorio actual escribiendo cd . (Aunque en realidad funciona). Es más útil referirse a un elemento del directorio actual utilizando la anotación ./ Por ejemplo:

sysadmin@localhost:~$ pwd                                              
/home/sysadmin                                                         
sysadmin@localhost:~$ cd ./Downloads/                                  
sysadmin@localhost:~/Downloads$ pwd                                    
/home/sysadmin/Downloads                                               
sysadmin@localhost:~/Downloads$ cd ..                                  
sysadmin@localhost:~$ pwd                                              
/home/sysadmin                                                         
sysadmin@localhost:~$

Bibliografía

NDG Linux Essentials - Chapter 6 - Working with Files and Directories

lunes, 22 de mayo de 2017

14. Páginas MAN en terminal de Linux

UNIX fue el sistema operativo desde el que se creó la fundación Linux. Los desarrolladores de UNIX crearon documentos de ayuda llamados man pages (man significa manual).

Las páginas de manual se utilizan para describir las características de los comandos. Ellos le proporcionarán una descripción básica del propósito del comando y detalles sobre las opciones del comando.

Para ver el manual de ayuda de un comando se ejecuta en la terminal el comando: man comando, por ejemplo el comando man cal desplegará la página de ayuda para el comando cal:




viernes, 19 de mayo de 2017

13. Introducción de variables de la shell BASH

Una variable de shell de BASH es una característica que le permite al usuario o al shell almacenar datos. Estos datos se pueden utilizar para proporcionar información crítica del sistema o para cambiar el comportamiento de cómo funciona el shell BASH.

Las variables reciben un nombre y se almacenan temporalmente en la memoria. Al cerrar una ventana de terminal o shell, todas las variables se pierden. Sin embargo, el sistema recrea automáticamente muchas de estas variables cuando se abre un nuevo shell.

Para mostrar el valor de una variable, puede utilizar el comando echo. El comando echo se utiliza para mostrar la salida en la terminal; En el ejemplo siguiente, el comando mostrará el valor de la variable HISTSIZE:

sysadmin@localhost:~$ echo $HISTSIZE                     
1000                                                             
sysadmin@localhost:~$
La variable HISTSIZE define cuántos comandos anteriores se deben almacenar en la lista de historiales. Para mostrar el valor de la variable, use un signo de dólar $ antes del nombre de la variable. Para modificar el valor de la variable, no utilice el carácter $:

sysadmin@localhost:~$ HISTSIZE=500                                            
sysadmin@localhost:~$ echo $HISTSIZE                              
500                                                             
sysadmin@localhost:~$




12. Opciones en los comandos de linux

Las opciones se pueden utilizar con comandos para expandir o modificar la forma en que se comporta un comando. Las opciones suelen ser de una sola letra; Sin embargo, a veces serán "palabras" también. Normalmente, los comandos antiguos usan letras simples mientras que los comandos más recientes utilizan palabras completas para las opciones.

Las opciones de una sola letra están precedidas por un solo guión -.
Las opciones de palabra completa están precedidas por dos guiones --.

Por ejemplo, puede utilizar la opción -l con el comando ls para mostrar más información sobre los archivos que se enumeran. El comando ls -l listará los archivos contenidos en el directorio actual y proporcionará información adicional, como los permisos, el tamaño del archivo y otra información:

sysadmin@localhost:~$ ls -l                                       
total 0                                                           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Desktop             
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Documents           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Downloads           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Music               
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Pictures            
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Public               
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Templates           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Videos              
sysadmin@localhost:~$
En la mayoría de los casos, las opciones se pueden utilizar junto con otras opciones. Por ejemplo, el comando ls -l -h o ls -lh mostrará los archivos con detalles, pero mostrará los tamaños de archivo en formato legible en lugar del valor predeterminado (bytes).

El orden de las opciones combinadas no es importante. La opción -h también tiene una forma de palabra completa: --human-readable.

11. Formato de comandos

Muchos comandos pueden usarse por sí mismos sin más entrada. Algunos comandos requieren entradas adicionales para funcionar correctamente. Esta entrada adicional viene en dos formas: opciones y argumentos.

El formato típico para un comando es el siguiente:

comando [opciones] [argumentos]
Las opciones se utilizan para modificar el comportamiento básico de un comando, mientras que los argumentos se utilizan para proporcionar información adicional (como un nombre de archivo o un nombre de usuario). Cada opción y argumento normalmente está separado por un espacio, aunque las opciones pueden combinarse a menudo.

El comando ls proporcionará ejemplos útiles. Por sí mismo, el comando ls mostrará los archivos y directorios contenidos en su directorio de trabajo actual:

sysadmin@localhost:~$ ls                                           
Desktop  Documents  Downloads  Music  Pictures  Public  Templates   Videos    
sysadmin@localhost:~$
También se puede pasar un argumento al comando ls para especificar el contenido de qué directorio se listará. Por ejemplo, el comando ls /etc/ppp listará el contenido del directorio /etc/ppp en lugar del directorio actual:

sysadmin@localhost:~$ ls /etc/ppp                                 
ip-down.d  ip-up.d                                                
sysadmin@localhost:~$




martes, 9 de mayo de 2017

10. Línea de comandos


Si usted es como la mayoría de la gente, probablemente esté más familiarizado con el uso de una interfaz gráfica de usuario (GUI) para controlar su computadora. Introducido a las masas por Apple en la computadora Macintosh y popularizado por Microsoft, una interfaz gráfica de usuario proporciona una forma fácil y detectable de administrar su sistema. Sin una GUI, algunas herramientas para gráficos y video no serían prácticas.

Antes de la popularidad de la interfaz gráfica de usuario, la interfaz de línea de comandos (CLI) era la forma preferida de controlar una computadora. La CLI se basa únicamente en la entrada del teclado. Todo lo que desea que la computadora haga se transmite escribiendo comandos en lugar de hacer clic en los iconos.

Si nunca ha utilizado una CLI, al principio puede resultar desafiante porque requiere memorizar comandos y sus opciones. Sin embargo, una CLI proporciona:
  • un control más preciso
  • una mayor velocidad
  • capacidad de automatizar fácilmente las tareas a través de secuencias de comandos
Aunque Linux tiene muchos entornos GUI, podrá controlar Linux mucho más eficazmente utilizando la Interfaz de línea de comandos.



lunes, 8 de mayo de 2017

33. Escaneo de puertos

El escaneo de puertos es un proceso de sondeo de la computadora, el servidor u otro host de red para conocer los puertos abiertos. En redes, a cada aplicación que se ejecuta en un dispositivo se le asigna un identificador llamado número de puerto. Este número de puerto se utiliza en ambos extremos de la transmisión para pasar los datos correctos a la aplicación correcta
El escaneo de puertos se puede utilizar con fines maliciosos como herramienta de reconocimiento para:
  • identificar el sistema operativo
  • los servicios que se ejecutan en una computadora

O se puede utilizar inofensivamente por parte de un administrador de red para verificar las políticas de seguridad de red en la red.

Con el propósito de evaluar el firewall de la red de computadoras y la seguridad de los puertos, puede utilizar una herramienta de escaneo de puertos, como Nmap, para encontrar todos los puertos abiertos en su red
El escaneo de puertos se puede considerar como precursor para un ataque a la red y, por lo tanto, no debe realizarse en servidores públicos en Internet o en la red de una empresa sin permiso.

Nmap

El escaneo de Nmap designará cualquier servicio que se esté ejecutando (como servicios web, servicios de correo, etc.) y los números de puerto. El escaneo de puertos generalmente provoca una de tres respuestas:

  • Abierto o aceptado: el host respondió e indicó que hay un servicio escuchando en el puerto.
  • Cerrado, denegado o no escucha: el host respondió e indicó que se denegarán las conexiones en el puerto.
  • Filtrado, caído o bloqueado: no hubo respuesta del host.
Para ejecutar escaneo del puerto de la red desde fuera de la red, deberá iniciar el escaneo desde fuera de la red. Esto implicará la ejecución de un escaneo de puertos de Nmap con la dirección IP pública del firewall o router. Para obtener su dirección IP pública, utilice un motor de búsqueda, como Google, con la consulta “cuál es mi dirección IP”. El motor de búsqueda le devolverá su dirección IP pública.

32. Tipos de firewall

Un firewall (cortafuegos) es una pared o partición diseñada para evitar que el fuego se propague de una parte a otra de un edificio. 
En las redes de computadoras, un firewall está diseñado para controlar o filtrar la entrada o salida de comunicaciones de un dispositivo o una red, como se muestra en la figura.

Un firewall puede:
  • instalarse en una única computadora con el propósito de proteger dicha computadora (firewall ejecutado en un host)
  • ser un dispositivo de red independiente que protege toda una red de computadoras y todos los dispositivos host en dicha red (firewall basado en la red).

Durante años, dado que los ataques a la computadora y la red se han vuelto más sofisticados, se han desarrollado nuevos tipos de firewalls que atienden diferentes fines en la protección de la red. Esta es una lista de los tipos comunes de firewall:

  • Firewall de capa de red: filtrado basado en las direcciones IP de origen y destino.
  • Firewall de capa de transporte: filtrado basado en puertos de origen y datos de destino y filtrado basado en el estado de la conexión.
  • Firewall de capa de aplicación: filtrado basado en la aplicación, el programa o el servicio.
  • Firewall de aplicación consciente del contexto: filtrado basada en el usuario, el dispositivo, la función, el tipo de aplicación y el perfil de amenazas.
  • Servidor proxy: filtrado de solicitudes de contenido web, como URL, dominio, medios, etcétera.
  • Servidor proxy inverso: ubicados frente a los servidores web, los servidores proxy inversos protegen, ocultan, descargan y distribuyen el acceso a los servidores web.
  • Firewall de traducción de direcciones de red (NAT): ocultan o enmascaran las direcciones privadas de los hosts de red.
  • Firewall basado en host: filtrado de puertos y llamadas de servicio del sistema en un sistema operativo de la computadora.

Bibliografía

Introduction to Cybersecurity - CISCO