Esconder informações sensíveis em arquivos do usuário, mas não de scripts shell no linux

1

Considere um cenário em que um usuário receberá uma ferramenta e o único usuário da operação deverá ter permissão para executar o script principal. Agora a ferramenta usa alguns arquivos para armazenar informações confidenciais. O que eu quero é que o script seja capaz de acessar os dados no arquivo, mas o usuário não deve. O único acesso que ele deve ter é executar o script.

Para um caso simples vamos considerar que a ferramenta contém 2 arquivos main.sh como o usuário do script pode apenas executar apenas não lê-lo e info_file que contém alguma informação sensível somente que deve ser usado main.sh que não seja o usuário. / p>

Esta ferramenta pode ser passada para diferentes usuários em diferentes máquinas. Quais são as diferentes maneiras de lidar com esses tipos de cenários no linux.

    
por Ankit Vallecha 17.08.2017 / 15:18

3 respostas

4

Uma maneira de usar a SUID.

  1. Conceda permissão de execução apenas para grupo e outros no script de shell e no arquivo de informações.
  2. Escreva um programa C para invocar o script de shell.
  3. Defina o bit SUID no executável C. (arquivo chmod u + s)

    O usuário final estará invocando o executável C.

por 17.08.2017 / 15:26
2

Uma opção simples é criptografar / descriptografar um arquivo secundário. As maneiras de fazer isso são exploradas aqui - link

Observe que, ao ler o script, pode ser fácil recuperar a chave e aprender o método de criptografia usado, a menos que o próprio script seja realmente um código compilado, mesmo que não seja invencível, pois pode ser descompilado. Se o código da linguagem for compilado, a maioria dos idiomas terá uma maneira de invocar scripts de criptografia / descriptografia e você poderá armazenar apenas a versão criptografada do armazenamento.

    
por 17.08.2017 / 15:35
0

Uma forma, possivelmente a única maneira de proteger as informações confidenciais é NÃO permitir que os usuários tenham ANY acesso direto a ela, seja em suas próprias máquinas ou em um servidor central.

Por exemplo:

  • escreva um script invólucro somente de execução (ou seja, sem acesso de leitura) que forneça a ÚNICA maneira de acessar as informações confidenciais, quando executado com sudo . Isso não precisa ser executado como root, um usuário não root dedicado é adequado.
  • Não forneça cópias do script aos usuários para que eles sejam executados em suas próprias máquinas. Em vez disso, exija que eles o executem em seu servidor (por exemplo, via ssh servername sudo myscript.sh ), porque esse é o único local em que você tem alguma chance de manter o controle de acesso.
por 18.08.2017 / 07:06