ฉันมีเครื่องหลายเครื่องที่ฉันใช้เป็นประจำเท่านั้น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หลังจากล่าช้าเล็กน้อย?