Como posso corrigir o snap executado no kernel 4.18 do Ubuntu não-Linux?

1

Estou executando aplicativos snap em um sistema não-Ubuntu:

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

Quando eu snap run alguns aplicativos funcionam, mas outros retornam esse erro:

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

Seguindo sugestões no snapcraft.io Eu tentei:

  • Mudando para o núcleo beta. O mesmo erro.

  • Modificando o perfil do AppArmor da seguinte forma:

    1. Executando snap list para identificar exatamente qual revisão do núcleo que estou usando (core 16-2.35.2 r 5548)

    2. Modificando o arquivo apropriado ( /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine ) adicionando ptrace read peer=unconfined, ao final, conforme descrito.

    3. Atualizando o AppArmor com sudo apparmor_parser -r /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine

Mas isso não faz diferença. Os aplicativos com falha continuam a falhar. O que mais posso fazer?

Notas

Etapa 2 confirmada com:

$ 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,
}
    
por d3vid 28.09.2018 / 15:32

1 resposta

1

Fazer as seguintes alterações adicionais resolveu o problema. Estas etapas não funcionaram para outro usuário no snapcraft thread , mas eles trabalharam para mim. Não tenho certeza se alguma das alterações anteriores é de fato desnecessária.

  1. Modifique /etc/apparmor.d/usr.lib.snapd.snap-confine.real adicionando ptrace read peer=unconfined, no final da seguinte forma:

    $ 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*

por 09.10.2018 / 13:24