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í:
| Pos | Valor | Significado |
|---|---|---|
| 1 | - o d | Archivo (-) o carpeta (d) |
| 2-4 | rwx | Permisos del dueño |
| 5-7 | rwx | Permisos del grupo |
| 8-10 | rwx | Permisos del resto |
r = lectura (read, 4) · w = escritura (write, 2) · x = ejecución (execute, 1). Se suman.
| Valor | Permiso |
|---|---|
| 7 | rwx (4+2+1) |
| 6 | rw- (4+2) |
| 5 | r-x (4+1) |
| 4 | r-- |
| 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
touch test.shy luegols -l test.sh: verás-rw-r--r--.chmod +x test.shy repite: ahora-rwxr-xr-x.- Escribe
echo "echo hola" > test.shy ejecuta./test.sh. chmod 600 test.sh: solo tú puedes leerlo y escribirlo.