【问题标题】:Java/Tomcat has not enough permission to execute 'java'Java/Tomcat 没有足够的权限来执行“java”
【发布时间】:2016-11-03 02:08:39
【问题描述】:

我在 Ubuntu 上的 Tomcat 服务器上的一个 Java-Servlet 中运行了以下代码:

ProcessBuilder pb = new ProcessBuilder( "java", "-jar", "test.jar", Integer.toString( jobId ), Integer.toString( software ), Integer.toString( entryPoint ), application );
pb.directory( new File( "/home/user/Folder" ) );
proc = pb.start();

但是在第三行我得到了这个错误:

java.io.IOException: Cannot run program "java" (in directory "/home/user/Folder"): error=13, Keine Berechtigung

它是德语,意思是它没有足够的权限来执行“java”。

有人知道怎么解决吗?

【问题讨论】:

    标签: java ubuntu tomcat servlets permissions


    【解决方案1】:

    这意味着启动tomcat服务器的用户没有权限在/home/user/Folder中启动java进程。

    检查谁在运行tomcat:

    ps aux | grep tomcat
    

    要么更改 /home/user/Folder 的所有者,使其归运行 tomcat 的用户所有,要么相应地调整文件权限

    要更改目录的所有者,请执行以下操作:

    chown -R tomcat /home/user/Folder
    

    要添加权限(以便 tomcat 可以访问文件夹),请执行以下操作:

    chmod -R o+rwx /home/user/Folder
    

    注意!您只需选择一种方法,无需同时选择两种方法。

    【讨论】:

    • 我认为是同一用户同时运行两者。如果我运行你给我的命令,我从哪个用户那里查看 tomcat 运行?
    • 有我的输出 pastebin.com/t0EEX8y0 这是否意味着它是一个名为 tomcat7 的用户? :D 我不知道这个存在。
    • 是的,那是 tomcat 用户。如果你通过包管理器安装了 tomcat,你也会得到一个 tomcat 用户。
    • 当执行 'ls -l' 我得到这个:drwxr-xrwx 5 tomcat7 raphael 4096 Jun 30 18:25 FolderName
    • 也许更多的是没有权限运行'java',而不是缺少执行文件夹中jar的权限?
    【解决方案2】:

    可能的原因:从您的另一个问题来看,您使用的是 Linux 机器,因此(除了标准的 Unix 安全性之外)还有SELinux 在起作用,这允许指定进一步的限制。很有可能,对 tomcat(甚至 java 本身)施加了限制,阻止它启动其他进程(全部或从指定列表中)。

    【讨论】:

    • 我还没有安装 selinux。至少如果我打电话给getenforce 我会收到一条消息,安装 selinux-utils。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2021-01-31
    • 1970-01-01
    • 2022-01-07
    • 2014-09-24
    相关资源
    最近更新 更多