Usar configuração de usuário não raiz para conta raiz

4

Quando trabalho com o terminal e uso su ou sudo para executar um comando com as permissões do usuário root, é possível aplicar a configuração do meu "usuário não root" (do qual estou invocando su ou sudo ) armazenado no diretório inicial deste usuário?

Por exemplo, considere que (tendo feito logon como usuário não raiz) gostaria de editar o arquivo de configuração /etc/some_file usando vim e que meu arquivo de configuração do vim está localizado em /home/myuser/.vimrc . Disparando a linha de comando e digitando sudo vim /etc/some_file , eu quero que "meu" bonito e bem configurado vim apareça. Mas o que obtenho é um feio vim com a configuração padrão, sem plugins etc.

Posso fazer com que su ou sudo use os arquivos de configuração do meu usuário em vez dos arquivos do usuário raiz localizados em / root?

    
por zepp.lee 17.07.2014 / 10:00

2 respostas

3

Use sudo -E para preservar seu ambiente:

$ export FOO=1
$ sudo -E env | grep FOO
FOO=1

Isso preservará $HOME e quaisquer outras variáveis de ambiente que você tivesse, então os mesmos arquivos de configuração que você iniciou serão acessados pelos programas que estão rodando como root.

Você pode atualizar sudoers para desativar a configuração env_reset , que limpa todo o ambiente variáveis e geralmente é ativado por padrão. Você pode ter que habilitar a capacidade de usar sudo -E em tudo lá também. Existem algumas outras configurações de sudoers que podem ser relevantes: env_keep , que permite especificar variáveis específicas para manter por padrão, e env_remove , que declara que as variáveis devem ser excluídas sempre. Você pode usar sudo sudo -V para ver quais variáveis são / não são preservadas.

Uma alternativa, se você não pode modificar sudoers , é fornecer seu ambiente explicitamente:

sudo env HOME=$HOME command here

Você pode criar um alias de shell para fazer isso automaticamente para não precisar digitá-lo.

Observe que fazer isso (de qualquer forma) pode ter efeitos colaterais potencialmente indesejados: se o programa que você executa tenta criar arquivos em seu diretório inicial, por exemplo, esses arquivos serão criados como root e seu usuário comum não será capaz de escrever para eles.

Para o caso específico de vim , você também pode colocar seu .vimrc como o /etc/vimrc em todo o sistema se você for o único usuário desse sistema.

    
por 17.07.2014 / 10:11
2

Configure o sudo para preservar a variável de ambiente HOME .

Execute visudo para editar a configuração do sudo. Certifique-se de que a opção always_set_home não esteja definida e que HOME esteja presente na lista env_keep . Adicione as seguintes linhas:

Defaults !always_set_home
Defaults env_keep+="HOME"

Remova uma linha como Defaults always_set_home se houver uma.

    
por 18.07.2014 / 01:44