Auto-connect request for personal-files interfaces — AppImage-Installer

Hello,

I am the author and maintainer of AppImage-Installer, an open-source desktop application for installing and managing AppImages on Linux.

I have uploaded the first alpha versions of the snap using strict confinement. The Snap Store has requested a manual review because the application requires access to several hidden directories in the ~/.local directory.


name: appimage-installer
description: Manage all of your AppImages in a simple but feature rich tool.
snapcraft: https://github.com/Anton-Lindauer/AppImage-Installer/blob/main/snap/snapcraft.yaml
upstream: https://github.com/Anton-Lindauer/AppImage-Installer
upstream-relation: I am the upstream author and maintainer of AppImage-Installer.
plugs:

  appimage-installer-icons:
    interface: personal-files
    request-type: auto-connection
    reasoning: |
      AppImage-Installer stores icons for installed AppImages in the
      user's local icon directory. Access to this directory is required
      so that installed applications can display their icons correctly
      in the application menu entry.

  appimage-installer-data:
    interface: personal-files
    request-type: auto-connection
    reasoning: |
      AppImage-Installer stores its log files in
      this application-specific directory. Access is required for the
      normal operation of the application and to persist data between
      launches.

  appimage-installer-desktop:
    interface: personal-files
    request-type: auto-connection
    reasoning: |
      AppImage-Installer creates and removes .desktop files for
      installed AppImages in the user's applications directory.
      This is required so that installed AppImages can appear in the
      user's application menu.

  appimage-installer-bin:
    interface: personal-files
    request-type: auto-connection
    reasoning: |
      AppImage-Installer creates launcher or wrapper files for installed
      AppImages in the user's local bin directory. This allows users to
      launch their installed AppImages from the command line.

Why auto-connect is required

These accesses are not merely for optional functionality.

AppImage-Installer relies on these directories for its normal operation. Without access to these user directories, the snap is severely impaired and important parts of the application do not function correctly.

I have deliberately restricted the requested permissions to the smallest directories I currently require. I am not requesting access to the user’s entire ~/.config or ~/.local/share directories.

The requested paths are:

~/.local/share/icons

~/.local/share/AppImage-Installer

~/.local/share/applications

~/.local/bin

I am using strict confinement and am requesting only the specific personal-files permissions required by the application.

The latest uploaded revision contains the reduced set of personal-files permissions described above. Earlier test revisions used broader paths during development; those have now been replaced with the minimal paths required by the application.

I would therefore like to request auto-connection for these four personal-files plugs.

Thank you for reviewing the request.

1 Like

This request has been added to the queue for review by the @reviewers team.

Hi @Anton-Lindauer

  • ~/.local/share/AppImage-Installer: For application specific contents, is it possible to make use of snap’s own home directory rather than user’s home directory?
  • ~/.local/bin, ~/.local/share/applications: Write access to both of these directory can be used to escape the sandbox that snap provides, -1 from me to provide auto-connection to the interfaces requiring write access to these directories.
  • ~/.local/share/icons: I would have preferred manual connection for write access but I am okay with granting auto-connection for this one.

I agree that write access to these directories are needed for an installer application to function properly but due to the reasons mentioned above, -1 from me to grant auto-connections to appimage-installer-desktop and appimage-installer-bin interfaces. What do other reviewers think?

Thank you for the review and for the feedback.

I have made the following changes based on your feedback:

  • I removed the personal-files interface for ~/.local/share/AppImage-Installer. The application now uses SNAP_USER_COMMON for its log files.

  • For ~/.local/share/applications and ~/.local/bin I am now requesting manual-connection instead of auto-connection, if auto-connection is not possible.

  • I am keeping the auto-connection request for ~/.local/share/icons, as discussed.

Thanks again for the feedback.

Hi @Anton-Lindauer

Thank you for making the changes. One more thing, for personal files, could you please change the name of the interfaces so that user intuitively know what they are granting? For example, ~/.local/bindot-local-bin, ~/.local/share/iconsdot-local-share-icons

Assuming the requested changes are implemented, I support (+1) approving auto-connection for dot-local-share-icons and manual connection for dot-local-bin and dot-local-share-applications once successfully vetted.

Hi @shishirsub10

I changed the interface names like you requested in the latest revision.

Hey folks

As @shishirsub10 mentioned, ~/.local/bin, ~/.local/share/applications enable a trivial confinement escape. It has been discussed several times (See Manual review: appack - #7 by yhu420 for a example). Thus, -1 from me even for manual connection. Installers and launchers are type of applications that does not fit great in the snap model.

Regarding dot-local-share-icons, I could consider a +1 if the access would be read only, or if the application would be exceptionally well-known and mature. In this case, I would only support manual-connection.

Hi @Anton-Lindauer,

Due to the reasons highlighted above, we could not grant access to the requested interfaces. Sorry for the inconvenience.

Thank you for the reviews.

Unfortunatly that means that I am tacking back the requests and I am asking you to delete the at the moment unlisted Snap, since the program is basically useless without access to these interfaces and I can’t find a delete button in the store.

Hi @Anton-Lindauer,

I do not have permissions to delete your snap. Please check out these instructions on how to delete a snap.