Permitir que o usuário execute o arquivo jar, mas não copie (leia)

2

Eu tenho um problema interessante que não tenho certeza se existe uma solução para isso.

Eu preciso permitir que um usuário específico execute um programa Java (jar), mas não copie (leia). O problema é que, se eu der apenas a permissão execute para o jar , a JVM não poderá executá-lo, porque ele precisa lê-lo em primeiro lugar. Mas se eu der a permissão read no arquivo, o usuário poderá copiá-lo em outro lugar.

Alguma idéia de como eu posso alcançar o resultado desejado?

INFORMAÇÕES ADICIONAIS APÓS REITORIA

Por Rinzwind comment, criei um wrapper C e o compilei. Aqui está a fonte do wrapper:

#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;
}

Aqui estão as permissões atuais do jar e 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*

Como você vê, há um usuário com read e execute permissões de test.jar . E o SUID está ativado para o binário wrapper .

Mas ainda recebo o erro:

Error: Unable to access jarfile test.jar quando executo o wrapper como outro usuário

    
por CuriousGuy 09.08.2017 / 19:43

0 respostas