03 · Permisos y sudo

En Linux no existe "Ejecutar como administrador". Existe sudo delante de un comando. Los permisos son explícitos y se leen en una línea.

Entender ls -l

Cuando ejecutas ls -l, cada línea empieza con algo así:

-rw-r--r-- 1 tu_usuario tu_usuario 1234 oct 27 12:00 archivo.txt
drwxr-xr-x 2 tu_usuario tu_usuario 4096 oct 27 12:00 carpeta/

Ese bloque inicial (-rw-r--r--) se descompone así:

PosValorSignificado
1- o dArchivo (-) o carpeta (d)
2-4rwxPermisos del dueño
5-7rwxPermisos del grupo
8-10rwxPermisos del resto

r = lectura (read, 4) · w = escritura (write, 2) · x = ejecución (execute, 1). Se suman.

ValorPermiso
7rwx (4+2+1)
6rw- (4+2)
5r-x (4+1)
4r--
0--- (sin permiso)

chmod — Cambiar permisos

Modo simbólico

chmod +x script.sh        # añade ejecución para todos
chmod u+x script.sh       # solo al dueño (u = user)
chmod g-w archivo.txt     # quita escritura al grupo (g = group)
chmod o-r archivo.txt     # quita lectura al resto (o = others)
chmod a+r archivo.txt     # añade lectura a todos (a = all)

Modo numérico

chmod 644 archivo.txt     # rw-r--r--  (típico archivo normal)
chmod 755 script.sh       # rwxr-xr-x  (ejecutables, carpetas públicas)
chmod 600 secreto.txt     # rw-------  (solo tú puedes leerlo)
chmod 777 carpeta/        # rwxrwxrwx  (¡todos pueden todo! evitar)

chmod -R para carpetas

chmod -R 755 /var/www/    # aplica a todo el contenido, recursivo

chown — Cambiar dueño

sudo chown tu_usuario archivo.txt          # cambia el dueño
sudo chown -R tu_usuario:tu_usuario carpeta/  # dueño y grupo, recursivo

sudo — Ejecutar como administrador

Cualquier comando que modifique archivos del sistema o instale software necesita sudo delante. Te pedirá tu contraseña la primera vez cada 5 minutos.

sudo pacman -Syu                 # actualizar el sistema
sudo mkdir /etc/mi-config         # crear carpeta en /etc
sudo nano /etc/systemd/system/x.service   # editar archivo del sistema
sudo te da permisos temporales. Nunca uses sudo su para quedarte como root; es peligroso y una mala práctica. Usa sudo comando por comando.
Los permisos 777 parecen cómodos pero son un riesgo de seguridad. Úsalos solo en carpetas compartidas en red y de forma consciente.

Casos típicos

Un script no se ejecuta

chmod +x script.sh
./script.sh

Apache/Nginx no puede leer mis archivos

sudo chown -R http:http /srv/http
sudo chmod -R 755 /srv/http

El disco NTFS da "permiso denegado"

Es un problema de montaje, no de chmod. Los permisos de NTFS se definen al montar (ver página 08).

🧪 Práctica sugerida

  1. touch test.sh y luego ls -l test.sh: verás -rw-r--r--.
  2. chmod +x test.sh y repite: ahora -rwxr-xr-x.
  3. Escribe echo "echo hola" > test.sh y ejecuta ./test.sh.
  4. chmod 600 test.sh: solo tú puedes leerlo y escribirlo.
Anterior← Archivos