03. Cómo dominar la línea de comandos de Linux para Ubuntu Server

La línea de comandos es el corazón de la administración de servidores Linux. Tanto si eres principiante como si eres un administrador de sistemas experimentado, comprender los conceptos básicos de la administración por línea de comandos es crucial para gestionar tu servidor Ubuntu de forma eficiente. Este artículo ofrece una introducción en profundidad a la línea de comandos de Linux, que abarca comandos, herramientas y técnicas esenciales para gestionar archivos, directorios y el entorno del servidor.


Artículo anterior:

01. Introducción a Ubuntu Server – SysOSX: AI & Cloud

02. Cómo configurar tu primer servidor Ubuntu: guía para principiantes – SysOSX: AI & Cloud



¿Por qué aprender la línea de comandos?

La línea de comandos de Linux, a la que se accede a través de la terminal, es una herramienta potente para interactuar con el sistema operativo. A diferencia de las interfaces gráficas, la línea de comandos ofrece:

  • Velocidad: Las tareas se pueden realizar más rápido con comandos que a través de interfaces gráficas.
  • Flexibilidad: Automatiza procesos y realiza operaciones complejas mediante scripts.
  • Control: Accede a funciones más profundas del sistema y soluciona problemas de forma eficaz.

Cómo acceder a la línea de comandos en Ubuntu Server

Las instalaciones de Ubuntu Server no incluyen una interfaz gráfica por defecto, por lo que todas las interacciones se realizan a través de la terminal. Estas son las formas habituales de acceder a la línea de comandos:

1. Acceso directo mediante la consola local

Después de iniciar sesión en tu servidor Ubuntu, se te presentará la interfaz de la terminal.

2. Acceso remoto mediante SSH

Usa Secure Shell (SSH) para acceder a tu servidor de forma remota:

ssh username@server_ip


Comandos esenciales de Linux para principiantes

1. Navegar por el sistema de archivos

Comprender la jerarquía del sistema de archivos de Linux es fundamental para gestionar archivos y directorios.

Ver el directorio actual: pwd

Muestra el directorio de trabajo actual:

pwd

Listar el contenido del directorio: ls

Lista los archivos y directorios de la ubicación actual:

ls

Opciones:

  • ls -l: Lista detallada con permisos, propiedad y tamaño.
  • ls -a: Incluye archivos ocultos (archivos que empiezan por .).

Cambiar de directorio: cd

Cambia a otro directorio:

cd /path/to/directory

Ejemplos:

  • cd ..: Sube un nivel.
  • cd ~: Cambia al directorio principal.

2. Gestionar archivos y directorios

Crear un directorio: mkdir

Crea un directorio nuevo:

mkdir directory_name

Ejemplo: crea una estructura de subdirectorios.

mkdir -p /home/user/documents/projects

Explicación:

  • La opción -p crea los directorios padre si no existen (p. ej., documents y projects).

Eliminar un directorio: rmdir

Elimina un directorio vacío:

rmdir directory_name

Ejemplo:

rmdir /home/user/old_directory

Copiar archivos: cp

Copia archivos o directorios:

cp source_file destination_file

Ejemplo: copia un archivo a un directorio nuevo.

cp /home/user/file.txt /home/user/backup/file.txt

Para copiar directorios enteros:

cp -r /home/user/documents /home/user/backup/documents

Mover o renombrar archivos: mv

Mueve o renombra archivos:

mv old_name new_name

Ejemplo: renombra un archivo.

mv file.txt renamed_file.txt

Mover archivos a otro directorio:

mv /home/user/file.txt /home/user/backup/

Eliminar archivos: rm

Elimina archivos o directorios:

rm file_name

Ejemplo: elimina un archivo.

rm /home/user/file.txt

Para eliminar directorios y su contenido:

rm -r /home/user/old_directory

Advertencia: Ten cuidado con rm para evitar eliminaciones accidentales.


3. Ver y editar archivos

Ver el contenido de un archivo: cat

Muestra el contenido de un archivo:

cat file_name

Ejemplo:

cat /etc/hostname

Ver el contenido de un archivo con paginación: less

Permite desplazarse por el contenido de un archivo:

less file_name

Ejemplo:

less /var/log/syslog

Crear o editar archivos: nano

Un editor de texto apto para principiantes:

nano file_name

Ejemplo: crea un archivo nuevo o edita uno existente.

nano /home/user/new_file.txt

Buscar texto en archivos: grep

Busca una cadena concreta en archivos:

grep "search_term" file_name

Ejemplo: encuentra mensajes de error en un archivo de registro.

grep "error" /var/log/syslog


4. Comandos de administración del sistema

Comprobar el uso del disco: df

Muestra el uso del espacio en disco:

df -h

Opciones:

  • -h: Formato legible para humanos.

Comprobar el uso de la memoria: free

Muestra el uso de la memoria:

free -h

Supervisar los procesos del sistema: top

Muestra los procesos en ejecución y el uso de recursos del sistema:

top

Alternativa:

  • htop: Un monitor de procesos más fácil de usar (instálalo con sudo apt install htop).

Gestionar servicios: systemctl

Controla los servicios del sistema:

sudo systemctl status service_name
sudo systemctl start service_name
sudo systemctl stop service_name
sudo systemctl restart service_name

Apagar o reiniciar: shutdown

Apaga o reinicia el servidor:

sudo shutdown now    # Immediate shutdown
sudo shutdown -r now # Immediate restart

5. Permisos y propiedad de archivos

Linux usa un modelo de permisos para controlar el acceso a archivos y directorios.

Ver los permisos de un archivo: ls -l

Muestra los permisos de los archivos en formato detallado:

ls -l

Cambiar los permisos de un archivo: chmod

Modifica los permisos de los archivos:

chmod 644 file_name

Cambiar la propiedad de un archivo: chown

Cambia la propiedad de los archivos:

sudo chown new_owner:new_group file_name


6. Buscar y encontrar archivos

Localizar archivos: locate

El comando locate no está instalado por defecto. Instálalo primero:

sudo apt update
sudo apt install mlocate

Actualiza la base de datos:

sudo updatedb

Busca archivos:

locate file_name

Encontrar archivos: find

Busca archivos según criterios:

find /path -name "file_name"


7. Comandos de red

Comprobar la conectividad de red: ping

Prueba la conectividad con un host:

ping google.com

Comprobar los puertos abiertos: ss

El comando netstat está obsoleto y no está instalado por defecto. Usa ss, una alternativa moderna:

ss -tuln

Explicación:

  • -t: Muestra las conexiones TCP.
  • -u: Muestra las conexiones UDP.
  • -l: Muestra los puertos en escucha.
  • -n: Muestra direcciones y puertos numéricos.

Probar la conectividad remota: curl

Obtiene datos de una URL:

curl http://example.com


Consejos prácticos para la administración por línea de comandos

1. Usar el autocompletado con Tab

Pulsa Tab mientras escribes un comando o un nombre de archivo para autocompletar rutas o comandos.

2. Usar los comandos del historial

Accede a comandos ejecutados anteriormente:

history

Ejecuta un comando concreto del historial:

!number

3. Redirigir la salida

Guarda la salida de un comando en un archivo:

command > output_file

4. Encadenar comandos

Ejecuta varios comandos en secuencia:

command1 && command2

Flujo de trabajo de ejemplo: configurar un servidor web

Aquí tienes una guía paso a paso para configurar un servidor web con comandos básicos. Sigue estas instrucciones para configurar tu sitio web personalizado y asegurarte de que sustituya a la página predeterminada de Apache.


1. Actualizar el sistema

Mantener el sistema actualizado es esencial para la seguridad y la estabilidad. Ejecuta el siguiente comando para actualizar todos los paquetes:

sudo apt update && sudo apt upgrade -y


2. Instalar Apache

Instala el servidor web Apache:

sudo apt install apache2 -y

Una vez instalado, comprueba que Apache se está ejecutando:

sudo systemctl status apache2

Deberías ver un mensaje de estado como: Active: active (running).


3. Crear un directorio para tu sitio web

Crea un directorio para almacenar los archivos de tu sitio web. Para este ejemplo, crearemos un directorio llamado mywebsite:

sudo mkdir -p /var/www/mywebsite


4. Establecer permisos

Establece la propiedad y los permisos correctos para que Apache pueda acceder a los archivos del sitio web:

sudo chown -R www-data:www-data /var/www/mywebsite
sudo chmod -R 755 /var/www/mywebsite

5. Crear un archivo HTML de ejemplo

Añade un sencillo archivo index.html que sirva como página de inicio de tu sitio web:

sudo tee /var/www/mywebsite/index.html > /dev/null << EOF
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome to My Website</h1>
</body>
</html>
EOF

Esto crea una página básica que dice: “Welcome to My Website”.


6. Configurar un host virtual

Para servir tu sitio web personalizado, crea un nuevo archivo de configuración de host virtual para Apache:

sudo nano /etc/apache2/sites-available/mywebsite.conf

Pega el siguiente contenido en el archivo:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/mywebsite
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Guarda y sal del archivo pulsando Ctrl+O, y luego Ctrl+X.


7. Habilitar tu sitio web

Habilita la nueva configuración de host virtual:

sudo a2ensite mywebsite.conf

Deshabilita la configuración predeterminada del sitio de Apache para asegurarte de que se sirva tu sitio web:

sudo a2dissite 000-default.conf

Recarga Apache para aplicar los cambios:

sudo systemctl reload apache2


8. Probar la conectividad

Comprueba si tu sitio web funciona ejecutando:

curl http://localhost

Deberías ver el contenido HTML de tu archivo index.html personalizado:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome to My Website</h1>
</body>
</html>

También puedes abrir un navegador y navegar a http://<your-server-ip> para ver tu sitio web.


Solución de problemas

Si sigues viendo la página predeterminada de Apache o tienes problemas:

  • Asegúrate de que tu sitio está habilitado
    Comprueba que tu configuración está activa:
ls /etc/apache2/sites-enabled/ 
  • Deberías ver mywebsite.conf. Si no es así, actívalo con:
sudo a2ensite mywebsite.conf
  • Comprueba los registros de Apache
    Busca errores en los registros:
sudo tail -f /var/log/apache2/error.log
  • Reinicia Apache
    Si el problema persiste, reinicia Apache:
sudo systemctl restart apache2

Conclusión

Dominar la línea de comandos de Linux es esencial para administrar Ubuntu Server de forma eficaz. Al aprender y practicar estos comandos, ganarás confianza para gestionar tu entorno de servidor, solucionar problemas y realizar tareas administrativas de forma eficiente.

Próximos pasos: Gestionar usuarios y permisos

Una vez que te sientas cómodo con los conceptos básicos de la administración por línea de comandos, el siguiente paso fundamental en la gestión de servidores es comprender los usuarios, los grupos y los permisos. Gestionar adecuadamente las cuentas de usuario y los controles de acceso es esencial para mantener la seguridad y garantizar que solo las personas autorizadas puedan acceder a archivos y recursos sensibles de tu servidor o modificarlos.

En el próximo artículo, “Gestionar usuarios y permisos”, cubriremos:

  • Cómo crear, modificar y eliminar cuentas de usuario.
  • Gestionar grupos para un control de acceso eficiente.
  • Comprender los permisos de archivos y directorios (lectura, escritura, ejecución).
  • Usar herramientas avanzadas como sudo para la escalada de privilegios.
  • Buenas prácticas para proteger las cuentas de usuario en Ubuntu Server.

¡Estate atento a ideas prácticas para mejorar tu seguridad y la gestión de accesos!

14 thoughts on “03.Mastering the Linux Command Line for Ubuntu Server”

Deja un comentario