दो उपयोगकर्ताओं के बीच tmux सत्र साझा करने के अन्य तरीके क्या हैं?


106

मैं उसी मशीन पर किसी अन्य उपयोगकर्ता के साथ tmux सत्र साझा करने के लिए एक साफ और आसान तरीका ढूंढ रहा हूं। मैंने -S socket-pathविकल्प की कोशिश की है, लेकिन किसी और को सत्र से कनेक्ट करने से पहले इसे सॉकेट-पथ की सभी अनुमतियों को खोलने की आवश्यकता है। यह काम करता है, लेकिन यह थोड़ा बोझिल है। उदाहरण के लिए:

# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair

# Another user
$ tmux -S /tmp/pair attach

यह काम करता है, लेकिन दोनों उपयोगकर्ता अब एक ही tmux कॉन्फ़िगरेशन (सत्र शुरू करने वाले उपयोगकर्ता का कॉन्फ़िगरेशन) साझा करते हैं। क्या दोनों उपयोगकर्ताओं को अपने स्वयं के tmux config और अपने स्वयं के tmux कुंजी बाइंडिंग का उपयोग करने की अनुमति देने का कोई तरीका है?

बोनस अंक के लिए, आदर्श रूप से, अन्य उपयोगकर्ताओं को tmux सत्र की रीड-ओनली एक्सेस देना भी अच्छा होगा।


10
मैं बहुत आलसी हूँ, मैं आपके प्रश्न का उत्तर के रूप में उपयोग करता हूँ: D
phunehehe

जवाबों:


46

से https://github.com/zolrath/wemux :

wemux मल्टी-यूजर टर्मिनल को आसान और अधिक शक्तिशाली बनाने के लिए tmux को बढ़ाता है। यह उपयोगकर्ताओं को एक wemux सर्वर की मेजबानी करने की अनुमति देता है और ग्राहकों को इसमें शामिल होता है:

मिरर मोड क्लाइंट (आपकी मशीन पर एक और एसएसएच उपयोगकर्ता) को केवल सत्र तक पहुंच प्रदान करता है, जिससे वे आपको काम करने की अनुमति देते हैं, या

जोड़ी मोड ग्राहक और अपने आप को एक ही टर्मिनल में काम करने की अनुमति देता है (साझा कर्सर)

दुष्ट मोड क्लाइंट को उसी tmux सत्र में किसी अन्य विंडो (अलग कर्सर) में स्वतंत्र रूप से जोड़ी या काम करने की अनुमति देता है।

इसमें मल्टी-सर्वर सपोर्ट के साथ-साथ यूज़र लिस्टिंग और नोटिफिकेशन भी आते हैं, जब यूज़र अटैच / डिटैच होते हैं।

यह tuxux पर एक शेल्स्क्रिप्ट रैपर है - कोई आवश्यक संकलन नहीं।


16

मैंने उबंटू पर यह कोशिश की है, लेकिन यह नहीं देखता कि यह अन्य यूनिक्स वेरिएंट पर काम क्यों नहीं करेगा।

यदि दोनों उपयोगकर्ता एक सामान्य समूह के सदस्य हैं और सॉकेट-पथ उस समूह का उपयोग करता है तो दोनों उपयोगकर्ता ठीक संलग्न कर पाएंगे।

सॉकेट-पथ की अनुमतियाँ बदलने के बजाय हर बार जब आप एक बनाते हैं तो आप सॉकेट्स के लिए एक विशिष्ट निर्देशिका बना सकते हैं (मैंने उपयोग किया / var / tmux)।

पहले tmux उपयोगकर्ताओं के लिए एक समूह जोड़ें

$ addgroup $TMUX_GROUP

$ TMUX_GROUP पर सेट किए गए समूह के साथ एक निर्देशिका बनाएं और सेटगिड बिट का उपयोग करें ताकि निर्देशिका के भीतर बनाई गई फ़ाइलें स्वचालित रूप से समूह को $ TMUX_GROUP पर सेट करें।

$ mkdir /var/tmux
$ chgrp $TMUX_GROUP /var/tmux
$ chmod g+ws /var/tmux

अगला सुनिश्चित करें कि सत्र साझा करने के इच्छुक उपयोगकर्ता $ TMUX_GROUP के सदस्य हैं

$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2

2
यदि आपके पास एक फाइल सिस्टम है जो ACL का समर्थन करता है , तो आपको एक समूह का उपयोग करने की आवश्यकता नहीं है (और विशेष रूप से आपको किसी रूट हस्तक्षेप की आवश्यकता नहीं है)। लेकिन यह tmux कॉन्फ़िगरेशन को साझा करने के मुद्दे को हल नहीं करता है , क्या यह करता है?
गाइल्स

3
साझा सीज़न बनाने के लिए tmux -S $TMUX_GROUP/shared-session:। दूसरे खाते से इसे संलग्न करने के लिए:tmux -S $TMUX_GROUP/shared-session attach
jfs

उपरोक्त टिप्पणी (@JFSebastian द्वारा) उत्तर का हिस्सा होनी चाहिए। प्रस्तावित सेटअप ठीक है, लेकिन इसका वास्तविक उपयोग कैसे किया जाए, यह बताते हुए उत्तर छोटा पड़ जाता है। और इस पृष्ठ के सभी उत्तरों के लिए, यह उत्तर वह है जो समस्या का बेहतर समाधान करता है।
डॉ। बीको

12

जहां तक ​​मुझे पता है, "स्वच्छ" तरीके से अन्य उपयोगकर्ताओं के साथ सत्र साझा करना संभव नहीं है।

यदि क्लाइंट -rस्विच का उपयोग नहीं करता है, तो भी केवल-पढ़ने के लिए पहुँच संभव नहीं है ।

जैसा कि एक और टर्मिनल मल्टीप्लेक्स स्क्रीन उन सुविधाओं का समर्थन करता है जिनकी आप तलाश कर रहे हैं, दु: खद रूप से बोझिल तरीके से भी ... मुझे यकीन नहीं है कि यह आपके लिए एक विकल्प है, लेकिन हो सकता है कि कोई अन्य आपको यह उपयोगी लगेगा।

स्क्रीन के लिए समाधान :

एक सत्र की मेजबानी करें:

  • स्क्रीन की SUID बिट सेट होनी चाहिए: - /
  • के साथ सत्र खोलें screen -S sessionname
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

एक सत्र में शामिल हों:

  • screen -x username/sessionname

आप ( :aclchgया सभी के लिए) उपयोगकर्ता के लिए अनुमति बिट्स सेट कर सकते हैं :chacl। # संलग्न विंडोज़ को प्रभावित करेगा,? एपेंडेड आदेशों को प्रभावित करेगा।

उदाहरण:

  • :aclchg * -wx "#,?" केवल सभी उपयोगकर्ताओं के लिए पढ़ने के लिए सत्र अनुमतियाँ सेट करेगा
  • :aclchg foo +w 2 खिड़की 2 पर उपयोगकर्ता फू के लिए लेखन पहुँच देगा
  • :aclchg bar +x detach उपयोगकर्ता बार को एक सत्र की अनुमति देने के लिए अनुमति देगा

इसके लायक क्या है, मुझे लगता है कि tmux समाधान (हालांकि थोड़ा और अधिक क्रिया) वास्तव में "क्लीनर" है, क्योंकि इसमें फाइल सिस्टम के आसपास तैरने वाले सेट्यूड बायनेरी को छोड़ना शामिल नहीं है।
ग्लूकोज

दुर्भाग्य से, इस तरह से उपयोग किए जाने वाले tmux में एक सुरक्षा मुद्दा है: जिन्हें आप एक्सेस देते हैं वे आसानी से नए सत्र बना सकते हैं और उन चीजों को कर सकते हैं जो आप नहीं देख रहे हैं।
कर्ट जे। सैम्पसन

9

यह tmux के लिए अनन्य नहीं है, लेकिन अभी यह वही है जो मैं उपयोग कर रहा हूं:

आप script -f /path/to/some/fileएक फ़ाइल के लिए एक टर्मिनल सत्र लिखने के लिए उपयोग कर सकते हैं । -fलिखते हुए विकल्प फ़ाइल अद्यतन करता है।

कोई और (केवल फ़ाइल के लिए पठन अनुमतियाँ, यदि आप चाहते हैं) tail -fफ़ाइल, आपके टर्मिनल सत्र को देखने के लिए कर सकते हैं । -fविकल्प बनाता है tailउत्पादन जो कुछ भी संलग्न हो जाता है।

एक टर्मिनल के दो "सिंक" का संयोजन। जब व्हाईट tmux का उपयोग किया जाता है, तो यह भी होता है कि दोनों उपयोगकर्ताओं के अलग-अलग रिज़ॉल्यूशन होने पर होने वाले आकार से बचने का लाभ होता है। एक और विशेषता यह है कि प्रत्येक उपयोगकर्ता किसी अन्य निजी विंडो या सत्र पर काम कर सकता है।

एक संभावित असुविधा यह है कि कुछ कमांड (उदाहरण के लिए आधारित ncurses) आउटपुट के लिए अजीब चीजें कर सकते हैं, अनुक्रम भी बच सकते हैं (रंग)। हालाँकि, मैं इसे tmux के अंदर उपयोग कर रहा हूँ, और ऐसा लगता है कि tmux उन मुद्दों को ठीक करता है। मैं दूसरे उपयोगकर्ता को मैन पेज पढ़ते हुए देख सकता हूं और अन्य कमांड का उपयोग कर सकता हूं जो बफ़र्स बनाते हैं, रंग सही प्रदर्शित होते हैं, आदि।

यह एक-दूसरे के टर्मिनल को लिखने की अनुमति नहीं देता है (हालांकि इसके लिए कुछ अन्य समाधान जोड़ा जा सकता है)।

मुझे दो पैन के साथ एक खिड़की रखना पसंद है: script -fमेरे साथी को देखने के लिए एक फलक चल रहा है , उसके बगल में एक और जहां मैं tail -fइसका टर्मिनल हूं ।

यह ttys में भी काम करता है (और सॉकेट या नामित पाइप का उपयोग फ़ाइल के लिए भी किया जा सकता है)


मुझे आपका जवाब पसंद है! यह सरल और कार्यात्मक दोनों है!
JL
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.