É possível executar um programa como um usuário específico, mas com permissões de root?

2
Estou fazendo desenvolvimento com PyCharm, fazendo desenvolvimento em um script que usa o módulo scapy para Python fazer varreduras de porta, farejar tráfego e construir pacotes brutos. Isso, é claro, requer permissões de root e, portanto, eu executo o PyCharm como root (Sim, estou ciente dos problemas de segurança que isso apresenta).

O problema é que, quando o PyCharm entra em contato com o servidor de licenças da empresa, ele envia o nome de usuário atual, que, é claro, acaba sendo "root" e o servidor de licença rejeita minha solicitação. Se eu não lançar o PyCharm como root, ele submete meu nome de usuário real e obtém uma licença com sucesso, mas eu não posso executar meu script porque ele precisa de permissões de root para fazer as coisas que ele faz.

Existe uma maneira de executar o PyCharm e enviar meu nome de usuário real para o servidor de licenças, mas ter privilégios de root, sem apenas editar minha conta para me dar permissões de root?

    
por Sohcahtoa82 06.06.2014 / 19:52

4 respostas

0

Eu imagino que sudo seria perfeito para isso. Como um teste rápido:

$ echo $USER
halosghost
$ sudo echo $USER
[sudo] password for halosghost:
halosghost

Ou seja, tenho permissões aprimoradas, mas mantenho a identidade do meu usuário. O sinalizador -E também pode ser particularmente útil. Isso garante que as variáveis de ambiente sejam preservadas durante a execução.

    
por 06.06.2014 / 20:51
0

Que tal executar o PyCharm em sua máquina local, como você, e fazer seu desenvolvimento dentro de um contêiner, como o fornecido pelo Vagrant (suportado nativamente no PyCharm) ou Docker (suportado via plugin)?

    
por 12.04.2016 / 14:44
0

Isso funcionou para mim ( link ). Você essencialmente cria um interpretador diferente para python, que é um script de shell que chama python com sudo. Quando se fala em criar um arquivo sudoers (/etc/sudoers.d/python) eu tive que adicionar a linha Defaults!/usr/bin/python2.7 !requiretty para habilitar a execução sem um tty.

    
por 26.04.2016 / 16:47
0

Três anos atrasado para a festa, mas o comando padrão do Linux (e BSD e MacOS) logname teria o resultado desejado.

My-Mac:~ devin$ logname
devin
My-Mac:~ devin$ sudo logname
devin
My-Mac:~ devin$ sudo su -
My-Mac:~ root# echo $USER
root
My-Mac:~ root# logname
devin

Eu acredito que logname olha para o início do processo, então não tenho certeza se isso funcionaria para um programa totalmente sem cabeçalho (por exemplo, um que é executado na inicialização). Ele funciona se você iniciar e, em seguida, desanexar o programa via nohup.

My-Mac:~ root# nohup logname
appending output to nohup.out
My-Mac:~ root# cat nohup.out
devin
    
por 15.02.2017 / 20:46