Editar arquivo com direitos de superusuário

53

Quando você precisa editar arquivos do sistema, é comum que você tenha iniciado o Emacs com um usuário normal antes, para que o arquivo fique protegido contra gravação. O que posso fazer para obter privilégios de root? Quero dizer algo como M-x sudode dired.

Não quero iniciar o Emacs como superusuário e não quero sair dele.

smonff
fonte

Respostas:

59

Use C-x C-fe digite /su::/etc/hostnameou /sudo::/etc/hostnameconforme aplicável.

Isso usa o pacote TRAMP , que é distribuído com o Emacs. Este pacote fornece acesso a arquivos remotos e, geralmente, a arquivos que o Emacs não pode abrir diretamente.

artagnon
fonte
11
Obrigado. Qual é o significado do ::?
smonff
7
O: é um separador; fornecemos a segunda vez para indicar que não há mais argumentos. Você pode /su:otheruser@localhost:, por exemplo.
Artagnon # 23/14
5
/sudo::é vagabundo abreviado parasudo:root@<hostname>:
phils 6/17
9

Use find-filecom vagabundo. No prompt /sudo::/etc/ssh/ssh_config, use sudo e um subshell para abrir esse arquivo com privilégios de root. Quando o sudo é usado pela primeira vez, ele solicita uma senha, mas até que a sessão seja fechada, você pode editar qualquer arquivo com essas permissões, prefixando o /sudo::comando existente .

Veja http://www.gnu.org/software/tramp/ para mais detalhes.

dgtized
fonte
3

Se você usar o ivypacote e tiver configurado counsel-find-filepara substituir find-file, uma das "ações ivy" pré-configuradas para você já é editar o arquivo como root. O hydrapressionamento de tecla padrão para essa ação é r.

user1404316
fonte
2

Hoje existem muitos pacotes que resolvem esse problema (a partir de 2018). Alguns deles são:

  • sudo-edit, permite alternar os direitos de edição em um arquivo somente leitura já aberto. Basta M-x sudodigitar uma senha e pronto. Após muitos anos de uso deste, acho que é o mais conveniente para essa necessidade. sudo-editpermite abrir um arquivo como qualquer usuário, mas o padrão é o sudo, se não houver nenhum.
  • dired-toggle-sudo. Foi a primeira solução empacotada que encontrei depois de fazer esta pergunta. Ele é orientado por direção, portanto, se você preferir a versão orientada a arquivos , consulte o primeiro marcador desta lista.
  • Existem outras soluções no Melpa
smonff
fonte
2

Se você usa o Helm. Você não precisa de nenhum pacote externo / configuração adicional. funciona fora da caixa.

Dentro, helm-find-filesvocê pode invocar a find file as rootque destino C-c r. Isso funciona para arquivos ou diretórios em helm-find-filessessão.

Se você não quiser digitar a senha toda vez que abrir arquivos / diretórios raiz. Coloque a seguinte linha no seu~/.authinfo.gpg

machine localhost port sudo login root password xxxxxx
machine your_machine_name port sudo login root password xxxxx

fonte

azzamsa
fonte