miércoles, 4 de noviembre de 2020

TryHackMe: Aprendiendo Linux (quinta y última parte)


Y hemos llegado a la última sección, la número 6. Aquí veremos algunos conceptos como el de los procesos, algunos comandos necesarios para manejar bien un sistema Linux, algunos directorios importantes o cómo instalar paquetes mediante apt (en el caso en que el administrador de paquetes de nuestro sistema sea ese, porque no en todos los Linux es el mismo, pero sí es el más popular).

Empecemos con la última parte.

Tarea 34: [Sección 6: Miscelánea] – Introducción

Aunque hemos repasado cómo funciona el sistema operativo Linux y algunas de sus funciones y comandos más útiles, hay algunos comandos y conceptos que no se han cubierto en las secciones anteriores. Por eso, esta sección está dedicada a todos esos comandos y conceptos que es útil conocer.

 

Tarea 35: [Sección 6: Miscelánea] – sudo

A lo largo de esta sala hemos visto en varias ocasiones mencionar al usuario root. Este usuario es el equivalente al usuario administrador en Windows, y como en Windows, algunos comandos y ciertas cosas que descargues de Internet requerirán permisos de administrador.

Ahí es donde llega sudo. sudo es la forma de ejecutar como administrador que existe en Linux, y la sintaxis es sudo <comando>.


Nota: whoami es solo un comando que muestra tu usuario actual.

Como puedes ver, cuando usas sudo el comando se ejecuta como root. Es importante darse cuenta de que necesitas tener la contraseña de tu usuario para usarlo. De nuevo como en Windows, no todos los usuarios tienen permiso para usar sudo, pero la mayoría de sistemas operativos Linux configuran un usuario con esos permisos cuando los instalas.

Asumiendo que creas un nuevo usuario al que también le quieres dar permisos para acceder a sudo, la página de man de sudo tiene una sección acerca de cómo agregar permisos a un usuario. También es importante ver que puedes configurar sudo para ejecutar comandos como otros usuarios, de nuevo la página de man de sudo tiene una sección sobre ello (sudo tiene una página de man la mar de bonita).

 

Tarea 36: [Sección 6: Miscelánea] – Añadiendo usuarios y grupos

Ya sabes cómo modificar los permisos para usuarios y grupos, así que te será de mucha ayuda conocer cómo crearlos. Por suerte, Linux nos provee de una forma muy intuitiva de hacerlo, con los comandos adduser y addgroup. La sintaxis para ambos comandos es adduser nombre_de_usuario y addgroup nombre_de_grupo.



Algo importante a tener en cuenta es que solo el usuario root tiene permisos para agregar usuarios y grupos, como podemos ver en el error de la imagen cuando hemos intentado usar estos comandos sin sudo. Debes estar preguntándote cómo agregar un usuario a un grupo. Pues bien, eso se hace con el comando usermod, con la siguiente sintaxis: usermod -a -G <grupos separados por comas> <usuario>. Lo cual quiere decir que si quisiera agregar el usuario noot a b, ejecutaría el comando usermod -a -G b noot.


Nota: id es un comando que te permite ver información básica acerca de un usuario.

 

Tarea 37: [Sección 6: Miscelánea] – nano

Hasta aquí has podido ver que he usado >> para agregar contenido a un archivo. Por suerte, no es la única forma de hacerlo, también tenemos a nano que es un editor de texto basado en la terminal. La sintaxis para nano es nano <archivo en el que quieres escribir>. Por ejemplo, escribiendo nano test, nos mostraría esta pantalla:


A partir de aquí puedes escribir lo que te venga en gana.


nano tiene un montón de comandos internos al editor, y el editor de texto probablemente necesitaría toda una sala para él solo, pero en el 99.9% de los casos vas a querer utilizar ctrl+x.

Nota: ^X significa ctrl+x, la mayoría de veces que veas ^<tecla>, el ^ significa control.

Una vez que presiones ctrl+x, te aparecerá una pantalla como esta:


Aquí pulsa Y, y a continuación el programa te preguntará qué nombre quieres ponerle al archivo.


Escribe lo que quieras como nombre del archivo, pulsa enter y te llevará a la pantalla del terminal. Podrás comprobar que tu archivo está ahí y que todo lo que has escrito en él también.


Ahora ya puedes editar archivos de texto.

 

Tarea 38: [Sección 6: Miscelánea] – Shell scripting básico

Linux tiene una forma de ejecutar comandos uno tras otro sin necesidad de utilizar operadores especiales. Esto es posible almacenando los comandos que quieres ejecutar en un archivo con extensión .sh.


Si guardamos y ejecutamos bash s.sh se ejecutan esos comandos en orden.


Se han mostrado por pantalla hello, después whoami, y después se ha ejecutado whoami exactamente como se pedía en el archivo. Felicidades, acabas de crear tu primer script de bash.

Es importante destacar que la extensión sh no es totalmente necesaria, técnicamente hablando, si incluyes un “shebang” (#!), seguido de la ruta al shell que queremos usar para ejecutar nuestros comandos.


A partir de aquí, puedes eliminar la extensión sh, y hacer ejecutable el archivo.


Nota: El shebang DEBE estar al principio del archivo.

 

Tarea 39: [Sección 6: Miscelánea] – Archivos y directorios importantes

A lo largo de esta sala has visto un montón de archivos y directorios, por lo que utilizaré esta tarea para definir los más importantes a tener en cuenta.

Antes de nada, date cuenta de cómo trabaja exactamente el sistema de archivos de Linux. Todo lo que hay en el sistema de archivos de Linux cuelga de “/”. / es el equivalente a C: en Windows. Esto significa que, por ejemplo, si borrases “/”, borrarías todos los archivos de tu sistema.

/etc/passwd – Almacena la información acerca de los usuarios – A menudo se usa para ver todos los usuarios en un sistema.


/etc/shadow – Contiene todas las contraseñas para estos usuarios.

No se muestra por razones obvias.

/tmp – Todos los archivos que hay dentro se borran al apagar – se usa para archivos temporales.


/etc/sudoers – Se usa para controlar los permisos de sudo de cada usuario en el sistema.

Demasiado largo para mostrarlo.

/home – El directorio donde están todas tus descargas, documentos, etc. – El equivalente en Windows es C:\Users\<usuario>.


/root – El directorio principal del usuario root – El equivalente en Windows es C:\Users\Administrador

No se muestra por posible spoiler de los retos.

/usr – Donde se instala todo tu software.


/bin y /sbin – Se usan para los archivos críticos del sistema – NO BORRAR.

Demasiado largo para mostrar, pero contienen todos los programas básicos necesarios para que Linux funcione.

/var – El directorio misceláneo de Linux, muchos procesos guardan sus datos en /var.


$PATH – Almacena los binarios que puedes ejecutar – lo mismo que $PATH en Windows.

$PATH es una variable de entorno que contiene todos los binarios que puedes ejecutar.


Cabe destacar que las rutas en $PATH están separadas por dos puntos (:). Puedes ejecutar todos los archivos ejecutables en cada una de esas rutas con tan solo escribir el nombre del ejecutable, si ser necesaria la ruta completa.


Nota: which es un comando que muestra dónde se encuentra un ejecutable dentro de cualquiera de los directorios de PATH.

 

Tarea 40: [Sección 6: Miscelánea] – Instalando paquetes (apt)

Esta es una tarea delicada porque, dependiendo del sistema Linux que utilices, la información que en ella encuentras te puede ser útil o no. De todas formas, voy a explicarte cómo instalar paquetes usando el administrador de paquetes más popular, que es apt. Un paquete es, esencialmente, un programa, puedes pensar en él como en los archivos .exe de Windows. Para instalar paquetes necesitas permisos de administrador (root), porque cada paquete modificará algún directorio crítico del sistema, como por ejemplo el directorio /usr. La sintaxis para instalar paquetes es apt install paquete.


Nota: python-dev es el primer paquete aleatorio que me vino a la mente.

apt descarga el paquete de un repositorio (lista de programas). Después lo instala y te devuelve el control de la terminal, al igual que pasa cuando instalas un programa en Windows.


apt tiene un montón de sub comandos, y de nuevo haría falta una sala solo para él, pero en la mayoría de ocasiones puedes buscar en Google qué es lo que quieres y encontrarás el nombre del paquete a instalar.

 

Tarea 41: [Sección 6: Miscelánea] – Procesos

Cada binario que ejecutas en Linux se convierte en un proceso al cargarse. Un proceso es tan solo otro modo de nombrar a un programa que está corriendo. Se puede ver la lista de procesos de un usuario con el comando ps.


Mientras que estos son, técnicamente, todos los procesos creados por el usuario, no es la información que buscas si lo que quieres es examinar los procesos. Para ver una lista de todos los procesos del sistema, deberás usar la bandera -ef.


Cada proceso que está corriendo actualmente en el sistema se encuentra listado, junto a parte de la información básica sobre el proceso. Posiblemente, la parte más interesante de esta lista es la segunda columna, la que tiene números de 3 a 5 dígitos. Éstos se conocen con el nombre de ID de Proceso (PID) y es lo que usarás para interactuar con los procesos. El 90% de las veces querrás parar uno de estos procesos, y para ello usarás el comando kill.

La sintaxis de kill es kill <PID>.

 



Después de correr kill, el proceso ya no se mostrará más. Otra forma útil de interactuar con los PID es a través del comando top. top nos muestra qué procesos están usando más recursos del sistema, lo cual nos permite administrar la localización de recursos del sistema eliminando los procesos innecesarios.


Nota: La página de man del comando top tiene descripciones de lo que significa cada valor, y de cómo afectan a tu sistema. Te recomiendo encarecidamente que la leas.

 

Y hasta aquí hemos llegado con este tutorial de Linux resumido en cinco entradas del blog. Espero que os haya sido de utilidad. Y ya sabéis, comentadme y recomendadme ;).

No hay comentarios:

Publicar un comentario