Come consentire agli snap access di / somedir


20

Mi sto solo bagnando i piedi con lo scatto. Ho installato vlc e voglio provare a usarlo. Tutti i miei file multimediali sono installati sotto /store, una montatura NFS. E gli snap non consentono l'accesso a quella directory.

Dopo aver cercato su google ho capito che posso accedere ai file /home/peterper l' :homeinterfaccia e /mediale :removable-mediainterfacce.

Ma in realtà mi piace /storee non voglio cambiare che, per essere /media/storeo /home/peter/storeo qualsiasi altra cosa rispetto /store.

C'è un modo per ottenere snap per consentire l'accesso ai miei snap (o forse solo vlc) /store, quindi snap è conforme alle mie convenzioni di denominazione o sono costretto a convertire le preferenze di snap?

Sembra molto inflessibile e spero che ci sia qualcosa che mi è sfuggito.


1
Potresti provare a rimuovere lo snap ( sudo snap remove vlc) quindi reinstallare con l'opzione classica. Può aiutare, forse no .. ( sudo snap install vlc --classic)
Doug

1
Grazie. Ho provato --classice --devmode- nessuno dei due ha funzionato. Ma voglio anche dare accesso esplicito a, /storema non a tutto come/supersecret
Peter V. Mørch

2
Esistono richieste ticket / bug / funzionalità aperte per lo snap? Vorrei anche quella funzione!
kravemir,

1
Sto ottenendo un vero odio per gli scatti.
Stephen Boston,

Risposte:


9

Con mio stupore, sembra davvero che /homesia hardcoded. mount-support.c contiene:

    const struct sc_mount mounts[] = {
        {"/dev"},   // because it contains devices on host OS
        {"/etc"},   // because that's where /etc/resolv.conf lives, perhaps a bad idea
        {"/home"},  // to support /home/*/snap and home interface
    ...

Wow. Questo mi stupisce. Ma il gioco è fatto.

Modifica: vedi anche il problema del Launchpad 1643706


1
Ehi, sviluppatore snapd qui responsabile di quel codice. Con tuo stupore, questa è la cosa giusta da fare. Non possiamo replicare il filesystem host e nessuna delle directory casuali che può contenere. Mentre puoi usare / archiviare qualcun altro può usare / stash o / qualunque cosa e non c'è modo di farlo funzionare in generale. Il mio consiglio è di montare semplicemente i tuoi file multimediali nella posizione desiderata, in / home / ... o in / media. Quindi rientrerà nei sistemi esistenti che gestiscono quei dati e le cose dovrebbero funzionare correttamente.
Zygmunt Krynicki,

@ZygmuntKrynicki o under / mnt, se l'interfaccia snap-media è stata collegata per lo snap.
jarno,

5
@ZygmuntKrynicki Anche io sono stupito. I punti di montaggio predefiniti devono essere configurati tramite un file di configurazione e non applicati.
markhor,

3
@ZygmuntKrynicki Grazie per essere entrato e aver spiegato che il codice fa ciò che intendi. Sono totalmente e totalmente in disaccordo con ciò che scrivi. I percorsi hard-coding sono una pratica molto scadente e non possono essere giustificati in modo significativo, anche in nome della sicurezza. È solo inflessibilità di base.
Stéphane Gourichon,

1

Quindi, per espandere la mia mini-risposta sopra, non c'è modo di farlo che sia generale, sicuro e sano. So che a tutti piace personalizzare il proprio filesystem ma che ha dei costi e questo è uno di questi.

Alla fine, attraverso il lavoro sui portali XDG, alcune applicazioni (in particolare le applicazioni grafiche) possono accedere ai file in luoghi arbitrari se dette applicazioni usano alcune delle API GTK introdotte di recente. Questo, quando eseguito sotto confinamento, raggiungerà un helper di fiducia, aprirà un'interfaccia utente affidabile che assomiglia a un selettore di file, parlerà con un file system FUSE speciale per esporre il file (in qualsiasi posizione) come una cosa speciale in / run /. .. da qualche parte che l'applicazione vede e le cose potrebbero andare bene.

Questo è progettato per cose facili da selezionare come lettori multimediali o editor di parole. Il tuo albero linux ospitato su /codeznon funzionerà così bene però.


2
Ciao Zygmunt, grazie per aver risposto. Il mio stupore si alza. Dici: "So che a tutti piace personalizzare il proprio filesystem ma che ha dei costi e questo è uno di questi". Solo così capisco: ti rendi conto ma scegli di ignorare che questa è una cosa comune da voler fare? Non sono a conoscenza di altri costi per questa convenzione di denominazione negli ultimi 15 anni.
Peter V. Mørch,

3
C'è qualche motivo per cui non si potrebbe mettere una linea come extradirs=/store:/other/locationo qualcosa dentro /etc/snapd.confo /etc/snapd/conf.d/vlc.conf. Proprio come tonnellate di altre applicazioni Linux là fuori. Sembra funzionare bene per esempio Docker. Questo è come se apache fosse in codice fisso DocumentRoot /var/www.
Peter V. Mørch,

1
Tuttavia, apprezzo molto il tuo tempo dedicato a scrivere qui, Zygmunt. Grazie.
Peter V. Mørch,

Non è così facile Il problema principale non è apparmor ma in realtà il fatto che in fase di esecuzione l'applicazione è in esecuzione in un diverso filesystem di root. Da quel punto di vista del processo / negozio non esiste - non è che non sia montato, non è affatto una directory. Ciò che sta facendo snap-confine è portare alcuni percorsi dal sistema host nello spazio dei nomi di mount dell'applicazione. Poiché il filesystem di root negli snaps è di sola lettura, non possiamo facilmente iniettare nuovi punti di mount (ad es. Per / store).
Zygmunt Krynicki

@ PeterV.Mørch potresti montare o spostare quei file in / mnt, assicurarti che l'interfaccia rimovibile sia stata collegata per lo snap e, se vuoi, creare collegamenti simbolici nelle posizioni originali.
jarno,

1

il montaggio della directory di destinazione in/home/*/snap/ è indicato come opzione; un semplice bind mount non ha funzionato per me, né un hardlink, né un link simbolico dei file o delle directory di destinazione nella directory di snap proposta o in qualsiasi sottodirectory di questi. Questa limitazione potrebbe essere dovuta ai file di destinazione esistenti al di fuori di una /home/*/directory, non ho testato mount / hard / symlink su file all'interno del /home/*/prefisso glob.

Tuttavia, una soluzione alternativa: una copia di file completa in /home/<myuser>/snap/<appname>/<somenewdirectory>ha funzionato per me. Mantenere copie complete del set di dati era ancora impossibile per me, ma ci sono molti strumenti per aiutare a gestire un tale vincolo; una copia ricorsiva manuale prima di utilizzare lo snap e la copia dei file modificati dopo è un'opzione se il set di dati è piccolo o addirittura atomico

Per nominare alcuni programmi di utilità per la copia di file che potrebbero aiutarti:

  • cp --verbose --archive --recursive /somedir ~/snap/somedire sorgente / destinazione viceversa
  • tar -C / -c somedir | tar -C ~/snap/ -xv è un esempio di copia di file basato su tar
  • rsync --archive /somedir ~/snap/somedir, rsync è popolare e ha molti wrapper / estensioni

  • qualsiasi utilità di backup basata su file (esempio grafico :)grsync dovrebbe essere utilizzabile poiché l'intero obiettivo è duplicare il set di dati avanti e indietro secondo necessità

  • cloni git, possibilmente, comunque i cloni locali di default usano hardlink quindi se stai usando git per gestire il filesystem io in uno schiocco, stai attento alla possibilità che senza disabilitare gli hard link al momento del clone, quel git clone potrebbe essere inaccessibile allo snap.


1
Questo non funzionerà nel caso di uso comune di un'unità NAS multi-terabyte montata su NFS.
Peter V. Mørch,

1

Non riesco a pubblicare un commento perché non ho abbastanza reputazione, ma posso pubblicare una risposta ..?

Comunque, questo non è il problema originale, ma se qualcun altro, come me, è arrivato qui alla ricerca di come dare accesso a / media a uno scatto (per esempio per usare Darktable, che è praticamente inutile senza di esso) puoi farlo tramite l'interfaccia dello snap-store o aggiungendo il 'plug' di supporti rimovibili all'app snap sulla riga di comando. Alcuni documenti qui: https://snapcraft.io/docs/interface-management


1
Ciao e benvenuto su Ask Ubuntu! Le risposte al solo link sono scoraggiate in quanto potrebbero diventare obsolete se il link scade in futuro. Posso suggerirti di aggiungere alcuni dettagli al tuo post (ad es. Riepilogando i passaggi / elogi da usare)?
FloT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.