Altere arquivos com o Editor que precisam de permissões sudo

Altere arquivos com o Editor que precisam de permissões sudo

Quero alterar arquivos com o KomodoEdit que precisam sudode permissões. Porém , 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 de arquivos Apache2 e /etc/hosts)?

Responder1

Usar sudoedit <file>. Ele cria uma cópia local do arquivo, edita-o com direitos de usuário e copia-o de volta ao local original. A vantagem é que o editor funciona como usuário normal.

Para especificar um editor diferente do padrão que você pode definir EDITORtemporariamente:

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

Isso requer que o sudopacote seja instalado e o usuário seja adicionado ao sudogrupo.

Responder2

Em teoria, você poderia fazer isso definindo o bit suid no komodoedit e alterando seu proprietário para root.

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

O que faz:

  1. chowndefine o proprietário como root
  2. chmod u+sdá a qualquer pessoa que execute o arquivo os mesmos direitos (para a execução) que o proprietário.

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

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

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

Responder3

Uma maneira relativamente limpa é conceder permissões ao seu ID de usuário para um determinado arquivo usandolistas de controle de acesso. Você provavelmente precisará instalar o aclpacote para ter os comandos getfacle setfacl. Então, para um usuário "meunome" e um arquivo /etc/hostsvocê pode dar o comando:

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

e você poderá ler/gravar este arquivo. Ao ls -lacessar o arquivo, você verá um +sinal para mostrar que há uma acl para o arquivo:

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

e você pode listar o acl getfaclno arquivo. Para remover o acl posteriormente em uso

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

ou setfacl -bpara remover todas as acls. (Seu sistema de arquivos deve suportar acls.)

informação relacionada