it-swarm-id.com

Apa cara lain untuk berbagi sesi tmux antara dua pengguna?

Saya mencari cara yang bersih dan mudah untuk berbagi sesi tmux dengan pengguna lain di mesin yang sama. Saya sudah mencoba -S socket-path pilihan, tetapi itu membutuhkan membuka semua izin dari jalur soket sebelum orang lain dapat terhubung ke sesi. Ini bekerja, tetapi sedikit rumit. Sebagai contoh:

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

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

Ini berfungsi, tetapi kedua pengguna sekarang berbagi konfigurasi tmux yang sama (konfigurasi pengguna yang memulai sesi). Apakah ada cara untuk memungkinkan kedua pengguna untuk menggunakan konfigurasi tmux mereka sendiri dan binding kunci tmux masing-masing?

Untuk poin bonus, idealnya, Nice juga memberikan akses read-only dari sesi tmux kepada pengguna lain.

112
Ryan McGeary

Dari https://github.com/zolrath/wemux :

wemux meningkatkan tmux untuk membuat multi-user terminal multiplexing menjadi lebih mudah dan lebih kuat. Hal ini memungkinkan pengguna untuk Host server wemux dan klien bergabung:

Mode Cermin memberi klien (pengguna SSH lain di mesin Anda) akses hanya baca ke sesi, memungkinkan mereka melihat Anda bekerja, atau

Pair Mode memungkinkan klien dan Anda sendiri untuk bekerja di terminal yang sama (kursor bersama)

Rogue Mode memungkinkan klien untuk memasangkan atau bekerja secara independen di jendela lain (kursor terpisah) dalam sesi tmux yang sama.

Ini fitur dukungan multi-server serta daftar pengguna dan pemberitahuan ketika pengguna melampirkan/melepaskan.

Ini adalah pembungkus shellscript di atas tmux - tidak perlu dikompilasi.

48
Peter

Saya sudah mencoba ini di Ubuntu tetapi tidak melihat mengapa itu tidak berfungsi pada varian unix lainnya.

Jika kedua pengguna adalah anggota dari grup yang sama dan jalur-soket menggunakan grup itu, maka kedua pengguna akan dapat memasang dengan baik.

Daripada harus mengubah izin dari socket-path setiap kali Anda membuatnya, Anda bisa membuat direktori spesifik untuk soket (saya menggunakan/var/tmux).

Pertama tambahkan grup untuk pengguna tmux

$ addgroup $TMUX_GROUP

Buat direktori dengan grup yang disetel ke $ TMUX_GROUP dan gunakan bit setgid sehingga file yang dibuat dalam direktori secara otomatis membuat grup diatur ke $ TMUX_GROUP.

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

Selanjutnya pastikan pengguna yang ingin berbagi sesi adalah anggota $ TMUX_GROUP

$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2
17
Stephen Paulger

Sejauh yang saya tahu, tidak mungkin untuk berbagi sesi dengan pengguna lain dengan cara "bersih".

Juga akses hanya baca tidak dimungkinkan, jika klien tidak menggunakan -r beralih.

Sebagai multiplexer terminal lain layar mendukung fitur yang Anda cari, sayangnya juga dengan cara yang rumit ... Saya tidak yakin apakah ini pilihan untuk Anda, tetapi mungkin orang lain akan menganggap ini berguna .

Solusi untuk layar:

Tuan rumah sesi:

  • SUID sedikit layar harus diatur: - /
  • Buka sesi dengan screen -S sessionname
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

Bergabunglah dengan sebuah sesi:

  • screen -x username/sessionname

Anda dapat mengatur bit izin untuk pengguna (* untuk semua) dengan :aclchg atau :chacl. # ditambahkan akan mempengaruhi windows,? ditambahkan akan mempengaruhi perintah.

Contoh:

  • :aclchg * -wx "#,?" akan mengatur izin sesi untuk hanya membaca untuk semua pengguna
  • :aclchg foo +w 2 akan memberikan akses tulis untuk foo pengguna di jendela 2
  • :aclchg bar +x detach akan memberikan izin untuk melepaskan sesi ke bilah pengguna
12
echox

Ini tidak eksklusif untuk tmux, tetapi sekarang ini yang saya gunakan:

Kamu bisa menggunakan script -f /path/to/some/file untuk menulis sesi terminal ke file. -f opsi memperbarui file saat Anda mengetik.

Orang lain (dengan hanya membaca izin ke file, jika Anda mau) dapat melakukan tail -f untuk melihat file, sesi terminal Anda. -f pilihan membuat tail menghasilkan apa pun yang ditambahkan.

Kombinasi keduanya "menyinkronkan" tampilan terminal. Ketika digunakan dengan tmux, itu juga memiliki keuntungan menghindari ukuran yang terjadi ketika kedua pengguna memiliki resolusi yang berbeda. Ciri lain adalah bahwa setiap pengguna dapat bekerja di jendela atau sesi pribadi lain.

Salah satu ketidaknyamanan potensial adalah bahwa beberapa perintah (berbasis ncurses misalnya) dapat melakukan hal-hal aneh untuk output, melarikan diri urutan juga (warna). Namun, saya menggunakan ini di dalam tmux, dan tampaknya tmux memperbaiki masalah tersebut. Saya dapat melihat pengguna lain membaca halaman manual dan menggunakan perintah lain yang membuat buffer, warna ditampilkan dengan benar, dll.

Ini tidak memungkinkan untuk menulis ke terminal masing-masing (mungkin beberapa solusi lain dapat ditambahkan untuk itu).

Saya suka memiliki jendela dengan dua panel: satu panel berjalan script -f agar teman saya dapat melihat, yang lain di sebelahnya tempat saya tail -f itu terminal.

Ia bekerja di ttys juga (dan soket atau pipa bernama dapat digunakan juga untuk file)

11
ferhtgoldaraz