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.