Por que o TRAMP não pode assumir o host atual para `sudo::`?
Existem motivos técnicos ou casos de uso para o motivo pelo qual sudo::
o TRAMP não pode usar o host mais à direita à esquerda dele, em vez do host local?
Quando o fizer /ssh:[email protected]|sudo::/tmp/file
, esperaria que o sudo::
usasse implicitamente [email protected]
.
De maneira mais geral, quando vários saltos SSH são encadeados, como em /ssh:jumpbox.example.com|ssh:remote.example.com|sudo::/tmp/file
, eu esperaria que o sudo::
sempre usasse o host mais à direita à esquerda do sudo::
.
Espero isso porque , do ponto de vista da interface do usuário e da experiência , para mim, esse parece ser o comportamento obviamente mais intuitivo e conveniente para ele.
Mas isso não acontece. Em vez disso, sudo::
parece sempre usar implicitamente root @ o host local.
Eu entendo que é assim. O que eu não entendo é por quê? Existem razões técnicas pelas quais a implementação disso seria difícil ou casos de uso comuns que não estou imaginando que seriam quebrados se isso fosse implementado?
Respostas
Você ficará feliz em saber que em versões mais recentes do tramp (incluídas pela primeira vez no Emacs 27.1), o ::
caso funcionará da maneira que você deseja, de modo que /ssh:you@remotehost|sudo::
será reutilizado em remotehost
vez de seu próprio nome de host local, para que você não termine com uma entrada de proxy ruim.
Além disso, os gostos de /ssh:you@remotehost|sudo:localhost:
são detectados e sinalizados como erros do usuário.
Claro, se você está sujeito a usar uma mistura de versões do Emacs, você deve continuar a tratá-lo ::
como inseguro ao fazer multi-hopping em geral, para evitar possíveis contratempos.
--https://stackoverflow.com/questions/2177687/open-file-via-ssh-and-sudo-with-emacs/16408592#comment94821206_16408592