Altera arquivos com o Editor que precisa de permissões sudo

3

Eu quero alterar arquivos com o KomodoEdit que precisam de sudo de permissões. No entanto, não consigo iniciar o KomodoEdit com sudo (por qualquer motivo). Posso de alguma forma conceder permissão ao Komodo para editar esses arquivos (em particular, estou falando sobre arquivos apache2 e /etc/hosts )?

    
por weidler 05.11.2015 / 14:28

3 respostas

6

Use sudoedit <file> . Ele cria uma cópia local do arquivo, edita-o com direitos de usuário e copia-o de volta para o local original. A vantagem é que o editor está sendo executado como usuário regular.

Para especificar um editor diferente do padrão, você pode definir EDITOR temporariamente:

EDITOR=/usr/bin/someeditor sudoedit /etc/hosts

Isso requer que o pacote sudo seja instalado e que o usuário seja adicionado ao grupo sudo .

    
por 05.11.2015 / 15:15
0

Em teoria, você poderia fazer isso configurando o bit suid em komodoedit e mudando seu dono para root.

sudo chown root:root /path/to/komodoedit
sudo chmod u+s /path/to/komodoedit

O que faz:

  1. chown define o proprietário para root
  2. chmod u+s dá a qualquer pessoa que executa o arquivo os mesmos direitos (para a execução) do proprietário.

Como definimos o proprietário como root, o proprietário da execução efetiva torna-se root.

Esta provavelmente NÃO é a resposta que você procura, pois concederá a todos os usuários um editor-raiz efetivo.

sudoedit, como mencionado por marco, é provavelmente mais correto, em termos de segurança.

    
por 05.11.2015 / 15:02
0

Uma maneira relativamente limpa é fornecer as permissões de id do seu usuário para um determinado arquivo usando listas de controle de acesso . Você provavelmente precisará instalar o pacote acl para ter os comandos getfacl e setfacl . Então, para um usuário "myname" e um arquivo /etc/hosts você pode dar o comando:

sudo setfacl -m 'u:myname:rw' /etc/hosts

e então você poderá ler / gravar este arquivo. Quando você ls -l no arquivo, verá um sinal + para mostrar que existe uma acl para o arquivo:

-rw-r--r--+ 1 root root 221 Nov  5 16:55 /etc/hosts

e você pode listar o acl com getfacl no arquivo. Para remover o acl mais tarde, use

sudo setfacl -x 'u:myname' /etc/hosts

ou setfacl -b para remover todos os acls. (Seu sistema de arquivos deve suportar acls.)

    
por 05.11.2015 / 17:04