सवाल सूडो विभिन्न उपयोगकर्ता और चल रही स्क्रीन के रूप में


आज पता चला कि एक अलग उपयोगकर्ता के रूप में चल रहे स्क्रीन के रूप में मैं काम नहीं करूँगा!

अर्थात।

ssh bob@server         # ssh into server as bob
sudo su "monitor" -
screen                 # fails

मेरे पास एक स्क्रिप्ट है जो "मॉनिटर" उपयोगकर्ता के रूप में चलती है। स्क्रीन पर आउटपुट देखने के लिए हम इसे स्क्रीन सत्र में चलाते हैं। समस्या यह है कि हमारे पास कई उपयोगकर्ता हैं जो अपने खाते (यानी बॉब, जेम्स, सस्सी, आदि ...) के साथ लॉग इन करते हैं और फिर वे "मॉनीटर" उपयोगकर्ता में सूडो करते हैं। उन्हें "मॉनिटर" उपयोगकर्ता तक पहुंच देना प्रश्न से बाहर है।


150
2018-02-25 15:07


मूल


क्या यह त्रुटि आपको मिल रही है? "आपका टर्मिनल नहीं खोल सकता '/ dev / pts / 0' - कृपया जांचें।" - Jim
हाँ वह एक है। मैं समझता हूं कि यह क्यों हो रहा है लेकिन क्या कोई कामकाज है? - luckytaxi
आपके आदेशों पर एक टिप्पणी - मैं लोगों को चल रहा देख रहा हूं sudo su "user" -। क्यों उपयोग नहीं करते हैं sudo -u user -s? - Andrew Aylett
@Jim: गायब त्रुटि संदेश की आपूर्ति के लिए +1। - Dennis Williamson
@Andrew ज्यादातर लोग मुझे पता है sudo su - मुझे लगता है कि यह वही है जो लोगों को उपयोग किया जाता है (मेरे मामले में ऐसा इसलिए है क्योंकि आपको किसी भी सूडो झंडे को जानने की आवश्यकता नहीं है sudo su - मुझे नहीं लगता कि मैंने कभी सुडो मैनपेज पढ़ा है :) - voretaq7


जवाब:


दौड़ने का प्रयास करें script /dev/null उपयोगकर्ता के रूप में आप su स्क्रीन लॉन्च करने से पहले - यह एक छोटा सा हैक है, लेकिन इसे स्क्रीन को खुश करना चाहिए।


220
2018-02-25 16:46



पुन: सुरक्षा निहितार्थ, मुझे कोई भी पता नहीं है (लेकिन इसका मतलब यह नहीं है कि कोई भी नहीं है :) - आईआईआरसी यह एक नया टर्मिनल डिवाइस खोलने वाले "स्क्रिप्ट" के दुष्प्रभाव पर निर्भर करता है (जैसे उपयोगकर्ता इसे आमंत्रित करता है) , और चूंकि आप स्क्रिप्ट के आउटपुट को / dev / null पर भेज रहे हैं, इसलिए कैप्चर करने के लिए कुछ भी नहीं है। यह टीटी समूह (आईएमएचओ) में उपयोगकर्ताओं को जोड़ने से भी निश्चित रूप से सुरक्षित है - voretaq7
@nalply फ्रैंकली आपको एक यूनिक्स सिस्टम एडमिनिस्ट्रेटर होने पर भ्रमित करने वाले कई गोले नहीं मिलना चाहिए - जो कहा, script लॉन्च करने के लिए इस्तेमाल किया जा सकता है screen। फिर आपको केवल दो बार बाहर निकलना होगा (एक बार के लिए screen, एक बार के लिए su)। (यह कुछ है script यदि आप इसे पढ़ने के लिए समय लेते हैं तो मैन पेज आपके लिए स्पष्टीकरण दे सकता है ...) - voretaq7
या बस भागो sudo -u bob script -q -c 'screen -dr myscreen' /dev/null। फिर आपके पास बाहर निकलने / अलग करने के लिए केवल एक टर्मिनल है। - Andy Shulman
धन्यवाद, यह मुझे बचाया। लेकिन यह ठीक क्यों करता है? जो मैं समझता हूं, वह सब कुछ stdout से ... कहीं भी प्रिंट करता है। और यह किसी भी तरह स्क्रीन को ठीक करता है। - sudo
@sudo अपनी बात करने के लिए script अपने स्वयं के टीटीआई डिवाइस को खोलता है, जिसका मालिक इसे चलाता है (देखें /dev और आप इसे चलाने के बाद दिखाई देंगे script)। screen फिर उस टीटी डिवाइस को पकड़ लेता है (जो उपयोगकर्ता के स्वामित्व में है screen इसलिए इसे एक्सेस करने में कोई परेशानी नहीं है)। यह कुल हैक नौकरी है, लेकिन यह काम करता है। मेरी कुछ मशीनों को देखते हुए ऐसा लगता है कि स्क्रीन के नए संस्करण सेटुइड-रूट स्थापित करने लगते हैं, जो भी काम करता है, लेकिन इसका मतलब है कि आपके पास एक और सेटुइड-रूट बाइनरी है जो आसपास तैरती है, जिससे कुछ लोग उचित रूप से असहज होते हैं। - voretaq7


मैं चारों ओर एक रैपर समारोह का उपयोग कर रहा हूँ screen उपयोगकर्ता के लिए मैं sudo su सेवा मेरे। यह रैपर फ़ंक्शन है जिसे मैंने उपयोगकर्ता (ओं) में जोड़ा है ~/.bashrc:

फ़ंक्शन स्क्रीन () {
  / usr / bin / script -q -c "/ usr / bin / screen $ {*}" / dev / null
}

यह मुझे सभी विकल्पों और पैरामीटर का उपयोग करने की अनुमति देता है screen कि मैं उपयोग करना चाहूंगा। मैं इस समारोह को व्यवस्थित करने पर विचार कर रहा हूं।


32
2017-08-13 13:45



अच्छी तरह से काम। इस प्रणाली को व्यापक रूप से चाहते हैं, मैं इसे /etc/bash.bashrc में जोड़ने की सलाह देता हूं - सभी उपयोगकर्ताओं के बीच काम करता है। - Someguy123
यह सही ढंग से स्क्रीन पर तर्कों का उद्धरण नहीं देगा, अन्यथा एक अच्छा समाधान। - augurar


मान लीजिए कि वे मेजबान में एसएसएचिंग कर रहे हैं, फिर भी आप प्रत्येक उपयोगकर्ता के लिए सार्वजनिक एसएसएच कुंजी जोड़ सकते हैं जिसके लिए ~ मॉनीटर / .ssh / अधिकृत_की फाइल में मॉनीटर खाते तक पहुंच की आवश्यकता होती है। फिर प्रत्येक उपयोगकर्ता की रिमोट मशीन पर वे चल सकते हैं

ssh -t monitor@remote.machine स्क्रीन -आरडी


7
2018-02-25 16:52



यह एक और अच्छा तरीका है - आपको अधिकृत कुंजी फ़ाइल में जबरन कमांड निर्दिष्ट करना होगा, हालांकि (प्रति लकीटाक्सी "उन्हें 'मॉनीटर' तक पहुंच प्रदान करने वाले प्रश्न" प्रश्न से बाहर है "- मजबूर आदेश उन्हें सीमित कर सकते हैं स्क्रीन सत्र संलग्न करना) - voretaq7
मुझे यकीन नहीं था कि मेरे जवाब में इसे कैसे संबोधित किया जाए, क्योंकि उन्होंने कहा था कि "उन्हें पहुंच देना ... प्रश्न से बाहर है", लेकिन यह भी कहा "... वे 'मॉनीटर' उपयोगकर्ता में सूडो"। लेकिन मैं सहमत हूं, अधिकृत_की में कमांड प्रतिबंध को मजबूर करना उस पर ध्यान देना चाहिए। - Alex


मान लीजिए कि हम इस त्रुटि के बारे में बात कर रहे हैं:

$ sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.

यहां एक-लाइनर है (उदाहरण के लिए "उपनाम गोबोब" के रूप में उपयोग किया जा सकता है):

sudo su - bob -c "script -c bash /dev/null"'

स्पष्टीकरण:

यह उपयोगकर्ता बॉब के रूप में एक खोल (जैसे लॉगिन खोल) शुरू करेगा। उपयोगकर्ता बॉब शुरू होता है script, जिसे एक बाश का आह्वान करने के लिए कहा जाता है (डैश या ksh हो सकता है ...) और सत्र की एक प्रति फेंक दिया जाता है।


6
2018-02-22 08:36





शायद डिवाइस पर अनुमतियों को अनुमति में बदलना होगा या उस समूह को मॉनिटर जोड़ना होगा जिसमें उस डिवाइस को पढ़ने की अनुमति है, यह मेरा पहला झुकाव होगा। लेकिन आपको ऐसा करने के सुरक्षा प्रभावों का वजन करना होगा।


0
2018-02-25 15:51





आप कहते हैं कि आप करते हैं:

sudo su "monitor" -

मैं पीछे की डैश के बारे में सोच रहा हूँ। मैं आमतौर पर करता हूं:

sudo su - username

डैश (सु मैन पेज प्रति) "सुले को लॉगिन खोल खोलने" के लिए सु बताता है। इसका मतलब है कि यह सभी सामान्य शैल स्टार्टअप स्क्रिप्ट का स्रोत होगा और पैथ और होम जैसी चीजों को ठीक से सेट करेगा।


0
2018-02-25 18:44



नहीं। sudo su - username तथा sudo su username - वहीं काम करें। - Tim Ludwinski


मैंने बस इस समस्या को मारा। इसे हल किया chmod +rw $(tty) सुडो चलाने से पहले। इस समाधान के साथ समस्या यह है कि कोई भी इसके बाद आपके टर्मिनल पर कनेक्ट और स्नूप कर सकता है।


-2
2018-06-22 02:09



एक महान समाधान की तरह लगता है। - Evan Carroll
@EvanCarroll यह एक अच्छा समाधान है, जहां यह देता है उसे छोड़कर संपूर्ण विश्व अपने टर्मिनल तक पहुंच पढ़ें और लिखें। बस एक मामूली सुरक्षा समस्या - पासवर्ड को स्वीकार करने से पहले टर्मिनल सुरक्षा की जांच करने वाले किसी भी पाठ्यक्रम को छोड़कर, कोई भी कार्यक्रम उस पर ध्यान नहीं देगा (gpg उदाहरण के लिए)। और निश्चित रूप से वह कभी भी दुर्भावनापूर्ण उपयोगकर्ताओं के साथ एक सिस्टम पर नहीं होगा जो देखेगा tty और पासवर्ड खराब करें ... - voretaq7
चेतावनी दी: घर पर कभी कोशिश मत करो! यह खतरनाक है!!! - ruizpauker