PermissionError se lanza al intentar realizar una operación de archivo o directorio sin los permisos requeridos. Es una subclase de OSError con errno configurado a EACCES o EPERM. Esto ocurre típicamente cuando un proceso sin privilegios intenta acceder a archivos del sistema restringidos.
Por qué ocurre
- •Escribir en un archivo propiedad de otro usuario o root sin permiso de escritura.
- •Leer un archivo con modo 000 o acceso restringido.
- •Intentar enlazarse a un puerto privilegiado (por debajo de 1024) sin derechos elevados.
- •Eliminar un archivo en un directorio donde el usuario actual no tiene permiso de escritura.
Ejemplos
Código que causa el error
with open("/etc/passwd", "w") as f:
f.write("hacked")Error en la terminal
PermissionError: [Errno 13] Permission denied: '/etc/passwd'
Cómo solucionarlo
Verifica los permisos del archivo con ls -l o Path.stat() antes de operar. Ejecuta el proceso con los privilegios apropiados si es realmente necesario. Prefiere escribir en directorios propiedad del usuario, como el directorio home o una carpeta temporal.
Código corregido
import os
from pathlib import Path
target = Path("output.txt")
try:
target.write_text("data")
except PermissionError as e:
print(f"Cannot write: {e}")Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis