web-dev-qa-db-ja.com

Ubuntu Linuxカーネル4.18以外でスナップランを修正するにはどうすればよいですか?

Ubuntu以外のシステムでスナップアプリケーションを実行しています:

$ snap version                                                                                                                                   
snap    2.30-5+b1
snapd   2.30-5+b1
series  16
pureos  
kernel  4.18.0-1-AMD64

snap runすると、一部のアプリケーションは機能しますが、他のアプリケーションは次のエラーを返します。

cannot perform readlinkat() on the mount namespace file descriptor of the init process: Permission denied

次の snapcraft.ioでの提案 、私は試しました:

  • ベータコアへの切り替え。同じエラー。

  • AppArmorプロファイルを次のように変更します。

    1. snap listを実行して、使用しているコアのリビジョンを正確に識別します(コア16-2.35.2 r 5548)

    2. 説明されているように、末尾に/etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confineを追加して、適切なファイル(ptrace read peer=unconfined,)を変更します。

    3. AppArmorをSudo apparmor_parser -r /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confineで更新

しかし、これは違いはありません。失敗したアプリケーションは引き続き失敗します。他に何ができますか?


メモ

手順2を次のように確認しました。

$ tail /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine                                                                                 
    # from the core snap but we are already inside the constructed mount
    # namespace. Here the apparmor kernel module re-constructs the path to
    # snap-update-ns using the "hostfs" mount entry rather than the more
    # "natural" /snap mount entry but we have no control over that.  This is
    # reported as (LP: #1716339). The variants here represent different
    # locations of snap mount directory across distributions.
    /var/lib/snapd/hostfs/{,var/lib/snapd/}snap/core/*/usr/lib/snapd/snap-update-ns r,

    ptrace read peer=unconfined,
}
1
david.libremone

次の追加の変更を行うと、問題が解決しました。これらの手順 snapcraftスレッドで別のユーザーには機能しませんでした が、私には機能しました。以前の変更のいずれかが実際に不要であるかどうかはわかりません。

  1. 次のように、最後に/etc/apparmor.d/usr.lib.snapd.snap-confine.realを追加して、ptrace read peer=unconfined,を変更します。

    $ tail /etc/apparmor.d/usr.lib.snapd.snap-confine.real                                                                                       
            # But we don't want anyone to touch /snap/bin
            audit deny mount /snap/bin/** -> /**,
            audit deny mount /** -> /snap/bin/**,
    
            # Allow the content interface to bind fonts from the Host filesystem
            mount options=(ro bind) /var/lib/snapd/hostfs/usr/share/fonts/ -> /snap/*/*/**,
        }
    
        ptrace read peer=unconfined,
    }
    
  2. Sudo apparmor_parser -r /etc/apparmor.d/*snap-confine*

1
david.libremone