मेरे पास कई मशीनें हैं जो मैं नियमित रूप से केवल 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
इसे मारता है और मुझे लॉग आउट करता है, और मुझे लगता है कि विभिन्न अन्य चीजें संभवतः गलत भी हैं।
फुल लॉगइन शेल के साथ रन रिमोट ssh कमांड पढ़ने के बाद मैंने कुछ अधिक विदेशी चीजों की तरह कोशिश की
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
थोड़ी देर के बाद सूडो कमांड को जोड़ने के बारे में क्या ?