Permission denied en Linux: 10 casos, incluido /dev/null

Entorno de pruebaFamilia RHELAlmaLinux 9.8Cuenta rootDebian 12 cuenta normalVerificado el 2026-11-05
Cómo encontrar la causa de Permission denied

Permission denied es un error de Linux que aparece cuando tu cuenta actual no tiene permiso para usar ese archivo, esa carpeta o ese comando. Elige tu caso por el nombre del comando y la ruta al principio de la línea de error, comprueba los permisos y el propietario con ls -l y vuelve a ejecutarlo con los permisos o la cuenta adecuados para resolverlo.

La salida de abajo se obtuvo con la cuenta root de un servidor AlmaLinux 9.8 y con una cuenta normal de un servidor Debian 12; los nombres de cuenta y de host y la hora de la salida de /dev/null son valores de ejemplo.

1️⃣ Cómo encontrar la causa de Permission denied

La línea de error termina con la forma [comando: destino: Permission denied], y el nombre del comando y la ruta que van delante indican dónde se bloqueó. En el diagrama de abajo, elige el mensaje de error que se parezca al de tu pantalla para ver el comando que debes revisar primero y la parte de este artículo que debes leer.

🧭 Elige tu caso por el mensaje de error
Diagrama explicativo
🧭 Mensaje de error
Mensaje de errorcat: secret.txt: Permission deniedls: cannot access 'web/index.html': Permission denied./deploy.sh: Permission deniedls: cannot open directory '/proc/1/fd': Permission deniedbash: /root/test.txt: Permission denieduser@server1: Permission denied (publickey)(13)Permission denied-bash: /dev/null: Permission denied
➜
Revisa primerols -l secret.txtls -ld webls -l deploy.shidsudo sh -cPermisos de la carpeta personal y los archivosgetenforce · findmntls -l /dev/null
➜
Dónde leer en este artículo🔲 Permisos de lectura y escritura de archivos🔲 Permiso para atravesar carpetas🔲 Permiso de ejecución🔲 Lectura de información reservada a root🔲 Cuando > falla aunque uses sudo🔲 Acceso SSH rechazado3️⃣ Errores Permission denied poco comunes🔲 Cuando /dev/null se ha convertido en un archivo normal
Si se rechaza un comando que lee o modifica un archivo, revisa primero los permisos r y w de ese archivo y su propietario.
Si en el error aparece el nombre de una carpeta intermedia de la ruta, comprueba si esa carpeta tiene permiso x.
Si se rechaza la ejecución directa de un script, comprueba si el archivo tiene permiso x.
Si al leer información del sistema con una cuenta normal se bloquea, comprueba la cuenta actual y vuelve a ejecutarlo como root.
Si una redirección > se bloquea aunque uses sudo, ejecuta también la redirección como root.
Si delante del error aparecen la cuenta y la dirección del servidor, el acceso se rechazó en la autenticación.
Si se rechaza aunque los permisos sean correctos o lo hayas ejecutado como root, revisa SELinux, noexec y los bits de ejecución.
Si esta línea se repite nada más iniciar sesión, comprueba si /dev/null se ha convertido en un archivo normal.

2️⃣ Errores Permission denied frecuentes

🔲 Permisos de lectura y escritura de archivos

Para leer un archivo, la cuenta necesita permiso de lectura (r), y para modificarlo o crear uno nuevo, permiso de escritura (w). secret.txt, con permisos 600, solo puede leerlo y escribirlo su propietario, root.

ls -l secret.txt
-rw------- 1 root root 16 Oct 29 00:29 secret.txt
runuser -u daemon -- cat secret.txt
cat: secret.txt: Permission denied

Al leer el mismo archivo con otra cuenta, daemon, se rechazó al instante. Crear un archivo dentro de una carpeta sin permiso de escritura da el mismo error: en el servidor Debian 12, con una cuenta normal, touch se bloqueó en una carpeta lock con permisos 000.

touch ~/touchtest/lock/x.txt
touch: cannot touch '/home/user/touchtest/lock/x.txt': Permission denied

En la primera columna de ls -l, mira si hay r y w para el propietario, el grupo y las demás cuentas, en ese orden, y después añade permisos solo a la cuenta que los necesite con chmod o cambia el propietario con chown.

🔲 Permiso para atravesar carpetas

Aunque los permisos del archivo sean correctos, no llegarás a él si una carpeta intermedia de la ruta no tiene permiso x. En una carpeta, x es el permiso para atravesarla y entrar, y r es el permiso para leer la lista de nombres que contiene.

web/ ── drw-r--r-- · r sí · x no → bloqueado aquí
css/ ── nombre visible, permisos · tamaño ?
style.css ── inaccesible
index.html ── nombre visible, permisos · tamaño ?
ls -ld web web/css
drw-r--r-- 3 root root 35 Oct 29 00:29 web
drw-r--r-- 2 root root 23 Oct 29 00:29 web/css
runuser -u daemon -- ls -l web
ls: cannot access 'web/css': Permission denied
ls: cannot access 'web/index.html': Permission denied
total 0
d????????? ? ? ? ?            ? css
-????????? ? ? ? ?            ? index.html

La carpeta web solo tiene r, así que daemon pudo leer los nombres que contiene, css e index.html, pero sin x los permisos y los tamaños quedaron como signos de interrogación. Al revés, la carpeta site, que tiene x pero no r, bloqueó el listado, mientras que un archivo cuyo nombre ya se conocía se pudo leer.

ls -ld site
drwx--x--x 2 root root 24 Oct 29 00:29 site
runuser -u daemon -- ls site
ls: cannot open directory 'site': Permission denied
runuser -u daemon -- cat site/index.html
<h1>index</h1>

Si la ruta es larga, usa ls -ld para comprobar carpeta por carpeta desde arriba si tienen x, y añade a la carpeta bloqueada solo la x que la cuenta necesita para atravesarla.

🔲 Permiso de ejecución

Para ejecutar un script como ./nombre de archivo, el archivo necesita permiso x. deploy.sh, con permisos 644, se rechazó.

ls -l deploy.sh
-rw-r--r-- 1 root root 8 Oct 29 00:29 deploy.sh
./deploy.sh
bash: line 1: ./deploy.sh: Permission denied

Tras añadir x al propietario con chmod u+x, la primera columna cambió a [-rwxr--r--].

chmod u+x deploy.sh
ls -l deploy.sh
-rwxr--r-- 1 root root 8 Oct 29 00:29 deploy.sh

Si la ejecución se rechaza aunque haya permiso x, comprueba si el sistema de archivos donde está el archivo se montó con noexec.

🔲 Lectura de información reservada a root

Una cuenta normal no puede leer la información que el sistema reserva a root, como los procesos que inició root o la información de contraseñas de otras cuentas. En el servidor Debian 12, al abrir con una cuenta normal la carpeta fd del proceso 1 apareció un error de permisos.

ls /proc/1/fd
ls: cannot open directory '/proc/1/fd': Permission denied
chage -l daemon
chage: Permission denied.

La información de caducidad de la contraseña de otra cuenta se bloqueó por la misma razón; /etc/shadow, que la contiene, es un archivo que los usuarios normales no pueden leer. Con errores así no amplíes los permisos: vuelve a ejecutar el comando con sudo o como root.

🔲 Cuando > falla aunque uses sudo

sudo ejecuta como root solo el comando escrito detrás, mientras que abrir un archivo para la redirección (>) lo hace el shell de la cuenta actual antes de que se ejecute el comando. Por eso, si rediriges la salida de sudo echo a un archivo que solo root puede escribir, la línea de error empieza con el nombre del shell, con la forma [bash: ruta del archivo: Permission denied].

sudo echo x > /root/test.txt

Para hacer también la redirección como root, envuelve toda la línea en sh -c para que el propio shell se ejecute con sudo; el manual oficial de sudo también da un ejemplo de ejecución dentro de sh -c para que funcione la redirección.

sudo sh -c 'echo x > /root/test.txt'

tee recibe la entrada estándar y la escribe directamente en los archivos que le indicas, así que si ejecutas tee con sudo, el archivo lo abre tee con permisos de root. tee también muestra en pantalla una vez más lo que recibe.

echo x | sudo tee /root/test.txt

🔲 Acceso SSH rechazado

Si delante de Permission denied aparece [cuenta@dirección del servidor:] y entre paréntesis hay un método de autenticación como publickey, el acceso se rechazó en la fase de autenticación, y lo que hay que revisar no son los permisos de archivos. En el servidor, sshd tiene StrictModes con su valor predeterminado yes, así que antes de aceptar el inicio de sesión revisa los permisos y el propietario de la carpeta personal y los archivos de esa cuenta. Si cualquiera de la carpeta personal, la carpeta ~/.ssh y ~/.ssh/authorized_keys puede escribirla otra cuenta, sshd no usa ese archivo de claves, así que comprueba con ls -ld que ninguno de los tres da permiso w a otras cuentas.

⌨️ Simulador de Permission denied

El simulador de abajo empieza con la cuenta root, y con runuser puedes pasar a otra cuenta, daemon, y ver tú mismo la salida cuando se bloquean la lectura de archivos, el paso por carpetas y el permiso de ejecución.

Simulador de Permission deniedcoreutils 8.32
[root@server1 work]#
Funciona solo en tu navegador. Empieza con la cuenta root; si pones cat o ls detrás de runuser -u daemon -- verás la salida ejecutada con otra cuenta, daemon.

3️⃣ Errores Permission denied poco comunes

Si se rechaza aunque los permisos sean correctos, lo bloqueó algo fuera de los bits de permiso, como una política de SELinux o un montaje noexec. Si la ejecución se rechaza incluso como root, comprueba si el archivo no tiene ningún bit x.

En un servidor con SELinux activado aparece Permission denied cuando una política de SELinux lo bloquea aunque los bits de permiso sean correctos, así que en ese caso revisa primero los registros de denegación de SELinux. En los servidores donde funciona el demonio audit, las denegaciones quedan en /var/log/audit/audit.log como [avc: denied], junto con la acción bloqueada, el nombre del comando (comm) y el nombre del destino (name).

Comprueba con getenforce si SELinux está activado y ejecuta ausearch como root para ver las denegaciones de hoy.

getenforce
ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today

Con el demonio rsync, el [Permission denied (13)] al recibir archivos también se debió a que SELinux bloqueaba el acceso a la ruta del módulo.

En un sistema de archivos montado con noexec no se pueden ejecutar archivos directamente, así que aunque ls -l muestre x, se rechazan con [bash: ruta del script: Permission denied]. Si pasas la carpeta a findmnt -T, verás dónde está montada y con qué opciones; si entre las opciones está noexec, es este caso.

findmnt -T /tmp -o TARGET,OPTIONS

root se salta la mayoría de las comprobaciones de permisos, pero la ejecución solo se permite cuando al menos uno de propietario, grupo o demás cuentas tiene x. Por eso un script sin ninguna x se rechaza aunque root lo ejecute con ./.

Al ejecutar con ./ como root deploy.sh, cuya primera columna era [-rw-r--r-- 1 root root], apareció [bash: line 1: ./deploy.sh: Permission denied].

🔲 Cuando /dev/null se ha convertido en un archivo normal

Si nada más entrar por SSH con una cuenta normal aparecen seguidas las líneas de abajo antes del prompt del shell, comprueba primero si /dev/null, el dispositivo de caracteres que todas las cuentas usan para descartar la salida, se ha convertido en un archivo normal propiedad de root. El número de líneas depende de cada servidor según cuántos scripts profile se leen al iniciar sesión, y en el mismo servidor el error no apareció tras cambiar a root.

-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
...
ls -l /dev/null
-rw-r--r-- 1 root root 55 Jan 10 09:00 /dev/null
stat -c %F /dev/null
regular file

La primera columna era [-rw-r--r--] y en el tamaño ponía 55: el texto de error que otros comandos habían descartado se había acumulado en el archivo. Si una línea de comandos de limpieza que contiene la forma de abajo se ejecuta como root, rm borra el archivo de dispositivo y la redirección 2>/dev/null del siguiente comando crea con el mismo nombre un archivo normal nuevo propiedad de root.

rm -f /dev/null 2>/dev/null

Ejecuta la línea de abajo como root. Si creas el dispositivo nuevo con un nombre al lado y luego lo sobrescribes con mv, no hay ningún momento en que falte el nombre, así que no queda hueco para que otra redirección vuelva a crear un archivo normal entre el borrado y la creación.

mknod -m 666 /dev/null.new c 1 3 && mv -f /dev/null.new /dev/null && ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Jan 10 09:05 /dev/null
stat -c %F /dev/null
character special file

El [c 1 3] de mknod es el número de /dev/null en la lista de números de dispositivo del kernel. Tras la recuperación, echo x > /dev/null con una cuenta normal también terminó sin errores. Reiniciar también puede devolverlo a su estado, pero la línea de arriba, que no detiene el servidor, es más rápida.

ComprobarAntes de la correcciónDespués del arreglo
Primera columna de ls -l-rw-r--r--crw-rw-rw-
Tamaño en ls -l551, 3
stat -c %Fregular filecharacter special file
Escritura con una cuenta normalPermission deniedSin error

Lleva la salida que quieras descartar solo hasta >/dev/null o 2>/dev/null y, salvo para recuperarlo, nunca pongas /dev/null como destino de rm o mv.

🔢 FAQ & contenido recomendado

Al intentar escribir en un sistema de archivos montado como solo lectura aparece [Read-only file system], que es un error distinto (EROFS) de Permission denied. En ese caso, antes que los permisos, revisa con qué opciones está montado ese sistema de archivos.

Si abres lectura, escritura y ejecución a todas las cuentas, ese Permission denied desaparece, pero otras cuentas también podrán modificar el archivo. Añadir permisos solo a la cuenta que los necesita o cambiar el propietario limita más el alcance.

Ampliar solo los permisos hace desaparecer Permission denied, pero /dev/null sigue siendo un archivo normal, así que la salida descartada sigue acumulándose en él. Solo está recuperado como dispositivo cuando stat vuelve a mostrar character special file.

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Demuestra que eres humano: 1   +   4   =