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.