Onde armazenar código proprietário e scripts executáveis? [fechadas]

0

Eu tenho código Python que é executado usando um script bash. Eu quero que usuários não-sudo possam executá-lo sem tornar o código do Python legível. Qual é o padrão recomendado?

Duas maneiras que considerei:

  1. Coloque todo o código no HOME do usuário e torne-o não legível e executável conforme necessário
  2. Coloque todo o código em /usr/local e adicione scripts bash relevantes a sudoers
  3. Coloque todo o código em /root e adicione scripts bash relevantes à pasta PATH ou bin do usuário

Como existem várias maneiras de estruturar isso, eu adoraria ouvir o que você acha que o caminho padrão ou recomendado é.

    
por tsotsi 08.09.2018 / 20:04

2 respostas

1

Uma maneira comum de garantir que os usuários não possam ler o código-fonte de algo que estão causando a execução seria escrever um serviço que atue em nome do usuário com os privilégios necessários. Em seguida, forneça aos usuários uma maneira de se comunicar com o servidor, como um soquete ou uma porta TCP. Neste ponto, o código não está mais sendo executado em um contexto disponível para o usuário. Escrever isso não é trivial, pois você pode considerar, por exemplo, usuários tentando usar seu serviço para escalonamento de privilégios.

    
por 09.09.2018 / 00:02
0

Uma solução que funcionou para mim é a seguinte:

Adicione a seguinte linha a /etc/sudoers :

user ALL = (root) NOPASSWD: /path/to/script

Como usuário, execute o script da seguinte forma:

sudo /path/to/script

Dessa forma, o próprio script (e todos os scripts subseqüentes do Python) são executados como root, mas ao mesmo tempo nenhum deles é legível ou gravável

    
por 09.09.2018 / 01:50