clipscreenでXephyr画面をZoomアプリで共有(失敗)

オンライン勉強会などで画面共有する場合 Xephyr でメインと別の X server を起動してその画面を共有したりしています.
入れ子になった X の中でフルスクリーンにしたり,アプリケーションを切り替えたりしています.
しかし,小江戸らぐやオープンソースカンファレンスなどで利用しているビデオミーティングアプリの Zoom では画面共有時に Xephyr が出てきません.Chromium や Firefox や Electron アプリでは一覧に出てきて Xephyr の画面共有もうまく行きます.
仕方がないので Zoom での画面共有時は「画面の一部分」を使っています.

今回画面の指定領域を仮想ディスプレイとして利用できる clipscreen でかんたんに画面共有ができないか試してみました.

続きを読む

Linux版Zoomクライアントで画面共有部分が黒くなってしまう

Linux User Group の一つ.小江戸らぐのミーティングに参加しました.

こちらではZoomというビデオミーティングサービスを利用しています.Linux版のクライアントも提供されていて,今回公式クライアントの Debian 向けのパッケージを利用していました.(ウェブブラウザでも動作しますが少し制限があります.)

そして画面共有を行い発表をしようとしたのですが,画面共有は出来ているけれど共有部分が黒くなります.ウィンドウを移動しても追従してきます.ウィンドウ共有,部分共有でも同様.

続きを読む

Zoom のLinuxクライアントをFirejail経由で利用する

最近みんなよく使うようになった Zoom ですがみんなが使うようになっていろいろとプライバシーやセキュリティの問題が表層化してきている感じです.

Linux関連だとパッケージング周りがあまりよろしくない感じです(◞‸◟)

それ以外にもLinux版は利用者が少なく見つかっていないだけで問題がありそうな気がします.

とりあえず手元の環境ではpkg版は削除してなるべくウェブブラウザで利用をしておこうかと思っています.Linux版ChromiumではUA偽装が必要という記事も見かけましたが,

2020-04-03 に Version 80.0.3987.162 (Developer Build) built on Debian bullseye/sid, running on Debian bullseye/sid (64-bit) で試したところUA偽装せずに使えました.

$ chromium --temp-profile https://zoom.us/……

でもリソースはデスクトップ版より余計に食いそうです.デスクトップ版にはbinary tar ball もあるのでそれならバッケージングの問題は回避できると思います.
これを試してみます.

少し手間な気がしますが,pkg版の方もリポジトリはないのでアップデート毎にインストールし直しが必要なのであまり手間は代わりません.

ダウンロードしたアーカイブを /opt 以下に展開します.

$ tar tvf ~/Downloads/zoom_x86_64.tar.xz
$ tar xvf ~/Downloads/zoom_x86_64.tar.xz -C /opt

これで,` /opt/zoom/zoom` で起動しようとすると Segmentation fault になってしまいます.zoom.sh かな?と思ったけど中を見ると debug用のようです./opt/zoom/zoomlinux で実行すればokのようです.

次にアプリケーションをサンドボックス内で動かしてセキュリティリスクを軽減できる Firejail 経由で動くか試してみます.

先ずは Firejail を導入します.

$ sudo apt install firejail firejail-profiles

これでとりあえず,firejail /opt/zoom/zoomlinux で Firejail 経由で起動できます :)

$ firejail /opt/zoom/zoomlinux

Firejail の管理下にあるものは firejail --list で確認できます.firejail --tree で pstree のようにプロセスツリーが確認できます.負荷状況は firejail --top で topやvirtop 的な感じで確認できます.

Firejail のプロファイルを確認すると Zoom のものもありました.

$ dpkg -L firejail-profiles | grep zoom
/etc/firejail/zoom.profile

せっかくなのでこれを使います.pkg版のときは zoom という名前で起動するのでそのままでこのプロファイルを使うようですが,zoomlinux で起動すると認識してくれないようなので,zoomlinux 用のプロファイルを用意します.といってもコピーするだけです.

$ mkdir -p ~/.config/firejail
$ cp /etc/firejail/zoom.profile ~/.config/firejail/zoomlinux.profile

/opt/zoom/zoomlinux のようにパスが付いていると認識してくれないので,パスを通して起動します.

$ PATH=/opt/zoom:$PATH firejail zoomlinux
Reading profile /home/matoken/.config/firejail/zoomlinux.profile
  :

若しくは --profile オプションでプロファイルを指定します.(こっちのほうがいいかな?)

$ firejail --profile=zoom /opt/zoom/zoomlinux
Reading profile /etc/firejail/zoom.profile
  :

zoom プロファイル経由で起動できました :)

この状態だとファイルの共有をしようとすると共有するものが何もなかったり,チャットログの保存が出来なかったりします.

Screenshot from 2020 04 09 05 22 18

firejail のプロファイルを編集して許可したいファイルやディレクトリを設定します.以下は ~/Documtnts/Zoom を許可する例です.

$ diff -u /etc/firejail/zoom.profile ~/.config/firejail/zoomlinux.profile
--- /etc/firejail/zoom.profile  2020-01-21 03:53:34.000000000 +0900
+++ /home/matoken/.config/firejail/zoomlinux.profile    2020-04-09 06:35:43.591973723 +0900
@@ -7,6 +7,7 @@

 noblacklist ${HOME}/.config/zoomus.conf
 noblacklist ${HOME}/.zoom
+noblacklist ${HOME}/Documents/Zoom

 include disable-common.inc
 include disable-devel.inc
@@ -16,9 +17,11 @@
 mkdir ${HOME}/.cache/zoom
 mkfile ${HOME}/.config/zoomus.conf
 mkdir ${HOME}/.zoom
+mkdir ${HOME}/Documents/Zoom
 whitelist ${HOME}/.cache/zoom
 whitelist ${HOME}/.config/zoomus.conf
 whitelist ${HOME}/.zoom
+whitelist ${HOME}/Documents/Zoom
 include whitelist-common.inc

 caps.drop all

ということで少しは安全になったかな?
しばらくはこまめに Zoom の情報はアップデートしておこうと思います.

環境
$ /opt/zoom/zoom 2>&1 | grep Version
Linux Client Version is 3.5.382995.0407
$ dpkg-query -W firejail*
firejail        0.9.62-3
firejail-profiles       0.9.62-3
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64