sudoedit: porque usá-lo sobre o sudo vi?

7

De acordo com a página do manual :

sudoedit /etc/file

cria uma cópia do arquivo, o abre como o usuário atual e, quando salvo, substitui o arquivo existente pela cópia.

enquanto

sudo vi /etc/file

abre o arquivo como root

A página man afirma que o sudoedit é diferente do sudo porque:

the editor is run with the invoking user's environment unmodified

O primeiro método é mais seguro? Por que? Existem outras razões para usar o sudoedit em vez do sudo vi?

    
por jonatan 19.07.2014 / 14:37

2 respostas

10

Eu tropecei nessa questão enquanto procurava por algo completamente não relacionado, mas pensei em adicionar a seguinte distinção importante, que não foi mencionada até agora: o sudoedit não roda o seu editor como root.

$ sudo vim /etc/farts.conf 

Simplesmente executará o vim como root, permitindo que ele leia o arquivo. A desvantagem é que o editor agora também é executado como root e pode fazer qualquer coisa. Se você apenas quisesse permitir que um usuário editasse um arquivo de configuração e nada mais, muito ruim, você apenas deu a eles root em todo o sistema. Nada me impede de gerar um shell do vim com :sh ou :!command e, como eles são subprocessos, eles também serão executados como raiz.

Por outro lado:

$ sudoedit /etc/farts.conf

funcionará de maneira diferente. Ele criará uma cópia com um nome exclusivo em / tmp com permissões bloqueadas somente para seu usuário e, em seguida, gerará seu editor normalmente, sem privilégios de administrador, nessa cópia.

Depois de sair do editor, ele comparará o arquivo temporário e o arquivo original e substituirá com segurança o original pela sua edição, caso tenha mudado.

Neste cenário, torna-se possível permitir que um usuário edite um arquivo de sistema, mas não permita que executem binários aleatórios como root ou cutucam todo o sistema de arquivos.

Essa é principalmente a distinção real, o resto que foi mencionado é apenas efeitos colaterais puros.

    
por 07.04.2016 / 00:56
10

Primeiro, sudo vim já menciona explicitamente o seu editor padrão, o que não é necessário se você tiver definido em $EDITOR . sudoedit poupa você de definir o editor toda vez que quiser editar alguma coisa - e em um sistema multiusuário permite que todos usem o editor que eles gostam pessoalmente.

Como assim? Considere um sistema em que usuários normais obtêm apenas sudo privilégios para editar determinados arquivos. Eles estão restritos de executar sudo com qualquer outra coisa embora. Você teria que permitir a eles sudo vi e sudo vim e sudo nano e sudo emacs e sudo pico (et cetera). Em vez de ter que fazer isso, você poderia simplesmente permitir que eles sudoedit do arquivo, com sua escolha de configuração $EDITOR para o que quiserem. (Imagine que você forçaria um amante do Emacs a usar o Vim ...)

Outro problema é que, se o $EDITOR estiver definido como vim e você tiver configurações de personalização para ele no .vimrc do usuário, essas configurações não serão usadas se você usar sudo vim ou sudo $EDITOR . No entanto, sudoedit preserva o ambiente do usuário chamador e, portanto, suas configurações.

Veja também: O que é ótimo sobre o sudoedit?

    
por 19.07.2014 / 18:22

Tags