Linux para principiantes: conociendo la Terminal
¿Eres una persona que ha utilizado Windows o Mac pero en tu trabajo te han solicitado saber utilizar Linux?, ¿Eres una persona que simplemente quiere aprender más sobre las diferentes opciones en sistemas operativos?, ¿o simplemente eres alguien que ya se fastidió de Windows o Mac? entonces estás lista para dar el paso y cambiarte a Linux ¿correcto? Debo avisarte que si bien te espera una buena racha de jaquecas al inicio, el resultado a largo plazo lo va a compensar totalmente.
Esta guía debería ayudarte a ahorrarte uno que otro estrés innecesario en lo que te vas familiarizando con este sistema operativo. Antes que nada quiero aclarar que este artículo da por hecho que ya tienes instalada alguna distribución de Linux en tu computadora. En otro momento haré una guía de como instalar diferentes versiones de Linux, pero por esta ocasión enfoquémonos en comenzar a utilizar la distribución que ya tienes instalada para este momento.
Tips antes de comenzar:
- Mientras comienzas a utilizar algún sistema operativo (de ahora en adelante le llamaremos OS) basado en linux te recomiendo ampliamente que no almacenes permanentemente (y sin respaldo, pues) ningún archivo importante aún en tu computadora, ten a la mano alguna memoria o disco duro externo en donde mantengas respaldado en todo momento tu contenido más importante: fotos, música, archivos de trabajo, documentos, libros, etc.
- Ten también siempre a la mano el CD o USB-stick de instalación de tu OS basada en linux. Si alguien más te hizo el favor de instalarte el OS linux que estas actualmente utilizando, solicítale que te deje una copia.
- No vayas a confiarte y comenzar a configurar y personalizar demasiado tu entorno en el OS linux aún, pues en caso de algún accidente (que son muy comunes al inicio) habrás desperdiciado muchas horas, quizá días, en personalizar tu entorno para luego perderlo todo. Esto puede generarte muchísima frustración, así que procura comenzar con esta guía por un tiempo, para así familiarizarte con todos los posibles errores fatales que te obligarían a formatear y re-instalar el OS (por eso es importante la recomendación número 2). Una vez que este periodo de prueba y error concluya, entonces sí podrás personalizar tu entorno por completo sabiendo que las posibilidades de perderlo todo serán mínimas.
- Evita pensar en términos de Windows o de Mac, pues no se asemejan a la experiencia de Linux. Apégate a esta nueva forma de utilizar la computadora y si bien utilizaré ciertas comparaciones de los otros OS comerciales ya mencionados, será solamente con el propósito de contrastar experiencias de usuario y facilitarte la transición, pero es conveniente que no inicies queriendo sentir una experiencia similar pues te confundirá mucho.
Iniciando sesión en Linux OS
Antes que nada, es importante conocer un poco la relación que mantiene la Interfaz de Usuario de las distribuciones OS Linux con la arquitectura de fondo de las mismas, y para esto necesitamos un poco de historia:
Linux es el nombre que recibe el núcleo más profundo de los varios OS basados en linux. Se le conoce como Kernel Linux, programado por Linuz Torvald a inicios de los 90’s. El kernel es el responsable de comunicarse con los componentes físicos, o hardware, de un ordenador: ROM, RAM, periféricos como el teclado, la pantalla, etc; digamos que es la parte del software que ordena y administra los recursos de tu computadora, que son limitados dependiendo de la capacidad de memoria, el tipo de procesador, si es una computadora de 64 bits o de 32 bits, y un largo et cétera altamente técnico.
Ahora, encima del núcleo Linux ─el cual fue registrado bajo un GPL (General Public License) lo cual permite que cualquiera en el mundo lo pueda modificar y volver a publicar sin penalizaciones legales de ningún tipo─ encontramos la siguiente capa de código, la cual se conoce como Proyecto GNU. Este proyecto ha sido liderado desde el inicio por Richard Stallman, y en sus inicios, a finales de los 80’s, solía tener como objetivo el utilizar su propio núcleo (como el núcleo de Linux del que ya hablamos), pero con la aparición del núcleo de Linuz Torvald, la tendencia ha sido a utilizar el núcleo Linux. Es así que llegamos a lo que aquí estaremos enfocándonos en aprender, a cómo utilizar: Sistemas Operativos basados en GNU-Linux.
Así que, aunque coloquialmente se les llama Linux, a secas, a todas las distribuciones (que de aquí en adelante les llamaremos distros), es importante que sepamos ─y más adelante veremos por qué la importancia─ que su nombre completo es GNU-Linux. Una manera muy sencilla de ejemplificar la independencia entre Linux y GNU viene siendo el caso de Android, así es, ese OS que viene instalado en básicamente cualquier smartphone que no sea de Apple. Android usa el núcleo Linux, pero no usa GNU, sino su propio entorno. Es como una paleta Rocaleta, Linux es el chicle del centro, y GNU o Android son dos posibles capas, digamos de manzana o de piña, que conforman la segunda capa de la paleta.
Ahora, regresando a GNU-Linux, encima de este combo viene otra serie de capas de código, y estas capas son las que vamos a conocer como distros. Las dos distros principales más populares son Debian y Ubuntu. Ubuntu a su vez se basa en Debian, pero bifurcaron por cuestiones de filosofía de trabajo: mientras que Debian es un OS GNU-linux que se apega radicalmente al desarrollo completamente libre de software, Ubuntu se enfoca más en la adaptación de GNU-linux a un mundo en donde la productividad del día a día está muy relacionada con el uso de software privativo. En pocas palabras Debian es un OS de la tribu hacker, y Ubuntu es un OS enfocado en el usuario común.
Conocer esto anterior es importante, porque significa que existe una amplia compatibilidad de Ubuntu con todo aquello que provenga de Debian; ojo, pero no a la inversa. A partir de aquí podremos entender que la siguiente capa de la Rocaleta linuxera se construye ─bajo la misma lógica que hasta ahora vamos conociendo─ alrededor de Debian o bien de Ubuntu. Casualmente a esta capa suele conocérsele como el flavor, que es “sabor” en inglés.
En la esquina de Debian podemos encontrar obviamente y antes que nada a GNU-Linux Debian que viene siendo el original y que hasta la fecha sigue siendo desarrollado. Posteriormente encontramos diversos sabores de Debian como Kali Linux, Linux Mint Debian Edition, Bunsenlabs, Crunchbang Plusplus, Tails, Raspbian, Trisquel, DeepinOS, y generalmente desde el momento que los instalas (con algunas pocas excepciones) puedes darte cuenta que son de la familia Debian, y los propósitos de estos sabores suelen ser bastante específicos: seguridad, privacidad, hackeo, desarrollo web o de software.
En la esquina de Ubuntu podemos encontrar, igual que con el caso anterior, antes que nada el original Ubuntu OS. Posteriormente encontramos diversos sabores como Linux Mint, Ubuntu Budgie, Elementary OS, Zorin OS, Ubuntu MATE, Lubuntu, Kubuntu, Xubuntu, Ubuntu Studio, Ubuntu Pi, Deepin OS. Desde el momento de la instalación, con estas distros-sabores es fácil intuír cómo están enfocadas, como buen Ubuntu, al usuario promedio.
Una pequeña aclaración con DeepinOS, fue basado en Ubuntu hasta el 2015, y se notaba fácilmente porque es muy vistoso y amigable, pero desde ese año se ha migrado a ser basado en Debian, manteniendo aún así esa presentación amigable y vistosa, es un caso, al menos de los que conozco, excepcional de un OS amigable basado en Debian.
Como mención especial, para contextualizar un poco más, mencionaré una distro Linux llamada RedHat, la cual es independiente, no es popular como Debian o Ubuntu, y no está basada en ninguna de estas dos, digamos que es como un Android, que si bien usa el núcleo Linux más bien representa su propia estirpe. RedHat Linux tiene sus propios sabores como Fermi, el cual usan en FermiLabs, o CERN, que se llama así porque los usan en el CERN (The European Organization for Nuclear Research).
El Laboratorio Nacional Fermi es un laboratorio de física de altas energías, llamado así en honor al físico Enrico Fermi, pionero en física de partículas. En el Fermilab está instalado el segundo acelerador de partículas más potente del mundo (el primero es el Gran colisionador de hadrones), el Tevatrón, usado para descubrir el quark cima.
Wikipedia: Fermilabs
La Organización Europea para la Investigación Nuclear (nombre oficial en español), comúnmente conocida por la sigla CERN (sigla provisional utilizada en 1952, que responde al nombre en francés Conseil Européen pour la Recherche Nucléaire, es decir, Consejo Europeo para la Investigación Nuclear), es una organización de investigación europea que opera el laboratorio de física de partículas más grande del mundo.
Wikipedia: CERN
Esta mención anterior fue para darnos cuenta que Linux no es ningún sistema operativo de tercera, no es un Frankenstein mal armado, es un sistema operativo de primera, utilizado en niveles de especialización extremadamente demandantes y complejos, mucho más que Windows o Mac; estos últimos dos monstruos comercuales han librado una batalla por décadas para desprestigiar a Linux, obviamente porque es un OS de licencia libre, código abierto y generalmente de distribución gratuita, lo cual afecta los bolsillos de Bill Gates y de Steve Jobs. En fin, Linux es una herramienta altamente compleja y confiable, y en la actualidad, ya que Gates y Jobs realmente perdieron la batalla de desacreditación y tuvieron que retractarse, mucha atención se ha volcado en estos OS libres y cada vez hay más y mejores herramientas que pueden competir bastante de cerca ─y a veces superar─ a sus contrapartes privativas de Microsoft, Adobe, Apple, et cétera.
Si para este momento aún no has tenido un derrame cerebral, continuemos ahora sí con tu inicio de sesión. Para este momento es muy probable que no sepas qué tipo de Linux tienes instalado: ya picaste el botón de encendido de tu ordenador, cargó las pantallas negras con letras blancas de siempre, el logotipo de la marca de tu computadora, y ahora estás ante una pantalla de inicio, similar a Mac o a Windows, pero solo en la superficie. Quizá esta pantalla de inicio te ha pedido usuario y contraseña o quizás no, esto depende de la configuración con la que fue instalado Linux, pero no importa, lo que realmente importa para este punto es que sepas que tendrás una relación íntima y continua con algo que se le conoce como La Terminal.
A diferencia de Mac o de Windows, en donde el principal objetivo es alejarte de su esqueleto (las pantallas negras con puro comando en texto blanco), es decir de lo que alguna vez en Windows se conocía como MS-DOS, por ejemplo, en Linux tu interacción con la terminal será constante, el escribir texto directamente en esa pantalla negra para realizar acciones tan comunes como instalar o desinstalar un programa será lo normal. La terminal es la interface que te permite interactuar con tu computadora através de líneas de comando.
Por esto es que será importante conocer los comandos básicos para poder ingresarlos en la terminal, pues sin ellos no podrás avanzar, sobre todo si por algún tipo de suerte elegiste una distro basada en Debian. Te preguntaras ¿por qué revisamos tanta historia de linux antes de este punto práctico? la respuesta es contundente: tienes que saber qué demonios significa un entorno gráfico (GUI) y que significa línea de comando (CLI). Recuerda que con Linux tu situación pasa de ser un simple consumidor-usuario, a ser un administrador-usuario que debe comprender lo mínimo del procesamiento de datos de un ordenador.
Entonces, una cosa es el GUI, por sus siglas en inglés Interface Gráfica de Usuario, y otra cosa es el CLI, por sus siglas en inglés Interface de Líneas de Comando. Ambas interfaces se comunican con la misma parte de tu computadora: con el GNU-Linux que está instalado por debajo de la distro y del flavor (que ahora ya sabes qué significan esos dos términos: distro y flavor). El ícono de la terminal usualmente se ve algo así, y varía muy poco en cada distro y flavor realmente:
Ahora sí, lo primero que harás en tu entorno gráfico es buscar el lanzador de la terminal, es decir el ícono de la terminal para hacerle clic. Este suele encontrarse en forma de ícono de atajo ya sea en el escritorio, en la barra de tareas, o bien en el Menú de aplicaciones (ese que en Windows se llamaba menú de inicio, o que en Mac sería el Launchpad).
Nota: no te preocupes si no sabes cual entorno gráfico de escritorio tienes, hay cientos, los más comunes son GNOME3, KDE Plasma, XFCE, pero no tienes que saber cual es para este momento, solamente te pongo los pantallazos para que no te atores o te pierdas, y comiences a diferenciarlos. Los revisaremos a detalle en otro tutorial.
Familiarizandose con la Terminal
Una vez abierta la terminal (que se ve como cualquier otro programa común y corriente en una ventanita flotando sobre tu escritorio con sus respectivas “minimizar, maximizar y cerrar” en el borde superior de la ventana) tenemos que entender que Linux OS opera sobre directorios, en Windows o en Mac gráficamente se representan estos directorios como Folders-Carpetas, en Linux también se pueden accesar como Folders en el GUI, pero realmente (y es lo que nos permite ver el CLI) es que nos movemos entre directorios.
Nota: Entender la diferencia y la relación entre directorios, particiones de disco, formatos y extensiones de archivo nos permitirá posteriormente el saber como instalar cualquier distro y sabor de Linux, pero eso lo veremos más adelante.
Nota: estaré usando la palabra directorio como sinónimo de folder o carpeta, y a veces las dos al mismo tiempo folder/directorio, pero todo eso es en términos prácticos lo mismo.
nombre-de-usuario@nombre-de-computadora:~$
Esta es la anatomía básica de la línea de comando cuando abres una terminal. Primero tenemos el nombre-de-usuario, ese usuario con el que ya sea que por defecto se inició la sesión, o bien si te llegó a pedir usuario y contraseña al inicio, será el usuario con el que elegiste iniciar sesión. Luego tenemos el signo de arroba @ que significa “at” que en español significa algo así como “se encuentra en”, y finalmente tenemos el nombre de la computadora, este último es un nombre que al momento de instalar linux te pregunta ¿cómo quieres que se llame esta computadora?. En resumen, lo que esta línea dice es: «este usuario» + «se encuentra en» + «la computadora con este nombre».
¿Cómo saber en qué directorio me encuentro?
Luego de esto viene un «dos puntos (:), virgulilla (~), símbolo de dinero ($)». Esta combinación específica me dice que estoy operando como un usuario con privilegios limitados. La virgulilla literalmente nos está diciendo “estoy aquí en tu folder personal”, pero no nos dice en dónde está ese folder, solo está anunciando que se encuentra allí, por lo cual el primer comando que veremos es el que nos permite saber exactamente en dónde estamos.
nombre-de-usuario@nombre-de-computadora:~$ pwd
El primer comando que revisaremos es pwd, por sus siglas en inglés pwd significa “directorio presente de trabajo” (present working directory), y este comando al escribirlo y darle Enter, te mostrará en qué directorio se encuentra actualmente tu línea de comando. Imagínalo como un “cursor de mouse” muy rudimentario, que te está señalando en qué directorio/folder exactamente se encuentra tu "cursor" en este momento.
Este señalamiento de localización se desglosa a manera de algo que llamamos path en inglés que traducido significa algo como “camino”, es decir, el caminito de directorios, y se representa con diagonales: « /home/nombre-de-usuario/Música/Género/Rock/70s » por poner un ejemplo, en este caso nos encontramos en la carpeta 70s, que esta dentro de la carpeta Rock, dentro de la carpeta Género, dentro de la carpeta Música, y así.
nombre-de-usuario@nombre-de-computadora:~$ pwd
/home/nombre-de-usuario
nombre-de-usuario@nombre-de-computadora:~$
Nota: Como ya dije antes, el signo de virgulilla (~) es la manera resumida de decir que estamos en el folder personal, es decir en “home/nombre-de-usuario”.
Aquí, al darle enter al comando pwd, el resultado fue “home/nombre-de-usuario”, lo que significa que me encuentro actualmente en el directorio “home”, y dentro de “home” me encuentro en el directorio que es mi folder personal que tiene por nombre exactamente el mismo nombre de usuario, pero ojo, no son lo mismo, una cosa es mi «nombre de usuario» y otra cosa es el nombre del directorio/folder de mi usuario que generalmente será idéntico a mi nombre de usuario. Imagínalo como si alguien que se llama Pepe Flores, y que afuera de la puerta de su hogar tiene un mosaico decorativo que dice Pepe Flores, evidentemente Pepe y la casa que dice Pepe son dos cosas diferentes, una nos señala que es el hogar de Pepe, y el otro es el nombre de Pepe quien la habita.
Operaciones básicas de localización y movimiento entre directorios
El segundo comando que veremos es ls. Este por sus siglas en inglés significa "listado", y al igual que el comando « pwd » basta con ser un usuario con privilegios limitados para ejecutarlo. Escribimos el comando y damos Enter en nuestro teclado.
nombre-de-usuario@nombre-de-computadora:~$ ls
Música Imágenes Videos holamundo.txt
nombre-de-usuario@nombre-de-computadora:~$
Vemos que nos ha regresado un listado de nombres. Estos nombres corresponden a los directorios y archivos que se encuentren dentro del directorio, en el que con ayuda de pwd, sabemos que allí nos encontramos. Nos esta diciendo que dentro del directorio que se llama igual a mi nombre de usuario (recuerda el ejemplo de Pepe Flores y la casa de Pepe Flores de allá arriba) se encuentran los folders de Música, Imágenes, Videos, y habita ahí tambien un archivo de texto (.txt) que se titula holamundo. En términos gráficos esto lo puedes visualizar fácil: es un Folder que contiene 3 folders y un archivo de texto, así de simple.
El siguiente comando es cd, cd /, y cd .. . Por sus siglas en inglés cd significa "cambiar directorio", y las variantes con espacio + diagonal (/) y con espacio + punto punto (..) hacen referencia a operaciones relacionadas con cambiar directorios.
Nota: los espacios son importantes, es diferente escribir "cd.." a escribir "cd [espacio] ..". Si no agregas un espacio entre "pwd" y ".." el comando simplemente no será reconocido, y ese es un error muy común.
nombre-de-usuario@nombre-de-computadora:~$ pwd
/home/nombre-de-usuario
nombre-de-usuario@nombre-de-computadora:~$ ls
Música Imágenes Videos holamundo.txt
nombre-de-usuario@nombre-de-computadora:~$ cd ..
nombre-de-usuario@nombre-de-computadora:/home$
Aquí vemos que primero que nada pregunte con pwd ¿en dónde estoy? y me respondió “estás en home/nombre-de-usuario”, que de manera resumida se dice ~, y por eso se ve así: nombre-de-usuario@nombre-de-computadora:~$, que es equivalente a decir nombre-de-usuario@nombre-de-computadora:home/nombre-de-usuario$. ¿Sí ves como entre (:) y ($) dice “home/nombre-de-usuario” o bien “~”? es exactamente lo mismo pero resumido.
Bien, luego de saber en dónde estoy, le pido que haga un listado de lo que está en ese directorio con ls. Y vemos que como antes, me responde que hay tres folders y un archivo .txt ahi mismo.
Ahora, le pido que cambiemos de directorio a uno antes del cual estoy ahora mismo, así que si estoy en “home/nombre-de-usuario”, con cd .. me llevará a “home” y me lo señalará cambiando la virgulilla (~) que recordemos que es la manera resumida de decir literalmente “home/nombre-de-usuario”, por “home”, colocándolo entre dos puntos (:) y signo de dinero($), así: nombre-de-usuario@nombre-de-computadora:/home$
Nota: recuerda que el comando se escribe “cd” + [espacio] + “..”
nombre-de-usuario@nombre-de-computadora:~$ pwd
/home/nombre-de-usuario
nombre-de-usuario@nombre-de-computadora:~$ ls
Música Imágenes Videos holamundo.txt
nombre-de-usuario@nombre-de-computadora:~$ cd ..
nombre-de-usuario@nombre-de-computadora:/home$ ls
nombre-de-usuario
nombre-de-usuario@nombre-de-computadora:/home$ cd nombre-de-usuario
nombre-de-usuario@nombre-de-computadora:~$
Ahora, estaba yo en el directorio “home”, ¿recuerdan? y le voy a pedir que me liste el contenido del folder home (con el comando ls), a lo cual me responde que existe otro folder dentro de home, un solo folder, y este folder se llama “nombre-de-usuario”, así que le digo a la terminal que cambie de directorio a “nombre-de-usuario”. Y entonces cambia de :/home$ a :~$ ¿recuerdan por qué? porque ~ es una forma resumida de decirnos que estamos específicamente en /home/nombre-de-usuario.
Ahora, le voy a decir que me lleve de /home/nombre-de-usuario al primer folder al que tengo acceso como usuario, que le llamamos root, o raíz en inglés.
Para esto le voy a escribir cd /
Este comando, cd /, nos ahorra el hacer cd .. dos veces, ya que para ir manualmente de la carpeta personal del usuario /home/nombre-de-usuario (cuya abreviatura es ~) nos tomaría retroceder 2 niveles, de /home/nombre-de-usuario, a /home, a /
nombre-de-usuario@nombre-de-computadora:~$ cd /
nombre-de-usuario@nombre-de-computadora:/$
Nota: se escribe “cd” + [espacio] + “/”. De nuevo, los espacios importan.
¿Viste como cambió :~$ por :/$ ? Esto nos dice que nos ha llevado del directorio ~ (recuerda que es la manera resumida de decir /home/nombre-de-usuario) al directorio /. Este directorio raíz, o root, se simboliza como una diagonal solitaria (/) porque no hay nada más abajo de este directorio con lo que podamos interactuar como usuarios.
nombre-de-usuario@nombre-de-computadora:~$ cd /
nombre-de-usuario@nombre-de-computadora:/$ ls
bin lib mnt root sys var run
boot etc lib32 lost+found opt
srv cdrom home proc sbin usr tmp
Ahora, en esta carpeta root, o raíz, voy a pedirle que liste su contenido, con ls. Como podemos ver, nos devuelve un listado con muchos folders con nombres extraños (bueno que hasta ahora no sabemos que significan, pero no importa por el momento no es reelevante). Estos folders son el corazón de tu sistema operativo, contienen archivos altamente sentibles que de modificarlos podrías romper todo y dejar inservible tu OS.
Afortunadamente estos folders si bien son visibles y puedes ingresar y listar su contenido (con cd y ls), no puedes escribir ni modificarlos, puesto que hasta ahora hemos aprendido a operar bajo un usuario de privilegios limitados, mientras que para escribir o modificar estos archivos de la raíz, necesitamos ser un usuario de privilegios elevados, que es justamente a lo que vamos a continuación, pero antes de eso, brevemente hablaré sobre las posiciones absolutas.
¿Recuerdas que ~ significa /home/nombre-de-usuario, y que / significa carpeta raíz (root)? Bueno, pues en la terminal puede aprovechar estos dos símbolos para utilizarlas como comandos de posición absoluta, por ejemplo, comenzamos abriendo la terminal y preguntándole en dónde estamos:
nombre-de-usuario@nombre-de-computadora:~$ pwd
/home/nombre-de-usuario
Nos dirá que estamos en ~, es decir en nuestra carpeta personal, o lo que es también lo mismo /home/nombre-de-usuario. Ahora, queremos navegar a la carpeta llamada /sys, que como vimos en el ejemplo anterior, se encuentra justo dentro de la carpeta raíz, es decir, relativo a la carpeta en donde ahora mismo estamos que es la carpeta personal, tendríamos que bajar dos niveles ¿correcto? Y eso lo lograríamos con cd ..
nombre-de-usuario@nombre-de-computadora:~$ cd ..
nombre-de-usuario@nombre-de-computadora:/home$ cd ..
nombre-de-usuario@nombre-de-computadora:/$ pwd
/
nombre-de-usuario@nombre-de-computadora:/$ cd sys
nombre-de-usuario@nombre-de-computadora:/sys$
Dimos dos veces el comando de cd .. , lo que nos regresó del nivel al que se encuentra nuestra carpeta personal ~, dos niveles hasta llegar al folder o directorio raíz.
Es por esto que luego de dos comandos cd .. , cuando yo utilizo el comando pwd para preguntarle ¿ahora en dónde me encuentro? la respuesta es una simple diagonal (/), esto es porque, como ya vimos, el signo de diagonal solitario representa al directorio raíz de nuestro OS. Y si nos fijamos bien, entre los dos puntos (:) y el signo de dinero ($) lo que dice ahí es tambien una diagonal solitaria (/), lo que nos indica que estamos en la carpeta raíz :/$
Luego escribimos cd sys, y listo, llegamos al folder /sys, que esta justo dentro de la carpeta raíz (/).
Ahora bien, esto es la manera manual ¿pero existe una manera más rapida, en menos pasos de hacer este movimiento? sí, con la ayuda de valores absolutos. De hecho en el ejemplo antepasado ya usamos este atajo, lo vuelvo a pegar aquí abajo para recordarlo:
nombre-de-usuario@nombre-de-computadora:~$ cd /
nombre-de-usuario@nombre-de-computadora:/$ ls
bin lib mnt root sys var run
boot etc lib32 lost+found opt
srv cdrom home proc sbin usr tmp
¿Recuerdas este ejemplo anterior en donde nos movimos de nuestra carpeta personal simbolizada por ~, hasta la carpeta raíz simbolizada por /, en un solo movimiento y luego ejecutamos el comando ls para ver el contenido de la carpeta raíz? Bueno pues este es el inicio de cómo utilizar localizaciones absolutas. Son absolutas porque parten de una base absoluta (y no una relativa), es decir, se refieren a una carpeta específica.
Intentaré explicar la diferencia entre relativo y absoluto así: cuando escribimos cd .. estamos solicitando un cambio de directorio relativo al lugar en donde nos encontramos ahora mismo, mientras que cuando decimos cd /home, por ejemplo, estamos, no partiendo del punto relativo a donde estamos ahora mismo, sino señalando un lugar específico lejano pero que Linux reconoce y entiende que tiene que partir desde ese lugar en específico y no desde el punto donde ahora mismo estamos.
En este ejemplo siguiente, nos encontramos dentro de la carpeta “Música” que se encuentra dentro de nuestra carpeta personal ~ (que es lo mismo que /home/nombre-de-usuario/Música)
nombre-de-usuario@nombre-de-computadora:~/Música$ cd /sys
nombre-de-usuario@nombre-de-computadora:/sys$
Entonces, en este ejemplo, estamos en nuestra carpeta personal ~, y le decimos cd /sys, lo que significa “llévame de este lugar «/home/nombre-de-usuario/Música» directamente a ese lugar que tu conoces como / que es el directorio raíz y de ahí busca y llévame al folder llamado sys que esta dentro de ese directorio raíz”. Esto es posible porque Linux sabe exactamente qué significa (/), significa un lugar, un lugar específico llamado directorio raíz, y al decirle /sys, Linux sabe perfectamente que del directorio raíz (/) tendría que haber un folder/directorio llamado sys. De no existir tal folder llamado sys, Linux simplemente nos responderá que ese directorio no existe.
Los dos lugares exactos, absolutos, que Linux conoce son /, que es el folder raíz, y ~, que es la carpeta personal del usuario. Entonces podemos usarlos como valores absolutos para movernos rápido entre carpetas aunque nos encontremos “lejos” de dichos folders que son nuestro destino final.
nombre-de-usuario@nombre-de-computadora:~/Música$ cd /sys
nombre-de-usuario@nombre-de-computadora:/sys$
nombre-de-usuario@nombre-de-computadora:/sys$ cd ~Música
nombre-de-usuario@nombre-de-computadora:~/Música$
¿Viste? nos movimos de un solo golpe, desde una carpeta lejana hasta otra, y de regreso, sin tantos cd .. y cd de por medio.
Usuarios con privilegios altos
Lo siguiente que aprenderemos es sobre usuarios con privilegios altos. Hasta ahora nos hemos familiarizado con la nomenclatura de «nombre-de-usuario@nombre-de-computadora:~$» en donde “nombre-de-usuario” me dice que estoy interactuando con Linux como un usuario con ese nombre, y el símbolo de dinero ($) también me anuncia que soy un usuario normal con privilegios limitados.
Ahora vamos a ver, qué rayos significa lo siguiente, y como lograr ese estado.
root@nombre-de-computadora:/#
Como podemos ver, a diferencia de nuestro estado anterior (nombre-de-usuario@nombre-de-computadora:~$) este no dice nombre-de-usuario al inicio, ahora dice root, y en lugar de ~$ ahora dice /# . Bueno, no nos asustemos, que todo sigue siendo lo mismo, o casi lo mismo. En esta ocasión dice root porque estamos en una sesión de administrador, o lo que es lo mismo, un usuario raíz, o "root user" en inglés, por eso dice “root@nombre-de-computadora”, y al final el /# nos está anunciando, primero con el signo de gato (#), que somos un usuario con privilegio de administrador del equipo, y la diagonal (/) simplemente, como antes ya vimos, que estamos en el folder raíz.
Es decir, mientras usamos un usuario personal con privilegios limitados, nuestra terminal nos asigna como directorio base nuestra carpeta personal que se simboliza con (~) ¿recuerdas?. Pero al ser un usuario raíz con privilegios de administrador la terminal ahora nos asigna como directorio base la carpeta de raíz, simbolizada con (/). Esto es lógico, el sistema asume que un usuario sin privilegios altos, con privilegios de usuario, ejecute comandos a partir de su carpeta personal, mientras que un usuario raíz, administrador, con privilegios altos, el sistema asume que ejecutará comandos a partir del directorio raíz de todo el sistema.
Privilegios de Usuario Raíz (Root)
Para lograr este privilegio de administrador podemos hacer dos cosas, la primera:
nombre-de-usuario@nombre-de-computadora:~$ su
Contraseña:
root@nombre-de-computadora:/#
En este caso, utilizamos el comando su, que significa super-usuario, damos Enter en nuestro teclado e inmediatamente nos va a pedir la Contraseña del root. Ojo, no nos está pidiendo la contraseña del usuario “nombre-de-usuario”, sino la contraseña del usuario root.
Para esto tenemos que entender que Linux permite agregar varios usuarios, también llamadas sesiones, en una misma computadora. Por eso nos especifica con “@nombre-de-computadora” el nombre de la computadora en donde se alojan cualquier cantidad de usuarios que querramos incluir. Pero aparte de los usuarios/sesiones que manualmente registremos al instalar el OS o posteriormente (siempre puedes crear nuevos usuarios), Linux agrega un usuario por defecto llamado root, y que es un usuario independiente con los máximos privilegios, un administrador automático vaya. Esta cuenta generalmente existe en el sistema pero no necesariamente viene completamente configurado, es decir, generalmente cuando instalas tu OS, solamente te pedirá registrar mínimo un usuario con su contraseña personal, pero no te pedirá ingresar una contraseña para el usuario automático root.
Es así que normalmente no sabrás tu contraseña de usuario root, porque nunca la pidió crear desde un inicio, entonces a menos de que posterior a la instalación tú mismo configures al usuario root y le des una contraseña propia, no tendrás la contraseña de root. Pero no te preocupes, esto es completamente normal y generalmente no es necesario siquiera el darle una contraseña propia al root.
Entonces, si tu ejecutas el comando su, e ingresas una contraseña equivocada, porque como ya dijimos puede que ni siquiera exista tal contraseña, y como también ya dijimos esa contraseña del usuario root no es la misma que la del usuario regular (nombre-de-usuario), simplemente te dirá Fallo de Autenticación y te regresará a tu usuario normal.
nombre-de-usuario@nombre-de-computadora:~$ su
Contraseña:
su: Fallo de Autenticación
nombre-de-usuario@nombre-de-computadora:~$
Cuando esto ocurra, y necesites entrar al usuario root, lo que harás es escribir el comando sudo su, lo que te va a resultar en una solicitud de Contraseña, pero esta vez sí debes ingresar tu contraseña personal:
nombre-de-usuario@nombre-de-computadora:~$ sudo su
[sudo] Contraseña para nombre-de-usuario:
root@nombre-de-computadora:/home/nombre-de-usuario#
Ahora ya accediste como super usuario o lo que es lo mismo usuario root, pero desde tu cuenta de usuario regular con tu contraseña personal, gracias al comando sudo.
Para salir del usuario root y regresar a nuestra sesión de usuario regular, hacemos el comando exit
root@nombre-de-computadora:/home/nombre-de-usuario# exit
nombre-de-usuario@nombre-de-computadora:~$
Ahora ¿por qué en lugar de decir ~ esta vez sí aparece completo el path del directorio /home/nombre-de-usuario? pues esto es simplemente así, cuando ingresas como root, la abreviatura ~ simplemente se desglosa completa, nada de que preocuparse.
Antes de continuar quiero mencionar un punto muy importante sobre ser superusuario y el comando su. Generalmente no es buena idea el moverte por tus directorios en modalidad superusuario, en primera es algo realmente innecesario la mayor parte de las veces, es una función que si bien es importante conocer desde un inicio, debemos saber que es un comando más bien utilizado por un usuario nivel intermedio o avanzado, no para un principiante. Siendo principiante y moviéndote o haciendo cambios con la cuenta root activada ten por seguro que te llevará cometer errores que rompan tu OS y lo dejen inservible y por tanto tengas que volver a instalar desde ceros tu OS.
Privilegios temporales con SUDO
¿Entonces, si es tan peligroso, por que carajos lo aprendimos? porque es importante saber qué significa tener privilegios altos ya que una versión más light ─por asi decirlo─ de los privilegios altos, que es el comando sudo, lo vamos a utilizar siempre, incluso como principiantes, todo el tiempo será sudo esto, sudo aquello, sudo lo otro, sudo todo. ¿Por qué es más light, dirás? porque es temporal, funciona solo para ejecutar una operación y luego se cancela, así evitamos estar todo el tiempo en modo root y estar haciendo cambios peligrosos.
Como ya dije, hay que entender la lógica de lo que significa ser superusuario, o su, para entender qué cosas hace el comando sudo. Sudo es un permiso temporalmente limitado del privilegio de superusuario. Mientras que hacer su, o sudo su, lo que hace es cambiarnos completamente de nuestro usuario regular con privilegios limitados a la cuenta de usuario root con máximos privilegios administrativos (hasta que ejecutemos el comando exit para regresarnos al usuario regular) lo que hace sudo es darnos los privilegios de super usuario sin necesariamente sacarnos de nuestra sesión actual ni cambiarnos a la sesión del usuario root. Son dos cosas muy diferentes: una (su) te saca de tu sesión actual completamente y te ingresa, o cambia mejor dicho, al usuario root por completo; la segunda opción (sudo), te mantiene en tu sesión actual pero te otorga los privilegios del usuario root para ejecutar una sola línea de código, es por eso que sudo lo tenemos que poner cada nueva línea de código que ejecutamos, más adelante veremos exactamente esto ejemplificado. Es de esta misma manera que al utilizar sudo, no tenemos que ejecutar el comando exit al final de la operación, como sí ocurre con el comando su.
Ahora entonces ¿para qué nos sirve sudo, y por qué lo vamos a utilizar todo el tiempo? Bueno, imaginemos que queremos instalar un programa, más adelante veremos a detalle todo lo que significa el ejemplo anterior, pero por el momento solo quiero que veamos cómo es que repetimos sudo varias veces:
nombre-de-usuario@nombre-de-computadora:~$ sudo apt-get update
[sudo] Contraseña para nombre-de-usuario:
Obj:1 http://archive.ubuntu.com/ubuntu focal
Obj:2 http://ppa.launchpad.net/ubuntu/backports/ubuntu focal
Obj:3 http://repo.vivaldi.com/stable/deb stable
Descargados 957 kB en 2s (469 kB/s)
Leyendo lista de paquetes... Hecho
nombre-de-usuario@nombre-de-computadora:~$ sudo apt-get install Vivaldi
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado...
Hecho .....
Ya luego veremos que significa todo ese texto, por ahora lo importante es entender cómo funciona sudo. Como puedes ver, primero ejecute sudo apt-get update, lo cual provocó que me solicitara mi contraseña de usuario, no la de root, sino la contraseña de mi cuenta regular. Luego de verificarla, se ejecutó mi comando, con privilegios de superusuario, pero sin sacarme ni cambiarme de mi sesión de usuario actual. Cuando terminó dicha operación, ejecuté sudo apt-get install Vivaldi, como puedes ver, volví a utilizar sudo, pero esta vez ya no me pidió mi contraseña, simplemente ejecutó directamente mi comando ¿para que escribí yo sudo esta vez si ya nisiquiera me pidió mi contraseña? Bueno, aunque Linux ya no me solicitó mi contraseña, si no hubiera yo ejecutado sudo antes de apt-get install, simplemente hubiera fallado el comando ¿por qué? porque el comando apt-get install (no te preocupes, ya veremos que significa ese comando) solo funciona con privilegios de superusuario, pero no es necesario, y de hecho no es nada recomendable el estar en tu sesión personal, y luego hacer « su » para cambiarse a la sesión de superusuario, y desde ahí instalar algo con el comando apt-get install, y luego regresar a la cuenta regular, esto puede provocar errores bastante horribles que dejen inservible el programa que intentabas instalar y a veces pueden dejar totalmente inservible tu sistema operativo, por eso usamos sudo, y no su, para instalar programas.
Como estaba diciendo, aunque Linux no me haya pedido mi contraseña la segunda vez hay que escribir sudo para anunciarle a Linux que esta otra línea de comando también tiene que llevar premisos de superusuario, ya que como había dicho más arriba, sudo es un permiso temporal, es decir nos da un espacio de unos 5 minutos para ejecutar en serie varios procesos con privilegios de superusuario, pero necesariamente tenemos que escribir sudo en cada línea. Entonces ahí lo tienes, el comando sudo se debe escribir en cada línea de código que se requiera ejecutar con privilegios de superusuario, por un tiempo no nos va a volver a pedir la contraseña, luego de unos 5 minutos la volverá a solicitar si es que seguimos ejecutando comandos que requieran del sudo, y no pasa nada, solamente le volvemos a ingresar la contraseña. Piensa en sudo como un parquímetro, cada cierto tiempo de vuelve a pedir que ingreses una moneda para seguir usando su servicio.
En el siguiente tutorial veremos cómo instalar programas en tu OS, cómo desinstalarlos, como copiar, borrar y mover archivos de un directorio a otro, entre otras operaciones básicas similares. ¡Hasta pronto!
Agrega tu comentario: