Como evitar que outros usuários, incluindo root, executem um determinado programa?

-1

Em um sistema Linux como o Debian, como evitar que um aplicativo instalado seja usado por outros usuários, a menos que eles insiram uma senha? Outros tipos de tokens de autenticação também são aceitáveis.

Eu quero impedir que outros usuários, incluindo o root     

por Frostys Shad 24.11.2015 / 12:55

3 respostas

1

Sua pergunta ainda é .

  1. Se você quiser "impedir que um aplicativo instalado seja usado por outros usuários ”(além de você e root ), apenas proteja 700 (ou 500), como diz a resposta de Jarmund. Isso não vai parar root , mas você diz: "Se o usuário root [o quebrar], isso não importa." Não estou claro sobre sua posição em relação a "outros usuários". Você diz: "Eu quero impedir que outros usuários ... de usar um aplicativo que eu instalei. ”Isso significa

    • Você não quer que ninguém mais consiga executar o programa. Tudo bem se isso for imposto por uma senha (que ninguém além de você saberia).
    • Você deseja selecionar outros usuários para poder executar o programa. Você está autorizado a autorizar os usuários selecionados informando a senha.
    • Você deseja selecionar outros usuários para poder executar o programa. Você deseja especificamente autorizar os usuários selecionados dizendo-lhes uma senha.

    ?

    Se é a primeira bala, provavelmente é mais fácil apenas chmod do executável e conviver com o fato de que root será capaz para ignorar essa proteção.

  2. Se esse for o segundo marcador, verifique se seu sistema tem ACLs. Em caso afirmativo, configure uma lista de controle de acesso que permite que apenas os usuários escolhidos executem o arquivo. Claro que isso não vai parar root .

  3. Se esse for o terceiro marcador, você deseja usar uma senha (ou se negar acesso a root é realmente importante para você) - criptografia é o caminho a percorrer. Criptografe seu executável com uma senha excluir o programa não criptografado do sistema, e diga a senha para seus amigos.

    Por exemplo, se o seu programa é chamado myprog , você poderia fazer

    openssl aes-256-cbc -e -in myprog -out mycode
    

    que lhe pedirá uma senha de criptografia (duas vezes) e depois escreva uma cópia criptografada do seu programa para mycode . (Você pode deixar de fora o -e (criptografar); é o padrão.) Você poderia então escrever um script como este:

    #!/bin/sh
    clear_prog=$(mktemp)
    chmod 700 "$clear_prog"
    openssl aes-256-cbc -d -in /path/to/mycode -out "$clear_prog"
    "$clear_prog" "$@"
    rm "$clear_prog"
    

    (usando -d para descriptografar.) Ainda há um risco de que root poderia fazer uma cópia do seu programa quando alguém decifrá-lo.

por 25.11.2015 / 02:30
3

A parte complicada sobre o seu requisito é que você também deseja impedir que o root o execute. Basicamente, um usuário root pode fazer o que quiser em um sistema, afinal de contas, é suposto. Um usuário root sem essa habilidade é como um guarda de segurança ou zelador sem chaves para o prédio onde trabalham.

No entanto, impedir que outros usuários executem o executável pode ser obtido por chmod , desde que você tenha a propriedade do arquivo em questão: chmod 700 /some/executable/file . Isso dá ao proprietário do arquivo (o executável) todas as permissões (leitura / gravação / execução) e nenhuma aos outros usuários no sistema. Embora seja intuitivo pensar que apenas seria necessário remover a permissão de execução, um usuário ainda seria capaz de copiar o executável em seu próprio diretório e, em seguida, torná-lo executável novamente. Portanto, a permissão de leitura também terá que ser removida.

    
por 24.11.2015 / 22:24
1

I want to prevent other users, including root, from using an application that I have installed.

Definir o proprietário e o grupo proprietário do arquivo corretamente, assim como o chmod impedirá que usuários indesejados, além de root , executem o arquivo. Observe que, se outros usuários puderem ler o arquivo, mas não o executarem, eles ainda poderão copiá-lo e alterar o x bit em sua própria cópia. Portanto, você precisará desativar r permission com x permission se desejar impedir a execução.

Você não pode impedir a execução por root com o mecanismo acima, embora root possa chmod de qualquer arquivo e também altere o proprietário e o grupo proprietário para qualquer coisa. A única maneira de impedir absolutamente root de executar um arquivo é que ele não esteja no sistema.

Você pode se aproximar disso armazenando o executável em um volume criptografado e desbloqueando o volume imediatamente antes de chamar o executável e fechar o volume imediatamente a seguir. No entanto, um processo root pode ler a imagem em execução de qualquer outro processo via /proc , portanto é teoricamente possível que outro processo root copie o executável do que está na memória. Não tenho certeza se é possível alterar esse comportamento do Linux com uma opção de compilação do kernel, se for, então isso pode ser algo a considerar.

Se você tiver pessoas não confiáveis fazendo logon como root , ou processos não confiáveis sendo executados como root , você realmente terá que resolver esses problemas. Você pode olhar para a virtualização e isolar a seção não confiável do seu sistema em sua própria VM.

    
por 25.11.2015 / 02:57