Automaticamente executa script bash sob os privilégios de outro usuário

4

Existe uma maneira de executar um script bash sob os privilégios de outro usuário (automaticamente)? Eu acho que "sudo" é o caminho certo, mas eu não sei como automatizar o processo.

Por exemplo Eu quero correr algo assim (usuário "bla" executa um processo em "blub"):

sudo <the user under which i want to run the process> <path to script>
    
por nikeee 18.11.2012 / 17:16

3 respostas

5

Então, eu entendi direito.

O usuário "bla" quer executar um comando como usuário "blub"?

Então, algo assim poderia funcionar:

sudo -u blub /path/to/command

Se você precisar que isso seja feito sem receber uma senha, adicione a seguinte linha ao / etc / sudoers (via comando visudo):

bla    ALL=(blub) NOPASSWD: /path/to/command
    
por 18.11.2012 / 17:29
3

você pode trabalhar com as permissões de bit SUID e SGID ( note que isso pode ser realmente perigoso )

dê as permissões para executar este arquivo para um grupo ao qual o usuário no qual você está executando o script pertence, e defina via SUID qualquer um que execute este script para executá-lo como o usuário que possui o script

sudo chmod 4751 /path/to/my/file
sudo chgrp somegroup /path/to/my/file

Então, você só precisa executar o script como userB que é membro de somegroup e ele será executado com userA e < strong> somegroup

ls -l /path/to/my/file
-rwsr-xr-- userA somegroup /path/to/my/file
    
por 24.01.2013 / 13:05
0

Eu queria executar um script de um cgi. Meu script gera alguns diretórios e arquivos, e eu precisava que eles fossem de propriedade do usuário nagios. Foi o que eu fiz:

edit /etc/sudoers using visudo command
apache   ALL=(nagios) NOPASSWD: /usr/local/nagios/libexec/pangoo_lib/change_state_simulation

Do meu cgi (usuário do apache), o script é executado:

sudo -u nagios /usr/local/nagios/libexec/pangoo_lib/change_state_simulation
    
por 13.12.2013 / 15:19