Automatizar a senha do usuário do switch no script

0

Eu tenho que escrever um script e requer privilégios de root para executar alguns commnads do linux e parar o & iniciar alguns serviços. Eu sou solicitado a desabilitar o acesso sudo totalmente para todos os usuários (como os usuários normais podem ter acesso ao root com o comando 'sudo -s') e eu fiz isso. Então, estou procurando o script para automatizar a senha do usuário do switch (su), que não precisa da intervenção do usuário.

EDITAR : 1

Em pesquisas posteriores, recebi o seguinte script do qual preciso:

#!/usr/bin/python
import pexpect
import os
passwd = "my-root-password-here"
child = pexpect.spawn('su root')
child.expect('Password:')
child.sendline(passwd)
child.expect('$')
child.interact()

Eu verifiquei este script executando manualmente o login como usuário normal e ele mudou para root sem nenhum problema. Mas quando digito exit/ctrl+d para voltar ao usuário normal, estou recebendo o seguinte erro:

Traceback (most recent call last):
 File "./su3.py", line 9, in <module>
  child.interact()
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1492, in interact
  self.__interact_copy(escape_character, input_filter, output_filter)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1520, in __interact_copy
  data = self.__interact_read(self.child_fd)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1510, in __interact_read
  return os.read(fd, 1000)
OSError: [Errno 5] Input/output error

qualquer ajuda ...

    
por user3215 28.10.2010 / 10:48

3 respostas

3

Os usuários não podem executar sudo -s se não tiverem permissões para executar qualquer que seja o SHELL.

O que você quer é que seus usuários digam exatamente quais comandos eles desejam executar. Tenha cuidado especial para que quaisquer comandos que eles queiram executar sejam de propriedade do root , para que eles não possam substituí-los por algo que eleve seus privilégios posteriormente.

Se eles quiserem executar ifconfig , por exemplo,

%netadmins ALL=(ALL) NOPASSWD: /sbin/ifconfig

Tente isso, e você verá que o grupo netadmins só pode executar /sbin/ifconfig sem nenhuma senha digitada como root.

    
por SpamapS 03.11.2010 / 19:58
2

Se você precisar executar esse script como um usuário não raiz, deverá configurar sudo para permitir isso. Você pode configurar o sudo por usuário ou grupo para permitir todos ou apenas determinados comandos, com ou sem senha. Desativar completamente o sudo para todos os usuários provavelmente não é o que você quer ...

    
por JanC 28.10.2010 / 11:05
0

Você pode definir o bit de execução no script para que ele sempre seja executado como o proprietário do script. Algo como chmod 4750 script_name

O Expect pode ser usado para automatizar respostas em um script. Tenha cuidado com qualquer um deles, pois eles podem apresentar riscos de segurança, especialmente ao conceder privilégios elevados aos usuários regulares.

Configurar corretamente o sudo, em vez de desativá-lo completamente, como JanC afirmou, é provavelmente a melhor solução.

    
por hannaman 28.10.2010 / 11:47

Tags