Alternando usuários em um script bash

0

Eu quero executar um script bash que alterna o usuário e, em seguida, executa uma série de comandos. Nenhum desses usuários tem privilégios de root. Eu acho que eu tenho que editar o arquivo sudoers para dar privilégios user1 (o usuário que executa o script) para poder registrar como user2 com nenhum prompt de senha. Eu estive procurando por este exemplo, mas não encontrei nenhum.

Obrigado antecipadamente.

    
por eliocs 29.03.2011 / 08:48

3 respostas

1

Neste exemplo:

  • Usuário executando o script = fred
  • Usuário o script deseja executar determinados comandos como = boris
  • Comandos que o script deseja executar como boris = / bin / cat & / bin / rm

No arquivo sudoers (visudo) temos:

fred   ALL=(boris) NOPASSWD:/bin/cat, (boris) NOPASSWD:/bin/rm

Em seguida, no script:

#!/bin/sh
sudo -u boris cat /home/boris/privatefile
sudo -u boris rm /home/boris/privaterubbish

Se você quiser permitir que o fred execute qualquer comando como boris use isso em sudoers:

fred    ALL=(boris) NOPASSWD:ALL
    
por 29.03.2011 / 09:51
0

Coloque a série de comandos em um arquivo, comece com #!/bin/sh e torne-o executável. Em seguida, conceda aos usuários permissão para executar esse script com visudo .

Cuidado: é provável que isso forneça escapes para que eles executem qualquer comando. Uma alternativa é escrever um programa em C que execute os comandos em questão. Mesmo assim, você precisa observar sua etapa, por exemplo, Limpe as variáveis de ambiente que o usuário pode usar para contrabandear maneiras de fazer com que seus comandos sejam executados de maneiras que você não esperava.

    
por 29.03.2011 / 09:26
0

O arquivo sudoers é bastante auto-documentável na minha experiência; está cheio de comentários e exemplos. Você pode ficar bastante granular com as permissões como @reinierpost mencionadas, e você deve estar ciente de que você está efetivamente dando a esse usuário permissões de superusuário autorizando-as a usar o sudo.

Se você quiser apenas permitir que o usuário execute comandos arbitrários, provavelmente estará adicionando algo como:

origuser           ALL = (ALL) ALL 

ou se você quiser ignorar o prompt de senha

origuser           ALL = NOPASSWD: ALL

No que diz respeito à troca de usuários, você pode usar sudo -u [command] ou sudo -u -i [command] se precisar do ambiente do usuário 'destino'.

    
por 29.03.2011 / 09:50