允许用户执行 jar 文件,但不允许复制(读取)它

允许用户执行 jar 文件,但不允许复制(读取)它

我有一个有趣的问题,但我不确定是否有解决方案。

我需要允许特定用户执行 Java 程序 (jar),但不允许复制 (读取) 它。问题是,如果我只授予execute权限jar,JVM 就无法运行它,因为它首先需要读取它。但如果我授予read该文件的权限,那么用户将能够将其复制到其他地方。

有什么想法可以让我达到预期的结果吗?

阅读评论后附加信息

根据Rinzwind评论,我创建了一个 C 包装器并对其进行了编译。以下是包装器的源代码:

#include <stdio.h>
#include <unistd.h>
int main() {
   execl("/usr/bin/java",
    "/usr/bin/java",
    "-jar",
    "test.jar",
         (char*)0
    );

  /* If we get here, the exec didn't work */
  perror("Failed to execute /path/to/java");
  return 1;
}

jar以下是和的当前权限compiled wrapper

-r-x------  1 jrunner  jrunner 23365202 авг  6 17:01 test.jar*
-r-s--x--x  1 jrunner  jrunner     8656 авг  9 23:54 wrapper*

如您所见,有一个用户具有readexecute权限test.jar。并且二进制文件已启用 SUID wrapper

但我仍然收到错误:

Error: Unable to access jarfile test.jar当我wrapper以其他用户身份运行时

相关内容