quitar permisos permiso kali escribir error denegado como archivo acceso java tomcat grails ioexception filenotfoundexception

java - kali - quitar permisos en linux



java.io.FileNotFoundException(permiso denegado) a pesar de chmod 777 (5)

Me he enfrentado a un problema extraño al escribir la aplicación Grails desplegada en Tomcat.

Después de crear un controlador de prueba simple, quiero escribir el contenido de la prueba en el paquete com

package com.domain.controller import java.io.File; import java.io.PrintWriter; class TestController { def index() { // test try { PrintWriter writer = new PrintWriter("/home/user/domains/domain.com/public_html/the-file-name.txt"); writer.println("The first line"); writer.println("The second line"); writer.close(); } catch (IOException e) { throw new RuntimeException(e); } } }

Me sale una excepción:

Clase java.io.FileNotFoundException Mensaje /home/user/domains/domain.com/public_html/the-file-name.txt (Brak dostępu)

He establecido el chmod en 777 en /home/user/domains/domain.com/public_html/ . Y tomcat7.tomcat7 es propietario. También he intentado crear este archivo con los derechos de acceso 777 y la propiedad establecida en tomcat7, pero sigo obteniendo una excepción:

ls -al /home/user/domains/domain.com/public_html razem 16 drwxrwxrwx 3 tomcat7 tomcat7 4096 01-08 23:25 . drwxr-xr-x 8 user user 4096 12-16 17:14 .. -rwxrwxrwx 1 tomcat7 tomcat7 0 01-08 23:25 the-file-name.txt

¿Qué condiciones en el sistema operativo debería cumplir también?

Estaría muy agradecido si alguien pudiera aclarar el problema.

EDITAR :

He creado el directorio en /path1 , set 777. Los archivos se almacenan perfectamente. También he creado el directorio bajo /path2/testdir , pero path2 no tiene permiso 777 y chown. También funciona. También tengo testes el testdir con caracteres . y _ , también funciona.

Soy muy investigativo y no puedo entender el comportamiento.


Asegúrese de que haya leído y ejecute el acceso a todos los directorios principales también.

Ejemplo: chmod o+x /home/user


Finalmente he resuelto el problema. Uno de los directorios en ruta no tiene permiso ejecutable para otro grupo, por lo que, como sugirió @JustinKSU, no había posibilidad de recorrer toda la ruta.

chmod o+x /home/user solucionó el problema.


Los mismos síntomas cuando tienes selinux activado.
Puede verificar el estado con sestatus y deshabilitarlo con setenforce 0

Puede resolver su problema a corto plazo, solo asegúrese de que sea una prueba de reinicio.


Me encontré con este problema durante las compilaciones dentro de un trabajo de Jenkins. Había agregado el usuario jenkins al grupo tomcat7 , pero el trabajo de Jenkins fallaba cuando se suponía que debía copiar artefactos en el directorio de la instancia de Tomcat.

Resultó que todo lo que necesitaba para solucionar este problema era reiniciar el servicio de Jenkins.


FileNotFoundException produce FileNotFoundException :

cuando no existe un archivo con la ruta especificada. También se lanzará si el archivo existe, pero por algún motivo es inaccesible, por ejemplo, cuando se intenta abrir un archivo de solo lectura para escribir.

El archivo está ahí y tiene derechos de escritura según lo que enviaste.

En algunos casos, si otro programa abre el archivo al que intenta acceder para la operación de lectura / escritura, se producirá este error. Utilizar lsof | grep the-file-name.txt lsof | grep the-file-name.txt para ver si está abierto.