Línea de Comandos Parte 1

8.2 - Estructura del Sistema Linux, permisos y usuarios

¿Cómo está organizado Linux?

Linux organiza todos sus archivos y directorios en una estructura jerárquica única, comenzando desde el directorio raíz (/). Esta organización es diferente a Windows y es fundamental entenderla para trabajar eficientemente.

Características clave:

  • Todos los archivos y dispositivos están bajo el directorio raíz
  • No existen "unidades" como C: o D:
  • Las carpetas tienen propósitos específicos bien definidos
  • Es case-sensitive (diferencia mayúsculas y minúsculas)
Jerárquico Organizado Seguro
Estructura de directorios Linux

Directorios principales del sistema

Estos son los directorios más importantes que encontrarás en cualquier distribución Linux:

/ - El directorio raíz

usuario@mint:~$ ls /
bin dev home lib32 media opt root sbin sys usr
boot etc lib lib64 mnt proc run srv tmp var

Función: Contiene todos los demás directorios y archivos del sistema.
Importante: No debe confundirse con el directorio home del superusuario (/root).
Contenido típico: Subdirectorios del sistema, ningún archivo directamente en /.

/home - Directorios de usuarios

usuario@mint:~$ ls /home
usuario usuario2 usuario3

usuario@mint:~$ echo ~
# El símbolo ~ es un atajo para /home/usuario
/home/usuario

Función: Contiene los directorios personales de cada usuario.
Características:
- Cada usuario tiene su propio subdirectorio (ej: /home/usuario)
- Los usuarios tienen control total sobre sus propios directorios
- Aquí se guardan documentos, descargas, configuraciones personales

/etc - Configuraciones del sistema

usuario@mint:~$ ls /etc
# (Mostrará muchos archivos de configuración)
apt fstab hosts network passwd
cron.d group init.d nginx shadow
environment hostname motd pam.d ssh

Función: Contiene archivos de configuración del sistema y aplicaciones.
Ejemplos importantes:
- /etc/passwd: Información de cuentas de usuario
- /etc/fstab: Configuración de particiones montadas
- /etc/hosts: Asignación estática de nombres de host
Precaución: Modificar estos archivos requiere privilegios de root.

/bin, /usr/bin - Comandos ejecutables

usuario@mint:~$ ls /bin
bash cp grep less mv rm tar
cat date gzip ln ping sed unzip

# /usr/bin contiene más comandos instalados
ls /usr/bin
git python3 nano apt docker node

Función: Contienen los programas ejecutables (comandos).
Diferencias:
- /bin: Comandos esenciales del sistema (necesarios para arrancar)
- /usr/bin: Comandos de usuario (no esenciales para el arranque)
- /usr/local/bin: Programas instalados manualmente por el administrador

/var - Archivos variables

usuario@mint:~$ ls /var
cache lib lock log mail opt run spool tmp

# Ejemplo: ver logs del sistema
cat /var/log/syslog | tail -n 5

Función: Contiene datos que cambian frecuentemente.
Subdirectorios importantes:
- /var/log: Archivos de registro (logs) del sistema
- /var/www: Sitios web alojados (en algunas distribuciones)
- /var/spool: Datos en cola (ej: impresión, correo)
- /var/tmp: Archivos temporales que se conservan entre reinicios

/dev - Dispositivos del sistema

usuario@mint:~$ ls /dev
sda sda1 sda2 tty tty1 tty2 ttyS0 urandom zero

# Ejemplo: información del disco
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 49.5G 0 part /

Función: Contiene archivos especiales que representan dispositivos hardware.
Características:
- No son archivos reales, son interfaces para dispositivos
- /dev/sd*: Discos duros y particiones
- /dev/tty*: Terminales virtuales
- /dev/null: Dispositivo nulo (descarta todo lo que se escribe)
- /dev/random: Generador de números aleatorios

Directorio Propósito ¿Pueden modificar los usuarios?
/ Directorio raíz del sistema Solo root
/home Directorios personales de usuarios Cada usuario en su directorio
/etc Archivos de configuración Solo root
/bin, /usr/bin Comandos ejecutables Solo root (instalación)
/var Datos variables (logs, etc.) Depende del subdirectorio
/tmp Archivos temporales Todos los usuarios

Usuarios y permisos en Linux

Linux es un sistema multiusuario con un sofisticado sistema de permisos que controla quién puede hacer qué en el sistema.

Superusuario (root)

  • Tiene control total sobre el sistema
  • UID (User ID) = 0
  • Puede modificar cualquier archivo o configuración
  • Peligroso si se usa incorrectamente
  • Directorio home: /root
root@mint:~# whoami
root

root@mint:~# echo $HOME
/root

Usuarios normales

  • Tienen permisos limitados
  • UID normalmente ≥ 1000
  • Solo pueden modificar sus propios archivos
  • Necesitan sudo para tareas administrativas
  • Directorio home: /home/usuario
usuario@mint:~$ whoami
usuario

usuario@mint:~$ echo $HOME
/home/usuario

su vs sudo - Trabajar como root

su - Switch User
  • Cambia completamente al usuario root
  • Requiere la contraseña de root
  • Se mantiene como root hasta usar exit
  • Menos seguro que sudo
usuario@mint:~$ su
Contraseña: # (ingresar contraseña de root)
root@mint:/home/usuario# exit
usuario@mint:~$
sudo - SuperUser DO
  • Ejecuta un comando específico como root
  • Requiere la contraseña del usuario actual
  • Vuelve al usuario normal después
  • Más seguro y recomendado
usuario@mint:~$ sudo apt update
[sudo] contraseña para usuario: # (ingresar tu contraseña)
# (el comando se ejecuta como root)
usuario@mint:~$ # Vuelves automáticamente a usuario normal

Permisos básicos de archivos

Cada archivo y directorio en Linux tiene permisos que controlan quién puede leer (r), escribir (w) o ejecutar (x) el archivo.

usuario@mint:~$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2354 ene 15 10:30 /etc/passwd

# Explicación:
# -rw-r--r-- = Permisos (dueño: rw-, grupo: r--, otros: r--)
# 1 = Número de enlaces
# root = Usuario dueño
# root = Grupo dueño
# 2354 = Tamaño en bytes
# ene 15 10:30 = Fecha de modificación
# /etc/passwd = Nombre del archivo
Tipos de permisos:
Dueño (Owner)
  • r - Leer
  • w - Escribir
  • x - Ejecutar (o entrar al directorio)
Grupo (Group)
  • r - Leer
  • w - Escribir
  • x - Ejecutar
Otros (Others)
  • r - Leer
  • w - Escribir
  • x - Ejecutar
Cambiar permisos con chmod:
usuario@mint:~$ chmod u+x script.sh
# Agrega permiso de ejecución al dueño

usuario@mint:~$ chmod go-w documento.txt
# Quita permiso de escritura a grupo y otros

usuario@mint:~$ chmod 755 programa
# Dueño: rwx (7), Grupo: r-x (5), Otros: r-x (5)

Práctica guiada

Ejercicios para explorar la estructura del sistema:

  1. Navega al directorio raíz (cd /) y lista su contenido
  2. Explora /etc y busca archivos de configuración conocidos (passwd, hosts)
  3. Verifica qué comandos hay en /bin y /usr/bin
  4. Revisa los logs del sistema en /var/log
  5. Compara tu directorio home (~) con /root (necesitarás sudo)
  6. Prueba los comandos whoami, id y groups
  7. Examina los permisos de varios archivos con ls -l
Precaución: Ten cuidado al usar sudo o su. No ejecutes comandos como root a menos que sepas exactamente qué hacen.

¡Ahora entiendes mejor el sistema Linux!

Conocer la estructura de directorios y el sistema de usuarios/permisos es fundamental para administrar eficientemente tu sistema.

En la siguiente parte aprenderemos a crear, mover y eliminar archivos y directorios, así como a buscar archivos en el sistema.

Estructura Linux Carpetas principales Usuarios root Permisos básicos