Ubuntu 26.04 の wg-quick「wg0.conf: Permission denied」:新しい AppArmor のプロファイル
ubuntu-latest は、2026年10月19日から11月19日にかけて Ubuntu 24.04 から 26.04 に移ります(ほかに変わること)。Ubuntu 26.04 の apparmor のパッケージ(5.0.0~beta1)には、/usr/bin/wg-quick と /usr/bin/wg のプロファイルが加わりました。Ubuntu 24.04 にはどちらもありません。2つとも強制のモードで、WireGuard の設定とキーのファイルを /etc/wireguard/ の下でしか許しません。AppArmor は root でも越えられないので、sudo を付けても変わりません。
どう見えるか
/usr/bin/wg-quick: line 40: /home/runner/work/<repository>/<repository>/wg0.conf: Permission denied Error: Process completed with exit code 1.
設定をチェックアウトのディレクトリに書き、sudo wg-quick up ./wg0.conf を実行するステップで出ます。同じパスの同じファイルでも、24.04 では動きます。
報告のあったもの
niklaskeerl/easy-wireguard-action@v2で VPN につなぐワークフローが、ubuntu-latestでこのように落ち、ubuntu-24.04に固定されました(easy-wireguard-action #5)。アクションを/etc/wireguard/wg0.confとwg-quick up wg0に変えるプルリクエストがありますが、まだマージされていません(#4)。- この規則は Ubuntu 自身のプロファイルにあります:
file rw @{etc_rw}/wireguard/{,**},(profiles/apparmor.d/wg-quick。wgにも同じ行があります)。
直し方:設定を /etc/wireguard に書く
- name: Connect WireGuard
env:
WG_CONFIG: ${{ secrets.WG_CONFIG }}
run: |
sudo apt-get install --yes wireguard-tools
sudo install -d -m 700 /etc/wireguard
sudo install -m 600 /dev/null /etc/wireguard/wg0.conf
printf '%s\n' "$WG_CONFIG" | sudo tee /etc/wireguard/wg0.conf > /dev/null
sudo wg-quick up wg0
wg-quick にはパスではなくインターフェースの名前を渡し、/etc/wireguard/wg0.conf を読ませます。ファイルは秘密を入れる前にモード 600 の空のファイルとして作り、tee はログに出さずに書きます。wg setconf や wg set ... private-key も同じで、キーのファイルも /etc/wireguard/ の下に置きます。
WireGuard のアクションを使っているなら、フォークする前に、いまの版がすでにこうしていないかを確かめます。
または、ランナーを固定する
runs-on: ubuntu-24.04 には WireGuard のプロファイルが無いので、前のステップのまま動きます。GitHub がそのイメージを終えるまでは使えます。
見分け方
- 落ちた直後にカーネルのログを見ます:
sudo dmesg | grep 'apparmor="DENIED"' | grep wg。profile="wg-quick"と自分のファイルのパスがある行が出れば、この問題です。 sudo aa-status | grep wgで、wgとwg-quickのプロファイルが読み込まれているか、どのモードかが分かります。/etc/wireguard/の下のファイルで「Permission denied」になるなら、このプロファイルではありません。ファイルの持ち主とモードを確かめます。- 「Set up job」の Runner Image のグループにイメージが出ます。11月19日までは、再実行が 24.04 に当たって通ることがあるので、再実行が緑でも何も確かめたことになりません。
ほかの 26.04 の失敗
- Ubuntu 26.04 の Docker で Postgres が起動しない:7.0.0-42 などの新しいカーネルはコンテナのプロセスを
docker-default//&unconfinedとして動かすので、プロセスどうしでシグナルを送れず、gosuが CPU 100% で止まります。いまのところ報告はセルフホストのランナーです。 - Ubuntu 26.04 の setup-swift:
swift-actions/setup-swiftの v2 は「Version "26.04" of Ubuntu is not supported」で止まり、swift.org の 26.04 向けのビルドは Swift 6.4.0 からです。イメージの Swift 6.4.1 か、swiftのコンテナを使います。 - Ubuntu 26.04 の Docker-in-Docker:古い iptables のモジュールが読み込まれていないので、
iptables-legacyを使うコンテナの中の dockerd(dev container の docker-in-docker 機能の:2や:3など)が「can't initialize iptables table `nat'」で落ちます。機能を:4に上げるか、ランナーでモジュールを読み込みます。 - Ubuntu 26.04 の apt:名前が変わった・無くなったパッケージ。
- 「coreutils: unknown program」:基本のコマンドのほとんどが uutils です。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、Ubuntu は Canonical Ltd. の商標、WireGuard は Jason A. Donenfeld の登録商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・Canonical・WireGuard のプロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「The ubuntu-latest label will migrate to Ubuntu 26」 · Ubuntu 26.04 の Docker で Postgres が起動しない · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English