Saya memiliki beberapa mesin yang saya ssh secara teratur hanya untuk tujuan menggunakan sudo sumenghabiskan sisa sesi saya login sebagai beberapa pengguna tujuan khusus. Alur kerja umum adalah:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Saya ingin merebus ini menjadi satu-liner yang saya bisa alias, jadi saya bisa mengatur alias untuk setiap mesin dan sampai ke tempat saya perlu dalam satu perintah, tanpa harus mengetikkan sudo su - specialuserboilerplate. Saya mungkin dapat mengatur me@othermachineuntuk sudo sumasuk, tetapi saya ingin menjaga fleksibilitas untuk beroperasi seolah- meolah saya perlu.
( Catatan: Saya tidak memiliki kendali atas othermachineatau cara pengaturannya; ini adalah alur kerja yang telah saya buat ketika saya dipekerjakan.)
Pikiran pertamaku adalah adil
ssh me@othermachine "sudo su - specialuser"
dan ini semacam bekerja, tapi itu membuat saya tidak cepat, ^Cmembunuh dan mengeluarkan saya, dan saya berasumsi berbagai hal lain mungkin salah juga.
Setelah membaca perintah Run Remote ssh dengan Full Login Shell saya mencoba beberapa hal yang lebih eksotis seperti
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
dan
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- tak satu pun dari yang saya harapkan untuk bekerja, dan mereka tidak, tapi saya pikir saya harus mencobanya untuk kelengkapan (dan untuk menghindari duplikat); mereka menghasilkan shell tanpa-prompt yang sama (yang kedua dengan shell tambahan tanpa-bonus tambahan untuk meafter exit-ing dari yang untuk specialuser). Dan saya mencoba
ssh me@othermachine "sudo su - specialuser -c bash -l"
tapi itu hanya membuat saya
sudo: no tty present and no askpass program specified
Ide yang lebih baik?
sudosaya harus memukul ^C? Jika saya tidak dapat menemukan sesuatu yang lebih baik saya bisa mencobanya.
su medari specialuser. Atau di .profileatau .bashrc, jika Anda tidak mengikuti sudodengan exit, yang pertama exitakan membawa Anda kembali ke me, dengan yang kedua untuk mengakhiri sesi. Atau bahkan menggunakan file flag, jadi sudodidahului oleh [ -f ~/.keep.me ] && del ~/.keep.medan diikuti oleh [ \! -f ~/.keep.me ] && exit: Anda hanya perlu skrip atau alias untuk perintah mesebagai :>~/.keep.me; exit. Sekarang exitakan mengakhiri sesi Anda dan meakan kembali ke sesi login Anda.
~/.profilesetelah penundaan singkat?