Revisar permisos de Linux: diagnosticar Permission denied sin chmod 777

Permission denied no significa automáticamente que haya que permitir el acceso a todos. Comprueba primero el usuario, el archivo y la ruta. Esta guía trata los permisos Unix tradicionales en GNU/Linux; otros controles pueden actuar de forma independiente.

Paso a paso

  1. Anota la ruta completa y la operación: leer, escribir, ejecutar o crear un archivo dentro de un directorio. Sustituye /path/file por la ruta real en los ejemplos.
  2. Consulta id para identificar usuario y grupos de la sesión actual. En un servicio importa la cuenta que lo ejecuta, no tu sesión interactiva. Identifícala en su configuración.
  3. Revisa ls -ld /path/file y ls -ld /path. La salida muestra tipo, modo, propietario y grupo. Revisa también los demás directorios superiores. Un enlace simbólico no es el archivo de destino; examina el destino por separado.
  4. Determina la clase aplicable: propietario; si no, grupo coincidente; si no, otros. En directorios, x permite atravesarlos y r listar; crear o eliminar entradas normalmente exige w y x sobre el directorio. El sticky bit y otras reglas pueden añadir restricciones.
  5. Si los permisos tradicionales son adecuados, investiga ACL, SELinux/AppArmor, montaje de solo lectura o espacio de nombres de un contenedor. Un signo más en el modo puede indicar métodos de acceso adicionales. No desactives globalmente las protecciones.
  6. Solo tras demostrar qué permiso falta: registra el modo anterior y cambia un único archivo. chmod u+r /path/file añade únicamente lectura para el propietario. Solo ayuda si falta precisamente ese acceso; evita cambios recursivos y 777 generalizado.

Comprobar el resultado

Repite la operación original con la misma cuenta afectada y comprueba otra vez el modo. El éxito como root no demuestra acceso para el usuario del servicio. Si persiste el error, investiga el siguiente indicio demostrado en vez de ampliar permisos.

Revertir y limitaciones

Los comandos de diagnóstico son de lectura. Restaura el estado registrado tras un cambio; considera por separado ACL y bits especiales. chmod 644 no es una reversión universal, especialmente para directorios o ejecutables.

Fuente