У меня есть интересная проблема, которая я не уверен, что существует решение для.
Я должен позволить определенному пользователю выполнять программу 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
как другой пользователь