É possível passar senhas em um script de shell?

7

Muito tempo eu estou procurando por isso, eu gostaria de saber é possível passar senhas em um script de shell? Muitas das respostas retornaram sem resposta. Recentemente eu li um artigo afirmando que como passar as senhas em um script de shell. Eu tentei isso, mas parece que não funciona. Este é o link . Alguém pode fazer checkout e reverter? Também pls diz-me existe uma maneira de passar as senhas em um script de shell? Se nenhum pls me diz como o linux obtém a entrada para a senha?

    
por karthick87 03.06.2011 / 21:15

5 respostas

9

Ao "digitar senhas", você provavelmente insere dados sem estar visível para o usuário.

(sugerido por geirha) Ao usar o bash, você pode usar a opção -s para evitar que caracteres digitados sejam exibidos:

read -p "Password please: " -s pass

Como alternativa, altere o comportamento do terminal para ocultar os caracteres digitados com stty -echo (desativar echo ). Depois de ler a senha com o shell integrado read em uma variável (no exemplo abaixo, $pass ), ative-a novamente com stty echo . Como a nova linha de Enter está oculta, você deve imprimir uma nova linha para obter uma saída futura em uma nova linha.

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

read e printf são internos do shell. stty é fornecido pelo pacote coreutils , que é instalado por padrão. Isso significa que esse trecho é muito portável.

Observação: a opção -p não é padrão, mas de bash . Se você precisar exibir um prompt em outros shells, use:

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

Referências:

  • Página de manual de stty
  • Página de manual de bash
por Lekensteyn 03.06.2011 / 21:29
1

Para qual programa você deseja passar uma senha?

O script no link funciona para mim. Note que não é um script de shell, mas um script de espera (precisa do pacote expect a ser instalado). Usar o expect é uma maneira comum de automatizar programas interativos baseados em texto.

% não-interativos ssh logins geralmente são feitos usando a autenticação baseada em chave com uma frase secreta vazia.

Alguns outros programas (como sudo ) têm opções para ler uma senha do stdin.

Fornecer uma senha como uma opção de linha de comando é geralmente um problema de segurança, pois na maioria dos sistemas, qualquer usuário pode ver qualquer outro processo, incluindo argumentos de linha de comando usando ferramentas simples como ps .

    
por Florian Diesch 03.06.2011 / 21:40
1

Um script nunca deve manipular senhas. Se o aplicativo precisar da senha, peça por ele mesmo ou, se isso não for possível, encontre um meio melhor de autenticação com o aplicativo. Por favor, leia o link

    
por geirha 05.06.2011 / 14:11
0

Há uma maneira de armazenar senhas em um script bash, mas você precisa criptografar o script para que ninguém possa realmente lê-lo ou executar qualquer tipo de depurador nele para ver exatamente o que está fazendo. Para criptografar um script bash / shell e fazer com que ele seja realmente executável, tente copiá-lo e colá-lo aqui

Na página acima, tudo o que você precisa fazer é enviar seu script (você pode enviar um exemplo de script primeiro para sua tranquilidade). Um arquivo zip será gerado para você. Clique com o botão direito do mouse no link de download e copie o URL fornecido. Em seguida, vá para a sua caixa UNIX e execute os seguintes passos.

Instalação:

   wget link-to-the-zip-file
   unzip the-newly-downloaded-zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

O que o comando de instalação acima fará por você é:

  1. Ele instalará o script criptografado no diretório /var/tmp/KINGLAZY/SHIELDX-(your-script-name) .

  2. Ele colocará um link para esse script criptografado no diretório que você especificar em substituição a /home/(your-username) - assim, ele permite que você acesse facilmente o script sem precisar digitar o caminho absoluto.

  3. Garante que NINGUÉM pode modificar o script - Qualquer tentativa de modificar o script criptografado o tornará inoperante ... até que essas tentativas sejam interrompidas ou removidas.

  4. Garante que absolutamente ninguém pode fazer cópias. Ninguém pode copiar seu script para um local isolado e tentar mexer com ele para ver como ele funciona. Todas as cópias do script devem ser links para o local original que você especificou durante a instalação.

NOTA:

Eu não acredito que isso funcione para scripts interativos que solicite uma resposta ao usuário. Os valores devem ser codificados no script. A criptografia garante que ninguém possa realmente ver esses valores, então você não precisa se preocupar com isso.

    
por SimplifiedWorkings 06.05.2016 / 17:00
-1

você pode simplesmente fazer algo assim.

# echo -e "password_here\npassword_here" | su user

source

    
por fromnaboo 10.09.2012 / 18:24

Tags