Estoy intentando acceder a un archivo en mi MacBook Pro a través de una aplicación web que se ejecuta en Tomcat en Eclipse (localhost). Cada vez que intento acceder al archivo recibo la siguiente excepción de IO:
Exception: /private/var/appname/app_config.txt (No such file or directory)
Este archivo existe y cuando lo uso Apple+I
La ventana de información del archivo da esta ubicación:
/private/var/appname
Entonces, ¿por qué la aplicación web obtiene la excepción (No existe tal archivo o directorio)? ¿Cómo obtengo la ruta real si la ventana de información del archivo no es válida a través de la aplicación web?
EDITAR
Los permisos sobre el expediente en preguntas son:
-rw-r--r--
donde el propietario es el contexto de usuario en el que se ejecuta la aplicación web, que se determina al ingresar lo siguiente en el shell:
ps axu -w
Permisos en el directorio. appname
son como tales:
drwxr-x---
donde, nuevamente, el propietario es el contexto de usuario bajo el que se está ejecutando la aplicación web.
Y finalmente, el directorio. var
tiene permisos:
drwxr-xr-x
con root como propietario.
Además, eliminando private
de la ruta da como resultado exactamente la misma excepción, sin la private
en el camino:
Exception: /var/appname/app_config.txt (No such file or directory)
fuente
/private/var/log/system.log
, y si está utilizando Apache con Tomcat, es posible que deba configurarlo.Respuestas:
¿Con qué identidad de usuario se está ejecutando la aplicación Tomcat / Apache? Si bien puede leer el archivo con su cuenta, si el servidor de aplicaciones se ejecuta como un usuario con derechos limitados o en un entorno chroot'd, no podrá ver el archivo. Descubre la cuenta de usuario con la que se ejecuta y prueba
su
Ingrese a esa cuenta y vea si puede leer el archivo.fuente
Lo primero que comprobaría es que Tomcat o Eclipse o lo que sea que está intentando acceder al archivo con suficientes derechos para la operación. No es raro que las aplicaciones informen "archivo no encontrado" cuando lo que intentan decir es "No puedo acceder a la cosa".
Terminal abierta, hacer
y entonces
y ver quién es el propietario y qué modo reporta el archivo, y luego tomarlo desde allí.
Dado que / private / var / appname no es legible por todos, lo agregaría a los permisos y vería si eso hace una diferencia.
fuente
-la@
para obtener el ACL en su caso también. Esto es casi seguro que es un problema de permisos en el directorio o en el propio archivo.sudo chmod 777
?