su usando aqui o documento

1

arquivo: test.sh

who
su superuser <<BELUGA
mysuperpassword
BELUGA
who

$ ./test.sh

apenas espera por entrada. O que estou fazendo de errado? Existe uma maneira de automatizar isso?

    
por andersonbd1 24.03.2010 / 18:16

3 respostas

3

Você deseja usar o comando "esperar" para passar seu nome de usuário e senha.

Note, entretanto, que o que você quer fazer lá cheira a uma má abordagem. Talvez possamos melhorar você se você elaborar um pouco mais sobre o seu problema original que você quer resolver.

    
por 24.03.2010 / 18:48
4

Eu acho que seria muito melhor instalar / usar o sudo an com uma configuração que permita ao NOPASSWD a ação específica que você está tentando automatizar.

Será muito mais seguro permitir um comando específico via sudo do que armazenar sua senha de root em um arquivo de texto em algum lugar.

    
por 24.03.2010 / 18:49
2

A execução de um script como usuário e a atualização das permissões para o root provavelmente é uma má ideia. Uma solução melhor seria executar o script como root e fazer o downgrade de suas permissões conforme necessário:

#!/bin/sh
UN=user
whoami
sudo -u $UN whoami

Quando executado como root (assumindo que user é um usuário válido), a saída deve ser esta:

root
user

No entanto, se você realmente quiser ter um script executado como usuário e conseguir executar comandos como root, existem duas opções que eu conheço.

  1. Use o sudo com a senha armazenada:

    #!/bin/sh
    whoami
    sudo -S -p "" whoami <<EOF
    mysuperpassword
    EOF
    

    Qual será a saída (quando executado como 'usuário'):

    user
    root
    
  2. Use o sudo sem senha.
    Adicione uma lista dos comandos que você deseja executar no arquivo /etc/sudoers executando visudo como root. Por exemplo, para permitir que user execute os comandos apache2ctl e whoami , adicione o seguinte:

    User_Alias SPECIAL = user
    Cmnd_Alias SPECIAL_COMMANDS = /usr/sbin/apache2ctl, /usr/bin/whoami
    SPECIAL ALL = NOPASSWD: SPECIAL_COMMANDS
    

    Ou se você realmente confia em user , se é você por exemplo, você pode permitir que o usuário execute qualquer comando sem uma senha:

    user ALL=(ALL) NOPASSWD: ALL
    

    Então, quando o script a seguir for executado por user :

    #!/bin/sh
    whoami
    sudo whoami
    

    Será produzido:

    user
    root
    
por 25.03.2010 / 03:08

Tags