जैसा कि izx ने टिप्पणी की है, यह केवल कर्नेल बग के कारण ही हो सकता है। तो जो कोई भी वर्तमान में इस समस्या का उत्पादन कर सकता है - जिसमें और विशेष रूप से इस प्रश्न का मूल पोस्टर शामिल है - उस पृष्ठ को अच्छी तरह से और सावधानीपूर्वक पढ़कर, और फिर प्रभावित मशीन पर चलकर इसे बग के रूप में रिपोर्ट करने के लिए अच्छी तरह से सलाह दी जाएगीubuntu-bug linux
। यह linux
उबंटू के खिलाफ रिपोर्ट किया जाना चाहिए , और एक मेनलाइन (अपस्ट्रीम) कर्नेल के खिलाफ नहीं , जब तक कि आप इसे मेनलाइन कर्नेल पर नहीं बना सकते (आपको yama
लोड करना होगा)।
उबंटू 10.10 से शुरू होने वाले उबंटू के हर संस्करण में अपेक्षित व्यवहार वह प्रक्रिया है जब तक कि B एक A (या A के रूप में रन root
) का प्रत्यक्ष बच्चा नहीं है, तब तक प्रक्रिया A एक चल रही प्रक्रिया B का पता नहीं लगा सकती है । यह एक सुरक्षा वृद्धि है, जो इसे बनाता है ताकि एक प्रक्रिया जो एक हमलावर द्वारा समझौता की गई है, कर्नेल द्वारा प्रदान की गई डिबगिंग सुविधाओं का उपयोग अन्य प्रक्रियाओं से जानकारी खोजने के लिए नहीं कर सकती है। यह सिक्योरिटी फीचर्स कम्युनिटी विकी पेज के ptrace स्कोप सेक्शन में बताया गया है ।
यह प्रतिबंधात्मक व्यवहार डिफ़ॉल्ट है लेकिन किसी भी चल रही प्रक्रिया B का पता लगाने के लिए एक प्रक्रिया A को अनुमति देने के लिए परिवर्तित किया जा सकता है जो कि प्रक्रिया A के समान उपयोगकर्ता ID के साथ चलाया जाता है। यही है, आप अपनी किसी भी प्रक्रिया को एक दूसरे को डिबग करने की अनुमति देने के लिए अपने सिस्टम को कॉन्फ़िगर कर सकते हैं। यह डिबगर्स को पहले से चल रही प्रक्रियाओं में संलग्न करने को सरल बनाता है।
इसके लिए सेटिंग /proc/sys/kernel/yama/ptrace_scope
sysctl द्वारा उजागर की गई है । 1
अधिक प्रतिबंधात्मक व्यवहार और 0
कम प्रतिबंधात्मक व्यवहार को दर्शाता है। सेटिंग को इसके साथ पढ़ा जा सकता है:
cat /proc/sys/kernel/yama/ptrace_scope
निम्न प्रतिबंधक (गैर-डिफ़ॉल्ट) व्यवहार को इसके साथ सेट किया जा सकता है:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
और अधिक प्रतिबंधात्मक (डिफ़ॉल्ट) व्यवहार को इसके साथ सेट (या वापस सेट) किया जा सकता है:
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
इतना ही नहीं इस सवाल का एक संलग्न करने में असमर्थ के मूल पोस्टर था strace
के साथ एक वर्तमान में चल प्रक्रिया के लिए उदाहरण ptrace-scope
के लिए सेट 0
है, लेकिन मूल पोस्टर अब भी जब चल रहा है ऐसा करने में असमर्थ थे strace
के रूप में root
। यह देखना मुश्किल है कि यह कुछ भी हो सकता है लेकिन बग - मैं दृढ़ता से इसे एक के रूप में रिपोर्ट करने की सलाह देता हूं।
सबसे पहले, मैंने सोचा था कि मैं उस समस्या को पुन: उत्पन्न करने में सक्षम था जहां एक ptrace_scope
सेटिंग 0
को नजरअंदाज कर दिया जाता है और जैसे कि वह है 1
। लेकिन अब मुझे विश्वास नहीं हुआ कि यह मामला है, क्योंकि मैंने सभी समान चीजें फिर से की हैं, और मैं समस्या को पुन: पेश नहीं कर सकता। मैंने इस पर परीक्षण किया है:
- लुबंटू सटीक amd64 भौतिक मशीन मैं अपने मुख्य बॉक्स के रूप में दैनिक उपयोग करता हूं।
- एक VirtualBox वर्चुअल मशीन एक ल्यूबंटू सटीक i386 (12.04) लाइव सीडी चला रही है।
- एक समान वर्चुअलबॉक्स वर्चुअल मशीन क्वांटल i386 (उबंटू + 1) डेली-लाइव (20120608) चला रही है।
सभी तीन मशीनों पर, अपेक्षित व्यवहार होता है, और मैं इस स्थिति को पुन: उत्पन्न नहीं कर सकता कि इस प्रश्न का मूल पोस्टर किसके बारे में पूछ रहा है। यहाँ टर्मिनल से कुछ पाठ है (सटीक लाइव सिस्टम से):
lubuntu@lubuntu:~$ nano&
[1] 3492
lubuntu@lubuntu:~$ strace -p 3492
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
[1]+ Stopped nano
lubuntu@lubuntu:~$ cat /proc/sys/kernel/yama/ptrace_scope
1
lubuntu@lubuntu:~$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
0
lubuntu@lubuntu:~$ strace -p 3492
Process 3492 attached - interrupt to quit
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
strace
जब तक मैंने अपेक्षा के अनुसार उसे निलंबित नहीं किया, तब तक उसने संदेश देना जारी रखा।
मैं इसे बग के रूप में रिपोर्ट करने के लिए फिर से सिफारिश करके समाप्त करता हूं। पाठ के लिए https://bugs.launchpad.net (जिसमें कोई भी कथित उबंटू कीड़े शामिल हैं) पर अधिकतम समावेशी खोज केवल कुछ मुट्ठी भर परिणामptrace_scope
पैदा करती है , जिसमें स्पष्ट रूप से इस बग के लिए कोई भी रिपोर्ट नहीं है । बग की रिपोर्ट करने से दूसरों को मदद मिलेगी, वर्कअराउंड या फिक्स हो सकता है, और शायद इस समस्या पर काम करने के लिए आगे बढ़ने का एकमात्र सार्थक तरीका है (यह समस्या अभी भी हो रही है)।
strace /bin/echo test
? क्या वही त्रुटि संदेश देता है?