দুটি ব্যবহারকারীর মধ্যে একটি টিএমএক্স সেশন ভাগ করে নেওয়ার অন্যান্য উপায় কী?


106

আমি একই মেশিনে অন্য ব্যবহারকারীর সাথে টিএমউक्स সেশন ভাগ করার জন্য একটি পরিষ্কার এবং সহজ উপায় খুঁজছি। আমি -S socket-pathবিকল্পটি চেষ্টা করেছি , তবে সেশনটির সাথে অন্য কেউ সংযোগ স্থাপন করার আগে এটির জন্য সকেট-পাথের সমস্ত অনুমতি খোলার প্রয়োজন। এটি কাজ করে তবে এটি কিছুটা জটিল। উদাহরণ স্বরূপ:

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

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

এটি কাজ করে, তবে উভয় ব্যবহারকারীরাই এখন একই tmux কনফিগারেশন ভাগ করে নিন (সেশনটি শুরু করা ব্যবহারকারীর কনফিগারেশন)। দু'জন ব্যবহারকারীর নিজস্ব tmux কনফিগারেশন এবং নিজস্ব স্বতন্ত্র tmux কী বাইন্ডিং ব্যবহার করার অনুমতি দেওয়ার কোনও উপায় আছে কি?

বোনাস পয়েন্টগুলির জন্য, আদর্শভাবে, অন্যান্য ব্যবহারকারীদের কাছে টিএমএক্স সেশনের কেবলমাত্র পঠনযোগ্য অ্যাক্সেস দেওয়া ভাল হবে।


10
আমি খুব অলস আমি আপনার উত্তরটি কেবল আমার উত্তর হিসাবে ব্যবহার করি: ডি
ফুনেহে

উত্তর:


46

Https://github.com/zolrath/wemux থেকে :

ওয়েমাক্স মাল্টি-ইউজার টার্মিনাল মাল্টিপ্লেক্সিং উভয়ই সহজ এবং আরও শক্তিশালী করতে tmux বাড়ায়। এটি ব্যবহারকারীদের ওয়েমাক্স সার্ভার হোস্ট করতে এবং ক্লায়েন্টদের সাথে যোগ দিতে দেয়:

মিরর মোড ক্লায়েন্টদের (আপনার মেশিনের অন্য কোনও এসএসএইচ ব্যবহারকারী) কেবলমাত্র সেশনে পঠনযোগ্য অ্যাক্সেস দেয়, যাতে আপনাকে কাজ করার অনুমতি দেয় বা বা

জুড়ি মোড ক্লায়েন্ট এবং নিজেকে একই টার্মিনালে কাজ করার অনুমতি দেয় (ভাগ করা কার্সার)

রোগ মোড ক্লায়েন্টকে একই টিএমউক্স সেশনে অন্য উইন্ডোতে (পৃথক কার্সার) স্বতন্ত্রভাবে জুড়তে বা কাজ করতে দেয়।

এটিতে মাল্টি-সার্ভার সমর্থন পাশাপাশি ব্যবহারকারীদের তালিকা সংযুক্তকরণ / বিচ্ছিন্নকরণের সময় ব্যবহারকারী তালিকা এবং বিজ্ঞপ্তিগুলির বৈশিষ্ট্য রয়েছে।

এটি tmux ওভার শেলসক্রিপ্টের মোড়ক - কোনও সংকলনের প্রয়োজন নেই।


16

আমি এটি উবুন্টুতে চেষ্টা করে দেখেছি তবে কেন এটি অন্যান্য ইউনিক্স রূপগুলিতে কাজ করবে না তা দেখতে পাচ্ছি না।

উভয় ব্যবহারকারী যদি একটি সাধারণ গোষ্ঠীর সদস্য হন এবং সকেট-পাথটি সেই গোষ্ঠীটি ব্যবহার করে তবে উভয় ব্যবহারকারীই জরিমানা সংযুক্ত করতে সক্ষম হবেন।

প্রতিবার আপনি যখন একটি তৈরি করেন সকেট-পাথের অনুমতি পরিবর্তন করার পরিবর্তে আপনি সকেটের জন্য একটি নির্দিষ্ট ডিরেক্টরি তৈরি করতে পারেন (আমি / var / tmux ব্যবহার করেছি)।

প্রথমে tmux ব্যবহারকারীদের জন্য একটি গ্রুপ যুক্ত করুন

$ addgroup $TMUX_GROUP

গ্রুপটি $ TMUX_GROUP এ সেট করে একটি ডিরেক্টরি তৈরি করুন এবং সেটগিড বিটটি ব্যবহার করুন যাতে ডিরেক্টরিতে তৈরি হওয়া ফাইলগুলি স্বয়ংক্রিয়ভাবে set 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
আপনার যদি এসিএল সমর্থন করে এমন একটি ফাইল সিস্টেম রয়েছে তবে আপনাকে একটি গ্রুপ ব্যবহার করার দরকার নেই (এবং বিশেষত আপনার কোনও রুট হস্তক্ষেপের প্রয়োজন নেই)। তবে এটি টিএমএক্স কনফিগারেশন ভাগ করে নেওয়ার বিষয়টি সমাধান করে না , তাই না?
গিলস

3
ভাগ করা sesion তৈরি করতে: tmux -S $TMUX_GROUP/shared-session। এটি অন্য অ্যাকাউন্ট থেকে সংযুক্ত করতে:tmux -S $TMUX_GROUP/shared-session attach
jfs

উপরের মন্তব্য (@ জেএফএসবেস্টিয়ান দ্বারা) উত্তরের অংশ হওয়া উচিত। প্রস্তাবিত সেটআপটি ঠিক আছে তবে কীভাবে আসল ব্যবহার করবেন তা ব্যাখ্যা করার সময় উত্তরটি হ্রাস পায়। এবং এই পৃষ্ঠার সমস্ত উত্তরের জন্য, এই উত্তরটিই সেই সমস্যার সমাধান করার পক্ষে উত্তম।
ডাঃ বেকো

12

আমি যতদূর জানি, "পরিষ্কার" উপায়ে অন্যান্য ব্যবহারকারীর সাথে সেশনগুলি ভাগ করা সম্ভব নয়।

ক্লায়েন্ট যদি -rস্যুইচ ব্যবহার না করে তবে কেবল পঠনযোগ্য অ্যাক্সেস সম্ভব নয় ।

যেহেতু অন্য টার্মিনাল মাল্টিপ্লেজার স্ক্রিনটি আপনি অনুসন্ধান করছেন এমন বৈশিষ্ট্যগুলি সমর্থন করে, দুঃখের বিষয়গুলিও জটিল আকারে ... আমি নিশ্চিত নই যে এটি আপনার পক্ষে একটি বিকল্প কিনা, তবে সম্ভবত অন্য কেউ এটি দরকারী বলে মনে করবেন।

পর্দার জন্য সমাধান :

একটি অধিবেশন হোস্ট করুন:

  • SID বিটের স্ক্রিন অবশ্যই সেট করতে হবে: - /
  • সঙ্গে সেশন খুলুন screen -S sessionname
  • ctrla + + :multiuser on
  • ctrla + + :acladd otherUsername

একটি অধিবেশন যোগদান:

  • screen -x username/sessionname

আপনি ব্যবহারকারীর জন্য অনুমতি বিট সেট করতে পারেন (সবার জন্য *) সাথে :aclchgবা দিয়ে :chacl। # যুক্ত উইন্ডোতে প্রভাব ফেলবে,? যুক্ত করা আদেশগুলি প্রভাবিত করবে।

উদাহরণ:

  • :aclchg * -wx "#,?" সমস্ত ব্যবহারকারীদের জন্য পড়ার জন্য অধিবেশন অনুমতিগুলি সেট করবে
  • :aclchg foo +w 2 উইন্ডো 2-এ ব্যবহারকারী foo- কে লেখার অ্যাক্সেস দেবে
  • :aclchg bar +x detach ব্যবহারকারী বারে একটি সেশন আলাদা করার অনুমতি দেবে

এটির মূল্যের জন্য, আমি অনুভব করি যে tmux সমাধান (যদিও কিছুটা আরও ভার্বোস) আসলে "ক্লিনার", কারণ এতে ফাইল সিস্টেমের চারপাশে ভাসমান সেটুইড বাইনারিগুলি অন্তর্ভুক্ত নয়।
গ্লাইফ

দুর্ভাগ্যক্রমে, tmux এটি এইভাবে ব্যবহার করে একটি সুরক্ষার সমস্যা রয়েছে: যাদের কাছে আপনি অ্যাক্সেস দেন তারা সহজেই নতুন সেশন তৈরি করতে পারে এবং সেগুলিতে এমন কিছু করতে পারে যা আপনি দেখেন না।
কর্ট জে সাম্পসন

9

এটি টিমাক্সের জন্য একচেটিয়া নয়, তবে এখনই এটি আমি ব্যবহার করছি:

আপনি script -f /path/to/some/fileকোনও ফাইলটিতে টার্মিনাল সেশন লিখতে ব্যবহার করতে পারেন । -fযখন আপনি টাইপ বিকল্প ফাইল আপডেট।

অন্য কেউ (যদি আপনি চান তবে কেবলমাত্র ফাইলটি পড়ার অনুমতি নিয়ে) tail -fফাইলটি দেখতে, আপনার টার্মিনাল সেশনটি করতে পারে। -fবিকল্প তোলে tailআউটপুট যাই হোক না কেন যোগ করা হয়।

দুটি সমন্বয় একটি টার্মিনালের ভিউ "সিঙ্ক"। যখন tmux whith ব্যবহৃত হয়, এর উভয় ব্যবহারকারীর পৃথক রেজোলিউশন থাকলে পুনরায় আকারটি এড়িয়ে যাওয়ার সুবিধাও রয়েছে। আরেকটি বৈশিষ্ট্য হ'ল প্রতিটি ব্যবহারকারী অন্য একটি ব্যক্তিগত উইন্ডো বা সেশনে কাজ করতে পারে।

একটি সম্ভাব্য অসুবিধা হ'ল কিছু কমান্ড (উদাহরণস্বরূপ ncurses) আউটপুটটিতে অদ্ভুত কাজ করতে পারে, এস্কেপ সিকোয়েন্সগুলিও (রঙ)। যাইহোক, আমি এটি টিএমউক্সের অভ্যন্তরে ব্যবহার করছি এবং মনে হচ্ছে যে tmux এই সমস্যাগুলি সমাধান করে। আমি অন্য ব্যবহারকারীর ম্যান পৃষ্ঠাগুলি পড়তে এবং অন্যান্য কমান্ডগুলি ব্যবহার করতে পারি যা বাফার তৈরি করে, বর্ণগুলি ডানদিকে প্রদর্শিত হয় ইত্যাদি can

এটি একে অপরের টার্মিনালে লিখতে অনুমতি দেয় না যদিও (সম্ভবত এর জন্য আরও কিছু সমাধান যুক্ত করা যেতে পারে)।

আমি দুটি পেনের সাথে একটি উইন্ডো রাখতে চাই: script -fআমার পীরের জন্য দেখার জন্য একটি ফলক , tail -fএটির টার্মিনাল যেখানে রয়েছে তার পাশে অন্য একটি ।

এটি টিটি-তেও কাজ করে (এবং সকেট বা নামযুক্ত পাইপগুলি ফাইলের জন্য খুব বেশি ব্যবহৃত হতে পারে)


আমি আপনার উত্তর পছন্দ! এটি সহজ এবং কার্যকরী উভয়ই!
জেএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.