Como você colocaria um trabalho que requer o sudo como plano de fundo?

0

Estou procurando uma maneira de colocar um trabalho que requeira sudo como plano de fundo, com o mínimo de interação possível, exceto talvez digitar minha senha.

sudo requer senha do terminal, enquanto o job em background desiste do terminal:

$ sudo sleep 10 &
[1] 32749
$ fg 1
sudo sleep 10
[sudo] password for t: 

Minha solução atual é como acima para digitar minha senha e, em seguida, bg 1 o trabalho novamente. Isso requer que eu execute interativamente três comandos

sudo só funciona com executáveis, não com comandos específicos do shell:

$ sudo ( sleep 10 & )
bash: syntax error near unexpected token 'sleep'
$ sudo { sleep 10 & }
bash: syntax error near unexpected token '}'

A maneira a seguir separará o trabalho de fundo do shell, indesejavelmente:

$ sudo bash -c "sleep 10 & "
[sudo] password for t: 
$ jobs
$ 

Também posso me concentrar no sudo . Por exemplo, faça o comando NOPASSWD em sudoers ou tire proveito do cache de senha executando um comando fictício sudo antes do comando background sudo real. Não tenho certeza se são formas elegantes. Deixe-me saber se algum deles é.

    
por Tim 01.11.2018 / 18:20

2 respostas

1

Eu acho que o seu último parágrafo é o caminho a percorrer sobre isso. Se desabilitar o requisito de senha for apropriado, então, de todas as maneiras, configure o comando com NOPASSWD . Caso contrário, você pode definir as coisas com antecedência, se o seu sudo permitir credenciais de armazenamento em cache (o que acontece por padrão):

sudo -v
sudo sleep 10 &
    
por 01.11.2018 / 18:35
2

Eu uso sudo -v para isso, como seu "comando fictício sudo à frente de um comando sudo real"; a página de manual do sudo dá isto:

By running sudo with the -v option, a user can update the cached credentials without running a command.

Isso não requer que o usuário tenha quaisquer outros comandos concedidos pelo sudo que funcionem como comandos sujos "fictícios".

    
por 01.11.2018 / 18:36