Perché TRAMP non può assumere l'host corrente per `sudo::`?
Ci sono ragioni tecniche o casi d'uso per cui sudo::
in TRAMP non è possibile utilizzare l'host più a destra a sinistra di esso, invece di localhost?
Quando lo faccio /ssh:[email protected]|sudo::/tmp/file
, mi aspetto sudo::
che utilizzi implicitamente [email protected]
.
Più in generale, quando più hop SSH sono concatenati insieme, come in /ssh:jumpbox.example.com|ssh:remote.example.com|sudo::/tmp/file
, mi aspetto sudo::
che utilizzi sempre l'host più a destra a sinistra di sudo::
.
Mi aspetto questo perché dal punto di vista dell'interfaccia utente e dell'esperienza , a me questo sembra il comportamento ovviamente più intuitivo e più conveniente da eseguire.
Ma questo non accade. Invece, sudo::
sembra usare sempre implicitamente root @ l'host locale.
Capisco che è così. Quello che non capisco è perché? Ci sono ragioni tecniche per cui l'implementazione di questo sarebbe difficile o casi d'uso comuni che non immagino sarebbero interrotti se fosse implementato?
Risposte
Sarai felice di apprendere che nelle versioni più recenti di Tramp (incluse per la prima volta in Emacs 27.1) il ::
case funzionerà nel modo desiderato, in modo tale da /ssh:you@remotehost|sudo::
riutilizzare remotehost
anziché il tuo nome host locale, quindi non finirai con una voce proxy errata.
Inoltre, simili a /ssh:you@remotehost|sudo:localhost:
vengono rilevati e contrassegnati come errori dell'utente.
Naturalmente, se sei responsabile dell'utilizzo di una combinazione di versioni di Emacs, dovresti continuare a considerarlo ::
non sicuro durante il multi-hopping in generale, per evitare potenziali incidenti.
--https://stackoverflow.com/questions/2177687/open-file-via-ssh-and-sudo-with-emacs/16408592#comment94821206_16408592