วิธีให้สิทธิ์เข้าถึง snapshot / somedir


20

ฉันแค่ทำให้เท้าเปียกด้วยสแน็ป ฉันติดตั้ง vlc แล้วและต้องการลองใช้งาน สื่อทั้งหมดของฉันถูกติดตั้งภายใต้/storeการเมานต์ NFS และ snaps ไม่อนุญาตให้เข้าถึงไดเรกทอรีนั้น

หลังจาก googling ฉันได้มาเข้าใจว่าฉันสามารถเข้าถึงไฟล์ภายใต้/home/peterสำหรับ:homeอินเตอร์เฟซและ/mediaสำหรับ:removable-mediaการเชื่อมต่อ

แต่ที่จริงผมชอบ/storeและไม่ต้องการที่จะมีการเปลี่ยนแปลงที่จะเป็น/media/storeหรือหรืออะไรอย่างอื่นมากกว่า/home/peter/store/store

มีวิธีรับ snap เพื่ออนุญาตให้เข้าถึง snapshot ของฉัน (หรืออาจแค่ vlc) /storeดังนั้น snap เป็นไปตามข้อกำหนดการตั้งชื่อของฉันหรือฉันถูกบังคับให้แปลงให้เป็นค่ากำหนดของ snap หรือไม่

ดูเหมือนจะยืดหยุ่นได้มากและฉันหวังว่าจะมีบางอย่างที่ฉันพลาดไป


1
คุณสามารถลองลบ snap ( sudo snap remove vlc) แล้วติดตั้งใหม่ด้วยตัวเลือกแบบคลาสสิก อาจช่วยได้อาจไม่ใช่ .. ( sudo snap install vlc --classic)
doug

1
ขอบคุณ ฉันพยายาม--classicและ--devmode- ไม่ทำงาน แต่ฉันต้องการให้เข้าถึงอย่างชัดเจน/storeแต่ไม่ใช่ทุกอย่างที่ต้องการ/supersecret
Peter V. Mørch

2
มีตั๋ว / บั๊ก / คำขอคุณสมบัติเปิดให้ถ่ายหรือไม่? ฉันต้องการคุณสมบัติเช่นกัน!
kravemir

1
ฉันรู้สึกเกลียดชังจริง ๆ
สตีเฟ่นบอสตัน

คำตอบ:


9

สำหรับความประหลาดใจของฉันมันดูเหมือน/homeยากมาก mount-support.cประกอบด้วย:

    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
    ...

ว้าว. นั่นทำให้ฉันประหลาดใจ แต่คุณมีมัน

แก้ไข: ดูปัญหา Launchpad 1643706


1
สวัสดีนักพัฒนา snapd ที่นี่รับผิดชอบรหัสนั้น สำหรับความประหลาดใจของคุณนั่นเป็นสิ่งที่ควรทำ เราไม่สามารถทำซ้ำระบบไฟล์โฮสต์และไดเรกทอรีสุ่มใด ๆ ที่อาจมี ในขณะที่คุณอาจใช้ / เก็บคนอื่นอาจใช้ / ซ่อนหรือ / อะไรก็ได้และไม่มีวิธีที่จะทำให้งานโดยทั่วไป คำแนะนำของฉันคือการเมานต์สื่อของคุณในสถานที่ที่คุณต้องการทั้งใน / home / ... หรือใน / สื่อ จากนั้นจะตกอยู่ภายใต้ระบบที่มีอยู่ซึ่งจัดการข้อมูลและสิ่งต่าง ๆ ควรทำงานอย่างถูกต้อง
Zygmunt Krynicki

@ZygmuntKrynicki หรือภายใต้ / mnt หากส่วนต่อประสานสื่อแบบถอดได้ได้รับการเชื่อมต่อสำหรับ snap
jarno

5
@ZygmuntKrynicki ฉันก็ประหลาดใจเช่นกัน จุดเมานต์เริ่มต้นควรได้รับการกำหนดค่าผ่านไฟล์ปรับแต่งและไม่บังคับใช้
markhor

4
@ZygmuntKrynicki ขอบคุณสำหรับการ popping และอธิบายว่ารหัสทำในสิ่งที่คุณตั้งใจ ฉันเคารพและไม่เห็นด้วยกับสิ่งที่คุณเขียนทั้งหมด เส้นทางที่เข้ารหัสยากนั้นเป็นวิธีปฏิบัติที่แย่มากและไม่สามารถพิสูจน์ได้อย่างมีความหมายแม้ในชื่อของความปลอดภัย มันเป็นแค่ความยืดหยุ่นขั้นพื้นฐาน
Stéphane Gourichon

1

ดังนั้นเพื่อขยายคำตอบแบบย่อส่วนบนของฉันไม่มีวิธีการทำเช่นนั้นโดยทั่วไปปลอดภัยและเสียง ฉันรู้ว่าทุกคนชอบที่จะปรับแต่งระบบไฟล์ของตัวเอง แต่มีค่าใช้จ่ายและนี่คือหนึ่งในนั้น

ในที่สุดผ่านการทำงานบนพอร์ทัล XDG แอปพลิเคชั่นบางอย่าง (โดยเฉพาะกราฟิกแอปพลิเคชัน) สามารถเข้าถึงไฟล์ในที่ใดก็ได้ถ้าแอปพลิเคชันใช้บางส่วนของ GTK APIs ที่เพิ่งเปิดตัว สิ่งนี้เมื่อทำงานภายใต้การคุมขังเอื้อมมือไปยังผู้ช่วยเหลือที่เชื่อถือได้ปรากฏขึ้น UI ที่เชื่อถือได้ที่ดูเหมือนตัวเลือกไฟล์ให้พูดคุยกับระบบไฟล์ FUSE พิเศษเพื่อแสดงไฟล์ (ในตำแหน่งใด ๆ ) เป็นสิ่งพิเศษใน .. บางแห่งที่แอปพลิเคชั่นเห็นและสิ่งต่าง ๆ อาจมีผลดี

สิ่งนี้ถูกออกแบบมาสำหรับสิ่งที่เป็นมิตรกับตัวเลือกไฟล์เช่นโปรแกรมเล่นสื่อหรือโปรแกรมแก้ไขคำ ทรีลินุกส์ของคุณโฮสต์ที่/codezไม่สามารถทำงานได้ดี


2
สวัสดี Zygmunt ขอบคุณสำหรับการตอบรับ ความประหลาดใจของฉันยืนอยู่ คุณพูดว่า: "ฉันรู้ว่าทุกคนชอบที่จะปรับแต่งระบบไฟล์ของพวกเขา แต่มีค่าใช้จ่ายและนี่คือหนึ่งในนั้น" เพียงแค่ฉันเข้าใจ: คุณตระหนัก แต่เลือกที่จะไม่สนใจว่านี่เป็นสิ่งที่อยากทำ ฉันไม่ทราบค่าใช้จ่ายอื่น ๆ สำหรับแบบแผนการตั้งชื่อนี้ในช่วง 15 ปีที่ผ่านมา
Peter V. Mørch

3
มีเหตุผลใดเหตุผลหนึ่งไม่สามารถวางสายเหมือนextradirs=/store:/other/locationหรือสิ่งที่อยู่ในหรือ/etc/snapd.conf /etc/snapd/conf.d/vlc.confเช่นเดียวกับแอปพลิเคชันอื่น ๆ ของ linux ดูเหมือนว่าจะทำงานได้ดีสำหรับ Docker เช่น นี้เป็นถ้า Apache DocumentRoot /var/wwwจะยากรหัส
Peter V. Mørch

1
อย่างไรก็ตามฉันขอขอบคุณที่คุณสละเวลาเขียนที่นี่ Zygmunt ขอบคุณ.
Peter V. Mørch

มันไม่ง่ายเลย ปัญหาหลักไม่ใช่ apparmor แต่จริง ๆ แล้วความจริงที่ว่ารันไทม์แอปพลิเคชันกำลังทำงานในระบบแฟ้มรากที่แตกต่างกัน จากมุมมองกระบวนการ / ร้านค้านั้นไม่มีอยู่ - ไม่ใช่ว่าจะไม่ถูกเมาท์ แต่ก็ไม่ใช่ไดเรกทอรีเลย สิ่งที่ snap-confine กำลังทำคือการนำพา ธบางส่วนจากระบบโฮสต์ไปยังเนมสเปซการเมาท์แอปพลิเคชัน เนื่องจากระบบไฟล์รูทในสแน็ปถูกอ่านเท่านั้นเราจึงไม่สามารถฉีดจุดเชื่อมต่อใหม่ได้อย่างง่ายดาย (เช่นสำหรับ / store)
Zygmunt Krynicki

@ PeterV.Mørchคุณสามารถเมานหรือย้ายไฟล์เหล่านั้นภายใต้ / mnt ตรวจสอบให้แน่ใจว่าได้เชื่อมต่ออินเตอร์เฟสสื่อบันทึกข้อมูลที่ถอดออกได้สำหรับ snap และสร้าง symlink ในตำแหน่งดั้งเดิมหากคุณต้องการ
jarno

1

การติดตั้งไดเรกทอรีเป้าหมายเข้า/home/*/snap/เป็นตัวเลือก การเชื่อมโยงแบบเรียบง่ายใช้งานไม่ได้สำหรับฉันทั้งฮาร์ดลิงก์หรือ symlink ของไฟล์เป้าหมายหรือไดเรกทอรีในไดเรกทอรี snap ที่เสนอหรือไดเรกทอรีย่อยใด ๆ ข้อ จำกัด นี้อาจเกิดจากไฟล์เป้าหมายที่มีอยู่นอก/home/*/ไดเรกทอรีฉันไม่ได้ทดสอบการเมานต์ / ฮาร์ด / symlink ไปยังไฟล์ที่อยู่ใน/home/*/คำนำหน้า glob

อย่างไรก็ตามการแก้ไขปัญหา A: การคัดลอกไฟล์เต็มรูปแบบเข้ากัน/home/<myuser>/snap/<appname>/<somenewdirectory>ได้ผลสำหรับฉัน การดูแลรักษาชุดข้อมูลฉบับเต็มยังเป็นไปไม่ได้สำหรับฉัน แต่มีเครื่องมือมากมายที่จะช่วยจัดการกับข้อ จำกัด ดังกล่าว สำเนาแบบเรียกซ้ำด้วยตนเองก่อนที่จะใช้ snap และคัดลอกไฟล์ที่ถูกแก้ไขกลับมาหลังจากนั้นเป็นตัวเลือกหากชุดข้อมูลของคุณมีขนาดเล็กหรือแม้กระทั่งปรมาณู

ในการตั้งชื่อโปรแกรมอรรถประโยชน์การคัดลอกไฟล์ที่สามารถช่วยคุณได้:

  • cp --verbose --archive --recursive /somedir ~/snap/somedirและแหล่งที่มา / เป้าหมายในทางกลับกัน
  • tar -C / -c somedir | tar -C ~/snap/ -xv เป็นตัวอย่างการคัดลอกไฟล์จาก tar
  • rsync --archive /somedir ~/snap/somedir, rsync เป็นที่นิยมและมีเสื้อคลุม / ส่วนขยายจำนวนมาก

  • ไฟล์สำรอง utillity ใด ๆ ที่ใช้ (ตัวอย่างกราฟิก:)grsyncควรใช้งานได้เนื่องจากเป้าหมายทั้งหมดคือการทำซ้ำชุดข้อมูลไปข้างหน้าและย้อนกลับตามความจำเป็น

  • อย่างไรก็ตามถ้าคุณใช้ git เพื่อจัดการระบบไฟล์ io ใน snap ให้ระวังความเป็นไปได้ที่โดยไม่ต้องปิดการใช้งานฮาร์ดลิงก์ในเวลาโคลน git clone นั้นไม่สามารถเข้าถึง snap ได้


1
สิ่งนี้จะไม่ทำงานในกรณีการใช้งานทั่วไปของไดรฟ์ NAS หลายเทราไบต์ที่เมาท์กับ NFS
Peter V. Mørch

1

ฉันไม่สามารถโพสต์ความคิดเห็นได้เพราะฉันไม่มีชื่อเสียงเพียงพอ แต่ฉันสามารถโพสต์คำตอบได้

อย่างไรก็ตามนี่ไม่ใช่ปัญหาดั้งเดิม แต่ถ้ามีคนอื่นเช่นฉันมาที่นี่เพื่อค้นหาวิธีการเข้าถึง / สื่อเพื่อสแน็ปอิน (เช่นการใช้ Darktable ซึ่งไร้ประโยชน์โดยไม่มีมัน) คุณสามารถทำได้ ไม่ว่าจะผ่านทางอินเทอร์เฟซ snap-store หรือโดยการเพิ่ม 'plug' สื่อที่ถอดเข้าได้ไปยังแอพ snap ของคุณในบรรทัดคำสั่ง เอกสารบางอย่างที่นี่: https://snapcraft.io/docs/interface-management


1
สวัสดีและยินดีต้อนรับสู่ Ask Ubuntu! ลิงก์คำตอบเฉพาะจะหมดกำลังใจเนื่องจากอาจล้าสมัยหากลิงก์นั้นหมดอายุในอนาคต ฉันขอแนะนำให้คุณเพิ่มรายละเอียดบางอย่างในโพสต์ของคุณ (เช่นการสรุปขั้นตอน / แนะนำให้ใช้)?
ลอย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.