Saya mencari cara yang bersih dan mudah untuk berbagi sesi tmux dengan pengguna lain di mesin yang sama. Saya sudah mencoba -S socket-path
opsi itu, tetapi itu membutuhkan membuka semua izin dari jalur socket 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 menggunakan konfigurasi tmux mereka sendiri dan binding kunci tmux masing-masing?
Untuk poin bonus, idealnya, akan lebih baik untuk memberikan akses read-only dari sesi tmux kepada pengguna lain.
Jawaban:
Dari https://github.com/zolrath/wemux :
Ini adalah pembungkus shellscript di atas tmux - tidak perlu dikompilasi.
sumber
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, kedua pengguna akan dapat melampirkan 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-tama tambahkan grup untuk pengguna tmux
Buat direktori dengan grup yang disetel ke $ TMUX_GROUP dan gunakan bit setgid sehingga file yang dibuat dalam direktori secara otomatis memiliki grup yang diatur ke $ TMUX_GROUP.
Selanjutnya pastikan pengguna yang ingin berbagi sesi adalah anggota $ TMUX_GROUP
sumber
tmux -S $TMUX_GROUP/shared-session
. Untuk melampirkannya dari akun lain:tmux -S $TMUX_GROUP/shared-session attach
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
sakelar.Karena layar terminal multiplexer lain 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:
screen -S sessionname
:multiuser on
: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 memengaruhi 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 penggunasumber
Ini tidak eksklusif untuk tmux, tetapi sekarang ini yang saya gunakan:
Anda dapat menggunakan
script -f /path/to/some/file
untuk menulis sesi terminal ke file. The-f
pilihan update file saat Anda mengetik.Orang lain (dengan hanya membaca izin ke file, jika Anda mau) dapat lakukan
tail -f
untuk melihat file, sesi terminal Anda. The-f
pilihan membuattail
keluaran apapun akan 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 bisa 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
untuk melihat rekan saya, yang lain di sebelahnya di mana sayatail -f
terminal.Ini bekerja di ttys juga (dan soket atau pipa bernama dapat digunakan juga untuk file)
sumber