Разрешить пользователю выполнять jar-файл, но не копировать (читать) его

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

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

Любые идеи о том, как я могу достичь желаемого результата?

ADDITONAL INFO ПОСЛЕ ЧТЕНИЯ КОММЕНТАРИИ

В комментарии 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 ответов

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

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