Como usar a senha no shell script

1

Estou escrevendo um script para vários arquivos de 3 arquivos de log. Um dos arquivos de log é criado como superusuário e toda vez que ele é executado, ele solicita a senha. Como faço para colocar o mesmo script para que eu não precise digitar a senha toda vez?

for ...
su superuser -c "grep $file /u/spool/ftp/logs/alog>> /u/home/abc/tempo/files.txt"
if [ $? -eq 0 ]; 
   then 
       echo $file >> /u/home/abc/tempo/ftpxfer.txt;
   fi
 done
    
por lavanya jinde 02.03.2015 / 13:25

3 respostas

3

Primeiramente, vou apontar que ter uma senha de superusuário em um arquivo (especialmente um script de propriedade do usuário) é uma idéia muito ruim , pois permite que qualquer pessoa que tenha acesso a esse usuário para obter facilmente privilégios de root.

Dito isso, você poderia usar sudo no script, que fornece uma opção para ler a senha de um pipe.

pass='1234abc'
for ... 
    echo $pass | sudo -S "grep $file /u/spool/ftp/logs/alog>> /u/home/abc/tempo/files.txt"
    if [ $? -eq 0 ]; then
        echo $file >> /u/home/abc/tempo/ftpxfer.txt
    fi
done

Como alternativa, você pode ter o script inteiro executado pelo usuário root usando sudo - configure sudo (usando visudo como root / super usuário) para permitir que o script seja executado sem senha, adicionando o seguinte ao seu arquivo de configuração do sudo:

%wheel ALL=(ALL) NOPASSWD: /path/to/script

Em seguida, seu script pode ser simplificado (e não requer uma senha de texto sem formatação), portanto:

for ... 
    grep $file /u/spool/ftp/logs/alog>> /u/home/abc/tempo/files.txt
    if [ $? -eq 0 ]; then
        echo $file >> /u/home/abc/tempo/ftpxfer.txt
    fi
done
    
por 02.03.2015 / 13:55
0

Se você souber a senha do root

ssh-keygen
ssh-copy-id root@localhost
  • aceite o padrão para ssh-keygen, não insira passwd.
  • substitua root pelo usuário adequado, se necessário.

substitua su por ssh root@localhost no seu script.

    
por 02.03.2015 / 15:04
0

É tão perigoso quanto @wraeth aponta em sua resposta e sua proposta seria a melhor abordagem, mas você também pode usar expect .

Permite-lhe escrever respostas a scripts interactivos e é bastante útil para este tipo de situações, se considerar as preocupações de segurança. Além disso, se você tiver uma senha de superusuário, poderá adicionar-se ao arquivo sudoers e configurá-lo para executar seu script com privilégios e sem senha.

    
por 02.03.2015 / 15:56