it-swarm-vi.com

Những cách khác để chia sẻ một phiên tmux giữa hai người dùng là gì?

Tôi đang tìm kiếm một cách dễ dàng và dễ dàng để chia sẻ phiên tmux với người dùng khác trên cùng một máy. Tôi đã thử -S socket-path tùy chọn, nhưng nó yêu cầu mở tất cả các quyền của đường dẫn ổ cắm trước khi người khác có thể kết nối với phiên. Nó hoạt động, nhưng nó hơi cồng kềnh. Ví dụ:

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

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

Điều này hoạt động, nhưng cả hai người dùng hiện chia sẻ cùng một cấu hình tmux (cấu hình của người dùng đã khởi tạo phiên). Có cách nào để cho phép hai người dùng sử dụng cấu hình tmux của riêng họ và các ràng buộc khóa tmux riêng của họ không?

Đối với các điểm thưởng, lý tưởng nhất, cũng sẽ rất tuyệt khi cấp quyền truy cập chỉ đọc của phiên tmux cho người dùng khác.

112
Ryan McGeary

Từ https://github.com/zolrath/wemux :

wemux tăng cường tmux để làm cho việc ghép kênh thiết bị đầu cuối đa người dùng dễ dàng hơn và mạnh mẽ hơn. Nó cho phép người dùng Lưu trữ một máy chủ wemux và có khách hàng tham gia:

Chế độ gương cho phép khách hàng (một người dùng SSH khác trên máy của bạn) truy cập chỉ đọc vào phiên, cho phép họ thấy bạn làm việc hoặc

Chế độ Ghép đôi cho phép khách hàng và chính bạn làm việc trong cùng một thiết bị đầu cuối (con trỏ dùng chung)

Chế độ Rogue cho phép khách hàng ghép nối hoặc làm việc độc lập trong một cửa sổ khác (các con trỏ riêng biệt) trong cùng một phiên tmux.

Nó có tính năng hỗ trợ đa máy chủ cũng như danh sách người dùng và thông báo khi người dùng đính kèm/tách.

Nó là một trình bao bọc shellscript trên tmux - không cần biên dịch.

48
Peter

Tôi đã thử điều này trên Ubuntu nhưng không hiểu tại sao nó không hoạt động trên các biến thể unix khác.

Nếu cả hai người dùng là thành viên của một nhóm chung và đường dẫn ổ cắm sử dụng nhóm đó, cả hai người dùng sẽ có thể đính kèm tốt.

Thay vì phải thay đổi quyền của đường dẫn socket mỗi khi bạn tạo một thư mục, bạn có thể tạo một thư mục cụ thể cho socket (tôi đã sử dụng/var/tmux).

Đầu tiên thêm một nhóm cho người dùng tmux

$ addgroup $TMUX_GROUP

Tạo một thư mục với nhóm được đặt thành $ TMUX_GROUP và sử dụng bit setgid để các tệp được tạo trong thư mục tự động đặt nhóm thành $ TMUX_GROUP.

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

Tiếp theo, đảm bảo người dùng muốn chia sẻ phiên là thành viên của $ TMUX_GROUP

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

Theo tôi biết, không thể chia sẻ phiên với người dùng khác theo cách "sạch".

Cũng không thể truy cập chỉ đọc, nếu khách hàng không sử dụng -r công tắc điện.

Là một bộ ghép kênh đầu cuối khác màn hình hỗ trợ các tính năng bạn đang tìm kiếm, thật đáng buồn theo cách rườm rà ... Tôi không chắc đây có phải là một tùy chọn cho bạn không, nhưng có lẽ ai đó sẽ thấy điều này hữu ích .

Giải pháp cho màn hình:

Tổ chức một phiên:

  • Bit SUID của màn hình phải được đặt: - /
  • Mở phiên với screen -S sessionname
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

Tham gia một phiên:

  • screen -x username/sessionname

Bạn có thể đặt bit quyền cho người dùng (* cho tất cả) bằng :aclchg hoặc là :chacl. # nối sẽ ảnh hưởng đến windows ,? nối thêm sẽ ảnh hưởng đến các lệnh.

Ví dụ:

  • :aclchg * -wx "#,?" sẽ đặt quyền phiên chỉ đọc cho tất cả người dùng
  • :aclchg foo +w 2 sẽ cấp quyền truy cập ghi cho người dùng foo trên cửa sổ 2
  • :aclchg bar +x detach sẽ cho phép tách phiên làm việc với thanh người dùng
12
echox

Đây không phải là độc quyền của tmux, nhưng ngay bây giờ nó là thứ tôi đang sử dụng:

Bạn có thể dùng script -f /path/to/some/file để viết một phiên cuối vào một tệp. Các -f tùy chọn cập nhật tệp trong khi bạn nhập.

Một số người khác (chỉ có quyền đọc tệp, nếu bạn muốn) có thể làm tail -f để xem tệp, phiên cuối của bạn. Các -f tùy chọn làm cho tail xuất bất cứ thứ gì được nối.

Sự kết hợp của hai "đồng bộ hóa" khung nhìn của một thiết bị đầu cuối. Khi được sử dụng với tmux, nó cũng có ưu điểm là tránh thay đổi kích thước xảy ra khi cả hai người dùng có độ phân giải khác nhau. Một đặc điểm khác là mỗi người dùng có thể làm việc trên một cửa sổ hoặc phiên riêng tư khác.

Một bất tiện tiềm ẩn là một số lệnh (ví dụ dựa trên ncurses) có thể làm những điều kỳ lạ đối với đầu ra, cũng thoát các chuỗi (màu sắc). Tuy nhiên, tôi đang sử dụng cái này bên trong tmux và có vẻ như tmux đã khắc phục những vấn đề đó. Tôi có thể thấy người dùng khác đọc các trang man và sử dụng các lệnh khác tạo bộ đệm, màu sắc được hiển thị đúng, v.v.

Điều này không cho phép ghi vào thiết bị đầu cuối của nhau mặc dù (có thể một số giải pháp khác có thể được thêm vào cho điều đó).

Tôi muốn có một cửa sổ với hai cửa sổ: một cửa sổ đang chạy script -f để bạn bè của tôi nhìn thấy, một cái khác bên cạnh nó nơi tôi tail -f đó là thiết bị đầu cuối.

Nó cũng hoạt động trong ttys (và ổ cắm hoặc ống có tên cũng có thể được sử dụng cho tệp)

11
ferhtgoldaraz