理系学生日記

おまえはいつまで学生気分なのか

tramp の multihop で sudo,su

emacs 使ってて便利なのが tramp ですね.
何がエラいかというと,tramp を使ってるとローカルで起動している emacs の中で,リモートホストのファイルを編集できる.
例えば,find-file (C-x C-f) で /ssh:kiririmode@desktiop:~/.bashrc とか指定してやると,リモートにある desktop の .bashrc が編集できることになる.すばらしい!!

root になれない

ところが,/etc/hosts なりの root しか編集できません的なファイルを編集しようとすると,root にならないことには話にならない.リモートホストが root での ssh ログインなりを許可しているなら良いけど,普通はそういう危険なことはしないですね.さぁ手詰まりだ!!

multi-hop

ぼくは tramp だと root になって編集とかできないんだと思ってたんですけど,どうもそれは嘘っぱちで,実際にはできるらしい.

まず,リモートホスト(desktop)に ssh でログインし,その後 sudo で root 権を得るというマルチホップな接続を tramp はサポートしている.この場合は find-file の引数として /multi:ssh:kiririmode@desktop:sudo:root@localhost:/etc/hosts を渡せば良い.

ログインできたら sudo からパスワードが聞かれるので,通常通り答えると root 権を get できる.

tramp は一旦ファイルをリモートからローカルにコピーし,それを emacs のバッファに入れるという処理をした後編集することができるようにので,若干の遅延がある.ただ,バッファに入った後はローカルファイルの編集になるので速度的には問題がない.もちろんセーブするときはローカルからリモートへのファイル転送が発生するので,そこはやっぱし遅くなる.