Suponha que eu queira abrir um arquivo em uma sessão existente do Emacs usando su
or sudo
, sem cair para um shell e executando sudoedit
or sudo emacs
. Uma maneira de fazer isso é
C-x C-f /sudo::/path/to/file
mas isso requer uma ida e volta cara através do SSH . Existe uma maneira mais direta?
[EDIT] @JBB está certo. Eu quero poder invocar su
/ sudo
salvar e abrir. Seria bom (mas não o ideal) autorizar novamente ao salvar. O que estou procurando são variações find-file
e save-buffer
que podem ser "canalizadas" através de su
/ sudo
.
emacs
file-permissions
sudo
Chris Conway
fonte
fonte
sudoedit
menção. Muito útil.Respostas:
O bom do Tramp é que você só paga pela viagem de ida e volta ao SSH quando abre o primeiro arquivo. O Sudo armazena em cache suas credenciais e o Emacs salva um identificador, para que os arquivos subsequentes abertos pelo sudo levem muito menos tempo.
Também não encontrei o tempo extra necessário para economizar carga. É rápido o suficiente, IMO.
fonte
O Tramp não faz ida e volta ao sudo via SSH, ele usa um subshell . Consulte o manual: https://www.gnu.org/software/tramp/#Inline-methods
Portanto, eu recomendo que você fique com o TRAMP.
fonte
Se você usar
helm
,helm-find-files
suporta a abertura de um arquivo como rootC-c r
.fonte
M-x helm-find-files C-c ?
que diga como retornar ao modo normal de abertura como usuário. FazerC-c r
novamente não o impede.sudo -k
e, em seguida, solicita a senha. Eu reiniciei o Emacs e isso não eliminou o problema. Eu procurei.emacs.d
e encontrei algumas referências ao vagabundo, então as apaguei. Agora parece melhor, mas não tenho certeza se estou livre disso.Não é realmente uma resposta para a pergunta original, mas aqui está uma função auxiliar para facilitar um pouco a rota tramp / sudo:
fonte
esk-sudo-edit
.Pelo menos para salvar, um pacote sudo-save foi escrito exatamente para esse tipo de problema.
fonte
Seu exemplo não inicia o ssh, pelo menos não com a minha versão do TRAMP ("2.1.13-pre"). O arquivo find e o save-buffer funcionam muito bem.
fonte
Eu recomendo que você use comandos de aconselhamento. Coloque esta função no seu ~ / .emacs
fonte
ido-find-file
para encontrar arquivos.(funciona apenas localmente. Precisa ser atualizado para funcionar corretamente via tramp)
Um pouco estendida a resposta de Burton:
fonte
Ugh. Talvez você possa abrir um shell no Emacs e no exec sudo emacs.
O problema é que você provavelmente não quer apenas abrir o arquivo. Você deseja poder salvá-lo mais tarde. Portanto, você precisa que seus privs raiz persistam, e não apenas exista para abrir o arquivo.
Parece que você quer que o Emacs se torne seu gerenciador de janelas. É inchado o suficiente sem isso. :)
fonte