जब एक मशीन में लॉग इन किया जाता है, तो मैं आउटपुट के प्रत्येक उपयोगकर्ता के छद्म टर्मिनल डिवाइस (एस) का पता लगा सकता हूं w
। एक sysadmin होने के नाते, क्या यह संभव है कि उपयोगकर्ता को जागरूक किए बिना इस टर्मिनल पर छिपकर देखा जाए? दूसरे शब्दों में, मैं इस टर्मिनल पर सब कुछ अपने स्वयं के टर्मिनल पर आउटपुट के रूप में देखना चाहूंगा।
कृपया निम्नलिखित ध्यान दें:
- यह उपयोगकर्ता गतिविधियों की निगरानी के व्यावहारिक उपयोग के मामले के लिए नहीं है: मुझे पता है कि इसके लिए सिस्टम ऑडिटिंग उपकरण हैं। मैं बस उत्सुक हूँ अगर यह किया जा सकता है।
- मैं इस प्रश्न से अवगत हूँ और यह कवर नहीं करता कि मैं क्या पूछ रहा हूँ क्योंकि सभी समाधान सुझाए गए हैं या तो आक्रामक हैं (उपयोगकर्ता को पता होगा कि मैं क्या कर रहा हूं) या बहुत अधिक शोर उत्पन्न करता हूं (
strace
समाधान)। एक समाधान जो करीब आता है वह है जो उपयोग करने का सुझाव देता हैgdb
। लेकिन यह केवल मुझे दूसरे टर्मिनल के stdout को देखने देता है।
मैंने क्या कोशिश की है
मैंने अपने टर्मिनल से यह कोशिश की:
tee /dev/pts/user_pts </dev/pts/user_pts
यह मुझे प्रत्येक वर्ण को दूसरे छद्म टर्मिनल में उपयोगकर्ता प्रकार देखने की अनुमति देता है क्योंकि वे इसे टाइप करते हैं। समस्या यह है कि हर कुछ वर्ण, यह "स्किप" करेगा: यह एक टर्मिनल डिवाइस पर एक दुष्ट चरित्र दिखाएगा, लेकिन दूसरा नहीं। यह उपयोगकर्ता के छद्म टर्मिनल डिवाइस से किसी भी कमांड के निष्पादन को भी रोकता है। मुझे वास्तव में यकीन नहीं है कि ऐसा क्यों हो रहा है और क्या इसमें सुधार करने का कोई तरीका है।
मैं क्या देखना चाहूंगा
USER TERMINAL | MY TERMINAL
$ echo "Test" | # slick_command_here
Test | echo "Test"
$ | Test
ttysnoop
या शायदpeekfd
।