Comandos básicos en Linux

Administración de Servidores

Aprende a usar la terminal de un sistema operativo basado en Linux, ya sea Ubuntu, Debian, Centos, etc. Se te mostrará como gestionar directorios, archivos, permisos, usuarios, grupos y más.

En todos los sistemas Linux es indispensable el usar la terminal para realizar algunas acciones más complejas, además, es más práctico que usar la interfaz gráfica. Linux es el sistema operativo más usado en servidores, tiene más del 50% del total de servidores de la nube y muchas empresas del tamaño de Facebook, Amazon y Google usan este sistema operativo en muchas de sus aplicaciones que tienen en la red.

Estructura de comandos

Los comandos inician con una palabra clave y única dentro del sistema, es decir, no pueden existir dos comandos con el mismo nombre. También, tiene un conjunto de opciones y parámetros. Las opciones pueden ser una letra con un signo menos detrás de esta o una palabra con dos signos menos por detrás. Los parámetros son información que puede ser una cadena de texto o un número, normalmente.

Ejemplos de comando con opciones

user@machine:~$ ls -l --author --all
user@machine:~$ pwd -L --physical
user@machine:~$ touch -a --date="2015-05-05"

Ejemplos de comandos con parámetros

user@machine:~$ cp archivo.txt ./folder/archivo.txt
user@machine:~$ man cp

Comandos y conocimientos básicos

Estructura de la terminal

Como vemos en la imagen anterior, vemos dos palabras separadas por un carácter @, seguido de los caracteres :~$. La primera palabra es el nombre del usuario que actualmente tiene la sesión, la segunda palabra después de la arroba es el nombre de la máquina. El carácter ~ refiere a la carpeta actual del sistema, donde ~ quiere decir que estamos en la carpeta home del usuario y finalmente, el signo de dólar ($) nos dice que somos usuario normal sin privilegios de superusuario root. Cuando cambiamos al usuario root, veremos el signo del gato (#), esto querrá decir que tenemos permisos de superusuario.

Comandos básicos

Navegar entre carpetas y hacer acciones en ellas como copiar, cortar, pegar, listar, así como también hacer las mismas acciones en archivos. Veamos unos ejemplos:

  • pwd: saber en la carpeta actual en la que nos ubicamos
  • ls: listar los archivos y carpetas del directorio actual.
  • du [file]: cuánto pesa un archivo.
  • mkdir [archivo]: crea un archivo en la ruta con el nombre especificado.
  • mv [archivo] [destino]: mueve el archivo a un destino con el nombre especificado. Si queremos renombrar un archivo, basta mandarlo a la misma ruta pero con nombre diferente.
  • cp [archivo] [destino]: copia un archivo a una ruta de destino.
  • touch [archivo]: toca un archivo. Esto se refiere a que cambia la fecha de modificación al día actual sin alterar su contenido. Si el archivo no existe, se creará.
  • ls -s [elemento] [link]: crea un acceso directo al elemento, ya sea una carpeta, un archivo u otro acceso directo.
  • rm [elemento]: elimina un archivo. Si se desea borrar toda una carpeta y su contenido, solo agregar la bandera
  • cat [archivo]: muestra el contenido de un archivo.

El comando man y la opción --help

Para saber que opciones y parámetros recibe un comando, así como su descripción, basta con usar el comando man:

user@machine:~$ man [comando]

O bien, podemos usar la bandera --help en cualquier comando

user@machine:~$ [comando] --help

Variables del sistema

Las variables de entorno o del sistema son aquellas que el sistema operativo o los programas usan para hacer determinadas tareas. Para conocer el valor de una variable basta con hacer un echo $VAR, donde $var es la variable del sistema. Te enseñamos unas de las más usadas.

  • echo $PATH: Es una lista con los directorios donde encontrar los programas ejecutables desde la consola.
  • echo $HOME: Es la carpeta home del usuario actual.
  • echo $USER: El usuario actual.

Para crear variables del sistema o editarlas, podemos usar bash para esto.

Agregar otra carpeta de comandos, editando la variable PATH

user@machine:~$ export $PATH=/bin/otherfoldet/:$PATH

Agregar una variable nueva

user@machine:~$ export NUEVA="HOLA MUNDO"

Administración de usuarios

Los usuarios, al igual que Linux, tiene cierto nivel de acceso al sistema como acceso a carpetas, editar o ver archivos, ejecutar programas, etc. También, existen grupos con permisos, al igual que los usuarios. 

Existen varios tipos de usuarios, uno de ellos y el más importante es root, el cual, tiene acceso y permiso a todo el sistema operativo en su totalidad. Otros de los usuarios comunes del sistema son aquellos que son creados por algunos programas que, pueden tener ciertos permisos extras que pudiera tener solo root. Un ejemplo de esto es cuando instalamos apache, el cual, crea un usuario y un grupo llamado apache. Finalmente están aquellos usuarios que crea el administrador del sistema o root, que pueden tener ciertos permisos a ciertas acciones y directorios.

Podemos ver los usuarios existentes con solo mostrar la información del archivo /etc/passwd

user@machine:~$ cat /etc/passwd

Y para ver los grupos

user@machine:~$ cat /etc/groups

Las contraseñas de los usuraios están en el archivo /etc/shadow, pero, solo el usuario root puede ver, así que para verlas solo hacemos lo siguiente:

user@machine:~$ sudo cat /etc/shadow

Escribimos la contraseña y nos da acceso de poder verlo, aunque, podemos observar cosas extrañas, esto porque las contraseñas están encriptadas.

Para crear un usuario, usamos el comando useradd

user@machine:~$ sudo useradd nuevo_usuario

Modificar el nombre

user@machine:~$ sudo usermod -l nuevo_nombre_usuario nuevo_usuario

Eliminar usuario

user@machine:~$ sudo userdel nuevo_nombre_usuario

Agregar o cambiar contraseña a un usuario

user@machine:~$ sudo useradd usuario
user@machine:~$ sudo passwd usuario

Así como en Windows, en Linux también existen los archivos ocultos, estos son aquellos que empiezan con un punto al inicio. Si nos ubicamos en la carpeta home de nuestro usuario, podemos ejecutar el comando ls -la para listar y ver todos los archivos, tanto ocultos como normales.

user@machine:/other/path$ cd ~
user@machine:~$ ls -la

Aunque cada archivo oculto tenga una función en específico, vamos a describir los más importantes

  • .bash_history: en este archivo se guarda el historial de comandos del usuario.
  • .bash_logout: definimos los scripts o programas a ejecutarse una vez cerrado sesión.
  • .bashrc: están los scripts o programas a ejecutarse cuando se inicia sesión
  • .bash_profile: contiene alias de comandos, variables o configuraciones que deseamos sean definidas al iniciar sesión.

Permisos de usuarios

Finalmente, entendamos lo que son los permisos. Los permisos son una forma efectiva y segura que tiene Linux para permitir o no acceso de lectura, escritura o ejecución a determinados archivos, carpetas o programas de nuestro sistema.

Existen 3 niveles de permisos:

  • Usuario propietario
  • Grupo del usuario
  • Otros usuarios

Para crear o editar permisos, solo es posible siendo el root. 

Cuando creamos un nuevo usuario, automáticamente se crea una carpeta con su nombre de usuario dentro de la carpeta /home. Dentro de esta carpeta, el usuario tendrá acceso a ella con todos los permisos, por lo que, podrá crear, editar y ejecutar cualquier archivo dentro de esa carpeta y que haya sido creado por el mismo usuario. Esta carpeta es llamada HOME.

Para saber si una carpeta, archivo, archivos o carpetas pertenecen a que usuario y que grupo, usamos el comando la -la

user@machine:~$ ls -la

Veremos algo como lo siguiente. 

En la imagen, la columna de color azul se refiere al propietario, la columna de color naranja es la del grupo y la primera columna de color verde muestra los permisos llamado máscara y son 10 caracteres que podríamos dividir en 4 secciones de la siguiente manera:

d rwx rwx rw-

Donde

  • d: este carácter si es d significa que el elemento es un archivo, - que es un archivo o l si es un acceso directo.
  • r: permisos de lectura
  • w: permisos de escritura
  • x: permisos de ejecución
  • -: sin permiso

Si ponemos atención, vemos que tenemos 3 grupos de 3 caracteres, donde el primer grupo son los permisos del propietario, el segundo del grupo y el tercero del resto de usuarios. 

Ahora que ya sabemos lo que significa, veamos como cambiar y agregar permisos.

Para cambiar permisos a un archivo o carpeta usamos chmod. Este comando nos da la posibilidad de agregar o quitar permisos de 2 maneras, una usando el sistema binario y otra usando un conjunto de caracteres. Aquí solo veremos cómo hacerlo con caracteres.

Para esto debemos tener en mente las siguientes definiciones de caracteres, que identifican el tipo de usuario

  • u: usuario propietario
  • g: grupo
  • o: otros usuarios

Los siguientes, como ya vimos antes, nos dicen el tipo de permiso

  • r: lectura
  • w: escritura
  • x: ejecución

Los siguientes ejemplos lo ilustrarán mejor

Agregar permisos de escritura al archivo file a todos los usuarios

user@machine:~$ sudo chmod +w file

Permisos de lectura y escritura al usuario propietario

user@machine:~$ sudo chmod u+r+w file

Eliminar permisos de ejecución a los otros usuarios y al grupo

user@machine:~$ sudo chmod g-x file
user@machine:~$ sudo chmod o-x file

Con estos ejemplos terminamos, recordemos que hay que tener cuidado con el manejo de los permisos, gestionarlos es una de las tareas más importantes y es el primer paso para prevenir ataques a nuestros sistemas.