当前位置: 首页 > 知识库问答 >
问题:

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

毛宏达
2023-03-14

我在编写部署在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);
                }
        }
}

我有个例外:

类java.io.FileNotFoundException消息/home/user/domains/domain.com/public_html/the-file-name.txt(Brak dost rpu)

我已经将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

我还应该满足OS中的哪些条件?

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

编辑:

我已经在/path1下创建了目录,设置为777。文件保存完好。我还在/path2/testdir下装入了目录,但是path2没有权限777和chown。也管用。我还测试了带有字符._testdir

我非常善于调查,无法理解这种行为。

共有2个答案

韩照
2023-03-14

我终于解决了这个问题。路径中的一个目录没有其他组的可执行权限,因此正如@justinksu所建议的,不可能遍历整个路径。

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

邬英武
2023-03-14

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

示例:chmod o+x/home/user

 类似资料: