Tomcat sh脚本权限

时间:2016-11-02 15:40:23

标签: java linux bash tomcat exec

我使用Tomcat7,我试图从tomcat启动sh脚本。我的sh脚本需要创建一个新文件并写入内容。如果我启动我的脚本,如./test.sh,它的工作完美,但如果我使用tomcat启动该脚本我会在执行期间拒绝权限错误脚本执行,它没有写入权限。 这是我的java代码:

        String[] fixCmd = new String[] { path };
    Process start = Runtime.getRuntime().exec(fixCmd);

    // monitor standard error to find out what's wrong
    BufferedReader r = new BufferedReader(new InputStreamReader(start.getErrorStream()));
    String line = null;
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }

和我的shellScript:

echo test >> test.txt

我尝试使用ProcessBuilder,但它也没有用。

我尝试使用我创建的所有解决方案更改文件夹的权限,但没有任何效果。当exec Tomcat曾经以root身份启动脚本时,他确实拥有所需的所有权限。我将文件夹的所有权限授予tomcat7用户以防万一,但没有任何改变。我有一些其他java脚本在服务器上创建和编写文件,所以我已经设法改变让tomcat写东西的权利和它的工作,所以我真的不知道是什么问题的脚本。

有什么想法吗?

编辑1: ls -l ./test.sh的输出完成了:

-rwxr-xr-x 1 tomcat7 tomcat7 165 nov.   2 16:12 ./test.sh

我以root身份登录,而且我也将red tomcat视为root。

编辑2解决的问题: 一位专家向我解释说我的问题是一个安全问题,因为tomcat是一个Web服务器,它是一个安全措施,不让它拥有sh脚本的写入权限。所以我改变了问题的方法,我将在java中读取sh脚本输出并从jave写入我的文件。

1 个答案:

答案 0 :(得分:0)

访问容器文件系统上的文件很棘手,不鼓励(imo)。我想:您的问题与文件系统本身的权限无关,但与Web容器的权限(此处:tomcat)无关。

请参阅 Accessing linux local file system from java web application

How to access external folder (Web Server)?