Позвольте пользователю выполнять файл банки, но не копировать (чтение) его

У меня есть интересная проблема, которая я не уверен, что существует решение для.

Я должен позволить определенному пользователю выполнять программу Java (банка), но не копировать (чтение) его. Проблема - это, если я даю только execute разрешение к jar, JVM не может выполнить его, потому что это должно считать его во-первых. Но если я даю read разрешение на файле, затем пользователь сможет скопировать его где-то в другом месте.

Какие-либо идеи, как я могу достигнуть желаемого результата?

ИНФОРМАЦИЯ О ADDITONAL ПОСЛЕ ЧТЕНИЯ КОММЕНТАРИЕВ

На 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*

Поскольку Вы видите, что существует пользователь с read и execute полномочия test.jar. И SUID включен для wrapper двоичный файл.

Но я все еще получаю ошибку:

Error: Unable to access jarfile test.jar когда я работаю wrapper как другой пользователь

2
задан 10 August 2017 в 00:17

0 ответов

Другие вопросы по тегам:

Похожие вопросы: