ฉันมีเครื่องหลายเครื่องที่ฉันใช้เป็นประจำเท่านั้นsudo su
เพื่อใช้ในส่วนที่เหลือของการเข้าสู่ระบบในฐานะผู้ใช้ที่มีวัตถุประสงค์พิเศษ เวิร์กโฟลว์ทั่วไปคือ:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
ฉันต้องการต้มสิ่งนี้ลงในสายการบินเดียวที่ฉันสามารถใช้นามแฝงได้ดังนั้นฉันจึงสามารถตั้งชื่อแทนสำหรับแต่ละเครื่องและไปยังตำแหน่งที่ฉันต้องเป็นคำสั่งเดียวโดยไม่ต้องพิมพ์sudo su - specialuser
หม้อต้ม ฉันอาจตั้งค่าme@othermachine
ให้ใช้sudo su
ในการเข้าสู่ระบบ แต่ฉันต้องการที่จะรักษาความยืดหยุ่นในการทำงานราวกับme
ว่าฉันต้องการ
( หมายเหตุ:ฉันไม่มีการควบคุมใด ๆothermachine
หรือวิธีการตั้งค่านี่เป็นขั้นตอนการทำงานที่กำหนดไว้ที่ฉันเข้ามาเมื่อฉันถูกว่าจ้าง)
ความคิดแรกของฉันเป็นเพียงแค่
ssh me@othermachine "sudo su - specialuser"
และงานประเภทนี้ แต่มันทำให้ฉันพรอมต์ไม่^C
ฆ่าและออกจากระบบและฉันคิดว่าสิ่งอื่น ๆ อีกมากมายอาจผิดด้วย
หลังจากอ่านคำสั่ง Run Remote ssh ด้วย Full Login Shellฉันลองสิ่งแปลกใหม่สองสามอย่างเช่น
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
และ
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- ทั้งที่ฉันคาดว่าจะทำงานและพวกเขาไม่ได้ แต่ฉันคิดว่าฉันควรลองพวกเขาเพื่อความสมบูรณ์ (และเพื่อหลีกเลี่ยงการซ้ำซ้อนใกล้) พวกเขาสร้างกระสุนพรอมต์ที่น้อยลงเหมือนกัน (ที่สองพร้อมกับโบนัสเพิ่มที่ไม่ต้องใช้กระสุนสำหรับการme
ไล่หลังจากexit
ที่หนึ่งสำหรับspecialuser
) และฉันพยายาม
ssh me@othermachine "sudo su - specialuser -c bash -l"
แต่มันก็ทำให้ฉัน
sudo: no tty present and no askpass program specified
ความคิดที่ดีกว่า
sudo
ฉันควรจะตี^C
? ถ้าฉันไม่สามารถคิดอะไรได้ดีกว่านี้ฉันก็ลองทำดู
su me
specialuser
หรือใน.profile
หรือ.bashrc
ถ้าคุณไม่ทำตามsudo
ด้วยสิ่ง exit
แรกของคุณexit
จะนำคุณกลับไปme
พร้อมกับวินาทีเพื่อสิ้นสุดเซสชัน หรือแม้กระทั่งการใช้แฟ้มธงเพื่อsudo
จะนำหน้าด้วย[ -f ~/.keep.me ] && del ~/.keep.me
และตามด้วย[ \! -f ~/.keep.me ] && exit
: แล้วคุณต้องการเพียงสคริปต์หรือนามแฝงสำหรับคำสั่งเป็นme
:>~/.keep.me; exit
ตอนนี้exit
จะสิ้นสุดเซสชันของคุณและme
จะกลับไปที่เซสชันการเข้าสู่ระบบของคุณ
~/.profile
หลังจากล่าช้าเล็กน้อย?