Ubuntu Weekly Recipe

第621回 Ubuntu 20.04 LTSでxrdpを使用する

この記事を読むのに必要な時間:およそ 2.5 分

今回は第208回以来約8年ぶりに,X Window Systemで動作するRDP(Remote Desktop Protocol)サーバーである,xrdpを使用する方法を紹介します。

Ubuntuとxrdp

xrdpをめぐる状況は,第208回で紹介したときとはずいぶんと変わっています。

第549回で少し取り上げましたが,Hyper-Vクイック作成でインストールできるUbuntuにはすでにxrdpがインストールされており,拡張セッション機能を提供する役割を担っています。

もちろんxrdpはHyper-V専用ではありません。Hyper-Vクイック作成を使用しないでUbuntuをインストールした場合は,linux-vm-toolsにあるシェルスクリプトを実行すれば拡張セッションを有効にできます。よって,このシェルスクリプトを参考にすればHyper-V環境下でなくてもいい感じにxrdpが使用できるという推測が成り立ちます。

今回はUbuntu 20.04 LTSでしか動作確認していませんが,18.04 LTSなどでも同様に動作するでしょう。

なお,注意というほどでもないのですが,本記事の公開時点でUbuntu 20.04 LTS用のスクリプトはPull Requestの状態にあり,今後リリースされるものとは差異がある可能性があります。しかし筆者の環境で数日運用した限りでは特にエラーなどは表示されませんでしたので,問題ないものと思われます。

準備

いうまでもありませんがUbuntu 20.04 LTSを準備します。実機にxrdpをインストール機会がどの程度あるかはわかりませんが,まずは仮想マシンで試してみるのがいいでしょう。

xrdpをインストールするには,端末を起動して次のコマンドを実行してください。

$ sudo apt install xrdp

実はこの状態でもxrdpが使用できますが,セッションがおかしくなってしまいます図1ので,続けて次項で説明することを行ってください。

図1 何も設定しない状態でxrdp経由でログインすると,左側にDockが表示されないなどの差異がある

画像

実行するスクリプト

次の内容でシェルスクリプトを作成します。例としてスクリプト名はenhanced-session-mode.shとし,Ubuntu 20.04 LTSのホームフォルダーにコピーしたものとします。

なお前述のとおりlinux-vm-toolsのリポジトリにあるスクリプトを参考にしていますが,一部変更しています。

#!/bin/sh

# Add script to setup the ubuntu session properly
if [ ! -e /etc/xrdp/startubuntu.sh ]; then
cat >> /etc/xrdp/startubuntu.sh << EOF
#!/bin/sh
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
exec /etc/xrdp/startwm.sh
EOF
chmod a+x /etc/xrdp/startubuntu.sh
fi

sed -i_orig -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini

# rename the redirected drives to 'shared-drives'
sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini

# Changed the allowed_users
sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config

# Configure the policy xrdp session
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <<EOF
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF

# https://askubuntu.com/questions/1193810/authentication-required-to-refresh-system-repositories-in-ubuntu-19-10
cat > /etc/polkit-1/localauthority/50-local.d/46-allow-update-repo.pkla<<EOF
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.freedesktop.packagekit.system-sources-refresh
ResultAny=yes
ResultInactive=yes
ResultActive=yes
EOF

このスクリプトにはあまり解説すべきところはありません。3行目から20行目までがxrdp自体の設定であり,22行目から40行目までがxrdp使用中にパスワードを聞かれることがあるため,それを防ぐための設定です。32行目から40行目まではlinux-vm-toolsのスクリプトにはなく独自に追加しています。

次のように実行します。

$ sudo bash ./enhanced-session-mode.sh

実行後は再起動してください。なお,xrdp経由でのログイン時は「ログインのキーリングのロック解除」でパスワードを入力する欄が表示される場合があります図2⁠。

図2 ⁠ログインのキーリングのロック解除」にログインパスワードを入力する

画像

著者プロフィール

あわしろいくや

Ubuntu Japanese TeamとLibreOffice日本語チームのメンバー。LibreOffice,VirtualBox,Joplin,Budgieデスクトップなどの翻訳を手がける。技術同人サークルteam zpn主宰。ほか原稿執筆を少々。