लॉगिन शेल के रूप में किसी अन्य उपयोगकर्ता को र के दौरान "टर्मिनल प्रक्रिया समूह सेट नहीं कर सकता है"


16

नोट: कृपया इस पोस्ट के आधे रास्ते के पास "EDIT" से शुरू होने वाली अद्यतन जानकारी पढ़ें - इस समस्या का वातावरण और पृष्ठभूमि बदल गई है

मुझे एक दलदल मानक डेबियन 6.0 स्थापित मिला है जिसे मैंने डेबियन परीक्षण रिपॉजिटरी में साइडग्रेड करने का निर्णय लिया है। मैंने अपने स्रोतों में निचोड़ प्रतिनिधि के संदर्भों की अदला-बदली करके ऐसा किया। इसके बजाय परीक्षण रिपो का उपयोग करने के लिए।

पैकेज स्थापित करने और रिबूट करने के बाद, मुझे किसी अन्य उपयोगकर्ता को su करने का प्रयास करते समय निम्न त्रुटि मिलती है:

root@skaia:~# su joebloggs -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell

अगर मैं -, यह घटित नहीं होता है।

ध्यान दें कि उपयोगकर्ता सही तरीके से रूट हो सकते हैं, यह केवल तब होता है जब रूट को किसी और से स्विच करना और उस उपयोगकर्ता के पर्यावरण को प्राप्त करने के लिए - का उपयोग करना।

Google यहां ज्यादातर बेकार है। suxपैकेज के संबंध में मुझे केवल वही चीजें मिल सकती हैं , जो 2011 से संदर्भ में हैं , जो कि निश्चित समय में तय हुई हैं।

यह एक अपग्रेड त्रुटि की तरह दिखता है और बहुत ही बदबू आ रही है, सही तरीके से सही पैकेज को घुमाकर ठीक किया जा सकता है। मुझे अभी पता नहीं है कि कहां से शुरू करना है - इससे अलग, मेरा सिस्टम पूरी तरह से सामान्य रूप से और उम्मीद के मुताबिक काम करता है।

संपादित करें

यह अब मेरे लिए एक डेबियन स्थिर मशीन पर हो रहा है जैसा कि ऊपर वर्णित है। इस बार कोई उन्नयन या कुछ भी नहीं, बस सीधे स्थिर।

एक साल बाद यप। फिर भी पता नहीं कि समस्या क्या है।

यहाँ अब ऐसा लगता है (बहुत कुछ नहीं बदला है):

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
terraria@skaianet:~$ tty
/dev/pts/0
terraria@skaianet:~$ ls -l /dev/pts/0
crw--w---- 1 root root 136, 0 Oct 10 19:21 /dev/pts/0
terraria@skaianet:~$ ls -l /dev/pts/
crw--w---- 1 root root 136, 0 Oct 10 19:21 0
crw--w---- 1 root root 136, 2 Sep 22 17:47 2
crw--w---- 1 root root 136, 3 Sep 26 19:30 3
c--------- 1 root root   5, 2 Sep  7 10:50 ptmx

इस तरह उत्पन्न एक धारा:

root@skaianet:~$ strace -f -o tracelog su terraria -

..तो कुछ उलझाने वाला व्यवहार करता है। ये संदेश बल्कि भ्रमित कर रहे हैं। कुछ चुनी हुई लाइनें:

readlink("/proc/self/fd/0", "/dev/pts/0", 4095) = 10
#Error code 10? 
15503 open("/dev/tty", O_RDWR|O_NONBLOCK) = -1 ENXIO (No such device or address)
#Yes there is, and I can interact with it normally
15503 ioctl(255, TIOCGPGRP, [32561])    = -1 ENOTTY (Inappropriate ioctl for device)

मैंने इस स्ट्रेस सेशन का पूरा आउटपुट लिंक कर दिया है - मैंने जो किया था वह सब कमांड, फिर तुरंत ctrl + d टर्मिनल से बाहर चला गया।


1
हाय माइक। क्या आपने समस्या पाई है?
मिर्चे वुटकोविसी

जवाबों:


34
  • su - usernameआपके द्वारा व्याख्या की है suमतलब "रन उपयोगकर्ता नाम के खोल एक इंटरैक्टिव लॉगिन शेल के रूप में"
  • su username -आपके द्वारा व्याख्या की है suमतलब "निम्नलिखित चलाने गैर-सहभागी कमांड ( -) के रूप में उपयोगकर्ता नाम "
  • उत्तरार्द्ध केवल इसलिए काम किया क्योंकि:
    • पार्सिंग के लिए आपके suपास अनुगामी तर्क हैंsh
    • sh-मतलब होता है "लॉगिन शेल के रूप में चलाएं (पढ़ें /etc/profile, ...)"

लेकिन क्या आप वास्तव में रुचि रखते हैं: क्यों गैर-इंटरैक्टिव ? विशेषाधिकार प्राप्त माता-पिता और अनपढ़ बच्चे के बीच नियंत्रण टर्मिनल को साझा करना , बग को " TTY पुशबैक विशेषाधिकार वृद्धि ", उर्फ, के लिए असुरक्षित बनाता हैTIOCSTI , इसलिए जब तक आपको वास्तव में इसकी आवश्यकता नहीं su होती है । जब आपने su username -फॉर्म का उपयोग किया था , तो su अनुमान लगाया कि आपको एक नियंत्रित टर्मिनल की आवश्यकता नहीं थी

केवल एक नियंत्रित टर्मिनल के साथ प्रक्रियाओं में सत्र के नेता हो सकते हैं जो प्रक्रिया समूहों (नौकरी नियंत्रण) में हेरफेर करते हैं; आपके द्वारा दिया गया ट्रेस bashयह पता लगा रहा है कि यह सत्र नेता नहीं हो सकता है।

आपने जिक्र किया:

जहां यह अजनबी हो जाता है कि दोनों फॉर्म उबंटू और सेंटोस 6 पर ठीक काम करते हैं, हालांकि वेनिला डेबियन पर, केवल पहला फॉर्म बिना किसी त्रुटि के काम करता है।

उपेक्षा कर वेरिएंट की तरह suxऔर sudoकम से कम तीन देखते हैं [1] के संस्करण suलिनक्स पर: coreutils, util-linuxऔर shadow-utilsडेबियन के आता है जहाँ से। उत्तरार्द्ध का मेनपेज बताता है:

सु के इस संस्करण में कई संकलन विकल्प हैं, जिनमें से केवल कुछ ही किसी विशेष साइट पर उपयोग में हो सकते हैं।

और डेबियन ध्वज के साथ आता है old_debian_behavior; अन्य संस्करणों में समान संकलन-समय / रनटाइम विकल्प हो सकते हैं। परिवर्तनशीलता का एक और कारण यह हो सकता है कि कुछ बहस हुई [2] के रूप में कि suक्या कभी इस तरह विशेषाधिकार छोड़ने के लिए इस्तेमाल किया जाना चाहिए और क्या TIOCSTIबग इसलिए सभी पर एक बग है (मूल रूप से इसे "WONTFIX" बंद कर दिया )।

[१]: संपादित करें: इसमें SimplePAMAppsऔर जोड़ें hardened-shadow

[२]: सोलर डिज़ाइनर की कुछ (पुरानी) राय है जो मुझे लगता है कि एक पढ़ने लायक है।


2
यह एक उत्कृष्ट उत्तर है और सबसे अच्छा यह बताता है कि क्यों। काश तुम एक साल पहले यहां था :)
मिकी टी

1

मैं / dev / pts * पर स्वामित्व और अनुमतियों की जांच करूँगा या udv / dev / pts उपकरणों से संबंधित नए कॉन्फ़िगरेशन के लिए, जो अपग्रेड प्रक्रिया के दौरान प्रतिस्थापित नहीं किया गया था।

आप यह भी पता लगाने की कोशिश कर सकते हैं कि रूट के रूप में चलाकर syscal क्या त्रुटि उत्पन्न कर रहा है:

strace -f su - username 2>stderr.log

2
बेहतर -fहै कि स्ट्रेस में जोड़ें , अगर र ने शेल को एक उपप्रकार के रूप में चलाने का फैसला किया, जो अब सामान्य हो रहा है। टर्मिनल के अग्रभूमि प्रक्रिया समूह को सेट करने के लिए syscall है ioctl(..., TIOCSPGRP, ...)और हम पहले से ही जानते हैं कि यह ENOTTY (डिवाइस के लिए अनुपयुक्त ioctl) के साथ विफल हो गया है, ताकि स्ट्रेस का हिस्सा ज्यादा मदद नहीं करेगा। लेकिन (के साथ या बिना आदेश के दोनों संस्करणों की एक strace -) पता लगाने के लिए की तुलना में किया जा सकता है क्यों TIOCSPGRP विफल रहता है।
एलन करी

यह एक होनहार लीड की तरह लग रहा है। मेरे / देव / पीटीएस फ़ोल्डर में देख रहे हैं, ठीक दो आइटम हैं, अर्थात् 0, अनुमतियाँ जो कि मेरे द्वारा लॉग इन उपयोगकर्ता के रूप में 600 के रूप में सेट की गई हैं, और ptmxजड़ के स्वामित्व वाली है, शून्य अनुमतियों के साथ।
मिकी टीके

1
जब आपको No job controlसंदेश के बाद शेल प्रॉम्प्ट मिलता है , तो कमांड चलाएं ttyऔर यह आपको बताएगा कि आप किस tty पर हैं। फिर ls -lयह।
एलन करी

@AlanCurry, आप सही हैं, मैं जोड़ूंगा -f। धन्यवाद!
मिरिके वुटकोविसी

@AlanCurry - यह वापस आया। मैंने Mircea द्वारा सुझाई गई जानकारी के साथ मूल प्रश्न को अपडेट किया है।
मिकी टीके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.