<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-ssoo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Josmonnie1</id>
		<title>Wiki de Sistemas Operativos - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-ssoo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Josmonnie1"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php/Especial:Contribuciones/Josmonnie1"/>
		<updated>2026-06-22T05:25:36Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4571</id>
		<title>Administración básica</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4571"/>
				<updated>2019-11-15T18:53:48Z</updated>
		
		<summary type="html">&lt;p&gt;Josmonnie1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para realizar esta práctica utilizaremos una de las máquinas virtuales que generamos en la práctica anterior.&lt;br /&gt;
&lt;br /&gt;
En esta práctica aprenderemos a utilizar el interprete de ordenes (también conocido como ''[https://www.traficantes.net/sites/default/files/pdfs/En%20el%20principio%20fue...-TdS.pdf línea de comandos]'') y a aprender nociones básicas de administración de sistemas Linux.&lt;br /&gt;
&lt;br /&gt;
= Paso 0: Breve introducción al sistema Linux =&lt;br /&gt;
&lt;br /&gt;
== Estructura básica del sistema de archivos ==&lt;br /&gt;
&lt;br /&gt;
En un sistema Linux, todas las carpetas y ficheros en el sistema de fichero pende de la carpeta raíz que se representa con la /.&lt;br /&gt;
&lt;br /&gt;
 /&lt;br /&gt;
 ├── bin&lt;br /&gt;
 ├── usr&lt;br /&gt;
 │   ├── local&lt;br /&gt;
 │   ├── bin&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── dev&lt;br /&gt;
 │   ├── sda&lt;br /&gt;
 │   ├── sda1&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── home&lt;br /&gt;
 │   ├── practica&lt;br /&gt;
 │   │   ├── tema1.pdf&lt;br /&gt;
 │   │   ├── boletin1.pdf&lt;br /&gt;
 │   │   └── ...&lt;br /&gt;
 │   ├── profesor&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 └── etc&lt;br /&gt;
     ├── firefox&lt;br /&gt;
     ├── libvirt&lt;br /&gt;
     ├── ...&lt;br /&gt;
     └── ...&lt;br /&gt;
&lt;br /&gt;
Como puedes observar, el sistema de fichero emplea una estructura de árbol.&lt;br /&gt;
&lt;br /&gt;
== Nociones básicas ==&lt;br /&gt;
&lt;br /&gt;
·Aplicaciones con nombres compuestos: usar guion entre palabras&lt;br /&gt;
&lt;br /&gt;
·Nombres con espacios en blanco: Escribir entre comillas dobles&lt;br /&gt;
&lt;br /&gt;
·Espacios en blanco para separar ordenes (ej: instalar varios paquetes )&lt;br /&gt;
&lt;br /&gt;
·Formato general de una orden: comando [-opciones] [argumentos]&lt;br /&gt;
&lt;br /&gt;
·'''IMPORTANTE''': Diferencia entre mayúsculas y minúsculas&lt;br /&gt;
&lt;br /&gt;
== Carpetas . y .. ==&lt;br /&gt;
&lt;br /&gt;
Toda carpeta en un sistema Linux dispone de dos pseudocarpetas, la '''.''' y la '''..'':&lt;br /&gt;
&lt;br /&gt;
* La pseudocarpeta '''..''' hace referencia a la carpeta padre que contiene a esta carpeta.&lt;br /&gt;
* La pseudocarpeta '''.''' hace referencia a la carpeta actual, es por tanto una autoreferencia.&lt;br /&gt;
&lt;br /&gt;
En el caso de la carpeta raíz, la pseudocarpeta '''.''' y '''..''' hacen referencia a la propia carpeta raíz, se trata, por tanto de una excepción.&lt;br /&gt;
&lt;br /&gt;
== Directorio de trabajo actual y la orden cd ==&lt;br /&gt;
&lt;br /&gt;
Cada interprete de ordenes dispone de una ''carpeta de trabajo actual'' ('''c'''urrent '''w''orking '''d''irectory, en inglés). La carpeta de trabajo actual se puede modificar con la orden '''cd''' ('''c'''hange '''d'''irectory, en inglés).&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos situaría en la carpeta padre, empleando una ruta relativa.&lt;br /&gt;
&lt;br /&gt;
Si volvemos a escribir desde /home &amp;quot; cd .. &amp;quot; nos lleva a '''/$''' &lt;br /&gt;
&lt;br /&gt;
Para situarnos en el raíz, podemos emplear una ruta absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En caso de que queramos volver a la carpeta de usuario, bastaría con invocar a '''cd''' sin más o ''' cd ~ '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MUY IMPORTANTE''': No es lo mismo cd.. que ''' cd .. ''', es necesario el espacio después del cd.&lt;br /&gt;
&lt;br /&gt;
== Rutas absolutas, rutas relativas ==&lt;br /&gt;
&lt;br /&gt;
Para hacer referencia a un fichero o una carpeta se usan ruta absolutas o rutas relativas.&lt;br /&gt;
&lt;br /&gt;
Las rutas absolutas siempre empieza por /, de manera que toman como punto de referencia la carpeta raíz (/). Por ejemplo, una ruta absoluta a la carpeta '''prueba''' que está almacenada en la carpeta del usuario '''ubuntu''' es '/home/ubuntu/prueba/'.&lt;br /&gt;
&lt;br /&gt;
Las ruta relativa toma como referencia la carpeta de trabajo actual. Para averiguar la carpeta de trabajo actual disponemos de la orden '''pwd'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ pwd&lt;br /&gt;
/home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En base a la carpeta de trabajo actual, empleando la pseudocarpeta '''..''', se puede construir rutas relativas. Por ejemplo, para referenciar un fichero '''fichero.txt''' en la carpeta temporal, podemos emplear la ruta relativa '''../../tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
Aunque probablemente sea más cómodo emplear una ruta absoluta en este caso, que sería '''/tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
== Intérprete de órdenes ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de órdenes es un lanzador de aplicaciones textual que emplea el teclado como dispositivo de entrada de datos. Mediante el teclado, se escribe el nombre del programa que se quiere lanzar y al pulsa la tecla ''intro'' el intérprete de ordenes ejecutara dicho programa. Por defecto, el intérprete de ordenes que emplea Ubuntu por defecto es '''bash'''.&lt;br /&gt;
&lt;br /&gt;
== man: ver la página de manual de una orden ==&lt;br /&gt;
&lt;br /&gt;
La orden '''man''' te será útil para ver las páginas de manual.&lt;br /&gt;
&lt;br /&gt;
Su estructura básica es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aunque también se utiliza con la opción ''' -a ''' de All, que también muestra las entradas comenzadas por '''.''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -a &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este programa toma como entrada el nombre de la orden de la que quieres consultar su página de manual, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos da información del manual de la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
Para salir de la página de manual, pulsa la tecla '''q''' (la primera letra de la palabra '''quit''', en inglés).&lt;br /&gt;
&lt;br /&gt;
quit = salir&lt;br /&gt;
&lt;br /&gt;
Normalmente, los programas ofrecen opciones de ayuda, como '''--help'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man --help&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede emplear la versión compacta a la hora de especificar opciones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En general, todas las ordenes suelen ofrecer una opción de ayuda.&lt;br /&gt;
&lt;br /&gt;
= Paso 1: Operaciones básicas con el sistema de ficheros =&lt;br /&gt;
&lt;br /&gt;
== ls ==&lt;br /&gt;
&lt;br /&gt;
Lista los ficheros y carpetas. Si no se especifica nada, muestra los ficheros y carpetas que contiene la carpeta de trabajo actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se especifica una ruta, muestra las carpetas y ficheros contenidos en dicha ruta, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /&lt;br /&gt;
bin  boot  data  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz  vmlinuz.old&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al emplear '''/''' como ruta absoluta, muestra el contenido de la carpeta raíz.&lt;br /&gt;
&lt;br /&gt;
Las opciones más usadas de este programa suelen ser:&lt;br /&gt;
&lt;br /&gt;
* -a: muestra los ficheros y carpetas ''ocultos''. En Linux, cualquier fichero o carpeta cuyo nombre empiece por . se considera ''oculto''. Esto incluye también en el listado las pseudocarpetas . y ..&lt;br /&gt;
&lt;br /&gt;
* -l: se muestra en lista y aporta datos como la fecha de última modificación, propietario, grupo, tamaño en bytes y nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -a&lt;br /&gt;
&lt;br /&gt;
.  ..  .bash_history  .bash_logout  .bashrc  .profile  .ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ambas opciones se puede combinar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -la /&lt;br /&gt;
&lt;br /&gt;
total 92&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 .&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 ..&lt;br /&gt;
drwxr-xr-x   2 root root  4096 Aug 22 12:37 bin&lt;br /&gt;
drwxr-xr-x   4 root root  4096 Aug 22 12:37 boot&lt;br /&gt;
drwx------   3 root root  4096 Aug 28 09:50 data&lt;br /&gt;
drwxr-xr-x  18 root root  3780 Aug 28 09:46 dev&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otras opciones útiles son:&lt;br /&gt;
&lt;br /&gt;
* -s : muestra el tamaño en bloques de cada archivo&lt;br /&gt;
&lt;br /&gt;
* -t : aporta el día y la hora de modificación&lt;br /&gt;
&lt;br /&gt;
* -R : lista también las subcarpetas &lt;br /&gt;
&lt;br /&gt;
* --color : muestra el contenido coloreado&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los '''permisos''' se emplean en base a tres capacidades:&lt;br /&gt;
&lt;br /&gt;
* Lectura, que se codifica con '''r''' (read, en inglés).&lt;br /&gt;
* Escritura, que se codifica con '''w''' (write, en inglés).&lt;br /&gt;
* Ejecutación, que se codifica con '''x''' (execute, en inglés).&lt;br /&gt;
&lt;br /&gt;
La primera columna muestra los permisos que codifican:&lt;br /&gt;
&lt;br /&gt;
* Tipo de entrada: '''d''' indica ''directorio'' (''carpeta'').&lt;br /&gt;
* Permisos del propietario, primera terna de rwx&lt;br /&gt;
* Permisos del grupo, segunda terna de rwx&lt;br /&gt;
* Permisos para el resto del mundo, tercera terna de rwx.&lt;br /&gt;
&lt;br /&gt;
A continuación, aparecen el propietario y el grupo, seguidos de la fecha de última modificación y el nombre del fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
La ayuda ( help ) en ls solo funciona con ''' ls --help ''' no con ls -h&lt;br /&gt;
&lt;br /&gt;
== mkdir ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crea una carpeta test en el directorio actual.&lt;br /&gt;
&lt;br /&gt;
Comprobemos que se ha creado bien:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la opción '''-p''', permite crear sucesivas carpetas anidadas de una sola vez, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir -p a/b/c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Que crea la siguiente estructura de carpetas.&lt;br /&gt;
&lt;br /&gt;
 a&lt;br /&gt;
 └── b&lt;br /&gt;
     └── c&lt;br /&gt;
&lt;br /&gt;
== touch ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo fichero vacío (sin contenido) con el nombre que especifiquemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el fichero se ha creado correctamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cp ==&lt;br /&gt;
&lt;br /&gt;
Copia un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp file.txt file_copy.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para copiar una carpeta y su contenido tenemos que usar la opción -r (recursivo).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -r test test_copy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comprobamos el resultado con la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
* Si nos encontramos en la carpeta destino, la estructura sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp &amp;lt;nombre ruta origen&amp;gt; &amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mv ==&lt;br /&gt;
&lt;br /&gt;
Mueve fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv file_copy.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se emplea para renombrar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv test_copy test_copy2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rm ==&lt;br /&gt;
&lt;br /&gt;
* Borra un fichero o carpeta vacía:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para borrar una carpeta no vacía y su contenido:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -r &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANTE''': No hacer jamás ''' rm -r * '''&lt;br /&gt;
&lt;br /&gt;
* EJERCICIOS:&lt;br /&gt;
&lt;br /&gt;
# Crear la siguiente estructura dentro del directorio /tmp (usar los comandos mkdir, touch y cp):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 ├── carpeta1&lt;br /&gt;
 ├── carpeta2&lt;br /&gt;
 │   ├── fichero1.txt&lt;br /&gt;
 │   └── fichero2.md&lt;br /&gt;
 └── carpeta3&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
# Basándonos en el ejercicio anterior, cambiar la estructura a la siguiente (usar comandos mv y rm):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 └── carpeta&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
= Paso 2: Impresión por pantalla y redirección de salida =&lt;br /&gt;
&lt;br /&gt;
== echo ==&lt;br /&gt;
&lt;br /&gt;
Sirve para imprimir una línea de texto por pantalla o variables de entorno. Además, nos permite escribir en ficheros.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;lt;opción&amp;gt; &amp;lt;texto&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Opciones curiosas: &lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \bPALABRA&amp;gt;   Se eliminan los espacios entre las palabras&lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \nPALABRA&amp;gt;	 Se añaden saltos de línea&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una variable de entorno es una variable editada con algún valor, por defecto existen algunas creadas, como por ejemplo la variable HOME, que contiene el directorio del usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $HOME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aprovecharemos y crearemos una variable nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ME=&amp;quot;my name&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $ME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redirección de salida ==&lt;br /&gt;
&lt;br /&gt;
&amp;gt; y &amp;gt;&amp;gt; sirve para redirigir una salida. Por ejemplo, utilizando el comando echo,&lt;br /&gt;
podemos enviar un texto dentro de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La diferencia entre &amp;gt; y &amp;gt;&amp;gt; es que &amp;gt; sobrescribe lo que haya en el fichero y&lt;br /&gt;
añade el contenido, y &amp;gt;&amp;gt; no sobrescribe, solo añade el nuevo contenido.&lt;br /&gt;
&lt;br /&gt;
Hagamos la prueba:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En cualquier caso, si el fichero no existe, se crea.&lt;br /&gt;
&lt;br /&gt;
= Paso 3: Manejo de ficheros y carpetas avanzado =&lt;br /&gt;
&lt;br /&gt;
== cat ==&lt;br /&gt;
&lt;br /&gt;
* Muestra el contenido de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file.txt&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Crea un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUARDAR FICHERO: Pulsamos ENTER y luego CTRL + D&lt;br /&gt;
&lt;br /&gt;
* Añadir más lineas al fichero: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;&amp;lt;nombre fichero&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Concatenar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt; &amp;gt; &amp;lt;fichero3&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Editar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat&lt;br /&gt;
&lt;br /&gt;
hola&lt;br /&gt;
que pasa&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; &amp;lt;fichero4&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== grep ==&lt;br /&gt;
&lt;br /&gt;
Sirve para localizar coincidencias de un cierto patrón en ficheros y muestra la coincidencia, en caso de encontrarla, por pantalla.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
grep &amp;lt;opción&amp;gt; &amp;lt;patrón&amp;gt; &amp;lt;archivos donde buscar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por ejemplo, para buscar el patrón ''prueba'' en el fichero ''fichero.txt''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ grep -n prueba fichero.txt&lt;br /&gt;
1:Esto es una prueba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Principales opciones del comando:&lt;br /&gt;
&lt;br /&gt;
-c : Escribe el número de líneas encontradas.&lt;br /&gt;
&lt;br /&gt;
-i : No distingue entre mayúsculas y minúsculas.&lt;br /&gt;
&lt;br /&gt;
-l : Muestra los nombres de los ficheros que contienen los caracteres buscados.&lt;br /&gt;
&lt;br /&gt;
-n : Cada línea es precedida por su número en el fichero.&lt;br /&gt;
&lt;br /&gt;
-s : No se muestran los mensajes que indican que no se puede abrir un fichero.&lt;br /&gt;
&lt;br /&gt;
-v : Muestra sólo las líneas que no cumplen la condición.&lt;br /&gt;
&lt;br /&gt;
== wc ==&lt;br /&gt;
&lt;br /&gt;
Sirve para contar el número de palabras, caracteres, líneas o bytes que contiene un fichero.&lt;br /&gt;
&lt;br /&gt;
Las opciones más utilizadas son:&lt;br /&gt;
&lt;br /&gt;
* -l: muestra el número de líneas que contiene el fichero.&lt;br /&gt;
* -w: muestra el número de palabras.&lt;br /&gt;
* -m: muestra el número de caracteres&lt;br /&gt;
* -c: muestra el número de bytes&lt;br /&gt;
&lt;br /&gt;
Probemos y contemos todo en el fichero file2.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file2.txt&lt;br /&gt;
wc -w file2.txt&lt;br /&gt;
wc -m file2.txt&lt;br /&gt;
wc -c file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos contar más de un fichero a la vez:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos mostrará el conteo de cada fichero y el total.&lt;br /&gt;
&lt;br /&gt;
== Tubería (|) ==&lt;br /&gt;
&lt;br /&gt;
La tubería nos servirá para conectar varios comandos al mismo tiempo, veamos&lt;br /&gt;
unos ejemplos, que siempre se entiende mejor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file2.txt | grep prueba&lt;br /&gt;
grep -nr prueba file2.txt | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el primer ejemplo, mostramos el contenido de file2.txt, y esta salida se la&lt;br /&gt;
pasamos al comando grep, el cual busca las líneas que contengan prueba.&lt;br /&gt;
&lt;br /&gt;
En el segundo, buscamos todas las líneas que contengan la palabra prueba, y esta&lt;br /&gt;
salida se la pasamos al comando wc, el cual cuenta las líneas de la salida del&lt;br /&gt;
comando grep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
&lt;br /&gt;
Vamos a ver unos conceptos antes de seguir:&lt;br /&gt;
&lt;br /&gt;
* Entrada estándar: representa los datos que necesita una aplicación para funcionar, como por ejemplo un archivo de datos o información ingresada desde la terminal y es representado en la terminal como el tipo 0.&lt;br /&gt;
* Salida estándar: es la vía que utilizan las aplicaciones para mostrarte información, allí podemos ver el progreso o simplemente los mensajes que la  aplicación quiera darte en determinado momento y es representado en la terminal como el tipo 1.&lt;br /&gt;
* Error estándar: es la forma en que los programas te informan sobre los problemas que pueden encontrarse al momento de la ejecución y es representado en la terminal como el tipo 2.&lt;br /&gt;
&lt;br /&gt;
Las redirecciones nos sirven para mover la información de un tipo a otro.&lt;br /&gt;
&lt;br /&gt;
Ya vimos previamente el uso de &amp;gt; y &amp;gt;&amp;gt;, y también el |, veamos algunas más:&lt;br /&gt;
&lt;br /&gt;
* comando &amp;lt; fichero: Toma la entrada de fichero&lt;br /&gt;
* comando 2&amp;gt; fichero: Envía la salida de error de comando a fichero&lt;br /&gt;
* comando 2&amp;gt;&amp;amp;1: Envía la salida de error a la salida estándar&lt;br /&gt;
* comando &amp;amp;&amp;gt; fichero: Envía la salida estándar y de error a fichero; equivale a comando &amp;gt; fichero 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
= Paso 4: Usuarios y grupos =&lt;br /&gt;
&lt;br /&gt;
== whoami ==&lt;br /&gt;
&lt;br /&gt;
Sirve para obtener el usuario actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo más seguro es que nos aparezca ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who ==&lt;br /&gt;
&lt;br /&gt;
Es para saber quien está ahora mismo en la máquina conectado.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
who&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seguramente solo estemos nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ubuntu   pts/0        2019-08-28 13:51 (192.168.122.1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== su y sudo ==&lt;br /&gt;
&lt;br /&gt;
su (substitute user): sirve para cambiar de usuario. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí nos pedirá la contraseña del usuario al que queramos cambiar.&lt;br /&gt;
&lt;br /&gt;
sudo (super user do): no todas las distribuciones lo integran, porque es menos&lt;br /&gt;
seguro que su, este comando nos permite ejecutar un comando siendo otro usuario,&lt;br /&gt;
por defecto, si no le damos usuario, lo hará con el usuario root. Si sudo nos&lt;br /&gt;
pide contraseña, nos pide la contraseña del usuario, ya que el usuario es que el&lt;br /&gt;
tiene permisos para usar sudo o no.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ls -a /root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tuviéramos por ejemplo un usuario 'practica' y quisíeramos ejecutar un&lt;br /&gt;
comando en su nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u practica ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== adduser y useradd ==&lt;br /&gt;
&lt;br /&gt;
Ambos comandos sirven para crear un nuevo usuario, pero tienen sus diferencias.&lt;br /&gt;
&lt;br /&gt;
useradd es un comando del sistema, y adduser es un script escrito en perl que&lt;br /&gt;
utiliza el comando useradd. La diferencia así de primeras es que adduser nos&lt;br /&gt;
crear el directorio /home/usuario y useradd necesita la opción -m para hacer lo&lt;br /&gt;
mismo. Se puede utilizar el que se quiera, aunque es más recomendable useradd,&lt;br /&gt;
ya que funcionará igual en todas las distribuciones.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir un usuario practica con su directorio en /home (notemos que&lt;br /&gt;
necesitamos permisos de super usuario para realizar esta tarea):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a comprobar que el directorio home está creado y que el usuario practica&lt;br /&gt;
funciona:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home  # veremos el directorio practica&lt;br /&gt;
sudo -u practica whoami  # nos dirá que somo el usuario practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== passwd ==&lt;br /&gt;
&lt;br /&gt;
Sirve para modificar la contraseña de un usuario, por ejemplo, vamos a modificar&lt;br /&gt;
la contraseña del usuario que hemos creado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo passwd practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos preguntará dos veces la contraseña, y ya la tendremos actualizadas. Vamos&lt;br /&gt;
ahora a probar ahora el comando su para cambiar de usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que hemos cambiado de usuario, para cerrar este usuario, escribimos&lt;br /&gt;
'exit' o pulsamos 'CTLR + D'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== deluser y userdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para borrar un usuario, similar a adduser y useradd, userdel es el&lt;br /&gt;
comando y deluser el script.&lt;br /&gt;
&lt;br /&gt;
Vamos a borrar el usuario que hemos creado, incluyendo el borrado de su /home&lt;br /&gt;
(opción -r):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
userdel -r practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobemos que ya no tenemos usuario ni /home:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home&lt;br /&gt;
sudo -u practica whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== addgroup y groupadd ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para crear un grupo. Los grupos sirven para agrupar a los usuarios&lt;br /&gt;
y que estos tengan unos mismos permisos. Por ejemplo, cuando instalamos algunas&lt;br /&gt;
herramientas como por ejemplo docker, este crea el grupo docker automáticamente&lt;br /&gt;
para que fácilmente podamos añadir a un usuario al grupo, y este tenga los&lt;br /&gt;
permisos para trabajar con dicha herramienta.&lt;br /&gt;
&lt;br /&gt;
Vamos a crear un nuevo grupo, vamos a llamarle invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupadd invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== usermod y groups ==&lt;br /&gt;
&lt;br /&gt;
usermod es utilizado para asignar un grupo a un usuario.&lt;br /&gt;
&lt;br /&gt;
groups es utilizado para ver los grupos a los que pertenece un usuario.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir a un usuario practica, lo vamos a añadir al grupo invitado y&lt;br /&gt;
veremos los grupos a los que pertenece:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
sudo usermod -G invitado practica&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario práctica pertenece al grupo invitado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== delgroup y groupdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para eliminar un grupo. Vamos a eliminar el grupo que hemos creado&lt;br /&gt;
anteriormente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupdel invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar ahora que el usuario practica no pertenece al grupo invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 5: Permisos =&lt;br /&gt;
&lt;br /&gt;
== Nomenclatura rwx y numérica ==&lt;br /&gt;
&lt;br /&gt;
Si hacemos un ls -l, la primera cadena que nos aparece son los permisos del&lt;br /&gt;
fichero (-rwxrw-r--), podemos dividirlo en 4 elementos:&lt;br /&gt;
&lt;br /&gt;
-    (rwx)   (rw-)  (r--)&lt;br /&gt;
|      |       |      |&lt;br /&gt;
type  owner   group  others&lt;br /&gt;
&lt;br /&gt;
* type: el tipo de fichero, pudiendo ser d (directorio), l (enlace simbólico), - (fichero normal)&lt;br /&gt;
* owner: permisos de propietario&lt;br /&gt;
* group: permisos de grupo&lt;br /&gt;
* others: permisos para los demás usuarios&lt;br /&gt;
&lt;br /&gt;
Significado de los permisos:&lt;br /&gt;
&lt;br /&gt;
* r: permisos de lectura&lt;br /&gt;
* w: permisos de escritura&lt;br /&gt;
* x: permisos de ejecución&lt;br /&gt;
&lt;br /&gt;
Por último, existe un modo abreviado para estos permisos que se utiliza con&lt;br /&gt;
números.&lt;br /&gt;
&lt;br /&gt;
rwx&lt;br /&gt;
001 en binario es 1 en decimal. Permisos de ejecución&lt;br /&gt;
010 en binario es 2 en decimal. Permisos de escritura&lt;br /&gt;
100 en binario es 4 en decimal. Permisos de lectura&lt;br /&gt;
&lt;br /&gt;
La suma de los permisos, nos da el valor numérico. Veamos un ejemplo:&lt;br /&gt;
rwx rw- r--&lt;br /&gt;
111 110 100&lt;br /&gt;
 7   6   4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chmod ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar los permisos de acceso a un fichero o directorio. Podemos dar&lt;br /&gt;
permisos de dos formas diferentes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== modo carácter ===&lt;br /&gt;
&lt;br /&gt;
Veamos primero unos detalles:&lt;br /&gt;
&lt;br /&gt;
Clases de usuario:&lt;br /&gt;
&lt;br /&gt;
* owner (u)&lt;br /&gt;
* group (g)&lt;br /&gt;
* others (o)&lt;br /&gt;
* all (a)&lt;br /&gt;
&lt;br /&gt;
Modificador:&lt;br /&gt;
&lt;br /&gt;
* añadir (+)&lt;br /&gt;
* eliminar (-)&lt;br /&gt;
* sobrescribir (=)&lt;br /&gt;
&lt;br /&gt;
Para dar permisos tendríamos que seleccionar la clase de usuario el modificador&lt;br /&gt;
y los permisos, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x file  # añadimos permisos de ejecución al usuario&lt;br /&gt;
chmod go-w file  # quitamos permisos de escritura al grupo y a otros usuarios&lt;br /&gt;
chmod u=rwx,go=r file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modo octal ===&lt;br /&gt;
&lt;br /&gt;
Con el modo octacl, es como si siempre utilizáramos el modificar sobrescribir,&lt;br /&gt;
pongamos algunos ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod 744 file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
chmod 777 file  # Todos tienen permisos para todo&lt;br /&gt;
chmod 600 file  # solo el propietario tiene permisos de lectura y escritura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos ===&lt;br /&gt;
&lt;br /&gt;
Vamos a ver como funciona el tema de permisos con unos ejemplos. Vamos a crear&lt;br /&gt;
un fichero pruebas y le vamos a quitar los permisos de escritura a nuestro&lt;br /&gt;
usuario, y le vamos a dar permisos de escritura a otros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch pruebas&lt;br /&gt;
ls -l pruebas  # de esta forma veremos que por defecto los permisos son rw-rw-r--&lt;br /&gt;
chmod u-w,o+w pruebas&lt;br /&gt;
ls -l pruebas  # ahora los permisos deberían ser -w-rw-rw-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez dado los permisos, veamos que con nuestro usuario podemos leer pero no&lt;br /&gt;
escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y ahora vamos a ver que el usuario pruebas, puede leer y escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chown ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar el propietario de un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
Vamos por ejemplo a pasarle ahora el fichero pruebas al usuario practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica pruebas&lt;br /&gt;
ls -l pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario actual ahora es pruebas, aunque vemos que el ls muestra&lt;br /&gt;
lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-r--rw-rw- 1 practica ubuntu 9 Aug 29 09:34 pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hay que comentar un detalle, y es que los ficheros y directorios tienen asignado&lt;br /&gt;
un usuario y un grupo, por defecto se utiliza el mismo usuario como grupo&lt;br /&gt;
cuando creamos un nuevo fichero o directorio. Si queremos que cuando cambiemos&lt;br /&gt;
el propietario, cambiar tambien el grupo del fichero, podemos hacerlo de la&lt;br /&gt;
siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica:practica pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto, vamos ahora a probar que los permisos siguen funcionando&lt;br /&gt;
como antes, ahora con el usuario ubuntu, deberíamos de poder leer y escribir en&lt;br /&gt;
el fichero pruebas, y con el usuario practica, solo leer, esto es así por que&lt;br /&gt;
ahora el propitario es practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Pruebas usuario ubuntu&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo test &amp;gt;&amp;gt; pruebas&lt;br /&gt;
# Pruebas usuario practica&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 6: Procesos =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ps ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver que procesos están ejecutándose en el sistema, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux  # con la opción aux mostraremos todos los procesos del sistema&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada línea es un proceso, y cada proceso muestra su PID, usuario, cantidad de&lt;br /&gt;
memoria y cpu utilizada, comando y otros detalles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;  # añadir el &amp;amp; al final de un comando hace que este se ejecute en segundo plano, por lo que se quedará abierto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida de este comando nos mostrará el PID que tiene ese proceso que acabamos&lt;br /&gt;
de ejecutar, vamos a comprobarlo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el PID coincide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== kill ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para matar un proceso. kill se utiliza seguido de una&lt;br /&gt;
señal para enviar al proceso seguido de uno o varios PID. para ver las señales&lt;br /&gt;
disponibles, podemos listarlas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Las más utilizadas suele ser SIGTERM y SIGKILL, la primera intenta terminar el&lt;br /&gt;
proceso de forma poco abrupta, y la segunda suele utilizarse cuando el proceso&lt;br /&gt;
no atiende a esta primera señal. Vamos ahora a terminar el proceso que creamos&lt;br /&gt;
antes, si no recordamos el PID, busquémoslo de nuevo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos señal para terminar el proceso y comprobamos que ha terminado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -SIGTERM 8470&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También podemos notar que en el listado de señales, hay unos números, podemos&lt;br /&gt;
utilizar esos números en vez de las palabras, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;&lt;br /&gt;
kill -15 PID_COMANDO_PREVIO&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el proceso ha terminado correctamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 7: Estado CPU, RAM y Disco =&lt;br /&gt;
&lt;br /&gt;
== top ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para ver el listado de procesos y el estado de la CPU y&lt;br /&gt;
memoria.&lt;br /&gt;
&lt;br /&gt;
Probemos el comando y observemos detalladamente la salida:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
top&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para salir, pulsamos q.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== df y du ==&lt;br /&gt;
&lt;br /&gt;
df (disk free) y du (disk usage). Ambas son utilidades para mostrar el uso de&lt;br /&gt;
los discos.&lt;br /&gt;
&lt;br /&gt;
Con df mostraremos la información del espacio en cada dispositivo montado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estos comandos que nos muestran el tamaño de los ficheros, casi siempre tienen&lt;br /&gt;
una opción para mostrarlo en un formato más legible (-h)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mucho mejor.&lt;br /&gt;
&lt;br /&gt;
Ahora veamos el comando du, el cual nos mostrará el tamaño de un fichero o&lt;br /&gt;
directorio y sus subdirectorios, no olvidemos el -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -h /home/ubuntu&lt;br /&gt;
du -h /home/ubuntu/pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si solo quisíeramos saber el total de una carpeta y nos nos interesan sus&lt;br /&gt;
subcarpetas, podemos utilizar la opción -s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -sh /home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== free ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver el estado de la memoria, como siempre, opción -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
free -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsblk ==&lt;br /&gt;
&lt;br /&gt;
Nos muestra la información de todos los dispositivos de bloques (discos duros,&lt;br /&gt;
pendrivers, CD_ROM, SSD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En la siguiente práctica se utilizará más a fondo este comando, ya que&lt;br /&gt;
trabajaremos con dispositivos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 8: Gestión de paquetes de software y repositorios =&lt;br /&gt;
&lt;br /&gt;
Los sistemas Linux incluyen, además de las herramientas básicas del sistema operativo, repositorios de software que puede ser opcionalmente instalados por el administrador del sistema. Los fabricantes de las distribuciones de Linux incluyen paquetes de software listos para ser instalados que se integran con el sistema.&lt;br /&gt;
&lt;br /&gt;
Un paquete incluye el software necesario para que una cierta aplicación funcione correctamente, así como sus paquetes de dependencia.&lt;br /&gt;
&lt;br /&gt;
En Ubuntu, la herramienta de gestión de paquetes de software y repositorios se llama '''apt'''.&lt;br /&gt;
&lt;br /&gt;
=== Listado de repositorios de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
En Ubuntu el listado de repositorios se encuentra en el fichero /etc/apt/sources.list. Podemos comprobar que repositorios tenemos añadido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Actualización del listado de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
Para actualizar el listado de paquetes utilizaremos el comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instalación un nuevo paquete ===&lt;br /&gt;
&lt;br /&gt;
Para instalar un nuevo paquete, utilizaremos la orden install, por ejemplo, vamos a instalar tree, similar al ls pero muestra el arbol de directorios:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Desinstalación de un paquete ===&lt;br /&gt;
&lt;br /&gt;
Usaremos la orden purge o la orden remove, purge nos lo eliminad todo, y remove mantiene la configuración en el caso de que el paquete la tuviese. Vamos a eliminar el paquete instalado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt purge tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Paso 9: Administración remota con ssh =&lt;br /&gt;
&lt;br /&gt;
''ssh'' (Secure SHell) permite administrar de manera remota un sistema desde el intérprete de órdenes. Para poder acceder a la máquina virtual por medio de ''ssh'', hay que instalar el paquete ''openssh-server''.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install openssh-server&lt;br /&gt;
&lt;br /&gt;
Una vez instalado, tenemos que consultar la dirección IP de la máquina virtual&lt;br /&gt;
&lt;br /&gt;
 ip address&lt;br /&gt;
&lt;br /&gt;
Desde el hipervisor podemos acceder por ''ssh'' a la máquina virtual con la orden:&lt;br /&gt;
&lt;br /&gt;
 ssh usuario@ip&lt;br /&gt;
&lt;br /&gt;
Siendo ''usuario'' el nombre de usuario con el que accedes a la máquina virtual y la dirección ''ip'' que nos muestra la orden ''ip address''.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si el usuario seleccionado es ''ubuntu'' y la IP es 192.168.122.123, entonces la invocación a ''ssh'' es la siguiente:&lt;br /&gt;
&lt;br /&gt;
 ssh ubuntu@192.168.122.123&lt;br /&gt;
&lt;br /&gt;
= Paso 10: Módulos =&lt;br /&gt;
&lt;br /&gt;
Los módulos del kernel de Linux son partes que podemos añadir o quitar de forma&lt;br /&gt;
sencilla con el fin de añadir o quitar funcionalidad. Por ejemplo, algunas de&lt;br /&gt;
estas funcionalidades son:&lt;br /&gt;
&lt;br /&gt;
* Registrar temperaturas de nuestros componentes&lt;br /&gt;
* Hacer funcionr la tarjeta de red wifi&lt;br /&gt;
* Cargar los drivers de una tarjeta gráfica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsmod ==&lt;br /&gt;
&lt;br /&gt;
Comando para ver los módulos que estamos usando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lspci y usb-devices ==&lt;br /&gt;
&lt;br /&gt;
Estos comandos nos servirán para ver el hardware que está conectado a nuestro&lt;br /&gt;
ordenador. Con lspci veremos el listado del hardware integrado y con usb-devices&lt;br /&gt;
el que está conectado por hardware.&lt;br /&gt;
&lt;br /&gt;
Normalmente, como los módulos se utilizan para dar funcionalidad un hardware,&lt;br /&gt;
aquí en los listado de hardware podremos ver que módulo está utilizando cada&lt;br /&gt;
hardware:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lspci -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos una línea en algunos dispositivos que nos diga que módulo estamos&lt;br /&gt;
usando, pongo un pequeño trozo de la salida del comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02) (prog-if 01 [AHCI 1.0])&lt;br /&gt;
    Subsystem: Red Hat, Inc. QEMU Virtual Machine&lt;br /&gt;
    Flags: bus master, fast devsel, latency 0, IRQ 35&lt;br /&gt;
    I/O ports at c0c0 [size=32]&lt;br /&gt;
    Memory at fcc1d000 (32-bit, non-prefetchable) [size=4K]&lt;br /&gt;
    Capabilities: &amp;lt;access denied&amp;gt;&lt;br /&gt;
    Kernel driver in use: ahci&lt;br /&gt;
    Kernel modules: ahci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el hardware INTEl Corporation está utilizando el módulo ahci.&lt;br /&gt;
&lt;br /&gt;
Probemos ahora con usb-devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
usb-devices&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos un trozo de código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0&lt;br /&gt;
D:  Ver= 2.00 Cls=00(&amp;gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1&lt;br /&gt;
P:  Vendor=0627 ProdID=0001 Rev=00.00&lt;br /&gt;
S:  Manufacturer=QEMU&lt;br /&gt;
S:  Product=QEMU USB Tablet&lt;br /&gt;
S:  SerialNumber=42&lt;br /&gt;
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA&lt;br /&gt;
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el teclado está utilizando el módulo usbhid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== insmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para cargar un módulo en el kernel, imaginemos que tenemos un módulo que&lt;br /&gt;
se llama modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo insmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rmmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para eliminar un módulo de kernel. Imaginemos que queremos borrar un&lt;br /&gt;
módulo cargado anteriormente con el nombre modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rmmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ejercicios =&lt;br /&gt;
&lt;br /&gt;
# Cree un fichero vacio llamado 123.txt&lt;br /&gt;
# Añada al fichero las siguientes tres lineas:&lt;br /&gt;
&lt;br /&gt;
        Hola mundo&lt;br /&gt;
        Probando 1 2 3&lt;br /&gt;
        Adios&lt;br /&gt;
&lt;br /&gt;
# Añada una linea más al fichero con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
        Prueba&lt;br /&gt;
&lt;br /&gt;
# Renombre el fichero 123.txt a 456.txt&lt;br /&gt;
# Haga una copia del fichero 456.txt al fichero 789.txt&lt;br /&gt;
# Cree la carpeta xyz&lt;br /&gt;
# Mueva el fichero 789.txt a la carpeta xyz&lt;br /&gt;
# Mueva el fichero 456.txt al temporal&lt;br /&gt;
# Borre el fichero 456.txt&lt;br /&gt;
# Compruebe si el fichero 789.txt contiene la palabra “mundo”&lt;br /&gt;
# Borre la carpeta xyz y su contenido&lt;br /&gt;
# Liste el contenido de la carpeta temporal mostrando los permisos asociados a los ficheros y carpetas, almacene el resultado en el fichero temporal.txt&lt;br /&gt;
# Cree la carpeta ‘x’ y dentro de ella, la carpeta ‘y’&lt;br /&gt;
# Mueva el fichero temporal.txt dentro de la carpeta ‘y’&lt;br /&gt;
# Cuente el número de ficheros y directorios en la carpeta tmp&lt;/div&gt;</summary>
		<author><name>Josmonnie1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4565</id>
		<title>Administración básica</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4565"/>
				<updated>2019-11-13T23:01:29Z</updated>
		
		<summary type="html">&lt;p&gt;Josmonnie1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para realizar esta práctica utilizaremos una de las máquinas virtuales que generamos en la práctica anterior.&lt;br /&gt;
&lt;br /&gt;
En esta práctica aprenderemos a utilizar el interprete de ordenes (también conocido como ''[https://www.traficantes.net/sites/default/files/pdfs/En%20el%20principio%20fue...-TdS.pdf línea de comandos]'') y a aprender nociones básicas de administración de sistemas Linux.&lt;br /&gt;
&lt;br /&gt;
= Paso 0: Breve introducción al sistema Linux =&lt;br /&gt;
&lt;br /&gt;
== Estructura básica del sistema de archivos ==&lt;br /&gt;
&lt;br /&gt;
En un sistema Linux, todas las carpetas y ficheros en el sistema de fichero pende de la carpeta raíz que se representa con la /.&lt;br /&gt;
&lt;br /&gt;
 /&lt;br /&gt;
 ├── bin&lt;br /&gt;
 ├── usr&lt;br /&gt;
 │   ├── local&lt;br /&gt;
 │   ├── bin&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── dev&lt;br /&gt;
 │   ├── sda&lt;br /&gt;
 │   ├── sda1&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── home&lt;br /&gt;
 │   ├── practica&lt;br /&gt;
 │   │   ├── tema1.pdf&lt;br /&gt;
 │   │   ├── boletin1.pdf&lt;br /&gt;
 │   │   └── ...&lt;br /&gt;
 │   ├── profesor&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 └── etc&lt;br /&gt;
     ├── firefox&lt;br /&gt;
     ├── libvirt&lt;br /&gt;
     ├── ...&lt;br /&gt;
     └── ...&lt;br /&gt;
&lt;br /&gt;
Como puedes observar, el sistema de fichero emplea una estructura de árbol.&lt;br /&gt;
&lt;br /&gt;
== Nociones básicas ==&lt;br /&gt;
&lt;br /&gt;
·Aplicaciones con nombres compuestos: usar guion entre palabras&lt;br /&gt;
&lt;br /&gt;
·Nombres con espacios en blanco: Escribir entre comillas dobles&lt;br /&gt;
&lt;br /&gt;
·Espacios en blanco para separar ordenes (ej: instalar varios paquetes )&lt;br /&gt;
&lt;br /&gt;
·Formato general de una orden: comando [-opciones] [argumentos]&lt;br /&gt;
&lt;br /&gt;
·'''IMPORTANTE''': Diferencia entre mayúsculas y minúsculas&lt;br /&gt;
&lt;br /&gt;
== Carpetas . y .. ==&lt;br /&gt;
&lt;br /&gt;
Toda carpeta en un sistema Linux dispone de dos pseudocarpetas, la '''.''' y la '''..'':&lt;br /&gt;
&lt;br /&gt;
* La pseudocarpeta '''..''' hace referencia a la carpeta padre que contiene a esta carpeta.&lt;br /&gt;
* La pseudocarpeta '''.''' hace referencia a la carpeta actual, es por tanto una autoreferencia.&lt;br /&gt;
&lt;br /&gt;
En el caso de la carpeta raíz, la pseudocarpeta '''.''' y '''..''' hacen referencia a la propia carpeta raíz, se trata, por tanto de una excepción.&lt;br /&gt;
&lt;br /&gt;
== Directorio de trabajo actual y la orden cd ==&lt;br /&gt;
&lt;br /&gt;
Cada interprete de ordenes dispone de una ''carpeta de trabajo actual'' ('''c'''urrent '''w''orking '''d''irectory, en inglés). La carpeta de trabajo actual se puede modificar con la orden '''cd''' ('''c'''hange '''d'''irectory, en inglés).&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos situaría en la carpeta padre, empleando una ruta relativa.&lt;br /&gt;
&lt;br /&gt;
Si volvemos a escribir desde /home &amp;quot; cd .. &amp;quot; nos lleva a '''/$''' &lt;br /&gt;
&lt;br /&gt;
Para situarnos en el raíz, podemos emplear una ruta absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En caso de que queramos volver a la carpeta de usuario, bastaría con invocar a '''cd''' sin más o ''' cd ~ '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MUY IMPORTANTE''': No es lo mismo cd.. que ''' cd .. ''', es necesario el espacio después del cd.&lt;br /&gt;
&lt;br /&gt;
== Rutas absolutas, rutas relativas ==&lt;br /&gt;
&lt;br /&gt;
Para hacer referencia a un fichero o una carpeta se usan ruta absolutas o rutas relativas.&lt;br /&gt;
&lt;br /&gt;
Las rutas absolutas siempre empieza por /, de manera que toman como punto de referencia la carpeta raíz (/). Por ejemplo, una ruta absoluta a la carpeta '''prueba''' que está almacenada en la carpeta del usuario '''ubuntu''' es '/home/ubuntu/prueba/'.&lt;br /&gt;
&lt;br /&gt;
Las ruta relativa toma como referencia la carpeta de trabajo actual. Para averiguar la carpeta de trabajo actual disponemos de la orden '''pwd'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ pwd&lt;br /&gt;
/home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En base a la carpeta de trabajo actual, empleando la pseudocarpeta '''..''', se puede construir rutas relativas. Por ejemplo, para referenciar un fichero '''fichero.txt''' en la carpeta temporal, podemos emplear la ruta relativa '''../../tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
Aunque probablemente sea más cómodo emplear una ruta absoluta en este caso, que sería '''/tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
== Intérprete de órdenes ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de órdenes es un lanzador de aplicaciones textual que emplea el teclado como dispositivo de entrada de datos. Mediante el teclado, se escribe el nombre del programa que se quiere lanzar y al pulsa la tecla ''intro'' el intérprete de ordenes ejecutara dicho programa. Por defecto, el intérprete de ordenes que emplea Ubuntu por defecto es '''bash'''.&lt;br /&gt;
&lt;br /&gt;
== man: ver la página de manual de una orden ==&lt;br /&gt;
&lt;br /&gt;
La orden '''man''' te será útil para ver las páginas de manual.&lt;br /&gt;
&lt;br /&gt;
Su estructura básica es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aunque también se utiliza con la opción ''' -a ''' de All, que también muestra las entradas comenzadas por '''.''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -a &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este programa toma como entrada el nombre de la orden de la que quieres consultar su página de manual, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos da información del manual de la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
Para salir de la página de manual, pulsa la tecla '''q''' (la primera letra de la palabra '''quit''', en inglés).&lt;br /&gt;
&lt;br /&gt;
quit = salir&lt;br /&gt;
&lt;br /&gt;
Normalmente, los programas ofrecen opciones de ayuda, como '''--help'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man --help&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede emplear la versión compacta a la hora de especificar opciones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En general, todas las ordenes suelen ofrecer una opción de ayuda.&lt;br /&gt;
&lt;br /&gt;
= Paso 1: Operaciones básicas con el sistema de ficheros =&lt;br /&gt;
&lt;br /&gt;
== ls ==&lt;br /&gt;
&lt;br /&gt;
Lista los ficheros y carpetas. Si no se especifica nada, muestra los ficheros y carpetas que contiene la carpeta de trabajo actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se especifica una ruta, muestra las carpetas y ficheros contenidos en dicha ruta, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /&lt;br /&gt;
bin  boot  data  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz  vmlinuz.old&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al emplear '''/''' como ruta absoluta, muestra el contenido de la carpeta raíz.&lt;br /&gt;
&lt;br /&gt;
Las opciones más usadas de este programa suelen ser:&lt;br /&gt;
&lt;br /&gt;
* -a: muestra los ficheros y carpetas ''ocultos''. En Linux, cualquier fichero o carpeta cuyo nombre empiece por . se considera ''oculto''. Esto incluye también en el listado las pseudocarpetas . y ..&lt;br /&gt;
&lt;br /&gt;
* -l: se muestra en lista y aporta datos como la fecha de última modificación, propietario, grupo, tamaño en bytes y nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -a&lt;br /&gt;
&lt;br /&gt;
.  ..  .bash_history  .bash_logout  .bashrc  .profile  .ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ambas opciones se puede combinar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -la /&lt;br /&gt;
&lt;br /&gt;
total 92&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 .&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 ..&lt;br /&gt;
drwxr-xr-x   2 root root  4096 Aug 22 12:37 bin&lt;br /&gt;
drwxr-xr-x   4 root root  4096 Aug 22 12:37 boot&lt;br /&gt;
drwx------   3 root root  4096 Aug 28 09:50 data&lt;br /&gt;
drwxr-xr-x  18 root root  3780 Aug 28 09:46 dev&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otras opciones útiles son:&lt;br /&gt;
&lt;br /&gt;
* -s : muestra el tamaño en bloques de cada archivo&lt;br /&gt;
&lt;br /&gt;
* -t : aporta el día y la hora de modificación&lt;br /&gt;
&lt;br /&gt;
* -R : lista también las subcarpetas &lt;br /&gt;
&lt;br /&gt;
* --color : muestra el contenido coloreado&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los '''permisos''' se emplean en base a tres capacidades:&lt;br /&gt;
&lt;br /&gt;
* Lectura, que se codifica con '''r''' (read, en inglés).&lt;br /&gt;
* Escritura, que se codifica con '''w''' (write, en inglés).&lt;br /&gt;
* Ejecutación, que se codifica con '''x''' (execute, en inglés).&lt;br /&gt;
&lt;br /&gt;
La primera columna muestra los permisos que codifican:&lt;br /&gt;
&lt;br /&gt;
* Tipo de entrada: '''d''' indica ''directorio'' (''carpeta'').&lt;br /&gt;
* Permisos del propietario, primera terna de rwx&lt;br /&gt;
* Permisos del grupo, segunda terna de rwx&lt;br /&gt;
* Permisos para el resto del mundo, tercera terna de rwx.&lt;br /&gt;
&lt;br /&gt;
A continuación, aparecen el propietario y el grupo, seguidos de la fecha de última modificación y el nombre del fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
La ayuda ( help ) en ls solo funciona con ''' ls --help ''' no con ls -h&lt;br /&gt;
&lt;br /&gt;
== mkdir ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crea una carpeta test en el directorio actual.&lt;br /&gt;
&lt;br /&gt;
Comprobemos que se ha creado bien:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la opción '''-p''', permite crear sucesivas carpetas anidadas de una sola vez, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir -p a/b/c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Que crea la siguiente estructura de carpetas.&lt;br /&gt;
&lt;br /&gt;
 a&lt;br /&gt;
 └── b&lt;br /&gt;
     └── c&lt;br /&gt;
&lt;br /&gt;
== touch ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo fichero vacío (sin contenido) con el nombre que especifiquemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el fichero se ha creado correctamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cp ==&lt;br /&gt;
&lt;br /&gt;
Copia un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp file.txt file_copy.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para copiar una carpeta y su contenido tenemos que usar la opción -r (recursivo).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -r test test_copy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comprobamos el resultado con la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
* Si nos encontramos en la carpeta destino, la estructura sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp &amp;lt;nombre ruta origen&amp;gt; &amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mv ==&lt;br /&gt;
&lt;br /&gt;
Mueve fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv file_copy.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se emplea para renombrar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv test_copy test_copy2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rm ==&lt;br /&gt;
&lt;br /&gt;
* Borra un fichero o carpeta vacía:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para borrar una carpeta no vacía y su contenido:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -r &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANTE''': No hacer jamás ''' rm -r * '''&lt;br /&gt;
&lt;br /&gt;
* EJERCICIOS:&lt;br /&gt;
&lt;br /&gt;
# Crear la siguiente estructura dentro del directorio /tmp (usar los comandos mkdir, touch y cp):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 ├── carpeta1&lt;br /&gt;
 ├── carpeta2&lt;br /&gt;
 │   ├── fichero1.txt&lt;br /&gt;
 │   └── fichero2.md&lt;br /&gt;
 └── carpeta3&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
# Basándonos en el ejercicio anterior, cambiar la estructura a la siguiente (usar comandos mv y rm):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 └── carpeta&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
= Paso 2: Impresión por pantalla y redirección de salida =&lt;br /&gt;
&lt;br /&gt;
== echo ==&lt;br /&gt;
&lt;br /&gt;
Sirve para imprimir una línea de texto por pantalla o variables de entorno. Además, nos permite escribir en ficheros.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;lt;opción&amp;gt; &amp;lt;texto&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Opciones curiosas: &lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \bPALABRA&amp;gt;   Se eliminan los espacios entre las palabras&lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \nPALABRA&amp;gt;	 Se añaden saltos de línea&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una variable de entorno es una variable editada con algún valor, por defecto existen algunas creadas, como por ejemplo la variable HOME, que contiene el directorio del usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $HOME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aprovecharemos y crearemos una variable nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ME=&amp;quot;my name&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $ME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redirección de salida ==&lt;br /&gt;
&lt;br /&gt;
&amp;gt; y &amp;gt;&amp;gt; sirve para redirigir una salida. Por ejemplo, utilizando el comando echo,&lt;br /&gt;
podemos enviar un texto dentro de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La diferencia entre &amp;gt; y &amp;gt;&amp;gt; es que &amp;gt; sobrescribe lo que haya en el fichero y&lt;br /&gt;
añade el contenido, y &amp;gt;&amp;gt; no sobrescribe, solo añade el nuevo contenido.&lt;br /&gt;
&lt;br /&gt;
Hagamos la prueba:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En cualquier caso, si el fichero no existe, se crea.&lt;br /&gt;
&lt;br /&gt;
= Paso 3: Manejo de ficheros y carpetas avanzado =&lt;br /&gt;
&lt;br /&gt;
== cat ==&lt;br /&gt;
&lt;br /&gt;
* Muestra el contenido de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file.txt&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Crea un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUARDAR FICHERO: Pulsamos ENTER y luego CTRL + D&lt;br /&gt;
&lt;br /&gt;
* Añadir más lineas al fichero: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;&amp;lt;nombre fichero&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Concatenar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt; &amp;gt; &amp;lt;fichero3&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Editar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat&lt;br /&gt;
&lt;br /&gt;
hola&lt;br /&gt;
que pasa&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; &amp;lt;fichero4&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== grep ==&lt;br /&gt;
&lt;br /&gt;
Sirve para localizar coincidencias de un cierto patrón en ficheros y muestra la coincidencia, en caso de encontrarla, por pantalla.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
grep &amp;lt;opción&amp;gt; &amp;lt;patrón&amp;gt; &amp;lt;archivos donde buscar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por ejemplo, para buscar el patrón ''prueba'' en el fichero ''fichero.txt''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ grep -n prueba fichero.txt&lt;br /&gt;
1:Esto es una prueba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Principales opciones del comando:&lt;br /&gt;
&lt;br /&gt;
-c : Escribe el número de líneas encontradas.&lt;br /&gt;
&lt;br /&gt;
-i : No distingue entre mayúsculas y minúsculas.&lt;br /&gt;
&lt;br /&gt;
-l : Muestra los nombres de los ficheros que contienen los caracteres buscados.&lt;br /&gt;
&lt;br /&gt;
-n : Cada línea es precedida por su número en el fichero.&lt;br /&gt;
&lt;br /&gt;
-s : No se muestran los mensajes que indican que no se puede abrir un fichero.&lt;br /&gt;
&lt;br /&gt;
-v : Muestra sólo las líneas que no cumplen la condición.&lt;br /&gt;
&lt;br /&gt;
== wc ==&lt;br /&gt;
&lt;br /&gt;
Sirve para contar el número de palabras, caracteres, líneas o bytes que contiene un fichero.&lt;br /&gt;
&lt;br /&gt;
Las opciones más utilizadas son:&lt;br /&gt;
&lt;br /&gt;
* -l: muestra el número de líneas que contiene el fichero.&lt;br /&gt;
* -w: muestra el número de palabras.&lt;br /&gt;
* -m: muestra el número de caracteres&lt;br /&gt;
* -c: muestra el número de bytes&lt;br /&gt;
&lt;br /&gt;
Probemos y contemos todo en el fichero file2.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file2.txt&lt;br /&gt;
wc -w file2.txt&lt;br /&gt;
wc -m file2.txt&lt;br /&gt;
wc -c file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos contar más de un fichero a la vez:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos mostrará el conteo de cada fichero y el total.&lt;br /&gt;
&lt;br /&gt;
== Tubería (|) ==&lt;br /&gt;
&lt;br /&gt;
La tubería nos servirá para conectar varios comandos al mismo tiempo, veamos&lt;br /&gt;
unos ejemplos, que siempre se entiende mejor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file2.txt | grep prueba&lt;br /&gt;
grep -nr prueba file2.txt | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el primer ejemplo, mostramos el contenido de file2.txt, y esta salida se la&lt;br /&gt;
pasamos al comando grep, el cual busca las líneas que contengan prueba.&lt;br /&gt;
&lt;br /&gt;
En el segundo, buscamos todas las líneas que contengan la palabra prueba, y esta&lt;br /&gt;
salida se la pasamos al comando wc, el cual cuenta las líneas de la salida del&lt;br /&gt;
comando grep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
&lt;br /&gt;
Vamos a ver unos conceptos antes de seguir:&lt;br /&gt;
&lt;br /&gt;
* Entrada estándar: representa los datos que necesita una aplicación para funcionar, como por ejemplo un archivo de datos o información ingresada desde la terminal y es representado en la terminal como el tipo 0.&lt;br /&gt;
* Salida estándar: es la vía que utilizan las aplicaciones para mostrarte información, allí podemos ver el progreso o simplemente los mensajes que la  aplicación quiera darte en determinado momento y es representado en la terminal como el tipo 1.&lt;br /&gt;
* Error estándar: es la forma en que los programas te informan sobre los problemas que pueden encontrarse al momento de la ejecución y es representado en la terminal como el tipo 2.&lt;br /&gt;
&lt;br /&gt;
Las redirecciones nos sirven para mover la información de un tipo a otro.&lt;br /&gt;
&lt;br /&gt;
Ya vimos previamente el uso de &amp;gt; y &amp;gt;&amp;gt;, y también el |, veamos algunas más:&lt;br /&gt;
&lt;br /&gt;
* comando &amp;lt; fichero: Toma la entrada de fichero&lt;br /&gt;
* comando 2&amp;gt; fichero: Envía la salida de error de comando a fichero&lt;br /&gt;
* comando 2&amp;gt;&amp;amp;1: Envía la salida de error a la salida estándar&lt;br /&gt;
* comando &amp;amp;&amp;gt; fichero: Envía la salida estándar y de error a fichero; equivale a comando &amp;gt; fichero 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
= Paso 4: Usuarios y grupos =&lt;br /&gt;
&lt;br /&gt;
== whoami ==&lt;br /&gt;
&lt;br /&gt;
Sirve para obtener el usuario actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo más seguro es que nos aparezca ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who ==&lt;br /&gt;
&lt;br /&gt;
Es para saber quien está ahora mismo en la máquina conectado.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
who&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seguramente solo estemos nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ubuntu   pts/0        2019-08-28 13:51 (192.168.122.1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== su y sudo ==&lt;br /&gt;
&lt;br /&gt;
su (substitute user): sirve para cambiar de usuario. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí nos pedirá la contraseña del usuario al que queramos cambiar.&lt;br /&gt;
&lt;br /&gt;
sudo (super user do): no todas las distribuciones lo integran, porque es menos&lt;br /&gt;
seguro que su, este comando nos permite ejecutar un comando siendo otro usuario,&lt;br /&gt;
por defecto, si no le damos usuario, lo hará con el usuario root. Si sudo nos&lt;br /&gt;
pide contraseña, nos pide la contraseña del usuario, ya que el usuario es que el&lt;br /&gt;
tiene permisos para usar sudo o no.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ls -a /root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tuviéramos por ejemplo un usuario 'practica' y quisíeramos ejecutar un&lt;br /&gt;
comando en su nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u practica ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== adduser y useradd ==&lt;br /&gt;
&lt;br /&gt;
Ambos comandos sirven para crear un nuevo usuario, pero tienen sus diferencias.&lt;br /&gt;
&lt;br /&gt;
useradd es un comando del sistema, y adduser es un script escrito en perl que&lt;br /&gt;
utiliza el comando useradd. La diferencia así de primeras es que adduser nos&lt;br /&gt;
crear el directorio /home/usuario y useradd necesita la opción -m para hacer lo&lt;br /&gt;
mismo. Se puede utilizar el que se quiera, aunque es más recomendable useradd,&lt;br /&gt;
ya que funcionará igual en todas las distribuciones.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir un usuario practica con su directorio en /home (notemos que&lt;br /&gt;
necesitamos permisos de super usuario para realizar esta tarea):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a comprobar que el directorio home está creado y que el usuario practica&lt;br /&gt;
funciona:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home  # veremos el directorio practica&lt;br /&gt;
sudo -u practica whoami  # nos dirá que somo el usuario practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== passwd ==&lt;br /&gt;
&lt;br /&gt;
Sirve para modificar la contraseña de un usuario, por ejemplo, vamos a modificar&lt;br /&gt;
la contraseña del usuario que hemos creado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo passwd practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos preguntará dos veces la contraseña, y ya la tendremos actualizadas. Vamos&lt;br /&gt;
ahora a probar ahora el comando su para cambiar de usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que hemos cambiado de usuario, para cerrar este usuario, escribimos&lt;br /&gt;
'exit' o pulsamos 'CTLR + D'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== deluser y userdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para borrar un usuario, similar a adduser y useradd, userdel es el&lt;br /&gt;
comando y deluser el script.&lt;br /&gt;
&lt;br /&gt;
Vamos a borrar el usuario que hemos creado, incluyendo el borrado de su /home&lt;br /&gt;
(opción -r):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
userdel -r practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobemos que ya no tenemos usuario ni /home:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home&lt;br /&gt;
sudo -u practica whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== addgroup y groupadd ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para crear un grupo. Los grupos sirven para agrupar a los usuarios&lt;br /&gt;
y que estos tengan unos mismos permisos. Por ejemplo, cuando instalamos algunas&lt;br /&gt;
herramientas como por ejemplo docker, este crea el grupo docker automáticamente&lt;br /&gt;
para que fácilmente podamos añadir a un usuario al grupo, y este tenga los&lt;br /&gt;
permisos para trabajar con dicha herramienta.&lt;br /&gt;
&lt;br /&gt;
Vamos a crear un nuevo grupo, vamos a llamarle invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupadd invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== usermod y groups ==&lt;br /&gt;
&lt;br /&gt;
usermod es utilizado para asignar un grupo a un usuario.&lt;br /&gt;
&lt;br /&gt;
groups es utilizado para ver los grupos a los que pertenece un usuario.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir a un usuario practica, lo vamos a añadir al grupo invitado y&lt;br /&gt;
veremos los grupos a los que pertenece:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
sudo usermod -G invitado practica&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario práctica pertenece al grupo invitado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== delgroup y groupdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para eliminar un grupo. Vamos a eliminar el grupo que hemos creado&lt;br /&gt;
anteriormente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupdel invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar ahora que el usuario practica no pertenece al grupo invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 5: Permisos =&lt;br /&gt;
&lt;br /&gt;
== Nomenclatura rwx y numérica ==&lt;br /&gt;
&lt;br /&gt;
Si hacemos un ls -l, la primera cadena que nos aparece son los permisos del&lt;br /&gt;
fichero (-rwxrw-r--), podemos dividirlo en 4 elementos:&lt;br /&gt;
&lt;br /&gt;
-    (rwx)   (rw-)  (r--)&lt;br /&gt;
|      |       |      |&lt;br /&gt;
type  owner   group  others&lt;br /&gt;
&lt;br /&gt;
* type: el tipo de fichero, pudiendo ser d (directorio), l (enlace simbólico), - (fichero normal)&lt;br /&gt;
* owner: permisos de propietario&lt;br /&gt;
* group: permisos de grupo&lt;br /&gt;
* others: permisos para los demás usuarios&lt;br /&gt;
&lt;br /&gt;
Significado de los permisos:&lt;br /&gt;
&lt;br /&gt;
* r: permisos de lectura&lt;br /&gt;
* w: permisos de escritura&lt;br /&gt;
* x: permisos de ejecución&lt;br /&gt;
&lt;br /&gt;
Por último, existe un modo abreviado para estos permisos que se utiliza con&lt;br /&gt;
números.&lt;br /&gt;
&lt;br /&gt;
rwx&lt;br /&gt;
001 en binario es 1 en decimal. Permisos de ejecución&lt;br /&gt;
010 en binario es 2 en decimal. Permisos de escritura&lt;br /&gt;
100 en binario es 4 en decimal. Permisos de lectura&lt;br /&gt;
&lt;br /&gt;
La suma de los permisos, nos da el valor numérico. Veamos un ejemplo:&lt;br /&gt;
rwx rw- r--&lt;br /&gt;
111 110 100&lt;br /&gt;
 7   6   4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chmod ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar los permisos de acceso a un fichero o directorio. Podemos dar&lt;br /&gt;
permisos de dos formas diferentes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== modo carácter ===&lt;br /&gt;
&lt;br /&gt;
Veamos primero unos detalles:&lt;br /&gt;
&lt;br /&gt;
Clases de usuario:&lt;br /&gt;
&lt;br /&gt;
* owner (u)&lt;br /&gt;
* group (g)&lt;br /&gt;
* others (o)&lt;br /&gt;
* all (a)&lt;br /&gt;
&lt;br /&gt;
Modificador:&lt;br /&gt;
&lt;br /&gt;
* añadir (+)&lt;br /&gt;
* eliminar (-)&lt;br /&gt;
* sobrescribir (=)&lt;br /&gt;
&lt;br /&gt;
Para dar permisos tendríamos que seleccionar la clase de usuario el modificador&lt;br /&gt;
y los permisos, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x file  # añadimos permisos de ejecución al usuario&lt;br /&gt;
chmod go-w file  # quitamos permisos de escritura al grupo y a otros usuarios&lt;br /&gt;
chmod u=rwx,go=r file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modo octal ===&lt;br /&gt;
&lt;br /&gt;
Con el modo octacl, es como si siempre utilizáramos el modificar sobrescribir,&lt;br /&gt;
pongamos algunos ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod 744 file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
chmod 777 file  # Todos tienen permisos para todo&lt;br /&gt;
chmod 600 file  # solo el propietario tiene permisos de lectura y escritura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos ===&lt;br /&gt;
&lt;br /&gt;
Vamos a ver como funciona el tema de permisos con unos ejemplos. Vamos a crear&lt;br /&gt;
un fichero pruebas y le vamos a quitar los permisos de escritura a nuestro&lt;br /&gt;
usuario, y le vamos a dar permisos de escritura a otros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch pruebas&lt;br /&gt;
ls -l pruebas  # de esta forma veremos que por defecto los permisos son rw-rw-r--&lt;br /&gt;
chmod u-w,o+w pruebas&lt;br /&gt;
ls -l pruebas  # ahora los permisos deberían ser -w-rw-rw-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez dado los permisos, veamos que con nuestro usuario podemos leer pero no&lt;br /&gt;
escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y ahora vamos a ver que el usuario pruebas, puede leer y escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chown ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar el propietario de un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
Vamos por ejemplo a pasarle ahora el fichero pruebas al usuario practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica pruebas&lt;br /&gt;
ls -l pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario actual ahora es pruebas, aunque vemos que el ls muestra&lt;br /&gt;
lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-r--rw-rw- 1 practica ubuntu 9 Aug 29 09:34 pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hay que comentar un detalle, y es que los ficheros y directorios tienen asignado&lt;br /&gt;
un usuario y un grupo, por defecto se utiliza el mismo usuario como grupo&lt;br /&gt;
cuando creamos un nuevo fichero o directorio. Si queremos que cuando cambiemos&lt;br /&gt;
el propietario, cambiar tambien el grupo del fichero, podemos hacerlo de la&lt;br /&gt;
siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica:practica pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto, vamos ahora a probar que los permisos siguen funcionando&lt;br /&gt;
como antes, ahora con el usuario ubuntu, deberíamos de poder leer y escribir en&lt;br /&gt;
el fichero pruebas, y con el usuario practica, solo leer, esto es así por que&lt;br /&gt;
ahora el propitario es practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Pruebas usuario ubuntu&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo test &amp;gt;&amp;gt; pruebas&lt;br /&gt;
# Pruebas usuario practica&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 6: Procesos =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ps ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver que procesos están ejecutándose en el sistema, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux  # con la opción aux mostraremos todos los procesos del sistema&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada línea es un proceso, y cada proceso muestra su PID, usuario, cantidad de&lt;br /&gt;
memoria y cpu utilizada, comando y otros detalles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;  # añadir el &amp;amp; al final de un comando hace que este se ejecute en segundo plano, por lo que se quedará abierto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida de este comando nos mostrará el PID que tiene ese proceso que acabamos&lt;br /&gt;
de ejecutar, vamos a comprobarlo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el PID coincide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== kill ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para matar un proceso. kill se utiliza seguido de una&lt;br /&gt;
señal para enviar al proceso seguido de uno o varios PID. para ver las señales&lt;br /&gt;
disponibles, podemos listarlas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Las más utilizadas suele ser SIGTERM y SIGKILL, la primera intenta terminar el&lt;br /&gt;
proceso de forma poco abrupta, y la segunda suele utilizarse cuando el proceso&lt;br /&gt;
no atiende a esta primera señal. Vamos ahora a terminar el proceso que creamos&lt;br /&gt;
antes, si no recordamos el PID, busquémoslo de nuevo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos señal para terminar el proceso y comprobamos que ha terminado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -SIGTERM 8470&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También podemos notar que en el listado de señales, hay unos números, podemos&lt;br /&gt;
utilizar esos números en vez de las palabras, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;&lt;br /&gt;
kill -15 PID_COMANDO_PREVIO&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el proceso ha terminado correctamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 7: Estado CPU, RAM y Disco =&lt;br /&gt;
&lt;br /&gt;
== top ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para ver el listado de procesos y el estado de la CPU y&lt;br /&gt;
memoria.&lt;br /&gt;
&lt;br /&gt;
Probemos el comando y observemos detalladamente la salida:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
top&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para salir, pulsamos q.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== df y du ==&lt;br /&gt;
&lt;br /&gt;
df (disk free) y du (disk usage). Ambas son utilidades para mostrar el uso de&lt;br /&gt;
los discos.&lt;br /&gt;
&lt;br /&gt;
Con df mostraremos la información del espacio en cada dispositivo montado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estos comandos que nos muestran el tamaño de los ficheros, casi siempre tienen&lt;br /&gt;
una opción para mostrarlo en un formato más legible (-h)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mucho mejor.&lt;br /&gt;
&lt;br /&gt;
Ahora veamos el comando du, el cual nos mostrará el tamaño de un fichero o&lt;br /&gt;
directorio y sus subdirectorios, no olvidemos el -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -h /home/ubuntu&lt;br /&gt;
du -h /home/ubuntu/pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si solo quisíeramos saber el total de una carpeta y nos nos interesan sus&lt;br /&gt;
subcarpetas, podemos utilizar la opción -s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -sh /home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== free ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver el estado de la memoria, como siempre, opción -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
free -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsblk ==&lt;br /&gt;
&lt;br /&gt;
Nos muestra la información de todos los dispositivos de bloques (discos duros,&lt;br /&gt;
pendrivers, CD_ROM, SSD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En la siguiente práctica se utilizará más a fondo este comando, ya que&lt;br /&gt;
trabajaremos con dispositivos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 8: Gestión de paquetes de software y repositorios =&lt;br /&gt;
&lt;br /&gt;
Los sistemas Linux incluyen, además de las herramientas básicas del sistema operativo, repositorios de software que puede ser opcionalmente instalados por el administrador del sistema. Los fabricantes de las distribuciones de Linux incluyen paquetes de software listos para ser instalados que se integran con el sistema.&lt;br /&gt;
&lt;br /&gt;
Un paquete incluye el software necesario para que una cierta aplicación funcione correctamente, así como sus paquetes de dependencia.&lt;br /&gt;
&lt;br /&gt;
En Ubuntu, la herramienta de gestión de paquetes de software y repositorios se llama '''apt'''.&lt;br /&gt;
&lt;br /&gt;
=== Listado de repositorios de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
En Ubuntu el listado de repositorios se encuentra en el fichero /etc/apt/sources.list. Podemos comprobar que repositorios tenemos añadido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Actualización del listado de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
Para actualizar el listado de paquetes utilizaremos el comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instalación un nuevo paquete ===&lt;br /&gt;
&lt;br /&gt;
Para instalar un nuevo paquete, utilizaremos la orden install, por ejemplo, vamos a instalar tree, similar al ls pero muestra el arbol de directorios:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Desinstalación de un paquete ===&lt;br /&gt;
&lt;br /&gt;
Usaremos la orden purge o la orden remove, purge nos lo eliminad todo, y remove mantiene la configuración en el caso de que el paquete la tuviese. Vamos a eliminar el paquete instalado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt purge tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Paso 9: Módulos =&lt;br /&gt;
&lt;br /&gt;
Los módulos del kernel de Linux son partes que podemos añadir o quitar de forma&lt;br /&gt;
sencilla con el fin de añadir o quitar funcionalidad. Por ejemplo, algunas de&lt;br /&gt;
estas funcionalidades son:&lt;br /&gt;
&lt;br /&gt;
* Registrar temperaturas de nuestros componentes&lt;br /&gt;
* Hacer funcionr la tarjeta de red wifi&lt;br /&gt;
* Cargar los drivers de una tarjeta gráfica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsmod ==&lt;br /&gt;
&lt;br /&gt;
Comando para ver los módulos que estamos usando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lspci y usb-devices ==&lt;br /&gt;
&lt;br /&gt;
Estos comandos nos servirán para ver el hardware que está conectado a nuestro&lt;br /&gt;
ordenador. Con lspci veremos el listado del hardware integrado y con usb-devices&lt;br /&gt;
el que está conectado por hardware.&lt;br /&gt;
&lt;br /&gt;
Normalmente, como los módulos se utilizan para dar funcionalidad un hardware,&lt;br /&gt;
aquí en los listado de hardware podremos ver que módulo está utilizando cada&lt;br /&gt;
hardware:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lspci -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos una línea en algunos dispositivos que nos diga que módulo estamos&lt;br /&gt;
usando, pongo un pequeño trozo de la salida del comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02) (prog-if 01 [AHCI 1.0])&lt;br /&gt;
    Subsystem: Red Hat, Inc. QEMU Virtual Machine&lt;br /&gt;
    Flags: bus master, fast devsel, latency 0, IRQ 35&lt;br /&gt;
    I/O ports at c0c0 [size=32]&lt;br /&gt;
    Memory at fcc1d000 (32-bit, non-prefetchable) [size=4K]&lt;br /&gt;
    Capabilities: &amp;lt;access denied&amp;gt;&lt;br /&gt;
    Kernel driver in use: ahci&lt;br /&gt;
    Kernel modules: ahci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el hardware INTEl Corporation está utilizando el módulo ahci.&lt;br /&gt;
&lt;br /&gt;
Probemos ahora con usb-devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
usb-devices&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos un trozo de código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0&lt;br /&gt;
D:  Ver= 2.00 Cls=00(&amp;gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1&lt;br /&gt;
P:  Vendor=0627 ProdID=0001 Rev=00.00&lt;br /&gt;
S:  Manufacturer=QEMU&lt;br /&gt;
S:  Product=QEMU USB Tablet&lt;br /&gt;
S:  SerialNumber=42&lt;br /&gt;
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA&lt;br /&gt;
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el teclado está utilizando el módulo usbhid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== insmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para cargar un módulo en el kernel, imaginemos que tenemos un módulo que&lt;br /&gt;
se llama modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo insmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rmmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para eliminar un módulo de kernel. Imaginemos que queremos borrar un&lt;br /&gt;
módulo cargado anteriormente con el nombre modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rmmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuración =&lt;br /&gt;
&lt;br /&gt;
== Configurar la consola ==&lt;br /&gt;
&lt;br /&gt;
Para lanzar el asistente de configuración de la consola ejecutaremos el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El asistente nos permetirá cambiar la visualización del texto por consola entre otras funcionalidades.&lt;br /&gt;
&lt;br /&gt;
== Configurar el teclado ==&lt;br /&gt;
&lt;br /&gt;
En el caso de querer cambiar la configuración del teclado en consola usaremos el asistente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg-reconfigure keyboard-configuration&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra solución para cambiar la distribución del teclado es usar loadkeys x, que establece la configuración de teclas x de forma temporal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo loadkeys es &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso se establece la configuración &amp;quot;es&amp;quot; (Español).&lt;br /&gt;
&lt;br /&gt;
= Ejercicios =&lt;br /&gt;
&lt;br /&gt;
# Cree un fichero vacio llamado 123.txt&lt;br /&gt;
# Añada al fichero las siguientes tres lineas:&lt;br /&gt;
&lt;br /&gt;
        Hola mundo&lt;br /&gt;
        Probando 1 2 3&lt;br /&gt;
        Adios&lt;br /&gt;
&lt;br /&gt;
# Añada una linea más al fichero con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
        Prueba&lt;br /&gt;
&lt;br /&gt;
# Renombre el fichero 123.txt a 456.txt&lt;br /&gt;
# Haga una copia del fichero 456.txt al fichero 789.txt&lt;br /&gt;
# Cree la carpeta xyz&lt;br /&gt;
# Mueva el fichero 789.txt a la carpeta xyz&lt;br /&gt;
# Mueva el fichero 456.txt al temporal&lt;br /&gt;
# Borre el fichero 456.txt&lt;br /&gt;
# Compruebe si el fichero 789.txt contiene la palabra “mundo”&lt;br /&gt;
# Borre la carpeta xyz y su contenido&lt;br /&gt;
# Liste el contenido de la carpeta temporal mostrando los permisos asociados a los ficheros y carpetas, almacene el resultado en el fichero temporal.txt&lt;br /&gt;
# Cree la carpeta ‘x’ y dentro de ella, la carpeta ‘y’&lt;br /&gt;
# Mueva el fichero temporal.txt dentro de la carpeta ‘y’&lt;br /&gt;
# Cuente el número de ficheros y directorios en la carpeta tmp&lt;/div&gt;</summary>
		<author><name>Josmonnie1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4564</id>
		<title>Administración básica</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4564"/>
				<updated>2019-11-13T18:35:21Z</updated>
		
		<summary type="html">&lt;p&gt;Josmonnie1: /* Paso 0: Breve introducción al sistema Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para realizar esta práctica utilizaremos una de las máquinas virtuales que generamos en la práctica anterior.&lt;br /&gt;
&lt;br /&gt;
En esta práctica aprenderemos a utilizar el interprete de ordenes (también conocido como ''[https://www.traficantes.net/sites/default/files/pdfs/En%20el%20principio%20fue...-TdS.pdf línea de comandos]'') y a aprender nociones básicas de administración de sistemas Linux.&lt;br /&gt;
&lt;br /&gt;
= Paso 0: Breve introducción al sistema Linux =&lt;br /&gt;
&lt;br /&gt;
== Estructura básica del sistema de archivos ==&lt;br /&gt;
&lt;br /&gt;
En un sistema Linux, todas las carpetas y ficheros en el sistema de fichero pende de la carpeta raíz que se representa con la /.&lt;br /&gt;
&lt;br /&gt;
 /&lt;br /&gt;
 ├── bin&lt;br /&gt;
 ├── usr&lt;br /&gt;
 │   ├── local&lt;br /&gt;
 │   ├── bin&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── dev&lt;br /&gt;
 │   ├── sda&lt;br /&gt;
 │   ├── sda1&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── home&lt;br /&gt;
 │   ├── practica&lt;br /&gt;
 │   │   ├── tema1.pdf&lt;br /&gt;
 │   │   ├── boletin1.pdf&lt;br /&gt;
 │   │   └── ...&lt;br /&gt;
 │   ├── profesor&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 └── etc&lt;br /&gt;
     ├── firefox&lt;br /&gt;
     ├── libvirt&lt;br /&gt;
     ├── ...&lt;br /&gt;
     └── ...&lt;br /&gt;
&lt;br /&gt;
Como puedes observar, el sistema de fichero emplea una estructura de árbol.&lt;br /&gt;
&lt;br /&gt;
== Nociones básicas ==&lt;br /&gt;
&lt;br /&gt;
·Aplicaciones con nombres compuestos: usar guion entre palabras&lt;br /&gt;
&lt;br /&gt;
·Nombres con espacios en blanco: Escribir entre comillas dobles&lt;br /&gt;
&lt;br /&gt;
·Espacios en blanco para separar ordenes (ej: instalar varios paquetes )&lt;br /&gt;
&lt;br /&gt;
·Formato general de una orden: comando [-opciones] [argumentos]&lt;br /&gt;
&lt;br /&gt;
·'''IMPORTANTE''': Diferencia entre mayúsculas y minúsculas&lt;br /&gt;
&lt;br /&gt;
== Carpetas . y .. ==&lt;br /&gt;
&lt;br /&gt;
Toda carpeta en un sistema Linux dispone de dos pseudocarpetas, la '''.''' y la '''..'':&lt;br /&gt;
&lt;br /&gt;
* La pseudocarpeta '''..''' hace referencia a la carpeta padre que contiene a esta carpeta.&lt;br /&gt;
* La pseudocarpeta '''.''' hace referencia a la carpeta actual, es por tanto una autoreferencia.&lt;br /&gt;
&lt;br /&gt;
En el caso de la carpeta raíz, la pseudocarpeta '''.''' y '''..''' hacen referencia a la propia carpeta raíz, se trata, por tanto de una excepción.&lt;br /&gt;
&lt;br /&gt;
== Directorio de trabajo actual y la orden cd ==&lt;br /&gt;
&lt;br /&gt;
Cada interprete de ordenes dispone de una ''carpeta de trabajo actual'' ('''c'''urrent '''w''orking '''d''irectory, en inglés). La carpeta de trabajo actual se puede modificar con la orden '''cd''' ('''c'''hange '''d'''irectory, en inglés).&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos situaría en la carpeta padre, empleando una ruta relativa.&lt;br /&gt;
&lt;br /&gt;
Si volvemos a escribir desde /home &amp;quot; cd .. &amp;quot; nos lleva a '''/$''' &lt;br /&gt;
&lt;br /&gt;
Para situarnos en el raíz, podemos emplear una ruta absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En caso de que queramos volver a la carpeta de usuario, bastaría con invocar a '''cd''' sin más o ''' cd ~ '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MUY IMPORTANTE''': No es lo mismo cd.. que ''' cd .. ''', es necesario el espacio después del cd.&lt;br /&gt;
&lt;br /&gt;
== Rutas absolutas, rutas relativas ==&lt;br /&gt;
&lt;br /&gt;
Para hacer referencia a un fichero o una carpeta se usan ruta absolutas o rutas relativas.&lt;br /&gt;
&lt;br /&gt;
Las rutas absolutas siempre empieza por /, de manera que toman como punto de referencia la carpeta raíz (/). Por ejemplo, una ruta absoluta a la carpeta '''prueba''' que está almacenada en la carpeta del usuario '''ubuntu''' es '/home/ubuntu/prueba/'.&lt;br /&gt;
&lt;br /&gt;
Las ruta relativa toma como referencia la carpeta de trabajo actual. Para averiguar la carpeta de trabajo actual disponemos de la orden '''pwd'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ pwd&lt;br /&gt;
/home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En base a la carpeta de trabajo actual, empleando la pseudocarpeta '''..''', se puede construir rutas relativas. Por ejemplo, para referenciar un fichero '''fichero.txt''' en la carpeta temporal, podemos emplear la ruta relativa '''../../tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
Aunque probablemente sea más cómodo emplear una ruta absoluta en este caso, que sería '''/tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
== Intérprete de órdenes ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de órdenes es un lanzador de aplicaciones textual que emplea el teclado como dispositivo de entrada de datos. Mediante el teclado, se escribe el nombre del programa que se quiere lanzar y al pulsa la tecla ''intro'' el intérprete de ordenes ejecutara dicho programa. Por defecto, el intérprete de ordenes que emplea Ubuntu por defecto es '''bash'''.&lt;br /&gt;
&lt;br /&gt;
== man: ver la página de manual de una orden ==&lt;br /&gt;
&lt;br /&gt;
La orden '''man''' te será útil para ver las páginas de manual.&lt;br /&gt;
&lt;br /&gt;
Su estructura básica es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aunque también se utiliza con la opción ''' -a ''' de All, que también muestra las entradas comenzadas por '''.''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -a &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este programa toma como entrada el nombre de la orden de la que quieres consultar su página de manual, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos da información del manual de la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
Para salir de la página de manual, pulsa la tecla '''q''' (la primera letra de la palabra '''quit''', en inglés).&lt;br /&gt;
&lt;br /&gt;
quit = salir&lt;br /&gt;
&lt;br /&gt;
Normalmente, los programas ofrecen opciones de ayuda, como '''--help'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man --help&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede emplear la versión compacta a la hora de especificar opciones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En general, todas las ordenes suelen ofrecer una opción de ayuda.&lt;br /&gt;
&lt;br /&gt;
== Configurar la consola ==&lt;br /&gt;
&lt;br /&gt;
Para lanzar el asistente de configuración de la consola ejecutaremos el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg-reconfigure console-setup&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El asistente nos permetirá cambiar la visualización del texto por consola entre otras funcionalidades.&lt;br /&gt;
&lt;br /&gt;
En el caso de querer cambiar la configuración del teclado de forma permanente usaremos el asistente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg-reconfigure keyboard-configuration&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra solución de forma temporal es usar loadkeys x, que establece la configuración de teclas x de forma temporal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo loadkeys es &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso se establece la configuración &amp;quot;es&amp;quot; (Español).&lt;br /&gt;
&lt;br /&gt;
= Paso 1: Operaciones básicas con el sistema de ficheros =&lt;br /&gt;
&lt;br /&gt;
== ls ==&lt;br /&gt;
&lt;br /&gt;
Lista los ficheros y carpetas. Si no se especifica nada, muestra los ficheros y carpetas que contiene la carpeta de trabajo actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se especifica una ruta, muestra las carpetas y ficheros contenidos en dicha ruta, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /&lt;br /&gt;
bin  boot  data  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz  vmlinuz.old&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al emplear '''/''' como ruta absoluta, muestra el contenido de la carpeta raíz.&lt;br /&gt;
&lt;br /&gt;
Las opciones más usadas de este programa suelen ser:&lt;br /&gt;
&lt;br /&gt;
* -a: muestra los ficheros y carpetas ''ocultos''. En Linux, cualquier fichero o carpeta cuyo nombre empiece por . se considera ''oculto''. Esto incluye también en el listado las pseudocarpetas . y ..&lt;br /&gt;
&lt;br /&gt;
* -l: se muestra en lista y aporta datos como la fecha de última modificación, propietario, grupo, tamaño en bytes y nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -a&lt;br /&gt;
&lt;br /&gt;
.  ..  .bash_history  .bash_logout  .bashrc  .profile  .ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ambas opciones se puede combinar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -la /&lt;br /&gt;
&lt;br /&gt;
total 92&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 .&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 ..&lt;br /&gt;
drwxr-xr-x   2 root root  4096 Aug 22 12:37 bin&lt;br /&gt;
drwxr-xr-x   4 root root  4096 Aug 22 12:37 boot&lt;br /&gt;
drwx------   3 root root  4096 Aug 28 09:50 data&lt;br /&gt;
drwxr-xr-x  18 root root  3780 Aug 28 09:46 dev&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otras opciones útiles son:&lt;br /&gt;
&lt;br /&gt;
* -s : muestra el tamaño en bloques de cada archivo&lt;br /&gt;
&lt;br /&gt;
* -t : aporta el día y la hora de modificación&lt;br /&gt;
&lt;br /&gt;
* -R : lista también las subcarpetas &lt;br /&gt;
&lt;br /&gt;
* --color : muestra el contenido coloreado&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los '''permisos''' se emplean en base a tres capacidades:&lt;br /&gt;
&lt;br /&gt;
* Lectura, que se codifica con '''r''' (read, en inglés).&lt;br /&gt;
* Escritura, que se codifica con '''w''' (write, en inglés).&lt;br /&gt;
* Ejecutación, que se codifica con '''x''' (execute, en inglés).&lt;br /&gt;
&lt;br /&gt;
La primera columna muestra los permisos que codifican:&lt;br /&gt;
&lt;br /&gt;
* Tipo de entrada: '''d''' indica ''directorio'' (''carpeta'').&lt;br /&gt;
* Permisos del propietario, primera terna de rwx&lt;br /&gt;
* Permisos del grupo, segunda terna de rwx&lt;br /&gt;
* Permisos para el resto del mundo, tercera terna de rwx.&lt;br /&gt;
&lt;br /&gt;
A continuación, aparecen el propietario y el grupo, seguidos de la fecha de última modificación y el nombre del fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
La ayuda ( help ) en ls solo funciona con ''' ls --help ''' no con ls -h&lt;br /&gt;
&lt;br /&gt;
== mkdir ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crea una carpeta test en el directorio actual.&lt;br /&gt;
&lt;br /&gt;
Comprobemos que se ha creado bien:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la opción '''-p''', permite crear sucesivas carpetas anidadas de una sola vez, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir -p a/b/c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Que crea la siguiente estructura de carpetas.&lt;br /&gt;
&lt;br /&gt;
 a&lt;br /&gt;
 └── b&lt;br /&gt;
     └── c&lt;br /&gt;
&lt;br /&gt;
== touch ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo fichero vacío (sin contenido) con el nombre que especifiquemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el fichero se ha creado correctamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cp ==&lt;br /&gt;
&lt;br /&gt;
Copia un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp file.txt file_copy.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para copiar una carpeta y su contenido tenemos que usar la opción -r (recursivo).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -r test test_copy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comprobamos el resultado con la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
* Si nos encontramos en la carpeta destino, la estructura sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp &amp;lt;nombre ruta origen&amp;gt; &amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mv ==&lt;br /&gt;
&lt;br /&gt;
Mueve fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv file_copy.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se emplea para renombrar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv test_copy test_copy2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rm ==&lt;br /&gt;
&lt;br /&gt;
* Borra un fichero o carpeta vacía:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para borrar una carpeta no vacía y su contenido:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -r &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANTE''': No hacer jamás ''' rm -r * '''&lt;br /&gt;
&lt;br /&gt;
* EJERCICIOS:&lt;br /&gt;
&lt;br /&gt;
# Crear la siguiente estructura dentro del directorio /tmp (usar los comandos mkdir, touch y cp):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 ├── carpeta1&lt;br /&gt;
 ├── carpeta2&lt;br /&gt;
 │   ├── fichero1.txt&lt;br /&gt;
 │   └── fichero2.md&lt;br /&gt;
 └── carpeta3&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
# Basándonos en el ejercicio anterior, cambiar la estructura a la siguiente (usar comandos mv y rm):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 └── carpeta&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
= Paso 2: Impresión por pantalla y redirección de salida =&lt;br /&gt;
&lt;br /&gt;
== echo ==&lt;br /&gt;
&lt;br /&gt;
Sirve para imprimir una línea de texto por pantalla o variables de entorno. Además, nos permite escribir en ficheros.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;lt;opción&amp;gt; &amp;lt;texto&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Opciones curiosas: &lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \bPALABRA&amp;gt;   Se eliminan los espacios entre las palabras&lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \nPALABRA&amp;gt;	 Se añaden saltos de línea&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una variable de entorno es una variable editada con algún valor, por defecto existen algunas creadas, como por ejemplo la variable HOME, que contiene el directorio del usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $HOME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aprovecharemos y crearemos una variable nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ME=&amp;quot;my name&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $ME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redirección de salida ==&lt;br /&gt;
&lt;br /&gt;
&amp;gt; y &amp;gt;&amp;gt; sirve para redirigir una salida. Por ejemplo, utilizando el comando echo,&lt;br /&gt;
podemos enviar un texto dentro de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La diferencia entre &amp;gt; y &amp;gt;&amp;gt; es que &amp;gt; sobrescribe lo que haya en el fichero y&lt;br /&gt;
añade el contenido, y &amp;gt;&amp;gt; no sobrescribe, solo añade el nuevo contenido.&lt;br /&gt;
&lt;br /&gt;
Hagamos la prueba:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En cualquier caso, si el fichero no existe, se crea.&lt;br /&gt;
&lt;br /&gt;
= Paso 3: Manejo de ficheros y carpetas avanzado =&lt;br /&gt;
&lt;br /&gt;
== cat ==&lt;br /&gt;
&lt;br /&gt;
* Muestra el contenido de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file.txt&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Crea un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUARDAR FICHERO: Pulsamos ENTER y luego CTRL + D&lt;br /&gt;
&lt;br /&gt;
* Añadir más lineas al fichero: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;&amp;lt;nombre fichero&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Concatenar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt; &amp;gt; &amp;lt;fichero3&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Editar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat&lt;br /&gt;
&lt;br /&gt;
hola&lt;br /&gt;
que pasa&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; &amp;lt;fichero4&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== grep ==&lt;br /&gt;
&lt;br /&gt;
Sirve para localizar coincidencias de un cierto patrón en ficheros y muestra la coincidencia, en caso de encontrarla, por pantalla.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
grep &amp;lt;opción&amp;gt; &amp;lt;patrón&amp;gt; &amp;lt;archivos donde buscar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por ejemplo, para buscar el patrón ''prueba'' en el fichero ''fichero.txt''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ grep -n prueba fichero.txt&lt;br /&gt;
1:Esto es una prueba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Principales opciones del comando:&lt;br /&gt;
&lt;br /&gt;
-c : Escribe el número de líneas encontradas.&lt;br /&gt;
&lt;br /&gt;
-i : No distingue entre mayúsculas y minúsculas.&lt;br /&gt;
&lt;br /&gt;
-l : Muestra los nombres de los ficheros que contienen los caracteres buscados.&lt;br /&gt;
&lt;br /&gt;
-n : Cada línea es precedida por su número en el fichero.&lt;br /&gt;
&lt;br /&gt;
-s : No se muestran los mensajes que indican que no se puede abrir un fichero.&lt;br /&gt;
&lt;br /&gt;
-v : Muestra sólo las líneas que no cumplen la condición.&lt;br /&gt;
&lt;br /&gt;
== wc ==&lt;br /&gt;
&lt;br /&gt;
Sirve para contar el número de palabras, caracteres, líneas o bytes que contiene un fichero.&lt;br /&gt;
&lt;br /&gt;
Las opciones más utilizadas son:&lt;br /&gt;
&lt;br /&gt;
* -l: muestra el número de líneas que contiene el fichero.&lt;br /&gt;
* -w: muestra el número de palabras.&lt;br /&gt;
* -m: muestra el número de caracteres&lt;br /&gt;
* -c: muestra el número de bytes&lt;br /&gt;
&lt;br /&gt;
Probemos y contemos todo en el fichero file2.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file2.txt&lt;br /&gt;
wc -w file2.txt&lt;br /&gt;
wc -m file2.txt&lt;br /&gt;
wc -c file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos contar más de un fichero a la vez:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos mostrará el conteo de cada fichero y el total.&lt;br /&gt;
&lt;br /&gt;
== Tubería (|) ==&lt;br /&gt;
&lt;br /&gt;
La tubería nos servirá para conectar varios comandos al mismo tiempo, veamos&lt;br /&gt;
unos ejemplos, que siempre se entiende mejor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file2.txt | grep prueba&lt;br /&gt;
grep -nr prueba file2.txt | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el primer ejemplo, mostramos el contenido de file2.txt, y esta salida se la&lt;br /&gt;
pasamos al comando grep, el cual busca las líneas que contengan prueba.&lt;br /&gt;
&lt;br /&gt;
En el segundo, buscamos todas las líneas que contengan la palabra prueba, y esta&lt;br /&gt;
salida se la pasamos al comando wc, el cual cuenta las líneas de la salida del&lt;br /&gt;
comando grep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
&lt;br /&gt;
Vamos a ver unos conceptos antes de seguir:&lt;br /&gt;
&lt;br /&gt;
* Entrada estándar: representa los datos que necesita una aplicación para funcionar, como por ejemplo un archivo de datos o información ingresada desde la terminal y es representado en la terminal como el tipo 0.&lt;br /&gt;
* Salida estándar: es la vía que utilizan las aplicaciones para mostrarte información, allí podemos ver el progreso o simplemente los mensajes que la  aplicación quiera darte en determinado momento y es representado en la terminal como el tipo 1.&lt;br /&gt;
* Error estándar: es la forma en que los programas te informan sobre los problemas que pueden encontrarse al momento de la ejecución y es representado en la terminal como el tipo 2.&lt;br /&gt;
&lt;br /&gt;
Las redirecciones nos sirven para mover la información de un tipo a otro.&lt;br /&gt;
&lt;br /&gt;
Ya vimos previamente el uso de &amp;gt; y &amp;gt;&amp;gt;, y también el |, veamos algunas más:&lt;br /&gt;
&lt;br /&gt;
* comando &amp;lt; fichero: Toma la entrada de fichero&lt;br /&gt;
* comando 2&amp;gt; fichero: Envía la salida de error de comando a fichero&lt;br /&gt;
* comando 2&amp;gt;&amp;amp;1: Envía la salida de error a la salida estándar&lt;br /&gt;
* comando &amp;amp;&amp;gt; fichero: Envía la salida estándar y de error a fichero; equivale a comando &amp;gt; fichero 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
= Paso 4: Usuarios y grupos =&lt;br /&gt;
&lt;br /&gt;
== whoami ==&lt;br /&gt;
&lt;br /&gt;
Sirve para obtener el usuario actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo más seguro es que nos aparezca ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who ==&lt;br /&gt;
&lt;br /&gt;
Es para saber quien está ahora mismo en la máquina conectado.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
who&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seguramente solo estemos nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ubuntu   pts/0        2019-08-28 13:51 (192.168.122.1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== su y sudo ==&lt;br /&gt;
&lt;br /&gt;
su (substitute user): sirve para cambiar de usuario. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí nos pedirá la contraseña del usuario al que queramos cambiar.&lt;br /&gt;
&lt;br /&gt;
sudo (super user do): no todas las distribuciones lo integran, porque es menos&lt;br /&gt;
seguro que su, este comando nos permite ejecutar un comando siendo otro usuario,&lt;br /&gt;
por defecto, si no le damos usuario, lo hará con el usuario root. Si sudo nos&lt;br /&gt;
pide contraseña, nos pide la contraseña del usuario, ya que el usuario es que el&lt;br /&gt;
tiene permisos para usar sudo o no.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ls -a /root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tuviéramos por ejemplo un usuario 'practica' y quisíeramos ejecutar un&lt;br /&gt;
comando en su nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u practica ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== adduser y useradd ==&lt;br /&gt;
&lt;br /&gt;
Ambos comandos sirven para crear un nuevo usuario, pero tienen sus diferencias.&lt;br /&gt;
&lt;br /&gt;
useradd es un comando del sistema, y adduser es un script escrito en perl que&lt;br /&gt;
utiliza el comando useradd. La diferencia así de primeras es que adduser nos&lt;br /&gt;
crear el directorio /home/usuario y useradd necesita la opción -m para hacer lo&lt;br /&gt;
mismo. Se puede utilizar el que se quiera, aunque es más recomendable useradd,&lt;br /&gt;
ya que funcionará igual en todas las distribuciones.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir un usuario practica con su directorio en /home (notemos que&lt;br /&gt;
necesitamos permisos de super usuario para realizar esta tarea):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a comprobar que el directorio home está creado y que el usuario practica&lt;br /&gt;
funciona:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home  # veremos el directorio practica&lt;br /&gt;
sudo -u practica whoami  # nos dirá que somo el usuario practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== passwd ==&lt;br /&gt;
&lt;br /&gt;
Sirve para modificar la contraseña de un usuario, por ejemplo, vamos a modificar&lt;br /&gt;
la contraseña del usuario que hemos creado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo passwd practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos preguntará dos veces la contraseña, y ya la tendremos actualizadas. Vamos&lt;br /&gt;
ahora a probar ahora el comando su para cambiar de usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que hemos cambiado de usuario, para cerrar este usuario, escribimos&lt;br /&gt;
'exit' o pulsamos 'CTLR + D'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== deluser y userdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para borrar un usuario, similar a adduser y useradd, userdel es el&lt;br /&gt;
comando y deluser el script.&lt;br /&gt;
&lt;br /&gt;
Vamos a borrar el usuario que hemos creado, incluyendo el borrado de su /home&lt;br /&gt;
(opción -r):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
userdel -r practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobemos que ya no tenemos usuario ni /home:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home&lt;br /&gt;
sudo -u practica whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== addgroup y groupadd ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para crear un grupo. Los grupos sirven para agrupar a los usuarios&lt;br /&gt;
y que estos tengan unos mismos permisos. Por ejemplo, cuando instalamos algunas&lt;br /&gt;
herramientas como por ejemplo docker, este crea el grupo docker automáticamente&lt;br /&gt;
para que fácilmente podamos añadir a un usuario al grupo, y este tenga los&lt;br /&gt;
permisos para trabajar con dicha herramienta.&lt;br /&gt;
&lt;br /&gt;
Vamos a crear un nuevo grupo, vamos a llamarle invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupadd invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== usermod y groups ==&lt;br /&gt;
&lt;br /&gt;
usermod es utilizado para asignar un grupo a un usuario.&lt;br /&gt;
&lt;br /&gt;
groups es utilizado para ver los grupos a los que pertenece un usuario.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir a un usuario practica, lo vamos a añadir al grupo invitado y&lt;br /&gt;
veremos los grupos a los que pertenece:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
sudo usermod -G invitado practica&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario práctica pertenece al grupo invitado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== delgroup y groupdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para eliminar un grupo. Vamos a eliminar el grupo que hemos creado&lt;br /&gt;
anteriormente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupdel invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar ahora que el usuario practica no pertenece al grupo invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 5: Permisos =&lt;br /&gt;
&lt;br /&gt;
== Nomenclatura rwx y numérica ==&lt;br /&gt;
&lt;br /&gt;
Si hacemos un ls -l, la primera cadena que nos aparece son los permisos del&lt;br /&gt;
fichero (-rwxrw-r--), podemos dividirlo en 4 elementos:&lt;br /&gt;
&lt;br /&gt;
-    (rwx)   (rw-)  (r--)&lt;br /&gt;
|      |       |      |&lt;br /&gt;
type  owner   group  others&lt;br /&gt;
&lt;br /&gt;
* type: el tipo de fichero, pudiendo ser d (directorio), l (enlace simbólico), - (fichero normal)&lt;br /&gt;
* owner: permisos de propietario&lt;br /&gt;
* group: permisos de grupo&lt;br /&gt;
* others: permisos para los demás usuarios&lt;br /&gt;
&lt;br /&gt;
Significado de los permisos:&lt;br /&gt;
&lt;br /&gt;
* r: permisos de lectura&lt;br /&gt;
* w: permisos de escritura&lt;br /&gt;
* x: permisos de ejecución&lt;br /&gt;
&lt;br /&gt;
Por último, existe un modo abreviado para estos permisos que se utiliza con&lt;br /&gt;
números.&lt;br /&gt;
&lt;br /&gt;
rwx&lt;br /&gt;
001 en binario es 1 en decimal. Permisos de ejecución&lt;br /&gt;
010 en binario es 2 en decimal. Permisos de escritura&lt;br /&gt;
100 en binario es 4 en decimal. Permisos de lectura&lt;br /&gt;
&lt;br /&gt;
La suma de los permisos, nos da el valor numérico. Veamos un ejemplo:&lt;br /&gt;
rwx rw- r--&lt;br /&gt;
111 110 100&lt;br /&gt;
 7   6   4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chmod ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar los permisos de acceso a un fichero o directorio. Podemos dar&lt;br /&gt;
permisos de dos formas diferentes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== modo carácter ===&lt;br /&gt;
&lt;br /&gt;
Veamos primero unos detalles:&lt;br /&gt;
&lt;br /&gt;
Clases de usuario:&lt;br /&gt;
&lt;br /&gt;
* owner (u)&lt;br /&gt;
* group (g)&lt;br /&gt;
* others (o)&lt;br /&gt;
* all (a)&lt;br /&gt;
&lt;br /&gt;
Modificador:&lt;br /&gt;
&lt;br /&gt;
* añadir (+)&lt;br /&gt;
* eliminar (-)&lt;br /&gt;
* sobrescribir (=)&lt;br /&gt;
&lt;br /&gt;
Para dar permisos tendríamos que seleccionar la clase de usuario el modificador&lt;br /&gt;
y los permisos, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x file  # añadimos permisos de ejecución al usuario&lt;br /&gt;
chmod go-w file  # quitamos permisos de escritura al grupo y a otros usuarios&lt;br /&gt;
chmod u=rwx,go=r file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modo octal ===&lt;br /&gt;
&lt;br /&gt;
Con el modo octacl, es como si siempre utilizáramos el modificar sobrescribir,&lt;br /&gt;
pongamos algunos ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod 744 file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
chmod 777 file  # Todos tienen permisos para todo&lt;br /&gt;
chmod 600 file  # solo el propietario tiene permisos de lectura y escritura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos ===&lt;br /&gt;
&lt;br /&gt;
Vamos a ver como funciona el tema de permisos con unos ejemplos. Vamos a crear&lt;br /&gt;
un fichero pruebas y le vamos a quitar los permisos de escritura a nuestro&lt;br /&gt;
usuario, y le vamos a dar permisos de escritura a otros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch pruebas&lt;br /&gt;
ls -l pruebas  # de esta forma veremos que por defecto los permisos son rw-rw-r--&lt;br /&gt;
chmod u-w,o+w pruebas&lt;br /&gt;
ls -l pruebas  # ahora los permisos deberían ser -w-rw-rw-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez dado los permisos, veamos que con nuestro usuario podemos leer pero no&lt;br /&gt;
escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y ahora vamos a ver que el usuario pruebas, puede leer y escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chown ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar el propietario de un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
Vamos por ejemplo a pasarle ahora el fichero pruebas al usuario practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica pruebas&lt;br /&gt;
ls -l pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario actual ahora es pruebas, aunque vemos que el ls muestra&lt;br /&gt;
lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-r--rw-rw- 1 practica ubuntu 9 Aug 29 09:34 pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hay que comentar un detalle, y es que los ficheros y directorios tienen asignado&lt;br /&gt;
un usuario y un grupo, por defecto se utiliza el mismo usuario como grupo&lt;br /&gt;
cuando creamos un nuevo fichero o directorio. Si queremos que cuando cambiemos&lt;br /&gt;
el propietario, cambiar tambien el grupo del fichero, podemos hacerlo de la&lt;br /&gt;
siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica:practica pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto, vamos ahora a probar que los permisos siguen funcionando&lt;br /&gt;
como antes, ahora con el usuario ubuntu, deberíamos de poder leer y escribir en&lt;br /&gt;
el fichero pruebas, y con el usuario practica, solo leer, esto es así por que&lt;br /&gt;
ahora el propitario es practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Pruebas usuario ubuntu&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo test &amp;gt;&amp;gt; pruebas&lt;br /&gt;
# Pruebas usuario practica&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 6: Procesos =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ps ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver que procesos están ejecutándose en el sistema, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux  # con la opción aux mostraremos todos los procesos del sistema&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada línea es un proceso, y cada proceso muestra su PID, usuario, cantidad de&lt;br /&gt;
memoria y cpu utilizada, comando y otros detalles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;  # añadir el &amp;amp; al final de un comando hace que este se ejecute en segundo plano, por lo que se quedará abierto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida de este comando nos mostrará el PID que tiene ese proceso que acabamos&lt;br /&gt;
de ejecutar, vamos a comprobarlo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el PID coincide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== kill ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para matar un proceso. kill se utiliza seguido de una&lt;br /&gt;
señal para enviar al proceso seguido de uno o varios PID. para ver las señales&lt;br /&gt;
disponibles, podemos listarlas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Las más utilizadas suele ser SIGTERM y SIGKILL, la primera intenta terminar el&lt;br /&gt;
proceso de forma poco abrupta, y la segunda suele utilizarse cuando el proceso&lt;br /&gt;
no atiende a esta primera señal. Vamos ahora a terminar el proceso que creamos&lt;br /&gt;
antes, si no recordamos el PID, busquémoslo de nuevo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos señal para terminar el proceso y comprobamos que ha terminado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -SIGTERM 8470&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También podemos notar que en el listado de señales, hay unos números, podemos&lt;br /&gt;
utilizar esos números en vez de las palabras, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;&lt;br /&gt;
kill -15 PID_COMANDO_PREVIO&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el proceso ha terminado correctamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 7: Estado CPU, RAM y Disco =&lt;br /&gt;
&lt;br /&gt;
== top ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para ver el listado de procesos y el estado de la CPU y&lt;br /&gt;
memoria.&lt;br /&gt;
&lt;br /&gt;
Probemos el comando y observemos detalladamente la salida:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
top&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para salir, pulsamos q.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== df y du ==&lt;br /&gt;
&lt;br /&gt;
df (disk free) y du (disk usage). Ambas son utilidades para mostrar el uso de&lt;br /&gt;
los discos.&lt;br /&gt;
&lt;br /&gt;
Con df mostraremos la información del espacio en cada dispositivo montado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estos comandos que nos muestran el tamaño de los ficheros, casi siempre tienen&lt;br /&gt;
una opción para mostrarlo en un formato más legible (-h)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mucho mejor.&lt;br /&gt;
&lt;br /&gt;
Ahora veamos el comando du, el cual nos mostrará el tamaño de un fichero o&lt;br /&gt;
directorio y sus subdirectorios, no olvidemos el -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -h /home/ubuntu&lt;br /&gt;
du -h /home/ubuntu/pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si solo quisíeramos saber el total de una carpeta y nos nos interesan sus&lt;br /&gt;
subcarpetas, podemos utilizar la opción -s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -sh /home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== free ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver el estado de la memoria, como siempre, opción -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
free -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsblk ==&lt;br /&gt;
&lt;br /&gt;
Nos muestra la información de todos los dispositivos de bloques (discos duros,&lt;br /&gt;
pendrivers, CD_ROM, SSD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En la siguiente práctica se utilizará más a fondo este comando, ya que&lt;br /&gt;
trabajaremos con dispositivos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 8: Gestión de paquetes de software y repositorios =&lt;br /&gt;
&lt;br /&gt;
Los sistemas Linux incluyen, además de las herramientas básicas del sistema operativo, repositorios de software que puede ser opcionalmente instalados por el administrador del sistema. Los fabricantes de las distribuciones de Linux incluyen paquetes de software listos para ser instalados que se integran con el sistema.&lt;br /&gt;
&lt;br /&gt;
Un paquete incluye el software necesario para que una cierta aplicación funcione correctamente, así como sus paquetes de dependencia.&lt;br /&gt;
&lt;br /&gt;
En Ubuntu, la herramienta de gestión de paquetes de software y repositorios se llama '''apt'''.&lt;br /&gt;
&lt;br /&gt;
=== Listado de repositorios de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
En Ubuntu el listado de repositorios se encuentra en el fichero /etc/apt/sources.list. Podemos comprobar que repositorios tenemos añadido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Actualización del listado de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
Para actualizar el listado de paquetes utilizaremos el comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instalación un nuevo paquete ===&lt;br /&gt;
&lt;br /&gt;
Para instalar un nuevo paquete, utilizaremos la orden install, por ejemplo, vamos a instalar tree, similar al ls pero muestra el arbol de directorios:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Desinstalación de un paquete ===&lt;br /&gt;
&lt;br /&gt;
Usaremos la orden purge o la orden remove, purge nos lo eliminad todo, y remove mantiene la configuración en el caso de que el paquete la tuviese. Vamos a eliminar el paquete instalado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt purge tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Paso 9: Módulos =&lt;br /&gt;
&lt;br /&gt;
Los módulos del kernel de Linux son partes que podemos añadir o quitar de forma&lt;br /&gt;
sencilla con el fin de añadir o quitar funcionalidad. Por ejemplo, algunas de&lt;br /&gt;
estas funcionalidades son:&lt;br /&gt;
&lt;br /&gt;
* Registrar temperaturas de nuestros componentes&lt;br /&gt;
* Hacer funcionr la tarjeta de red wifi&lt;br /&gt;
* Cargar los drivers de una tarjeta gráfica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsmod ==&lt;br /&gt;
&lt;br /&gt;
Comando para ver los módulos que estamos usando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lspci y usb-devices ==&lt;br /&gt;
&lt;br /&gt;
Estos comandos nos servirán para ver el hardware que está conectado a nuestro&lt;br /&gt;
ordenador. Con lspci veremos el listado del hardware integrado y con usb-devices&lt;br /&gt;
el que está conectado por hardware.&lt;br /&gt;
&lt;br /&gt;
Normalmente, como los módulos se utilizan para dar funcionalidad un hardware,&lt;br /&gt;
aquí en los listado de hardware podremos ver que módulo está utilizando cada&lt;br /&gt;
hardware:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lspci -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos una línea en algunos dispositivos que nos diga que módulo estamos&lt;br /&gt;
usando, pongo un pequeño trozo de la salida del comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02) (prog-if 01 [AHCI 1.0])&lt;br /&gt;
    Subsystem: Red Hat, Inc. QEMU Virtual Machine&lt;br /&gt;
    Flags: bus master, fast devsel, latency 0, IRQ 35&lt;br /&gt;
    I/O ports at c0c0 [size=32]&lt;br /&gt;
    Memory at fcc1d000 (32-bit, non-prefetchable) [size=4K]&lt;br /&gt;
    Capabilities: &amp;lt;access denied&amp;gt;&lt;br /&gt;
    Kernel driver in use: ahci&lt;br /&gt;
    Kernel modules: ahci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el hardware INTEl Corporation está utilizando el módulo ahci.&lt;br /&gt;
&lt;br /&gt;
Probemos ahora con usb-devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
usb-devices&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos un trozo de código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0&lt;br /&gt;
D:  Ver= 2.00 Cls=00(&amp;gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1&lt;br /&gt;
P:  Vendor=0627 ProdID=0001 Rev=00.00&lt;br /&gt;
S:  Manufacturer=QEMU&lt;br /&gt;
S:  Product=QEMU USB Tablet&lt;br /&gt;
S:  SerialNumber=42&lt;br /&gt;
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA&lt;br /&gt;
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el teclado está utilizando el módulo usbhid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== insmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para cargar un módulo en el kernel, imaginemos que tenemos un módulo que&lt;br /&gt;
se llama modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo insmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rmmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para eliminar un módulo de kernel. Imaginemos que queremos borrar un&lt;br /&gt;
módulo cargado anteriormente con el nombre modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rmmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ejercicios =&lt;br /&gt;
&lt;br /&gt;
# Cree un fichero vacio llamado 123.txt&lt;br /&gt;
# Añada al fichero las siguientes tres lineas:&lt;br /&gt;
&lt;br /&gt;
        Hola mundo&lt;br /&gt;
        Probando 1 2 3&lt;br /&gt;
        Adios&lt;br /&gt;
&lt;br /&gt;
# Añada una linea más al fichero con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
        Prueba&lt;br /&gt;
&lt;br /&gt;
# Renombre el fichero 123.txt a 456.txt&lt;br /&gt;
# Haga una copia del fichero 456.txt al fichero 789.txt&lt;br /&gt;
# Cree la carpeta xyz&lt;br /&gt;
# Mueva el fichero 789.txt a la carpeta xyz&lt;br /&gt;
# Mueva el fichero 456.txt al temporal&lt;br /&gt;
# Borre el fichero 456.txt&lt;br /&gt;
# Compruebe si el fichero 789.txt contiene la palabra “mundo”&lt;br /&gt;
# Borre la carpeta xyz y su contenido&lt;br /&gt;
# Liste el contenido de la carpeta temporal mostrando los permisos asociados a los ficheros y carpetas, almacene el resultado en el fichero temporal.txt&lt;br /&gt;
# Cree la carpeta ‘x’ y dentro de ella, la carpeta ‘y’&lt;br /&gt;
# Mueva el fichero temporal.txt dentro de la carpeta ‘y’&lt;br /&gt;
# Cuente el número de ficheros y directorios en la carpeta tmp&lt;/div&gt;</summary>
		<author><name>Josmonnie1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4563</id>
		<title>Administración básica</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Administraci%C3%B3n_b%C3%A1sica&amp;diff=4563"/>
				<updated>2019-11-13T17:54:00Z</updated>
		
		<summary type="html">&lt;p&gt;Josmonnie1: /* Ejercicios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para realizar esta práctica utilizaremos una de las máquinas virtuales que generamos en la práctica anterior.&lt;br /&gt;
&lt;br /&gt;
En esta práctica aprenderemos a utilizar el interprete de ordenes (también conocido como ''[https://www.traficantes.net/sites/default/files/pdfs/En%20el%20principio%20fue...-TdS.pdf línea de comandos]'') y a aprender nociones básicas de administración de sistemas Linux.&lt;br /&gt;
&lt;br /&gt;
= Paso 0: Breve introducción al sistema Linux =&lt;br /&gt;
&lt;br /&gt;
== Estructura básica del sistema de archivos ==&lt;br /&gt;
&lt;br /&gt;
En un sistema Linux, todas las carpetas y ficheros en el sistema de fichero pende de la carpeta raíz que se representa con la /.&lt;br /&gt;
&lt;br /&gt;
 /&lt;br /&gt;
 ├── bin&lt;br /&gt;
 ├── usr&lt;br /&gt;
 │   ├── local&lt;br /&gt;
 │   ├── bin&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── dev&lt;br /&gt;
 │   ├── sda&lt;br /&gt;
 │   ├── sda1&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 ├── home&lt;br /&gt;
 │   ├── practica&lt;br /&gt;
 │   │   ├── tema1.pdf&lt;br /&gt;
 │   │   ├── boletin1.pdf&lt;br /&gt;
 │   │   └── ...&lt;br /&gt;
 │   ├── profesor&lt;br /&gt;
 │   └── ...&lt;br /&gt;
 └── etc&lt;br /&gt;
     ├── firefox&lt;br /&gt;
     ├── libvirt&lt;br /&gt;
     ├── ...&lt;br /&gt;
     └── ...&lt;br /&gt;
&lt;br /&gt;
Como puedes observar, el sistema de fichero emplea una estructura de árbol.&lt;br /&gt;
&lt;br /&gt;
== Nociones básicas ==&lt;br /&gt;
&lt;br /&gt;
·Aplicaciones con nombres compuestos: usar guion entre palabras&lt;br /&gt;
&lt;br /&gt;
·Nombres con espacios en blanco: Escribir entre comillas dobles&lt;br /&gt;
&lt;br /&gt;
·Espacios en blanco para separar ordenes (ej: instalar varios paquetes )&lt;br /&gt;
&lt;br /&gt;
·Formato general de una orden: comando [-opciones] [argumentos]&lt;br /&gt;
&lt;br /&gt;
·'''IMPORTANTE''': Diferencia entre mayúsculas y minúsculas&lt;br /&gt;
&lt;br /&gt;
== Carpetas . y .. ==&lt;br /&gt;
&lt;br /&gt;
Toda carpeta en un sistema Linux dispone de dos pseudocarpetas, la '''.''' y la '''..'':&lt;br /&gt;
&lt;br /&gt;
* La pseudocarpeta '''..''' hace referencia a la carpeta padre que contiene a esta carpeta.&lt;br /&gt;
* La pseudocarpeta '''.''' hace referencia a la carpeta actual, es por tanto una autoreferencia.&lt;br /&gt;
&lt;br /&gt;
En el caso de la carpeta raíz, la pseudocarpeta '''.''' y '''..''' hacen referencia a la propia carpeta raíz, se trata, por tanto de una excepción.&lt;br /&gt;
&lt;br /&gt;
== Directorio de trabajo actual y la orden cd ==&lt;br /&gt;
&lt;br /&gt;
Cada interprete de ordenes dispone de una ''carpeta de trabajo actual'' ('''c'''urrent '''w''orking '''d''irectory, en inglés). La carpeta de trabajo actual se puede modificar con la orden '''cd''' ('''c'''hange '''d'''irectory, en inglés).&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos situaría en la carpeta padre, empleando una ruta relativa.&lt;br /&gt;
&lt;br /&gt;
Si volvemos a escribir desde /home &amp;quot; cd .. &amp;quot; nos lleva a '''/$''' &lt;br /&gt;
&lt;br /&gt;
Para situarnos en el raíz, podemos emplear una ruta absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En caso de que queramos volver a la carpeta de usuario, bastaría con invocar a '''cd''' sin más o ''' cd ~ '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MUY IMPORTANTE''': No es lo mismo cd.. que ''' cd .. ''', es necesario el espacio después del cd.&lt;br /&gt;
&lt;br /&gt;
== Rutas absolutas, rutas relativas ==&lt;br /&gt;
&lt;br /&gt;
Para hacer referencia a un fichero o una carpeta se usan ruta absolutas o rutas relativas.&lt;br /&gt;
&lt;br /&gt;
Las rutas absolutas siempre empieza por /, de manera que toman como punto de referencia la carpeta raíz (/). Por ejemplo, una ruta absoluta a la carpeta '''prueba''' que está almacenada en la carpeta del usuario '''ubuntu''' es '/home/ubuntu/prueba/'.&lt;br /&gt;
&lt;br /&gt;
Las ruta relativa toma como referencia la carpeta de trabajo actual. Para averiguar la carpeta de trabajo actual disponemos de la orden '''pwd'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ pwd&lt;br /&gt;
/home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En base a la carpeta de trabajo actual, empleando la pseudocarpeta '''..''', se puede construir rutas relativas. Por ejemplo, para referenciar un fichero '''fichero.txt''' en la carpeta temporal, podemos emplear la ruta relativa '''../../tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
Aunque probablemente sea más cómodo emplear una ruta absoluta en este caso, que sería '''/tmp/fichero.txt'''.&lt;br /&gt;
&lt;br /&gt;
== Intérprete de órdenes ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de órdenes es un lanzador de aplicaciones textual que emplea el teclado como dispositivo de entrada de datos. Mediante el teclado, se escribe el nombre del programa que se quiere lanzar y al pulsa la tecla ''intro'' el intérprete de ordenes ejecutara dicho programa. Por defecto, el intérprete de ordenes que emplea Ubuntu por defecto es '''bash'''.&lt;br /&gt;
&lt;br /&gt;
== man: ver la página de manual de una orden ==&lt;br /&gt;
&lt;br /&gt;
La orden '''man''' te será útil para ver las páginas de manual.&lt;br /&gt;
&lt;br /&gt;
Su estructura básica es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aunque también se utiliza con la opción ''' -a ''' de All, que también muestra las entradas comenzadas por '''.''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -a &amp;lt;comando&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este programa toma como entrada el nombre de la orden de la que quieres consultar su página de manual, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos da información del manual de la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
Para salir de la página de manual, pulsa la tecla '''q''' (la primera letra de la palabra '''quit''', en inglés).&lt;br /&gt;
&lt;br /&gt;
quit = salir&lt;br /&gt;
&lt;br /&gt;
Normalmente, los programas ofrecen opciones de ayuda, como '''--help'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man --help&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede emplear la versión compacta a la hora de especificar opciones.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En general, todas las ordenes suelen ofrecer una opción de ayuda.&lt;br /&gt;
&lt;br /&gt;
= Paso 1: Operaciones básicas con el sistema de ficheros =&lt;br /&gt;
&lt;br /&gt;
== ls ==&lt;br /&gt;
&lt;br /&gt;
Lista los ficheros y carpetas. Si no se especifica nada, muestra los ficheros y carpetas que contiene la carpeta de trabajo actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se especifica una ruta, muestra las carpetas y ficheros contenidos en dicha ruta, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls /&lt;br /&gt;
bin  boot  data  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz  vmlinuz.old&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al emplear '''/''' como ruta absoluta, muestra el contenido de la carpeta raíz.&lt;br /&gt;
&lt;br /&gt;
Las opciones más usadas de este programa suelen ser:&lt;br /&gt;
&lt;br /&gt;
* -a: muestra los ficheros y carpetas ''ocultos''. En Linux, cualquier fichero o carpeta cuyo nombre empiece por . se considera ''oculto''. Esto incluye también en el listado las pseudocarpetas . y ..&lt;br /&gt;
&lt;br /&gt;
* -l: se muestra en lista y aporta datos como la fecha de última modificación, propietario, grupo, tamaño en bytes y nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -a&lt;br /&gt;
&lt;br /&gt;
.  ..  .bash_history  .bash_logout  .bashrc  .profile  .ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ambas opciones se puede combinar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -la /&lt;br /&gt;
&lt;br /&gt;
total 92&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 .&lt;br /&gt;
drwxr-xr-x  24 root root  4096 Aug 28 09:50 ..&lt;br /&gt;
drwxr-xr-x   2 root root  4096 Aug 22 12:37 bin&lt;br /&gt;
drwxr-xr-x   4 root root  4096 Aug 22 12:37 boot&lt;br /&gt;
drwx------   3 root root  4096 Aug 28 09:50 data&lt;br /&gt;
drwxr-xr-x  18 root root  3780 Aug 28 09:46 dev&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otras opciones útiles son:&lt;br /&gt;
&lt;br /&gt;
* -s : muestra el tamaño en bloques de cada archivo&lt;br /&gt;
&lt;br /&gt;
* -t : aporta el día y la hora de modificación&lt;br /&gt;
&lt;br /&gt;
* -R : lista también las subcarpetas &lt;br /&gt;
&lt;br /&gt;
* --color : muestra el contenido coloreado&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los '''permisos''' se emplean en base a tres capacidades:&lt;br /&gt;
&lt;br /&gt;
* Lectura, que se codifica con '''r''' (read, en inglés).&lt;br /&gt;
* Escritura, que se codifica con '''w''' (write, en inglés).&lt;br /&gt;
* Ejecutación, que se codifica con '''x''' (execute, en inglés).&lt;br /&gt;
&lt;br /&gt;
La primera columna muestra los permisos que codifican:&lt;br /&gt;
&lt;br /&gt;
* Tipo de entrada: '''d''' indica ''directorio'' (''carpeta'').&lt;br /&gt;
* Permisos del propietario, primera terna de rwx&lt;br /&gt;
* Permisos del grupo, segunda terna de rwx&lt;br /&gt;
* Permisos para el resto del mundo, tercera terna de rwx.&lt;br /&gt;
&lt;br /&gt;
A continuación, aparecen el propietario y el grupo, seguidos de la fecha de última modificación y el nombre del fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
La ayuda ( help ) en ls solo funciona con ''' ls --help ''' no con ls -h&lt;br /&gt;
&lt;br /&gt;
== mkdir ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crea una carpeta test en el directorio actual.&lt;br /&gt;
&lt;br /&gt;
Comprobemos que se ha creado bien:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la opción '''-p''', permite crear sucesivas carpetas anidadas de una sola vez, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir -p a/b/c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Que crea la siguiente estructura de carpetas.&lt;br /&gt;
&lt;br /&gt;
 a&lt;br /&gt;
 └── b&lt;br /&gt;
     └── c&lt;br /&gt;
&lt;br /&gt;
== touch ==&lt;br /&gt;
&lt;br /&gt;
Crea un nuevo fichero vacío (sin contenido) con el nombre que especifiquemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el fichero se ha creado correctamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cp ==&lt;br /&gt;
&lt;br /&gt;
Copia un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp file.txt file_copy.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para copiar una carpeta y su contenido tenemos que usar la opción -r (recursivo).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -r test test_copy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comprobamos el resultado con la orden '''ls'''.&lt;br /&gt;
&lt;br /&gt;
* Si nos encontramos en la carpeta destino, la estructura sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp &amp;lt;nombre ruta origen&amp;gt; &amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mv ==&lt;br /&gt;
&lt;br /&gt;
Mueve fichero o carpeta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv file_copy.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se emplea para renombrar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv test_copy test_copy2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rm ==&lt;br /&gt;
&lt;br /&gt;
* Borra un fichero o carpeta vacía:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para borrar una carpeta no vacía y su contenido:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -r &amp;lt;nombre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANTE''': No hacer jamás ''' rm -r * '''&lt;br /&gt;
&lt;br /&gt;
* EJERCICIOS:&lt;br /&gt;
&lt;br /&gt;
# Crear la siguiente estructura dentro del directorio /tmp (usar los comandos mkdir, touch y cp):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 ├── carpeta1&lt;br /&gt;
 ├── carpeta2&lt;br /&gt;
 │   ├── fichero1.txt&lt;br /&gt;
 │   └── fichero2.md&lt;br /&gt;
 └── carpeta3&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
# Basándonos en el ejercicio anterior, cambiar la estructura a la siguiente (usar comandos mv y rm):&lt;br /&gt;
&lt;br /&gt;
 /tmp&lt;br /&gt;
 └── carpeta&lt;br /&gt;
     ├── fichero1.txt&lt;br /&gt;
     └── fichero2.md&lt;br /&gt;
&lt;br /&gt;
= Paso 2: Impresión por pantalla y redirección de salida =&lt;br /&gt;
&lt;br /&gt;
== echo ==&lt;br /&gt;
&lt;br /&gt;
Sirve para imprimir una línea de texto por pantalla o variables de entorno. Además, nos permite escribir en ficheros.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;lt;opción&amp;gt; &amp;lt;texto&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Opciones curiosas: &lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \bPALABRA&amp;gt;   Se eliminan los espacios entre las palabras&lt;br /&gt;
&lt;br /&gt;
-e &amp;lt;PALABRA \nPALABRA&amp;gt;	 Se añaden saltos de línea&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una variable de entorno es una variable editada con algún valor, por defecto existen algunas creadas, como por ejemplo la variable HOME, que contiene el directorio del usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $HOME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aprovecharemos y crearemos una variable nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ME=&amp;quot;my name&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $ME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redirección de salida ==&lt;br /&gt;
&lt;br /&gt;
&amp;gt; y &amp;gt;&amp;gt; sirve para redirigir una salida. Por ejemplo, utilizando el comando echo,&lt;br /&gt;
podemos enviar un texto dentro de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La diferencia entre &amp;gt; y &amp;gt;&amp;gt; es que &amp;gt; sobrescribe lo que haya en el fichero y&lt;br /&gt;
añade el contenido, y &amp;gt;&amp;gt; no sobrescribe, solo añade el nuevo contenido.&lt;br /&gt;
&lt;br /&gt;
Hagamos la prueba:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt; file.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
echo &amp;quot;Esto es una prueba2&amp;quot; &amp;gt;&amp;gt; file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En cualquier caso, si el fichero no existe, se crea.&lt;br /&gt;
&lt;br /&gt;
= Paso 3: Manejo de ficheros y carpetas avanzado =&lt;br /&gt;
&lt;br /&gt;
== cat ==&lt;br /&gt;
&lt;br /&gt;
* Muestra el contenido de un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file.txt&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Crea un fichero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;lt;nombre archivo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUARDAR FICHERO: Pulsamos ENTER y luego CTRL + D&lt;br /&gt;
&lt;br /&gt;
* Añadir más lineas al fichero: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;&amp;lt;nombre fichero&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Concatenar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;lt;fichero1&amp;gt; &amp;lt;fichero2&amp;gt; &amp;gt; &amp;lt;fichero3&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Editar ficheros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat&lt;br /&gt;
&lt;br /&gt;
hola&lt;br /&gt;
que pasa&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; &amp;lt;fichero4&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== grep ==&lt;br /&gt;
&lt;br /&gt;
Sirve para localizar coincidencias de un cierto patrón en ficheros y muestra la coincidencia, en caso de encontrarla, por pantalla.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
grep &amp;lt;opción&amp;gt; &amp;lt;patrón&amp;gt; &amp;lt;archivos donde buscar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por ejemplo, para buscar el patrón ''prueba'' en el fichero ''fichero.txt''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ grep -n prueba fichero.txt&lt;br /&gt;
1:Esto es una prueba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Principales opciones del comando:&lt;br /&gt;
&lt;br /&gt;
-c : Escribe el número de líneas encontradas.&lt;br /&gt;
&lt;br /&gt;
-i : No distingue entre mayúsculas y minúsculas.&lt;br /&gt;
&lt;br /&gt;
-l : Muestra los nombres de los ficheros que contienen los caracteres buscados.&lt;br /&gt;
&lt;br /&gt;
-n : Cada línea es precedida por su número en el fichero.&lt;br /&gt;
&lt;br /&gt;
-s : No se muestran los mensajes que indican que no se puede abrir un fichero.&lt;br /&gt;
&lt;br /&gt;
-v : Muestra sólo las líneas que no cumplen la condición.&lt;br /&gt;
&lt;br /&gt;
== wc ==&lt;br /&gt;
&lt;br /&gt;
Sirve para contar el número de palabras, caracteres, líneas o bytes que contiene un fichero.&lt;br /&gt;
&lt;br /&gt;
Las opciones más utilizadas son:&lt;br /&gt;
&lt;br /&gt;
* -l: muestra el número de líneas que contiene el fichero.&lt;br /&gt;
* -w: muestra el número de palabras.&lt;br /&gt;
* -m: muestra el número de caracteres&lt;br /&gt;
* -c: muestra el número de bytes&lt;br /&gt;
&lt;br /&gt;
Probemos y contemos todo en el fichero file2.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file2.txt&lt;br /&gt;
wc -w file2.txt&lt;br /&gt;
wc -m file2.txt&lt;br /&gt;
wc -c file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos contar más de un fichero a la vez:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wc -l file.txt file2.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos mostrará el conteo de cada fichero y el total.&lt;br /&gt;
&lt;br /&gt;
== Tubería (|) ==&lt;br /&gt;
&lt;br /&gt;
La tubería nos servirá para conectar varios comandos al mismo tiempo, veamos&lt;br /&gt;
unos ejemplos, que siempre se entiende mejor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat file2.txt | grep prueba&lt;br /&gt;
grep -nr prueba file2.txt | wc -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el primer ejemplo, mostramos el contenido de file2.txt, y esta salida se la&lt;br /&gt;
pasamos al comando grep, el cual busca las líneas que contengan prueba.&lt;br /&gt;
&lt;br /&gt;
En el segundo, buscamos todas las líneas que contengan la palabra prueba, y esta&lt;br /&gt;
salida se la pasamos al comando wc, el cual cuenta las líneas de la salida del&lt;br /&gt;
comando grep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redirecciones ==&lt;br /&gt;
&lt;br /&gt;
Vamos a ver unos conceptos antes de seguir:&lt;br /&gt;
&lt;br /&gt;
* Entrada estándar: representa los datos que necesita una aplicación para funcionar, como por ejemplo un archivo de datos o información ingresada desde la terminal y es representado en la terminal como el tipo 0.&lt;br /&gt;
* Salida estándar: es la vía que utilizan las aplicaciones para mostrarte información, allí podemos ver el progreso o simplemente los mensajes que la  aplicación quiera darte en determinado momento y es representado en la terminal como el tipo 1.&lt;br /&gt;
* Error estándar: es la forma en que los programas te informan sobre los problemas que pueden encontrarse al momento de la ejecución y es representado en la terminal como el tipo 2.&lt;br /&gt;
&lt;br /&gt;
Las redirecciones nos sirven para mover la información de un tipo a otro.&lt;br /&gt;
&lt;br /&gt;
Ya vimos previamente el uso de &amp;gt; y &amp;gt;&amp;gt;, y también el |, veamos algunas más:&lt;br /&gt;
&lt;br /&gt;
* comando &amp;lt; fichero: Toma la entrada de fichero&lt;br /&gt;
* comando 2&amp;gt; fichero: Envía la salida de error de comando a fichero&lt;br /&gt;
* comando 2&amp;gt;&amp;amp;1: Envía la salida de error a la salida estándar&lt;br /&gt;
* comando &amp;amp;&amp;gt; fichero: Envía la salida estándar y de error a fichero; equivale a comando &amp;gt; fichero 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
= Paso 4: Usuarios y grupos =&lt;br /&gt;
&lt;br /&gt;
== whoami ==&lt;br /&gt;
&lt;br /&gt;
Sirve para obtener el usuario actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo más seguro es que nos aparezca ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who ==&lt;br /&gt;
&lt;br /&gt;
Es para saber quien está ahora mismo en la máquina conectado.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
who&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seguramente solo estemos nosotros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ubuntu   pts/0        2019-08-28 13:51 (192.168.122.1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== su y sudo ==&lt;br /&gt;
&lt;br /&gt;
su (substitute user): sirve para cambiar de usuario. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí nos pedirá la contraseña del usuario al que queramos cambiar.&lt;br /&gt;
&lt;br /&gt;
sudo (super user do): no todas las distribuciones lo integran, porque es menos&lt;br /&gt;
seguro que su, este comando nos permite ejecutar un comando siendo otro usuario,&lt;br /&gt;
por defecto, si no le damos usuario, lo hará con el usuario root. Si sudo nos&lt;br /&gt;
pide contraseña, nos pide la contraseña del usuario, ya que el usuario es que el&lt;br /&gt;
tiene permisos para usar sudo o no.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ls -a /root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tuviéramos por ejemplo un usuario 'practica' y quisíeramos ejecutar un&lt;br /&gt;
comando en su nombre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u practica ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== adduser y useradd ==&lt;br /&gt;
&lt;br /&gt;
Ambos comandos sirven para crear un nuevo usuario, pero tienen sus diferencias.&lt;br /&gt;
&lt;br /&gt;
useradd es un comando del sistema, y adduser es un script escrito en perl que&lt;br /&gt;
utiliza el comando useradd. La diferencia así de primeras es que adduser nos&lt;br /&gt;
crear el directorio /home/usuario y useradd necesita la opción -m para hacer lo&lt;br /&gt;
mismo. Se puede utilizar el que se quiera, aunque es más recomendable useradd,&lt;br /&gt;
ya que funcionará igual en todas las distribuciones.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir un usuario practica con su directorio en /home (notemos que&lt;br /&gt;
necesitamos permisos de super usuario para realizar esta tarea):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a comprobar que el directorio home está creado y que el usuario practica&lt;br /&gt;
funciona:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home  # veremos el directorio practica&lt;br /&gt;
sudo -u practica whoami  # nos dirá que somo el usuario practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== passwd ==&lt;br /&gt;
&lt;br /&gt;
Sirve para modificar la contraseña de un usuario, por ejemplo, vamos a modificar&lt;br /&gt;
la contraseña del usuario que hemos creado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo passwd practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nos preguntará dos veces la contraseña, y ya la tendremos actualizadas. Vamos&lt;br /&gt;
ahora a probar ahora el comando su para cambiar de usuario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que hemos cambiado de usuario, para cerrar este usuario, escribimos&lt;br /&gt;
'exit' o pulsamos 'CTLR + D'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== deluser y userdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para borrar un usuario, similar a adduser y useradd, userdel es el&lt;br /&gt;
comando y deluser el script.&lt;br /&gt;
&lt;br /&gt;
Vamos a borrar el usuario que hemos creado, incluyendo el borrado de su /home&lt;br /&gt;
(opción -r):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
userdel -r practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobemos que ya no tenemos usuario ni /home:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /home&lt;br /&gt;
sudo -u practica whoami&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== addgroup y groupadd ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para crear un grupo. Los grupos sirven para agrupar a los usuarios&lt;br /&gt;
y que estos tengan unos mismos permisos. Por ejemplo, cuando instalamos algunas&lt;br /&gt;
herramientas como por ejemplo docker, este crea el grupo docker automáticamente&lt;br /&gt;
para que fácilmente podamos añadir a un usuario al grupo, y este tenga los&lt;br /&gt;
permisos para trabajar con dicha herramienta.&lt;br /&gt;
&lt;br /&gt;
Vamos a crear un nuevo grupo, vamos a llamarle invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupadd invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== usermod y groups ==&lt;br /&gt;
&lt;br /&gt;
usermod es utilizado para asignar un grupo a un usuario.&lt;br /&gt;
&lt;br /&gt;
groups es utilizado para ver los grupos a los que pertenece un usuario.&lt;br /&gt;
&lt;br /&gt;
Vamos a añadir a un usuario practica, lo vamos a añadir al grupo invitado y&lt;br /&gt;
veremos los grupos a los que pertenece:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m practica&lt;br /&gt;
sudo usermod -G invitado practica&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario práctica pertenece al grupo invitado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== delgroup y groupdel ==&lt;br /&gt;
&lt;br /&gt;
Ambos sirven para eliminar un grupo. Vamos a eliminar el grupo que hemos creado&lt;br /&gt;
anteriormente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo groupdel invitado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar ahora que el usuario practica no pertenece al grupo invitado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groups practica&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 5: Permisos =&lt;br /&gt;
&lt;br /&gt;
== Nomenclatura rwx y numérica ==&lt;br /&gt;
&lt;br /&gt;
Si hacemos un ls -l, la primera cadena que nos aparece son los permisos del&lt;br /&gt;
fichero (-rwxrw-r--), podemos dividirlo en 4 elementos:&lt;br /&gt;
&lt;br /&gt;
-    (rwx)   (rw-)  (r--)&lt;br /&gt;
|      |       |      |&lt;br /&gt;
type  owner   group  others&lt;br /&gt;
&lt;br /&gt;
* type: el tipo de fichero, pudiendo ser d (directorio), l (enlace simbólico), - (fichero normal)&lt;br /&gt;
* owner: permisos de propietario&lt;br /&gt;
* group: permisos de grupo&lt;br /&gt;
* others: permisos para los demás usuarios&lt;br /&gt;
&lt;br /&gt;
Significado de los permisos:&lt;br /&gt;
&lt;br /&gt;
* r: permisos de lectura&lt;br /&gt;
* w: permisos de escritura&lt;br /&gt;
* x: permisos de ejecución&lt;br /&gt;
&lt;br /&gt;
Por último, existe un modo abreviado para estos permisos que se utiliza con&lt;br /&gt;
números.&lt;br /&gt;
&lt;br /&gt;
rwx&lt;br /&gt;
001 en binario es 1 en decimal. Permisos de ejecución&lt;br /&gt;
010 en binario es 2 en decimal. Permisos de escritura&lt;br /&gt;
100 en binario es 4 en decimal. Permisos de lectura&lt;br /&gt;
&lt;br /&gt;
La suma de los permisos, nos da el valor numérico. Veamos un ejemplo:&lt;br /&gt;
rwx rw- r--&lt;br /&gt;
111 110 100&lt;br /&gt;
 7   6   4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chmod ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar los permisos de acceso a un fichero o directorio. Podemos dar&lt;br /&gt;
permisos de dos formas diferentes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== modo carácter ===&lt;br /&gt;
&lt;br /&gt;
Veamos primero unos detalles:&lt;br /&gt;
&lt;br /&gt;
Clases de usuario:&lt;br /&gt;
&lt;br /&gt;
* owner (u)&lt;br /&gt;
* group (g)&lt;br /&gt;
* others (o)&lt;br /&gt;
* all (a)&lt;br /&gt;
&lt;br /&gt;
Modificador:&lt;br /&gt;
&lt;br /&gt;
* añadir (+)&lt;br /&gt;
* eliminar (-)&lt;br /&gt;
* sobrescribir (=)&lt;br /&gt;
&lt;br /&gt;
Para dar permisos tendríamos que seleccionar la clase de usuario el modificador&lt;br /&gt;
y los permisos, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x file  # añadimos permisos de ejecución al usuario&lt;br /&gt;
chmod go-w file  # quitamos permisos de escritura al grupo y a otros usuarios&lt;br /&gt;
chmod u=rwx,go=r file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modo octal ===&lt;br /&gt;
&lt;br /&gt;
Con el modo octacl, es como si siempre utilizáramos el modificar sobrescribir,&lt;br /&gt;
pongamos algunos ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod 744 file  # Al usuario le damos todos los permisos, y al grupo y otros solo le damos permisos de lectura&lt;br /&gt;
chmod 777 file  # Todos tienen permisos para todo&lt;br /&gt;
chmod 600 file  # solo el propietario tiene permisos de lectura y escritura&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos ===&lt;br /&gt;
&lt;br /&gt;
Vamos a ver como funciona el tema de permisos con unos ejemplos. Vamos a crear&lt;br /&gt;
un fichero pruebas y le vamos a quitar los permisos de escritura a nuestro&lt;br /&gt;
usuario, y le vamos a dar permisos de escritura a otros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch pruebas&lt;br /&gt;
ls -l pruebas  # de esta forma veremos que por defecto los permisos son rw-rw-r--&lt;br /&gt;
chmod u-w,o+w pruebas&lt;br /&gt;
ls -l pruebas  # ahora los permisos deberían ser -w-rw-rw-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez dado los permisos, veamos que con nuestro usuario podemos leer pero no&lt;br /&gt;
escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y ahora vamos a ver que el usuario pruebas, puede leer y escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chown ==&lt;br /&gt;
&lt;br /&gt;
Permite cambiar el propietario de un fichero o directorio.&lt;br /&gt;
&lt;br /&gt;
Vamos por ejemplo a pasarle ahora el fichero pruebas al usuario practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica pruebas&lt;br /&gt;
ls -l pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el usuario actual ahora es pruebas, aunque vemos que el ls muestra&lt;br /&gt;
lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-r--rw-rw- 1 practica ubuntu 9 Aug 29 09:34 pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hay que comentar un detalle, y es que los ficheros y directorios tienen asignado&lt;br /&gt;
un usuario y un grupo, por defecto se utiliza el mismo usuario como grupo&lt;br /&gt;
cuando creamos un nuevo fichero o directorio. Si queremos que cuando cambiemos&lt;br /&gt;
el propietario, cambiar tambien el grupo del fichero, podemos hacerlo de la&lt;br /&gt;
siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown practica:practica pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto, vamos ahora a probar que los permisos siguen funcionando&lt;br /&gt;
como antes, ahora con el usuario ubuntu, deberíamos de poder leer y escribir en&lt;br /&gt;
el fichero pruebas, y con el usuario practica, solo leer, esto es así por que&lt;br /&gt;
ahora el propitario es practica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Pruebas usuario ubuntu&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo test &amp;gt;&amp;gt; pruebas&lt;br /&gt;
# Pruebas usuario practica&lt;br /&gt;
su practica&lt;br /&gt;
cat pruebas&lt;br /&gt;
echo &amp;quot;probando&amp;quot; &amp;gt; pruebas&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 6: Procesos =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ps ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver que procesos están ejecutándose en el sistema, veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux  # con la opción aux mostraremos todos los procesos del sistema&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cada línea es un proceso, y cada proceso muestra su PID, usuario, cantidad de&lt;br /&gt;
memoria y cpu utilizada, comando y otros detalles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;  # añadir el &amp;amp; al final de un comando hace que este se ejecute en segundo plano, por lo que se quedará abierto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La salida de este comando nos mostrará el PID que tiene ese proceso que acabamos&lt;br /&gt;
de ejecutar, vamos a comprobarlo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos que el PID coincide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== kill ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para matar un proceso. kill se utiliza seguido de una&lt;br /&gt;
señal para enviar al proceso seguido de uno o varios PID. para ver las señales&lt;br /&gt;
disponibles, podemos listarlas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Las más utilizadas suele ser SIGTERM y SIGKILL, la primera intenta terminar el&lt;br /&gt;
proceso de forma poco abrupta, y la segunda suele utilizarse cuando el proceso&lt;br /&gt;
no atiende a esta primera señal. Vamos ahora a terminar el proceso que creamos&lt;br /&gt;
antes, si no recordamos el PID, busquémoslo de nuevo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos señal para terminar el proceso y comprobamos que ha terminado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
kill -SIGTERM 8470&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También podemos notar que en el listado de señales, hay unos números, podemos&lt;br /&gt;
utilizar esos números en vez de las palabras, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
man kill &amp;amp;&lt;br /&gt;
kill -15 PID_COMANDO_PREVIO&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el proceso ha terminado correctamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps aux | grep &amp;quot;man kill&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 7: Estado CPU, RAM y Disco =&lt;br /&gt;
&lt;br /&gt;
== top ==&lt;br /&gt;
&lt;br /&gt;
Este comando nos servirá para ver el listado de procesos y el estado de la CPU y&lt;br /&gt;
memoria.&lt;br /&gt;
&lt;br /&gt;
Probemos el comando y observemos detalladamente la salida:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
top&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para salir, pulsamos q.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== df y du ==&lt;br /&gt;
&lt;br /&gt;
df (disk free) y du (disk usage). Ambas son utilidades para mostrar el uso de&lt;br /&gt;
los discos.&lt;br /&gt;
&lt;br /&gt;
Con df mostraremos la información del espacio en cada dispositivo montado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estos comandos que nos muestran el tamaño de los ficheros, casi siempre tienen&lt;br /&gt;
una opción para mostrarlo en un formato más legible (-h)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mucho mejor.&lt;br /&gt;
&lt;br /&gt;
Ahora veamos el comando du, el cual nos mostrará el tamaño de un fichero o&lt;br /&gt;
directorio y sus subdirectorios, no olvidemos el -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -h /home/ubuntu&lt;br /&gt;
du -h /home/ubuntu/pruebas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si solo quisíeramos saber el total de una carpeta y nos nos interesan sus&lt;br /&gt;
subcarpetas, podemos utilizar la opción -s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -sh /home/ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== free ==&lt;br /&gt;
&lt;br /&gt;
Sirve para ver el estado de la memoria, como siempre, opción -h:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
free -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsblk ==&lt;br /&gt;
&lt;br /&gt;
Nos muestra la información de todos los dispositivos de bloques (discos duros,&lt;br /&gt;
pendrivers, CD_ROM, SSD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En la siguiente práctica se utilizará más a fondo este comando, ya que&lt;br /&gt;
trabajaremos con dispositivos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Paso 8: Gestión de paquetes de software y repositorios =&lt;br /&gt;
&lt;br /&gt;
Los sistemas Linux incluyen, además de las herramientas básicas del sistema operativo, repositorios de software que puede ser opcionalmente instalados por el administrador del sistema. Los fabricantes de las distribuciones de Linux incluyen paquetes de software listos para ser instalados que se integran con el sistema.&lt;br /&gt;
&lt;br /&gt;
Un paquete incluye el software necesario para que una cierta aplicación funcione correctamente, así como sus paquetes de dependencia.&lt;br /&gt;
&lt;br /&gt;
En Ubuntu, la herramienta de gestión de paquetes de software y repositorios se llama '''apt'''.&lt;br /&gt;
&lt;br /&gt;
=== Listado de repositorios de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
En Ubuntu el listado de repositorios se encuentra en el fichero /etc/apt/sources.list. Podemos comprobar que repositorios tenemos añadido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Actualización del listado de paquetes de software ===&lt;br /&gt;
&lt;br /&gt;
Para actualizar el listado de paquetes utilizaremos el comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instalación un nuevo paquete ===&lt;br /&gt;
&lt;br /&gt;
Para instalar un nuevo paquete, utilizaremos la orden install, por ejemplo, vamos a instalar tree, similar al ls pero muestra el arbol de directorios:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Desinstalación de un paquete ===&lt;br /&gt;
&lt;br /&gt;
Usaremos la orden purge o la orden remove, purge nos lo eliminad todo, y remove mantiene la configuración en el caso de que el paquete la tuviese. Vamos a eliminar el paquete instalado previamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt purge tree&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Paso 9: Módulos =&lt;br /&gt;
&lt;br /&gt;
Los módulos del kernel de Linux son partes que podemos añadir o quitar de forma&lt;br /&gt;
sencilla con el fin de añadir o quitar funcionalidad. Por ejemplo, algunas de&lt;br /&gt;
estas funcionalidades son:&lt;br /&gt;
&lt;br /&gt;
* Registrar temperaturas de nuestros componentes&lt;br /&gt;
* Hacer funcionr la tarjeta de red wifi&lt;br /&gt;
* Cargar los drivers de una tarjeta gráfica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lsmod ==&lt;br /&gt;
&lt;br /&gt;
Comando para ver los módulos que estamos usando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lspci y usb-devices ==&lt;br /&gt;
&lt;br /&gt;
Estos comandos nos servirán para ver el hardware que está conectado a nuestro&lt;br /&gt;
ordenador. Con lspci veremos el listado del hardware integrado y con usb-devices&lt;br /&gt;
el que está conectado por hardware.&lt;br /&gt;
&lt;br /&gt;
Normalmente, como los módulos se utilizan para dar funcionalidad un hardware,&lt;br /&gt;
aquí en los listado de hardware podremos ver que módulo está utilizando cada&lt;br /&gt;
hardware:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lspci -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veremos una línea en algunos dispositivos que nos diga que módulo estamos&lt;br /&gt;
usando, pongo un pequeño trozo de la salida del comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02) (prog-if 01 [AHCI 1.0])&lt;br /&gt;
    Subsystem: Red Hat, Inc. QEMU Virtual Machine&lt;br /&gt;
    Flags: bus master, fast devsel, latency 0, IRQ 35&lt;br /&gt;
    I/O ports at c0c0 [size=32]&lt;br /&gt;
    Memory at fcc1d000 (32-bit, non-prefetchable) [size=4K]&lt;br /&gt;
    Capabilities: &amp;lt;access denied&amp;gt;&lt;br /&gt;
    Kernel driver in use: ahci&lt;br /&gt;
    Kernel modules: ahci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el hardware INTEl Corporation está utilizando el módulo ahci.&lt;br /&gt;
&lt;br /&gt;
Probemos ahora con usb-devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
usb-devices&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos un trozo de código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0&lt;br /&gt;
D:  Ver= 2.00 Cls=00(&amp;gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1&lt;br /&gt;
P:  Vendor=0627 ProdID=0001 Rev=00.00&lt;br /&gt;
S:  Manufacturer=QEMU&lt;br /&gt;
S:  Product=QEMU USB Tablet&lt;br /&gt;
S:  SerialNumber=42&lt;br /&gt;
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA&lt;br /&gt;
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el teclado está utilizando el módulo usbhid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== insmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para cargar un módulo en el kernel, imaginemos que tenemos un módulo que&lt;br /&gt;
se llama modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo insmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rmmod ==&lt;br /&gt;
&lt;br /&gt;
Sirve para eliminar un módulo de kernel. Imaginemos que queremos borrar un&lt;br /&gt;
módulo cargado anteriormente con el nombre modulo1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rmmod modulo1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ejercicios =&lt;br /&gt;
&lt;br /&gt;
# Cree un fichero vacio llamado 123.txt&lt;br /&gt;
# Añada al fichero las siguientes tres lineas:&lt;br /&gt;
&lt;br /&gt;
        Hola mundo&lt;br /&gt;
        Probando 1 2 3&lt;br /&gt;
        Adios&lt;br /&gt;
&lt;br /&gt;
# Añada una linea más al fichero con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
        Prueba&lt;br /&gt;
&lt;br /&gt;
# Renombre el fichero 123.txt a 456.txt&lt;br /&gt;
# Haga una copia del fichero 456.txt al fichero 789.txt&lt;br /&gt;
# Cree la carpeta xyz&lt;br /&gt;
# Mueva el fichero 789.txt a la carpeta xyz&lt;br /&gt;
# Mueva el fichero 456.txt al temporal&lt;br /&gt;
# Borre el fichero 456.txt&lt;br /&gt;
# Compruebe si el fichero 789.txt contiene la palabra “mundo”&lt;br /&gt;
# Borre la carpeta xyz y su contenido&lt;br /&gt;
# Liste el contenido de la carpeta temporal mostrando los permisos asociados a los ficheros y carpetas, almacene el resultado en el fichero temporal.txt&lt;br /&gt;
# Cree la carpeta ‘x’ y dentro de ella, la carpeta ‘y’&lt;br /&gt;
# Mueva el fichero temporal.txt dentro de la carpeta ‘y’&lt;br /&gt;
# Cuente el número de ficheros y directorios en la carpeta tmp&lt;/div&gt;</summary>
		<author><name>Josmonnie1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Grado_de_Ingenier%C3%ADa_de_Software&amp;diff=4524</id>
		<title>Grado de Ingeniería de Software</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Grado_de_Ingenier%C3%ADa_de_Software&amp;diff=4524"/>
				<updated>2019-10-24T11:56:33Z</updated>
		
		<summary type="html">&lt;p&gt;Josmonnie1: /* Unidades de Almacenamiento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Material de la asignatura para el Grado de Ingeniería de Software&lt;br /&gt;
&lt;br /&gt;
= Teoría =&lt;br /&gt;
== Introducción a los Sistemas Operativos ==&lt;br /&gt;
* 1.1. [[Qué es un  Sistema operativo|Qué es un Sistema Operativo]]&lt;br /&gt;
==Fundamentos de Sistemas Operativos==&lt;br /&gt;
* 2.1. [[Organización básica de un ordenador]]&lt;br /&gt;
* 2.2. [[Modos de operación de la CPU|Modos de operación de la CPU]]&lt;br /&gt;
* 2.3. [[Interrupciones y excepciones|Interrupciones y excepciones]]&lt;br /&gt;
* 2.4. [[Conceptos básicos|Conceptos básicos]]&lt;br /&gt;
* 2.5. [[Arranque del sistema]]&lt;br /&gt;
* 2.6. [[Llamadas al sistema|Llamadas al sistema]]&lt;br /&gt;
==Modelos de diseño de Sistemas Operativos==&lt;br /&gt;
* 3.1. [[Modelos de Dise%C3%B1o de Sistemas Operativos]]&lt;br /&gt;
==Procesos==&lt;br /&gt;
* 4.1. [[Multiprogramación|La multiprogramación]]&lt;br /&gt;
* 4.2. [[Estados de los procesos|Estados de los procesos]]&lt;br /&gt;
* 4.3. [[Hilos|Hilos]]&lt;br /&gt;
==Entrada/Salida==&lt;br /&gt;
* 5.1. [[EstructuraES|Estructura dispositivo E/S]]&lt;br /&gt;
* 5.2. [[GestionES|Modos de gestionar dispositivos E/S]]&lt;br /&gt;
* 5.3. [[Diseño modular E/S|Diseño modular E/S]]&lt;br /&gt;
== Unidades de Almacenamiento==&lt;br /&gt;
* 6.1. [[Discos Magnéticos|Discos Magnéticos]]&lt;br /&gt;
* 6.2. [[Unidades SSD]]&lt;br /&gt;
&lt;br /&gt;
== Administración de archivos==&lt;br /&gt;
* 7.1. [[Ejemplo uso de llamadas al sistema para modificar el sistema de archivos]]&lt;br /&gt;
* 7.2. [[Introducción en la administración de archivos|Introducción en la administración de archivos]]&lt;br /&gt;
* 7.3. [[FAT|FAT]]&lt;br /&gt;
* 7.4. [[EXT2 |EXT2]]&lt;br /&gt;
==Paginación==&lt;br /&gt;
* 8.1. [[Paginación|Paginación]]&lt;br /&gt;
==Memoria Virtual==&lt;br /&gt;
* 9.1. [[Memoria Virtual|Memoria Virtual]]&lt;br /&gt;
==Terminología de red==&lt;br /&gt;
* 10.1.[[Terminología de red]]&lt;br /&gt;
= Prácticas =&lt;br /&gt;
&lt;br /&gt;
Todo el material de la asignatura gira en torno al sistema operativo Linux:&lt;br /&gt;
&lt;br /&gt;
* Boletín 1: [[Administración básica]]&lt;br /&gt;
* Boletín 2: [[Virtualización con libvirt]]&lt;br /&gt;
* Boletín 3: [[Sistemas de archivos]]&lt;br /&gt;
* Boletín 4 (parte 1): [[Contenedores]] con Docker&lt;br /&gt;
* Boletín 4 (parte 2): [[Orquestación de contenedores]] con mini-kube&lt;br /&gt;
&lt;br /&gt;
= Historial =&lt;br /&gt;
&lt;br /&gt;
* [[Material del curso 2018/2019]]&lt;/div&gt;</summary>
		<author><name>Josmonnie1</name></author>	</entry>

	</feed>