के लिए बैश प्रक्रिया प्रतिस्थापन का उपयोग करना मैं एक सूडो कमांड के लिए बैश प्रक्रिया प्रतिस्थापन का उपयोग करना चाहता हूं।एक सूडो कमांड
उदाहरण के लिए, यहाँ एक गैर sudo आदेश है कि मेरे लिए काम करता है:
$ cat <(echo "installed.txt")
installed.txt
और यहाँ वह काम नहीं करता आदेश की एक sudo संस्करण है:
$ sudo cat <(echo "installed.txt")
cat: /dev/fd/63: Bad file descriptor
sudo आदमी पेज पढ़ना , ऐसा लगता है कि सूडो रूट के रूप में कमांड चलाने से पहले stdin/stdout/stderr फ़ाइल वर्णनकर्ताओं के अलावा सभी को बंद कर देता है। इससे मुझे लगता है कि सशो कमांड चलाने से पहले बैश वर्णनकर्ता (और प्रक्रिया प्रतिस्थापन कर रहा है) बना रहा है।
मैंने रूट के खोल को बाश में बदल दिया (sh डिफ़ॉल्ट के बजाय)। मैंने परीक्षण किया है कि रूट के रूप में लॉग इन करते समय आदेश ठीक काम करता है। यह केवल एक सूडो कमांड के माध्यम से काम नहीं करता है।
मैं जो करने की कोशिश कर रहा हूं उसे हासिल करने के लिए उपयुक्त तकनीक क्या है? Eval, उद्धरण, सूडो झंडा, sudoers फ़ाइल mod, अन्य?
सबकुछ एक-लाइनर है; मैं ऐसा करने की ज़रूरत से बचना चाहता हूं। –
@ClaytonStanley फिर अन्य (बहुत अच्छे) उत्तरों में दिए गए समाधानों का उपयोग करें ... –