Bagaimana cara memberi akses ke / somedir

19

Saya hanya mendapatkan kaki saya basah dengan jepret. Saya telah menginstal vlc dan ingin mencoba menggunakannya. Semua media saya dipasang di bawah /store, NFS mount. Dan terkunci tidak memungkinkan akses ke direktori itu.

Setelah googling saya menjadi mengerti bahwa saya dapat mengakses file di bawah /home/peteruntuk :homeantarmuka dan /mediauntuk :removable-mediaantarmuka.

Tapi saya sebenarnya suka /storedan tidak ingin mengubahnya menjadi /media/storeatau /home/peter/storeatau apa pun selain itu /store.

Apakah ada cara untuk mendapatkan snap untuk memungkinkan snap saya (atau mungkin hanya vlc) akses /store, jadi snap sesuai dengan konvensi penamaan saya atau saya dipaksa untuk mengkonversi ke preferensi snap?

Tampaknya sangat tidak fleksibel, dan saya berharap ada sesuatu yang saya lewatkan.

Peter V. Mørch
sumber
1
Anda dapat mencoba menghapus snap ( sudo snap remove vlc) lalu instal ulang dengan opsi klasik. Semoga membantu, mungkin tidak .. ( sudo snap install vlc --classic)
doug
1
Terima kasih. Saya mencoba --classicdan --devmode- tidak berhasil. Tetapi saya juga ingin memberikan akses secara eksplisit /storetetapi tidak semuanya seperti/supersecret
Peter V. Mørch
2
Apakah ada tiket / bug / permintaan fitur terbuka untuk snap? Saya ingin fitur itu juga!
kravemir
1
Aku benar-benar benci pada bentak.
Stephen Boston
@kravemir: Lihat edisi Launchpad 1643706
Peter V. Mørch

Jawaban:

9

Yang mengejutkan saya, sepertinya benar-benar /homehardcoded. mount-support.c berisi:

    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. Itu mengejutkan saya. Tapi begitulah.

Sunting: Lihat juga edisi Launchpad 1643706

Peter V. Mørch
sumber
1
Hai, pengembang snapd di sini bertanggung jawab untuk kode itu. Yang mengherankan Anda adalah hal yang benar untuk dilakukan. Kami tidak dapat mereplikasi sistem file host dan direktori acak mana pun di dalamnya. Meskipun Anda dapat menggunakan / menyimpan orang lain dapat menggunakan / simpanan atau / apa pun dan tidak ada cara untuk membuat itu berfungsi secara umum. Rekomendasi saya adalah cukup pasang media Anda di lokasi yang Anda inginkan, baik di / home / ... atau di / media. Maka akan jatuh di bawah sistem yang ada yang mengelola bahwa data dan hal-hal harus bekerja dengan benar.
Zygmunt Krynicki
@ZygmuntKrynicki atau di bawah / mnt, jika antarmuka removable-media telah terhubung untuk snap.
jarno
5
@ZygmuntKrynicki Saya juga heran. Poin pemasangan default harus dikonfigurasikan melalui file konfigurasi dan tidak ditegakkan.
markhor
3
@ZygmuntKrynicki Terima kasih telah muncul dan menjelaskan bahwa kode melakukan apa yang Anda inginkan. Saya dengan hormat dan sepenuhnya tidak setuju dengan apa yang Anda tulis. Jalur hard-coding adalah praktik yang sangat buruk dan tidak dapat dibenarkan secara bermakna, bahkan atas nama keamanan. Itu hanya ketidakfleksibelan dasar.
Stéphane Gourichon
1

Jadi untuk memperluas jawaban mini saya di atas, tidak ada cara untuk melakukan itu secara umum, aman dan sehat. Saya tahu semua orang suka mengkustomisasi sistem file mereka tetapi ada beberapa biaya dan ini adalah salah satunya.

Akhirnya, melalui pekerjaan pada portal XDG, aplikasi tertentu (terutama aplikasi grafis) dapat mendapatkan akses ke file di tempat sewenang-wenang jika jika aplikasi tersebut menggunakan beberapa API GTK yang baru diperkenalkan. Ini akan, ketika berjalan di bawah kurungan, menjangkau ke pembantu yang tepercaya, muncul UI tepercaya yang terlihat seperti pemetik file, berbicara dengan sistem file FUSE khusus untuk mengekspos file (di lokasi apa pun) sebagai hal khusus dalam / run /. .. suatu tempat yang dilihat aplikasi dan segala sesuatunya dapat berjalan dengan baik.

Ini dirancang untuk hal-hal yang ramah pada pemilih file seperti pemutar media atau editor kata. Pohon linux Anda yang dihosting di /codeztidak akan bekerja dengan baik.

Zygmunt Krynicki
sumber
2
Hai Zygmunt, terima kasih sudah menjawab. Ketakjubanku bertahan. Anda berkata: "Saya tahu semua orang suka mengkustomisasi sistem file mereka tetapi ada beberapa biaya dan ini salah satunya." Jadi saya mengerti: Anda sadar tetapi memilih untuk mengabaikan bahwa ini adalah hal umum yang ingin Anda lakukan? Saya tidak mengetahui adanya biaya lain untuk konvensi penamaan ini selama 15 tahun terakhir.
Peter V. Mørch
3
Apakah ada alasan mengapa seseorang tidak bisa meletakkan garis seperti extradirs=/store:/other/locationatau sesuatu di dalam /etc/snapd.confatau /etc/snapd/conf.d/vlc.conf. Sama seperti banyak aplikasi linux lainnya di luar sana. Tampaknya berfungsi dengan baik untuk misalnya Docker. Ini seolah-olah apache ke kode keras DocumentRoot /var/www.
Peter V. Mørch
1
Namun saya sangat menghargai Anda meluangkan waktu untuk menulis di sini, Zygmunt. Terima kasih.
Peter V. Mørch
Itu tidak mudah. Masalah utama bukanlah apparmor tetapi sebenarnya fakta bahwa pada saat runtime aplikasi berjalan dalam sistem file root yang berbeda. Dari sudut pandang proses / toko tidak ada - bukan karena itu tidak di-mount, hanya saja bukan direktori sama sekali. Yang dilakukan snap-confine adalah membawa beberapa jalur dari sistem host ke dalam aplikasi mount namespace. Karena sistem file root di snaps hanya dibaca, kami tidak dapat dengan mudah menyuntikkan titik mount baru (misalnya untuk / menyimpan).
Zygmunt Krynicki
@ PeterV.Mørch Anda dapat memasang atau memindahkan file-file tersebut di bawah / mnt, pastikan antarmuka media yang dapat dilepas telah terhubung untuk snap, dan buat symlink di lokasi asli, jika Anda mau.
jarno
1

pemasangan direktori target ke/home/*/snap/ disebutkan sebagai opsi; bind mount sederhana tidak berfungsi untuk saya, tidak ada hardlink, atau symlink dari file target atau direktori ke direktori snap yang diusulkan, atau subdirektori daripadanya. Keterbatasan ini dapat disebabkan oleh file target yang ada di luar /home/*/direktori, saya tidak menguji mounts / hard / symlinks ke file dalam /home/*/prefix glob.

Namun, Penanganan Masalah: salinan file lengkap menjadi /home/<myuser>/snap/<appname>/<somenewdirectory>berhasil bagi saya. Mempertahankan salinan dataset lengkap belum memungkinkan bagi saya, tetapi ada banyak alat untuk membantu mengatasi kendala seperti itu; salinan rekursif manual sebelum menggunakan snap, dan menyalin file yang dimodifikasi kembali setelah adalah pilihan jika dataset Anda kecil atau bahkan atom

Untuk menyebutkan beberapa utilitas penyalinan file yang dapat membantu Anda:

  • cp --verbose --archive --recursive /somedir ~/snap/somedir, dan sumber / target sebaliknya
  • tar -C / -c somedir | tar -C ~/snap/ -xv adalah contoh salinan file berbasis tar
  • rsync --archive /somedir ~/snap/somedir, rsync populer dan memiliki banyak wrapper / ekstensi

  • setiap utilitas cadangan berbasis file (contoh grafis :)grsync harus dapat digunakan karena seluruh tujuannya adalah untuk menggandakan dataset maju dan mundur sesuai kebutuhan

  • git klon, mungkin, namun klon lokal secara default menggunakan hardlink jadi jika Anda menggunakan git untuk mengelola filesystem io menjadi snap, berhati-hatilah terhadap kemungkinan bahwa tanpa menonaktifkan tautan keras pada waktu klon, klon git mungkin tidak dapat diakses oleh snap.

ThorSummoner
sumber
1
Ini tidak akan berfungsi dalam kasus penggunaan umum drive NAS multi-terabyte yang dipasang di NFS.
Peter V. Mørch
1

Saya tidak dapat mengirim komentar karena saya tidak memiliki reputasi yang cukup, tetapi saya dapat mengirim jawaban ..?

Bagaimanapun, ini bukan masalah asli, tetapi jika orang lain, seperti saya, tiba di sini mencari cara untuk memberikan akses ke / media dengan cepat (misalnya untuk menggunakan Darktable, yang pada dasarnya tidak berguna tanpa itu) Anda dapat melakukannya baik melalui antarmuka snap-store, atau dengan menambahkan 'plug' media yang dapat dilepas ke aplikasi snap Anda pada baris perintah. Beberapa dokumen di sini: https://snapcraft.io/docs/interface-management

Daniel Murray
sumber
1
Halo dan selamat datang di Tanya Ubuntu! Jawaban hanya tautan tidak disarankan karena mungkin akan usang jika tautan tersebut kedaluwarsa di masa mendatang. Bolehkah saya menyarankan Anda untuk menambahkan beberapa detail ke posting Anda (mis. Merangkum langkah-langkah / memuji untuk digunakan)?
FloT