Como proteger um script com senha no Linux?

2

Como você define uma senha para executar um comando ou script no Linux?

Eu preciso evitar que um script (no qual detalhes de usuário e senha sejam incluídos) seja usado / executado de usuários não autorizados. Então, existe alguma maneira de definir senha para executar um script específico.

    
por user42459 09.07.2013 / 09:10

2 respostas

5

O Sudo pode ser o caminho a seguir.

Tenha seu proprietário de script e executável por um usuário específico e não permita acesso de outros usuários, 700 permissões, por exemplo.

Em segundo lugar, edite o arquivo sudoers usando visudo e adicione uma linha como a seguir:

%your_group ALL=path_to_script/script

Todos os usuários que podem executar o script precisam ser adicionados ao seu_grupo.

Assim, quem não fizer parte do seu_grupo não poderá executar o script. A alternativa pode ser específica para você, apenas o nome de usuário.

username ALL=path_to_script/script
    
por 09.07.2013 / 09:18
1

Você precisa garantir que a senha seja legível apenas por usuários autorizados. Não armazene a senha no script, armazene-a em um arquivo separado que você leu no script. É muito mais fácil gerenciar permissões dessa maneira. Se você armazenar credenciais no script, é difícil ter certeza de onde elas terminarão: elas podem ser copiadas inadvertidamente, devem ser inseridas no controle de versão, etc.

Separar as credenciais do script tem um segundo benefício e mais importante. Ele separa “permissão para executar o script” de “permissão para acessar o recurso”, o que é bom, porque você não está realmente tentando impedir que as pessoas executem seu script, você está tentando impedir que as pessoas acessem o recurso. Portanto, defina as permissões no arquivo de senha de acordo e você será definido.

A maneira fácil de gerenciar permissões é criar um grupo e colocar os usuários com permissão para acessar o recurso nesse grupo. Vamos chamar o grupo seniors e dizer que os usuários alice e bob têm permissão para acessar o recurso. Crie um grupo chamado seniors (por exemplo, addgroup seniors ) e adicione os usuários ao grupo (por exemplo, adduser alice seniors; adduser bob seniors ). Tornar o arquivo de senha de propriedade do grupo seniors e legível apenas pelo grupo.

chgrp seniors password.txt
chmod u=rw,g=r,o= password.txt    # or chmod 640 password.txt for short

Talvez você queira que alguns usuários possam executar o script, mas não tenham acesso arbitrário ao recurso. Você não mencionou isso em sua pergunta, mas vou explicar como isso pode ser feito apenas no caso.

Suponha que os usuários charlie e dominique devam ser capazes de executar esse script específico, mas não acessar o recurso de outra forma. Crie um grupo chamado juniors e coloque esses usuários nesse grupo. (Na verdade, você não precisa criar um grupo, mas facilita o gerenciamento.) Crie uma regra sudo que permita aos usuários o grupo juniors para obter as permissões do grupo seniors , mas apenas para executar um programa específico - o script que lê o arquivo de senha. Execute visudo para adicionar esta linha ao arquivo sudoers :

%juniors ALL = (:seniors) /path/to/script ""

Os juniors podem executar o script chamando sudo -g seniors /path/to/script . O script será executado com os privilégios adicionais conferidos pelo grupo seniors . No entanto, o usuário que chamou sudo não poderá acessar o arquivo de senhas (a menos que o script tenha bugs e possa ser enganado para vazá-lo).

Note novamente que o sudo só é útil se você precisar de algumas pessoas para poder acessar o recurso sem saber a senha. Ele não fará nada por você se tudo que você deseja é restringir o acesso à senha para determinados usuários e não permitir que mais ninguém acesse o recurso.

    
por 10.07.2013 / 03:26