Ubuntu가 아닌 Linux 커널 4.18에서 스냅 실행을 수정하는 방법은 무엇입니까?

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사용 중인 코어 버전을 정확히 식별합니다(Core 16-2.35.2 r 5548).

    2. /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine설명대로 해당 파일을 끝( )에 추가하여 수정합니다 .ptrace read peer=unconfined,

    3. 업데이트AppArmorsudo 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

다음과 같은 추가 변경으로 문제가 해결되었습니다. 이 단계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*

관련 정보