¿Qué son las DNS?

 Cuando se traslada una página web de proveedor, una de las cosas que nos suelen pedir es que cambiemos las DNS del dominio, pero la mayoría de los usuarios no entiende de lo que se habla y menos de lo que se tiene que hacer.

 Las DNS son las siglas que forman la denominación Domain Name System o Sistema de Nombres de Dominio y además de apuntar los dominios al servidor correspondiente, nos servirá para traducir la dirección real, que es una relación numérica denominada IP, en el nombre del dominio.

¿Para que Sirven las DNS?

Pues bien, los DNS sirven para indicarle al usuario que teclea un dominio a que servidor debe ir a recoger la página web que desea consultar.

DNS es un sistema que sirve para traducir los nombres en la red, y está compuesto por tres partes con funciones bien diferenciadas.

  • Cliente DNS: está instalado en el cliente (es decir, nosotros) y realiza peticiones de resolución de nombres a los servidores DNS.
  • Servidor DNS: son los que contestan las peticiones y resuelven los nombres mediante un sistema estructurado en árbol. Las direcciones DNS que ponemos en la configuración de la conexión, son las direcciones de los Servidores DNS.
  •     Zonas de autoridad: son servidores o grupos de ellos que tienen asignados resolver un conjunto de dominios determinado (como los .es o los .org).

¿Cómo funcionan las DNS?

  • Tecleamos en nuestro navegador www.xatakaon.com

  • Nuestro Sistema Operativo comprueba la petición y ve que no tiene en su memoria caché la dirección de ese dominio (porque suponemos que no nos habéis visitado nunca en ese ordenador), entonces realiza la petición al servidor DNS configurado manualmente o mediante DHCP.

  • El servidor DNS que tenemos configurado tampoco tiene memorizada la dirección IP de ese dominio, por lo que realiza una petición al servidor encargado de la zona de autoridad .com.

  • El servidor encargado de la zona de autoridad .com tiene una tabla de datos en los que están almacenados las direcciones IP de las máquinas y sus dominios. Lo busca y le responde al servidor DNS que está almacenado en la máquina con dirección amazon-gw.ip4.tinet.net (77.67.82.130).

  • Es entonces cuando el servidor DNS que tenemos configurado realiza una petición a amazon-gw.ip4.tinet.net para saber en qué parte de su máquina (recordad que una máquina puede alojar varias páginas) está www.xatakaon.com

  • El servidor donde está la página alojada busca en su tabla de correspondencias y le responde diciendo que está en la dirección IP 178.236.0.213.

  • Es entonces cuando 178.236.0.213 le devuelve la consulta a nuestra aplicación (navegador en esta ocasión) y se comienzan a intercambiar paquetes para procesar el proceso.

Cómo y por qué deberías cambiar la DNS para navegar más rápido y seguro.

En función del DNS que estemos utilizando, vamos a poder beneficiarnos de más velocidad de navegación en internet, dado que servicios como el de Google o el de OpenDNS resuelven de forma más rápida que los que ofrecen los propios operadores de telecomunicaciones, y es algo que podemos comprobar haciendo un benchmark. Además, en función de la opción que escojamos, probablemente mejoremos la fiabilidad de la conexión, puesto que hay DNS más estables que los que ofrecen los operadores.

Por supuesto, también vamos a poder aplicar controles parentales para proteger a los más pequeños de la casa con DNS externos que eviten accesos no autorizados a determinados sitios web de Internet. Otro factor que deberíamos tener en cuenta es que nos ayudará a protegernos contra el phishing, uno de los mayores peligros en Internet actualmente, a través del cual nos pueden robar datos bancarios, por ejemplo, o credenciales de determinados servicios de Internet.

¿Qué son los registros DNS?

 Los registros DNS son archivos de mapeo o sistemas que le indican a un servidor DNS a qué dirección IP está asociado un dominio particular. También le indican a los servidores DNS cómo manejar las solicitudes que se envían a cada nombre de dominio. Por ejemplo, cuando escribe www.dominioejemplo.com en su navegador y pulsa Intro, el DNS lo traducirá a la dirección IP exacta donde se encuentra alojado el dominio.

Explicación de los diferentes tipos de sintaxis de DNS.

Diferentes cadenas de letras se utilizan para indicar ciertas acciones al servidor DNS. Estas letras se denominan sintaxis de DNS. A continuación verá una lista de diferentes sintaxis de DNS con una breve explicación del uso y significado de cada una:

A

El registro “A” hace referencia a la Dirección y es el tipo más básico de sintaxis de DNS.  Indica la dirección de IP real de un dominio.  El registro “AAAA” (también conocida como dirección IPV6) indica el nombre de alojamiento a una dirección IPv6 de 128 bits.  Las direcciones DNS normales se mapean para direcciones IPv4 de 32 bits.

CNAME

El registro de “CNAME” significa nombre canónico y su función es hacer que un dominio sea un alias para otro. El CNAME generalmente se utiliza para asociar nuevos subdominios con dominios ya existentes de registro A.

MX

El registro “MX” o intercambio de correo es principalmente una lista de servidor de intercambio de correo que se debe utilizar para el dominio.

PTR

El registro “PTR” significa “Punto de terminación de red”. La sintaxis de DNS es responsable del mapeo de una dirección Ipv4 para el CNAME en el alojamiento.

NS

El registro “NS” significa Servidor de nombres e indica qué nombre del servidor es el autorizado para el dominio.

SOA

Un registro “SOA” significa “Comienzo de autoridad”. Evidentemente, es uno de los registros DNS más importantes, dado que guarda información esencial, como la fecha de la última actualización del dominio y otros cambios y actividades.

SRV

Un registro “SRV” significa “Servicio”. Se utiliza para la definición de un servicio TCP en el que opera el dominio.

TXT

Un registro “TXT” significa “Texto”. Esta sintaxis de DNS permite que los administradores inserten texto en el registro DNS. A menudo se utiliza para denotar hechos o información sobre el dominio.

DHCP

 DHCP (sigla en inglés de Dynamic Host Configuration Protocol) es un protocolo de red que permite a los nodos de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van estando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después.

Características

Provee los parámetros de configuración a las computadoras conectadas a la red informática con el protocolo TCP/IP (Máscara de red, puerta de enlace y otros) y también incluyen mecanismo de asignación de direcciones de IP. Este protocolo se publicó en octubre de 1993, estando documentado actualmente en la RFC 2131 . Los últimos publicados como RFC 3415.

Asignación de direcciones IP

Sin DHCP, cada dirección IP debe configurarse manualmente en cada ordenador y, si el ordenador se mueve a otro lugar en otra parte de la red, se debe configurar otra dirección IP diferente. El DHCP le permite al administrador supervisar y distribuir de forma centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una nueva IP si el ordenador es conectado en un lugar diferente de la red.

El protocolo DHCP incluye tres métodos de asignación de direcciones IP:

  • Asignación manual o estática: Asigna una dirección IP a una máquina determinada. Se suele utilizar cuando se quiere controlar la asignación de dirección IP a cada cliente, y evitar, también, que se conecten clientes no identificados.
  • Asignación automática: Asigna una dirección IP de forma permanente a una máquina cliente la primera vez que hace la solicitud al servidor DHCP y hasta que el cliente la libera. Se suele utilizar cuando el número de clientes no varía demasiado.
  • Asignación dinámica: el único método que permite la reutilización dinámica de las direcciones IP. El administrador de la red determina un rango de direcciones IP y cada computadora conectada a la red está configurada para solicitar su dirección IP al servidor cuando la tarjeta de interfaz de red se inicializa. El procedimiento usa un concepto muy simple en un intervalo de tiempo controlable. Esto facilita la instalación de nuevas máquinas clientes a la red.
    Anatomía del protocolo

    (Autoridad de Números Asignados en Internet según siglas en inglés) en BOOTP: 67/UDP para las computadoras servidor y 68/UDP para los clientes.

    DHCP Release

    Los clientes envían una petición al servidor DHCP para liberar su dirección IP. Como los clientes generalmente no de broadcast. El router puede ser configurado para redireccionar los paquetes DHCP a un servidor DHCP en una subred diferente. La implementación cliente crea un paquete UDP (Protocolo de Datagramas de Usuario según siglas en inglés) con destino 255.255.255.255 y requiere también su última dirección IP conocida, aunque esto no es necesario y puede llegar a ser ignorado por el servidor.

    DHCP Offer

    El servidor determina la configuración basándose en la dirección del soporte físico de la computadora cliente especificada en el registro CHADDRvbnv. El servidor especifica la dirección IP en el registro YIADDR. Como la cual se ha dado en los demás parámetros.

    DHCP Request

    El cliente selecciona la configuración de los paquetes recibidos de DHCP Offer. Una vez más, el cliente solicita una dirección IP específica que indicó el servidor

    DHCP Acknowledge

    Mensaje de confirmación y cierre desde el servidor hacia el cliente indicando los parámetros definitivos.

    DHCP Pack

    El servidor DHCP responde a la DHCPREQUEST con un DHCPACK, completando así el ciclo de iniciación. The Source address is the DHCP server IP address, and the Destination address is still 255.255.255.255. Fuente La dirección es la dirección IP del servidor de DHCP, y la dirección de destino es aún 255.255.255.255. The YIADDR field contains the client’s address, and the CHADDR and DHCP: Client Identifier fields are the physical address of the network card in the requesting client. El YIADDR campo contiene la dirección del cliente, y la CHADDR y DHCP: Client Identifier campos son la dirección física de la tarjeta de red en el cliente. The DHCP Option section identifies the packet as an ACK. El DHCP Opción sección identifica el paquete como un ACK.

    DHCP Inform

    El cliente envía una petición al servidor de DHCP: para solicitar más información que la que el servidor ha enviado con el DHCPACK original; o para repetir los datos para un uso particular – por ejemplo, los browsers usan DHCP Inform para obtener la configuración de los proxies a través de WPAD. Dichas peticiones no hacen que el servidor de DHCP refresque el tiempo de vencimiento de IP en su base de datos.

Permisos y derechos en Linux

En GNU/Linux, los permisos o derechos que los usuarios pueden tener sobre determinados archivos contenidos en él se establecen en tres niveles claramente diferenciados. Estos tres niveles son los siguientes:

Permisos del propietario.
Permisos del grupo.
Permisos del resto de usuarios (o también llamados “los otros”).

Para tener claros estos conceptos, en los sistemas en red (como lo es el pingüino) siempre existe la figura del administrador, superusuario o root. Este administrador es el encargado de crear y dar de baja a usuarios, así como también, de establecer los privilegios que cada uno de ellos tendrá en el sistema. Estos privilegios se establecen tanto para el directorio HOME de cada usuario como para los directorios y archivos a los que el administrador decida que el usuario pueda acceder.

Permisos del propietario

El propietario es aquel usuario que genera o crea un archivo/carpeta dentro de su directorio de trabajo (HOME), o en algún otro directorio sobre el que tenga derechos. Cada usuario tiene la potestad de crear, por defecto, los archivos que quiera dentro de su directorio de trabajo. En principio, él y solamente él será el que tenga acceso a la información contenida en los archivos y directorios que hay en su directorio HOME.

Permisos del grupo

Lo más normal es que cada usuario pertenezca a un grupo de trabajo. De esta forma, cuando se gestiona un grupo, se gestionan todos los usuarios que pertenecen a éste. Es decir, es más fácil integrar varios usuarios en un grupo al que se le conceden determinados privilegios en el sistema, que asignar los privilegios de forma independiente a cada usuario.

Permisos del resto de usuarios

Por último, también los privilegios de los archivos contenidos en cualquier directorio, pueden tenerlos otros usuarios que no pertenezcan al grupo de trabajo en el que está integrado el archivo en cuestión. Es decir, a los usuarios que no pertenecen al grupo de trabajo en el que está el archivo, pero que pertenecen a otros grupos de trabajo, se les denomina resto de usuarios del sistema.

¿Cómo identifico todo esto?

Identificar esto es simple: Abre una terminal y realiza lo siguiente:

$ ls -l

Nota: son letras “L” minúsculas.

Como podrán observar, este comando despliega o “lista” el contenido de mi HOME, en el lado izquierdo nos muestra quien es el propietario y en el lado derecho nos muestra el grupo al que pertenece cada uno de los archivos y carpetas anteriormente listadas.

Tipos de permisos en GNU/Linux

Antes de aprender cómo se establecen los permisos en GNU/Linux, debemos saber cómo se pueden diferenciar los diferentes tipos de archivos que el sistema puede tener. Cada archivo en GNU/Linux queda identificado por 10 caracteres mismos a los que se les denomina máscara.

Cada archivo en GNU/Linux queda identificado por 10 caracteres mismos a los que se les denomina máscara. De estos 10 caracteres, el primero (de izquierda a derecha) hace referencia al tipo de archivo. Los 9 siguientes, de izquierda a derecha y en bloques de 3, hacen referencia a los permisos que se le conceden, respectivamente, al propietario, al grupo y al resto u otros.

Los siguientes nueve caracteres son los permisos que se les concede a los usuarios del sistema. Cada tres caracteres, se referencian los permisos de propietario, grupo y resto de usuarios.

Los caracteres que definen estos permisos son los siguientes:

Permiso Identifica
Sin permiso
r Permiso de lectura
w Permiso de escritura
x Permiso de ejecución

Permisos para archivos

Lectura: permite, fundamentalmente, visualizar el contenido del archivo.
Escritura: permite modificar el contenido del archivo.
Ejecución: permite ejecutar el archivo como si de un programa ejecutable se tratase.

Permisos para directorios

Lectura: Permite saber qué archivos y directorios contiene el directorio que tiene este permiso.
Escritura: permite crear archivos en el directorio, bien sean archivos ordinarios o nuevos directorios. Se pueden borrar directorios, copiar archivos en el directorio, mover, cambiar el nombre, etc.
Ejecución: permite situarse sobre el directorio para poder examinar su contenido, copiar archivos de o hacia él. Si además se dispone de los permisos de escritura y lectura, se podrán realizar todas las operaciones posibles sobre archivos y directorios.

Cómo asignar o restar permisos o derechos en GNU/Linux.

Antes de comenzar, debemos de tener en cuenta que cuando damos de alta o creamos un usuario en el sistema, le concedemos de forma automática unos privilegios.

Estos privilegios, por supuesto, no serán totales, es decir, los usuarios no dispondrán, normalmente, de los mismos permisos y derechos del superusuario. Cuando el usuario se crea, el sistema genera por defecto los privilegios del usuario para manejo de archivos y para manejo de directorios. Evidentemente, éstos pueden ser modificados por el administrador, pero el sistema genera unos privilegios más o menos válidos para la mayoría de las operaciones que cada usuario realizará sobre su directorio, sus archivos y sobre los directorios y archivos del resto de usuarios. Por lo general, son los siguientes permisos:

<° Para archivos: rw- r- r-
<° Para directorios: rwx rwx rwx

 

Tipo Usuario Grupo Resto de usuarios (otros)
rw- r- r-

Asignación de permisos

El comando chmod (“change mode”) permite modificar la máscara para que se puedan realizar más o menos operaciones sobre archivos o directorios, dicho de otra forma, con chmod puedes quitar o eliminar derechos a cada tipo de usuarios. Si no se especifica el tipo de usuario al que queremos quitar, poner o asignar privilegios, lo que sucederá al realizar la operación es afectar a todos los usuarios simultáneamente.

 

Busqueda de archivos en Linux

Cómo buscar archivos en Linux

Para realizar esta operación utilizando la terminal, todo radica en utilizar el comando find.

Si queremos buscar un archivos deberíamos utilizar:

find / -name “nombre del archivo”

Comandos para buscar en linux

find

El clasico y mas sencillo de usar. Deberemos indicar el directorio en el que buscar y el nombre del archivo que deseamos encontrar. Por ejemplo:

find /home/usuario/minombre -name archivo.txt

Eso buscara el archivo.txt en la carpeta ‘minombre’
Si no saben donde buscar entonces en donde va el directorio solo deben poner una barra asi “/” para que busque en todos los directorios de la pc. No debemos olvidar el criterio “-name” antes del nombre del archivo buscado.

Documentación en GNU/Linux

Las distintas distribuciones comerciales de GNU/Linux poseen documentación en formato impreso. Pero el mismo no cubre la totalidad de funcionalidades y programas del SO, sino solamente lo que corresponde a su implementación particular, quedando en manos de los usuarios el adquirir documentación más específica. Sin embargo, existe tanto en la misma distribución como en Internet infinidad de documentación que puede ser consultada.

Existen numerosos proyectos que sirven para documentar cada aspecto del sistema y sus aplicaciones. Uno de los proyectos más conocidos es el LDP (Proyecto de Documentación de Linux), que se alza como una entidad centralizadora de documentación. Esto es bueno para tener un solo lugar en donde buscar toda la información necesaria.

GNU/Linux cuenta con gran cantidad de documentación en varios formatos y uno de los desarrollados por el LDP son los HOWTO que están disponibles muchas veces con la misma distribución o a través de Internet. En muchos casos estos HOWTO fueron escritos por los mismos autores que los programas y en otros por personas que se han visto en un problema real en una empresa, universidad u otra institución. También existen lo que se denomina MINI-HOWTO, que son guías rápidas para la pronta implementación de un servicio o un programa, sin detenerse en aspectos que no se utilizarán o se utilizarán rara vez. Se pueden encontrar, tanto los HOWTO como los MINI-HOWTO, en distintos formatos como en ASCII, PDF, PS, HTML, DocBook, etc. En español existe un mirror de documentación del proyecto LUCAS (Lin​ux en castellano), en el cual se podrán encontrar la mayoría de ellos.

Uno de las formas de documentación más populares y simples de acceder es el uso de las man-pages. Estas páginas de manual vienen en todas las distribuciones y cubren con notable detalle el uso de comandos o programas. Además los programas nuevos que se instalen traerán en su mayoría man-pages que se podrán acceder de igual manera que a las propias del sistema. Se accede a ellas con el comando:

Existen varias opciones que se pueden utilizar y se pueden buscar tecleando:

con lo que aparecerán las páginas de manual del comando man.

Muchas veces las páginas de manual indican un número luego del comando Ej. ls. Esto indica que la información del comando “ls” puede encontrarse en la sección 1. Esta forma se remonta a cuando las man-pages de los sistemas Unix venían en libros impresos que se dividían en secciones donde se abordaba el tema de un comando de acuerdo a su aplicación. También se puede contar con las páginas de INFO de cada comando, utilizando el comando

donde se encontrara información menos detallada que en las man-pages pero de pronta utilización.

Un lugar donde buscar cuando se instale un nuevo programa es los archivos README. Estos explican todo el proceso de instalación así como también los requerimientos necesarios. Además cada programa cuenta con documentación propia que se podrá encontrar en los directorios /usr/doc y /usr/share/doc, pudiendo haber otros según el programa y/o la distribución. Las fuentes del kernel también poseen una gran cantidad de información sobre aspectos generales del SO y su funcionamiento, siendo una muy buena fuente de información al momento de meter mano al sistema, abundando los comentarios técnicos, dirigidos por los distintos desarrolladores a sus pares. Existen además muchísimas guías que cubren aspectos muy importantes y de alta complejidad del SO y sus aplicaciones. Cabe destacar que mucha de esta información se encuentra en español pero existe un número mucho mayor que esta en inglés. Proyectos como Lucas tratan de que se revierta esto, aportando con su trabajo un aporte invaluable para toda la comunidad hispanohablante. Por todo lo expuesto hasta aquí, puede decirse que GNU/Linux es uno de los sistemas con mayor cantidad de documentación que existe, tanto libremente como en forma de libros impresos por editoriales de renombre en el campo técnico. No quedan excusas para no informarse.

Permisos y Usuarios en Linux

Permisos del propietario

El propietario es aquel usuario que genera o crea un archivo/carpeta dentro de su directorio de trabajo (HOME), o en algún otro directorio sobre el que tenga derechos. Cada usuario tiene la potestad de crear, por defecto, los archivos que quiera dentro de su directorio de trabajo. En principio, él y solamente él será el que tenga acceso a la información contenida en los archivos y directorios que hay en su directorio HOME.

Permisos del grupo

Lo más normal es que cada usuario pertenezca a un grupo de trabajo. De esta forma, cuando se gestiona un grupo, se gestionan todos los usuarios que pertenecen a éste. Es decir, es más fácil integrar varios usuarios en un grupo al que se le conceden determinados privilegios en el sistema, que asignar los privilegios de forma independiente a cada usuario.

Permisos del resto de usuarios

Por último, también los privilegios de los archivos contenidos en cualquier directorio, pueden tenerlos otros usuarios que no pertenezcan al grupo de trabajo en el que está integrado el archivo en cuestión. Es decir, a los usuarios que no pertenecen al grupo de trabajo en el que está el archivo, pero que pertenecen a otros grupos de trabajo, se les denomina resto de usuarios del sistema.

Comandos de redes en Linux

Comandos de redes

  • ping. Envía un datagrama a otro ordenador pidiendo que le envíe de regreso una respuesta.
  • ssh. Es para iniciar sesión y ejecutar comandos desde un ordenador remoto utilizando las credenciales de una cuenta remota.
  • netstat. Muestra todas las conexiones de red en un sistema as traves de “sockets” los cuales pueden ser: TCP, UDP y Unix, tanto conectados como en espera de conexión.
  • tracepath o Traceroute. Herramienta de diagnostico la cual te permite mostrar todos los hosts por los que pasa un paquete en la red hasta llegar a su destino.
  • who. Muestra los datos de los usuarios que han iniciado sesion en el equipo.
  • mtr. Combina los comandos ping con tracepath en un solo comando.
  • curl & get. Estos dos comandos te permiten descargar un fichero sin abandonar la terminal.
  • host. Si le damos un nombre de dominio y veremos la IP asociada con la misma, en cambio si le damos la IP veremos el nombre de dominio asociado.
  • whois. Nos muestra información sobre un dominio. Ejemplo: whois google.com
  • ifplugstatus. Nos dice si un interface de red esta conectado a un cable.
  • ifconfig. Se utiliza para modificar, configurar y hacer debug de tu sistema de red e interfaces. Es una forma fácil de ver las direcciones IP y otros datos de la tarjeta de red.
  • dhclient. Te permite liberar (usando el parametro -r) la IP actual y obtener una nueva desde el servidor DHCP de tu sistema.
  • ifdown & ifup. Es lo mismo que teclear ifconfig up ó ifconfig down, activa o desactiva la tarjeta de red.
  • iwconfig. Se utiliza para manejar las interfaces wireless.
  • iptraf. Nos dan detalles en forma gráfica del tráfico de red.
  • nslookup.Consulta un DNS interactivamente. Para obtener la dirección IP conociendo el nombre, y viceversa.

Directorios de linux

La jerarquía de directorios de Linux y otros derivados de Unix. 

Árbol de directorios

 

La estructura de los directorios el Linux, así como su contenido y funciones, viene definida en el denominado Filesystem Hierarchy Standard o FHS por sus siglas en inglés, que en otras palabras viene a ser el estándar de jerarquía para los sistemas de archivos en sistemas Linux y otros derivados de UNIX.

El FHS nació en 1994 y es actualmente mantenida por la Linux Foundation. Aun siendo un estándar, hay casos de distribuciones GNU/Linux que directamente apuestan por él (Gobo Linux es un ejemplo de ello). Otras, por contra, si que hacen un esfuerzo en adaptarse en lo máximo posible a él, pero suelen desviarse en algunas áreas.

La FHS distingue entre lo que serían directorios estáticos, que son aquellos que contienen binarios, bibliotecas, documentación, etc., de los dinámicos, que son aquellos que requieren de acciones más a menudo, tales como copias de seguridad, etc.

También podemos diferencias claramente lo que son los directorios compartibles, que significa que contienen ficheros que pueden utilizarse desde otros dispositivos, de los no compartibles, que solo pueden utilizarse desde el dispositivo en el que se encuentran.

Antes de empezar a listar los diferentes directorios, es importante que sepas que el hecho de que todos ellos parten de una única raíz común, no significa que varios de ellos no puedan estar en particiones separadas del resto.

De hecho, en muchas distros GNU/Linux es una práctica muy común el hecho ubicar ciertos directorios en particiones separadas del resto.

Listado de las Principales Directorios y sus Funciones

/

Toda la estructura de directorios en los sistemas basados en UNIX parte de un directorio raíz también llamado directorio root y que se simboliza por una barra inclinada o /. De este directorio, es desde donde nacen todo el resto de directorios, independientemente que estén almacenados físicamente en discos o unidades separadas.

Cualquier dirección de archivo o carpeta en Linux empieza por el directorio raíz o /, seguido de todos los directorios y subdirectorios que que lo contienen, separados cada uno de ellos por /.

A continuación conocerás con más en detalle a todos los directorios principales que parten del directorio raíz, junto con algunos de sus subdirectorios.

/bin

El directorio /bin es un directorio estático y es donde se almacenan todos los binarios necesarios para garantizar las funciones básicas a nivel de usuario. Solo almacena los ejecutables de usuario, ya que los binarios necesarios para tareas administrativas gestionadas por el usuario root o superusuario del sistema se encuentran en el directorio /sbin.

Incluye también los binarios que permiten la ejecución de varias utilidades estándar de la terminal de Linux, concretamente catcd, cp, echo, grep, gzip, kill, ls, mv, rm, ping, su, ps, tar y vi.

/boot

Es un directorio estático e incluye todos los ejecutables y archivos que son necesarios en el proceso de arranque del sistema, y que deberán ser utilizados antes que que el kernel empiece a dar las órdenes de ejecución de los diferentes módulos del sistema. Es también donde se encuentra el gestor de arranque GRUB.

En algunas distribuciones, es común que ese directorio se almacene en su propia partición separada del resto. Esto suele darse sobretodo en el caso de de que utilicen LVM por defecto, ya que tradicionalmente el gestor de arranque GRUB (en versiones anteriores a la 2) no podía arrancar desde LVM, por lo que se requería que estuviera en una partición separada.

De hecho, si en una instalación normal de Ubuntu o Debian optas por utilizar LVM, verás que el instalador ya te genera un esquema de particiones con el directorio boot en una partición aparte.

En estos casos es importante prever bien el espacio que le vayas a dar a la partición, ya que a la larga, con la acumulación de diferentes actualizaciones del Kernel, es común que se quede sin espacio y debas hacer limpieza de versiones antiguas del kernel. En este post que te acabo de enlazar lo tienes explicado con más detalle.

/dev

Este directorio incluye todos los dispositivos de almacenamiento, en forma de archivos, conectados al sistema, es decir, cualquier disco duro conectado, partición, memoria USB, o CDROM conectado al sistema y que el sistema pueda entender como un volumen lógico de almacenamiento.

Siendo esto así, verás que la ruta en la que se encuentra cualquier volumen (partición o dispositivo externo) conectado al sistema siempre empieza por /dev. Este es el directorio que contiene, por decirlo de algún modo, la información de cada uno de los volúmenes, a diferencia del directorio /media, que verás más adelante, que lo que contiene son solo los puntos de montaje, pero no la información real de estos volúmenes.

Para ver esto en la práctica, si abres una ventana de terminal y ejecutas el comando sudo fdisk -l, verás la estructura de particiones de tu sistema. En una instalación típica de cualquier distro GNU/Linux suele ser la siguiente:

/dev/sda1 - Partición principal
/dev/sda2 - Partición extendida 
/dev/sda5 - Partición Swap

La partición sda1 suele ser la partición principal, Obviamente si has editado manualmente el esquema de particiones, en tu caso será diferente, esto es solo un ejemplo típico para ayudar a explicar la función del directorio /dev.

Eso en cuanto a particiones. Si se trata de un dispositivo externo, el volumen estará igualmente dentro de /dev, pero en este caso varía el nombre que el sistema le asigna a dicho volumen. Generalmente la estructura suele ser la siguiente (si ejecutas nuevamente el comando sudo fdisl -l con un dispositivo externo conectado lo podrás comprobar tu mismo).

/dev/sdb1
/dev/sdb2
/dev/sdb3
...

/etc

Es el encargado de almacenar los archivos de configuración tanto a nivel de componentes del sistema operativo en sí, como de los programas y aplicaciones instaladas a posteriori.

Es un directorio que debería contener únicamente archivos de configuración, y no debería contener binarios.

/home

Es el directorio de los usuarios estándar, y por lo tanto, el destinado a almacenar todos los archivos del usuario, como documentos, fotos, vídeos, música, plantillas, etc. También incluye archivos temporales de aplicaciones ejecutadas en modo usuario, que sirven para guardar las configuraciones de programas, etc.

Dentro /home hay los directorios personales de todos los usuarios, nombrados según el nombre de usuario utilizado. Así por ejemplo, si en un sistema pongamos que hay dos usuarios denominados User1 y User2, la estructura será así:

/home/User1
/home/User2

Cada directorio de usuario contiene asimismo diferentes carpetas para ayudarlo a clasificar la información. Estas generalmente son: /Documentos/Imágenes/Música, /Plantillas y /Vídeos /, así como otros archivos y carpetas ocultas, que son las encargados de guardar la información de configuraciones de las aplicaciones del usuario.

Para visualizar los ficheros ocultos dentro del directorio individual de cada usuario, puedes hacerlo rápidamente mediante la combinación de comandos CTRL + F. Por cierto, y muy importante, todas los archivos y carpetas ocultas en Linux empiezan por un punto, seguido del nombre de la carpeta.

En muchas distribuciones es una práctica recomendada el hecho de ubicar el directorio /home es una partición separada del resto, por tal de facilitar que, en caso de reinstalar el sistema operativo, puedas mantener intacta la partición de la /home, y de este modo mantener todos los archivos personales.

/lib

Incluye las bibliotecas esenciales  que son necesarios para que se puedan ejecutar correctamente todos los binarios que se encuentran en los directorios /bin y /sbin, así como los módulos del propio kernel.

En los sistemas operativos de 64 bits, además de /lib existe otro directorio denominado /lib64, referida a las bibliotecas para aplicaciones de 64 bits.

/media

Representa el punto de montaje de todos los volúmenes lógicos que se montan temporalmente, ya sean unidades externas USB, otras particiones de disco, etc.

En la mayoría de distribuciones GNU/Linux, desde hace ya algún tiempo, cada vez que se monta una unidad externa, partición, etc., esta se monta dentro del directorio /media y a su vez dentro de un directorio especifico dependiendo del usuario del sistema que monta el volumen.

De este modo, si en un sistema hay varios usuarios, pongamos User1 y User2, los puntos de montaje de los volúmenes que montan cada uno de ellos se mostraran en directorios separados tal como así:

/media/User1
/media/User2

/mnt

Es un directorio vacío que cumple funciones similares a /media, pero que actualmente no se suele utilizar, ya que la mayoría de distribuciones hacen uso de este último para los puntos de montaje temporales.

/opt

En cierto modo vendría a ser como una extensión del directorio /usr, pero en este caso van todos aquellos archivos de solo lectura que son parte de programas auto-contenidos y que, por lo tanto, no siguen los estándares de almacenar los diferentes archivos dentro de los diferentes subdirectorios de /usr (que sería lo recomendable)

Haciendo una analogía con Windows, vendría a ser algo como el directorio de “Archivos y Programas”, pero en este caso, como hemos dicho, para determinados programas que ya vienen auto-contenidos.

/proc

Este directorio contiene información de los procesos y aplicaciones que se están ejecutando en un momento determinado en el sistema, pero realmente no guarda nada como tal, ya que lo que almacena son archivos virtuales, por lo que el contenido de este directorio es nulo.

Básicamente son listas de eventos del sistema operativo que se generan en el momento de acceder a ellos, y que no existen dentro del directorio como tales.

En este enlace de LinuxTotal tienes información más detallada sobre las particularidades de este directorio y todo el juego que le puedes sacar a la hora de obtener información muy diversa del sistema.

/root

Vendría a ser como el directorio /home del usuario root o superusuario del sistema. A diferencia de los otros usuarios, que se encuentran todos dentro de /home en sus respectivas subcarpetas, el directorio del usuario root está en su propia carpeta colgando directamente de la raíz del sistema.

/sbin

Si hemos dicho que en /bin se almacenaban los binarios relativos a las funciones normales de usuario, /sbin hace lo mismo pero para los binarios relativos tareas propias del sistema operativo, y que solamente pueden ser gestionadas por el usuario root, tales como el arranque, tareas de restauración, reparación, etc.

/srv

Sirve para almacenar archivos y directorios relativos a servidores que puedas tener instalados dentro de tu sistema, ya sea un servidor web www, un servidor FTP, CVS, etc. Así, por ejemplo, en el caso de tener instalado un servidor web, sería buena idea tener el directorio web público dentro de /srv, tal como así:

/srv/www

/sys

Al igual que /proc, contiene archivos virtuales que proveen información del kernel relativa a eventos del sistema operativo. Es en cierto modo una evolución de /proc, y a diferencia de este último, los archivos se distribuyen de forma jerárquica.

/tmp

Como ya da a entender su nombre, sirve para almacenar archivos temporales de todo tipo, ya sea de elementos del sistema, o también de diferentes aplicaciones a nivel de usuario como puedan ser Firefox o Chrome/Chromium.

Es un directorio dispuesto para almacenar contenido de corta durada, de hecho en la gran mayoría de los casos se suele vaciar de forma automática en cada reinicio del sistema. Aun así, no debes borrar su contenido de forma manual, puesto que puede contener archivos necesarios para ciertos programas o procesos que estén ejecutándose.

Las aplicaciones programadas para almacenar archivos en este directorio deben asumir que solo serán recuperables en la sesión actual. En este sentido, hay otro subdirectorio, /var/tmp, dispuesto igualmente para el almacenamiento de archivos temporales, pero cuyo contenido no se borra de forma automática tras el reinicio del sistema.

/usr

El directorio /usr viene de “User System Resources” y actualmente sirve para almacenar todos los archivos de solo lectura y relativos a las utilidades de usuario, incluyendo todo el software instalado a través de los gestores de paquetes de cada distribución. Contiene los siguientes subdirectorios:

/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/sbin
/usr/share
/usr/src

Antiguamente /usr también contenía la carpeta particular de usuario, junto con todos sus documentos, vídeos, fotos, etc., pero más adelante se creó el directorio /home para este propósito, dejando /usr reservado para los archivos relativos a programas.

/var

contiene varios archivos con información del sistema, como archivos de logs, emails de los usuarios del sistema, bases de datos, información almacenada en la caché, información relativa a los paquetes de aplicaciones almacenados en /opt, etc. En cierto modo se podría decir que actúa a modo de registro del sistema.

Ruta absoluta y ruta relativa

Cuando se empieza a manejar un intérprete de comandos, una de las cosas que más cuesta es acostumbrarte a encontrar y hacer referencia a elementos del sistema de ficheros. Mientras que en un entorno gráfico tenemos que hacer click en carpetas y subcarpetas hasta llegar al elemento deseado, en el intérprete de comandos tendremos que conseguir lo mismo, pero indicando el lugar mediante una cadena de texto compuesta por los nombres de las carpetas que hay que recorrer hasta el lugar donde se encuentra el elemento deseado. Según el sistema cada nombre de carpeta se separa por un carácter especial, que en Linux es la barra ( / ).

Estas rutas serán usadas por los comandos para saber dónde encontrar los elementos sobre los que tienen que realizar la acción correspondiente. Por ejemplo, si quiero posicionarme en un directorio determinado, utilizaré el comando cd y para indicar el sitio adonde quiero ir usaré una ruta, por ejemplo cd /home/. El comando “cp” copia elementos, en este caso necesitaremos dos rutas una para el origen (elemento que quiero copias) y otra para el destino (elemento nuevo que voy a crear o lugar donde voy a dejar las copias). Por lo tanto podría poner cp /etc/passwd /home/copia_passwd

Hay dos formas de utilizar rutas, una es de forma absoluta y la otra de forma relativa.

Rutas Absolutas

El sistema de ficheros es una estructura jerárquica que en el caso de Linux tiene una raíz que se indica cuando se pone solamente el carácter barra / . En la raíz están los directorios principales del sistema que a su vez tendrán subdirectorios en su interior. Cuando yo quiero indicar dónde se encuentra un elemento usando una ruta absoluta, tendré que indicarle todos los directorios por los que hay que pasar empezando desde la raíz del sistema. O lo que es lo mismo, SIEMPRE empezarán por /

Ejemplos:

  1. /etc/apt/sources.list
  2. /var/log/syslog
  3. /home/alumno/.bashrc
  4. /usr/bin/

Estas rutas suelen ser bastante largas, pero como ventaja tienen que funcionan siempre, independientemente del lugar desde el que ejecute la orden. Es muy recomendable utilizar la facilidad que brinda el BASH de completar el nombre de un elemento del sistema de ficheros pulsando la tecla tabulador. Ahorrará mucho tiempo y errores.

Rutas Relativas

Las rutas relativas indican el camino para encontrar un elemento, pero basándonos en el directorio desde el que se ejecuta la orden. Son mucho más cortas que las absolutas, pero para saber si son correctas o no tenemos que saber siempre desde dónde se han utilizado.

Un atajo fundamental para la construcción de rutas relativas es conocer que .. hace referencia al directorio padre. Por lo tanto se ejecuto cd .. estoy dando la orden de cambiar de directorio al padre del actual, es decir, al que está justo antes en la estructura jerárquica. El único elemento que no tiene padre es la propia raíz del sistema ( / )

Las rutas relativas harán referencia a un elemento que se encuentre en el directorio desde el que ejecutamos la orden, o usará los dos puntos para ascender a directorios superiores. Siempre que sean correctos, podemos combinarlos de la forma que necesitemos separando cada directorio por una barra. Por ejemplo una ruta correcta podría ser   ../../fotos/personales/

Conociendo la terminal de Linux

Terminal de GNU/Linux. Todos los sistemas operativos derivados de Unix, GNU/Linux tienen un intérprete de órdenes o terminal (en inglés mejor conocido como shell) que hace de interfaz entre el usuario y el sistema operativo.

Un terminal es una forma de acceder al sistema sin utilizar la interfaz gráfica, es decir, realizar todo tipo de tareas en formato texto. La forma de utilizar el sistema de este modo es mediante órdenes.

El terminal muestra en pantalla un indicador de línea de órdenes (en inglés se utiliza la palabra prompt que literalmente traduciría “prontuario” pero se puede definir como ayuda visual o palabra que ayuda) esperando que el usuario introduzca una orden. Este indicador finaliza generalmente por un caracter $ o con #.

Cuando abrimos la terminal se puede observar que nos muestra un texto similar al siguiente:

user@linux: ~ $

Donde

user:  Muestra el nombre del usuario el cual esta haciendo uso de la consola

@:  Significa “en”

linux:  Indica el nombre de la máquina a la cual estamos conectados

~:  Indica la ruta en la cual nos encontramos, en este caso ruta de inicio predeterminada

$: Indicador para comenzar a escribir nuevas órdenes o comandos como usuario normal

Por ejemplo:

juan@fedora:~ $

Significa que el usuario “Juan” se encuentra “en” la maquina “fedora” en la carpeta raíz “~” y se encuentra como usuario normal “$”

También tenemos otro caso el cual es el siguiente:

root@linux: home#

En el cual

root: es el usuario el cual esta usando la consola

@:  Significa “en”

linux:  Indica el nombre de la máquina a la cual estamos conectados

~:  Indica la ruta en la cual nos encontramos, en este caso ruta de inicio predeterminada

#: Este signo distingue que estamos usando la terminal en modo administrador

Esto significa que el usuario “root” se encuentra “en” la maquina “fedora” en la carpeta  “home” y se encuentra como usuario root “#”

Los signos “$” y “#” son caracteres los cuales  en este caso el signo “$” significa que estamos usando la terminal como un usuario normal, por lo cual no podemos realizar tareas de administrador. En el caso de “#” significa que estamos usando la terminal como administrador y podemos realizar cualquier cambio al sistema sin problema pero recuerda “Un gran poder conlleva una gran responsabilidad”.

Imagen ilustrativa de una terminal de Linux

¿Qué significa ssh en Informática?

¿Qué es SSH?

SSH o Secure Shell, es un protocolo de administración remota que permite a los usuarios controlar y modificar sus servidores remotos a través de Internet. El servicio se creó como un reemplazo seguro para el Telnet sin cifrar y utiliza técnicas criptográficas para garantizar que todas las comunicaciones hacia y desde el servidor remoto sucedan de manera encriptada. Proporciona un mecanismo para autenticar un usuario remoto, transferir entradas desde el cliente al host y retransmitir la salida de vuelta al cliente.

Cualquier usuario de Linux o macOS puede hacer SSH en su servidor remoto directamente desde la ventana del terminal.

El comando SSH consta de 3 partes distintas.

ssh {user}@{host}

El comando de clave SSH le indica a su sistema que desea abrir una Conexión de Shell Segura y cifrada. {user} representa la cuenta a la que deses acceder. Por ejemplo, puede que desees acceder al usuario root, que es básicamente para el administrador del sistema con derechos completos para modificar cualquier cosa en el sistema. {host} hace referencia al equipo al que deses acceder. Esto puede ser una dirección IP (por ejemplo, 244.235.23.19) o un nombre de dominio (por ejemplo, www.xyzdomain.com).

Cuando pulsa enter, se te pedirá que introduzcas la contraseña de la cuenta solicitada. Al escribirla, nada aparecerá en la pantalla, pero tu contraseña, de hecho, se está transmitiendo. Una vez que hayas terminado de escribir, pulsa enter una vez más. Si su contraseña es correcta, recibirá una ventana de terminal remota.

La ventaja significativa ofrecida por SSH sobre sus predecesores es el uso del cifrado para asegurar la transferencia segura de información entre el host y el cliente (client). Host se refiere al servidor remoto al que está intentando acceder, mientras que el cliente es el equipo que está utilizando para acceder al host. Hay tres tecnologías de cifrado diferentes utilizadas por SSH:

1- Encriptación simétrica
2- Encriptación asimétrica
3- Hashing