尽管chmod 777,java.io.FileNotFoundException(权限被拒绝)

Ath*_*lan 20 java grails tomcat filenotfoundexception ioexception

在Tomcat上编写Grails应用程序时,我遇到了奇怪的问题.

创建简单的测试控制器后,我想在包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);
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

类java.io.FileNotFoundException消息/home/user/domains/domain.com/public_html/the-file-name.txt(Brakdostępu)

我已将chmod设置为777 /home/user/domains/domain.com/public_html/.而且tomcat7.tomcat7是老板.我还尝试使用访问权限777和所有权设置为tomcat7创建此文件,但我仍然得到一个例外:

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
Run Code Online (Sandbox Code Playgroud)

我应该在OS中遇到什么条件?

如果有人能澄清问题,我将非常感激.


编辑:

我创建了目录/path1,设置为777.文件存储完美.我还创建了under下的目录/path2/testdir,但是path2没有权限777和chown.它也有效.我也有睾丸testdir与人物._,也适用.

我很调查,无法理解这种行为.

Jus*_*KSU 21

确保您还具有对所有父目录的读取和执行访问权限.

例: chmod o+x /home/user

  • Java必须遍历目录才能访问该文件.如果无法访问目录,则无法查看该文件. (2认同)
  • 使用 -R 授予子文件夹权限: sudo chmod -R 777 /home/user (2认同)

Ath*_*lan 6

最后我解决了这个问题.路径中的一个目录没有其他组的可执行权限,因此@JustinKSU建议,没有可能完成整个路径.

chmod o+x /home/user 解决了这个问题.