gksudo é diferente do sudo

0

Histórico:

Estou rodando o linux mint em um env de VM onde eu tenho uma pasta montada que somente root pode acessar e eu quero que meu cliente Deluge baixe meus torrents para essa pasta.

Se eu for no terminal e executar: sudo deluge ele pergunta minha senha e é executado como my_user com direitos privilegiados. Ok até agora.

Agora, quero criar um script bash para solicitar senha na tela, de maneira imediata.

Problema:

Se eu escrever meu arquivo bash como:

/usr/bin/gksudo deluge

ou

/usr/bin/gksudo -u root deluge

eu obtenho exatamente o mesmo resultado, eu executo o dilúvio como root com todo o meu env como root, minha pasta home está na pasta raiz, então ele não importa minhas preferências / configurações my_user nem meus torrents enfileirados.

Se eu escrever meu arquivo bash como:

/usr/bin/gksudo -u my_user deluge

ele é executado como my_user e sem privilégios elevados, ele não tem acesso para gravar na pasta compartilhada.

A verdadeira questão:

Como posso escrever um script bash que me permita executar o dilúvio como my_user (o mesmo env) com direitos elevados e solicitando senha?

PS:

Eu tentei -k arg de várias maneiras sem sucesso.

    
por Not a privileged user 21.01.2017 / 18:43

1 resposta

1

O sudo parece preservar $ HOME e $ PATH para o "usuário" home e caminho, em vez de configurações ambientais raiz. Esta ação levou a problemas para "usuário" e a maioria dos especialistas afirma que você não deve executar aplicativos X gráficos com o sudo, mas o gksudo deve ser usado no lugar. Aplicativos gráficos tendem a armazenar arquivos .config em $ HOME. Se você executar um aplicativo gráfico com sudo, os arquivos de configuração no diretório inicial "user" serão criados (ou se existirem podem ser sobrescritos) pela conta root.
Quando você voltar do sudo você pode encontrar seus aplicativos quebrados, já que usuários normais não podem acessar os arquivos de configuração feitos pelo root. A maneira correta de seu caso deve ser continuar usando seu aplicativo como "usuário" e armazenar seus arquivos em um local que o "usuário" tenha acesso.

A propósito, o gksudo -k parece preservar as configurações do usuário nos meus testes no Debian:

gv@debian:~/Desktop/PythonTests$ echo $USER-$HOME-$PATH
gv-/home/gv-/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

gv@debian:~/Desktop/PythonTests$ ./oneshot.sh
You run this script as USER=gv
Your HOME dir is /home/gv
Your PATH is /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

gv@debian:~/Desktop/PythonTests$ gksudo ./oneshot.sh
You run this script as USER=root
Your HOME dir is /root
Your PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

gv@debian:~/Desktop/PythonTests$ gksudo -k ./oneshot.sh
You run this script as USER=root
Your HOME dir is /home/gv
Your PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

gv@debian:~/Desktop/PythonTests$ cat oneshot.sh
#!/bin/bash
echo "You run this script as USER=$USER"
echo "Your HOME dir is $HOME"
echo "Your PATH is $PATH"
exit 0
    
por 21.01.2017 / 21:06