/ somedir에 스냅 액세스 권한을 부여하는 방법


11

나는 단지 내 발을 물에 젖게하고있다. vlc를 설치했으며 사용하려고합니다. 모든 미디어는 /storeNFS 마운트 아래 에 설치됩니다 . 그리고 스냅은 해당 디렉토리에 대한 액세스를 허용하지 않습니다.

인터넷 검색 후 나는 아래의 파일에 액세스 할 수 있음을 이해하게 한 /home/peter에 대한 :home인터페이스와 /media에 대한 :removable-media인터페이스를 제공합니다.

하지만 실제로 좋아 /store하고 그 일을 변경하지 않으 /media/store또는 /home/peter/store나보다 다른 것 /store.

내 스냅 (또는 아마도 vlc)에 액세스 할 수 있도록 스냅 할 수있는 방법이 있습니까? /store따라서 스냅은 내 이름 지정 규칙을 따르거나 스냅의 환경 설정으로 변환해야합니까?

그것은 매우 융통성이 없어 보였고, 내가 놓친 것이 있기를 바라고 있습니다.


1
스냅 ( sudo snap remove vlc)을 제거한 다음 클래식 옵션으로 다시 설치할 수 있습니다. 도움이 될 수 있습니다 .. ( sudo snap install vlc --classic)
doug

1
감사. 나는 시도하지 --classic--devmode- 어느 쪽도했다. 그러나 또한 명시 적으로 액세스하고 /store싶지만 다음과 같은 것은 아닙니다 /supersecret
.

1
빠른 티켓 / 버그 / 기능 요청이 있습니까? 저 기능도 원합니다!
kravemir

나는 스냅에 대한 진정한 증오를 얻고 있습니다.
Stephen Boston

답변:


3

놀랍게도 실제로 /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
    ...

와. 저를 놀라게합니다. 그러나 거기에 있습니다.

편집 : 런치 패드 문제 1643706 참조


1
이 코드를 담당 한 스냅 개발자입니다. 놀랍게도 실제로 옳은 일입니다. 호스트 파일 시스템과 여기에 포함 된 임의의 임의 디렉토리를 복제 할 수 없습니다. / store를 사용할 수 있지만 다른 사람이 / stash 또는 / what을 사용할 수는 있지만 일반적인 방법은 없습니다. / home / ... 또는 / media에서 원하는 위치에 미디어를 간단히 마운트하는 것이 좋습니다. 그런 다음 해당 데이터를 관리하는 기존 시스템에 속하며 제대로 작동해야합니다.
Zygmunt Krynicki

이동식 미디어 인터페이스가 스냅 용으로 연결된 경우 @ZygmuntKrynicki 또는 / mnt 미만.
jarno

1

따라서 위의 미니 답변을 확장하기 위해 일반적이고 안전하며 건전한 방법은 없습니다. 나는 모든 사람들이 파일 시스템을 커스터마이징하는 것을 좋아하지만 비용이 많이 들며 그중 하나입니다.

결국 XDG 포털 작업을 통해 특정 응용 프로그램 (특히 그래픽 응용 프로그램)은 최근에 도입 된 GTK API 중 일부를 사용하는 경우 임의의 위치에서 파일에 액세스 할 수 있습니다 . 제한이있는 상태에서 실행하면 신뢰할 수있는 도우미에게 연락하고 파일 선택기처럼 보이는 신뢰할 수있는 UI를 팝업 한 다음 특별한 FUSE 파일 시스템과 대화하여 파일을 (어디서나) / run /의 특별한 것으로 노출시킵니다. .. 응용 프로그램이보고 어딘가에 문제가 없을 수 있습니다.

이것은 미디어 플레이어 나 워드 에디터와 같은 파일 선택기 친화적 인 것을 위해 설계되었습니다. /codez하지만 호스팅되는 리눅스 트리는 잘 작동하지 않습니다.


2
안녕하세요 Zygmunt, 답변 주셔서 감사합니다. 놀랍습니다. "모든 사람이 파일 시스템을 커스터마이징하는 것을 좋아하지만 비용이 많이 들며 그 중 하나입니다." 그냥 이해합니다 : 당신은 이것을 알고 있지만 이것이 일반적인 일이라는 것을 무시하기로 선택합니까? 지난 15 년 동안이 명명 규칙에 대한 다른 비용은 알지 못합니다.
피터 V. Mørch

2
하나는 같은 라인을 넣어 수없는 어떤 이유가 있습니까 extradirs=/store:/other/location또는 무언가를 /etc/snapd.conf하거나 /etc/snapd/conf.d/vlc.conf. 다른 많은 리눅스 응용 프로그램과 마찬가지로. Docker와 같이 잘 작동하는 것 같습니다. 이것은 아파치가 하드 코딩 된 것처럼 DocumentRoot /var/www보인다.
피터 V. Mørch

1
하지만 지그문트 (Zygmunt)에서 시간을내어 주셔서 감사합니다. 감사합니다.
피터 V. Mørch

그렇게 쉬운 일이 아닙니다. 주요 문제는 apparmor가 아니라 실제로 런타임에 응용 프로그램이 다른 루트 파일 시스템에서 실행되고 있다는 사실입니다. 해당 프로세스 관점에서 / store는 존재하지 않습니다. 마운트되지 않은 것이 아니라 디렉토리가 아닙니다. snap-confine은 호스트 시스템에서 응용 프로그램 마운트 네임 스페이스로 경로를 가져 오는 입니다. 스냅의 루트 파일 시스템은 읽기 전용이므로 새 마운트 지점 (예 : / store)을 쉽게 삽입 할 수 없습니다.
Zygmunt Krynicki

@ PeterV.Mørch를 사용하여 / mnt에서 해당 파일을 마운트하거나 이동할 수 있으며, 이동식 미디어 인터페이스가 스냅에 연결되어 있는지 확인하고 원하는 경우 원래 위치에 심볼릭 링크를 만들 수 있습니다.
jarno

1

/home/*/snap/옵션 으로 대상 디렉토리를 마운트하는 것이 언급됩니다. 간단한 바인드 마운트가 작동하지 않았거나 하드 링크 또는 대상 파일이나 디렉토리를 제안 된 스냅 디렉토리 또는 그 하위 디렉토리로 심볼릭 링크하지 않았습니다. 이 제한은 /home/*/디렉토리 외부에 존재하는 대상 파일로 인해 발생할 수 있습니다 /home/*/. 접두사 glob 내의 파일에 대한 마운트 / 하드 / 기호 링크를 테스트하지 않았습니다 .

그러나 해결 방법 :에 전체 파일 복사는 /home/<myuser>/snap/<appname>/<somenewdirectory>나를 위해 일했다. 전체 데이터 세트 사본을 유지 관리하는 것은 아직 불가능했지만 이러한 제약 조건을 처리하는 데 도움이되는 많은 도구가 있습니다. 스냅을 사용하기 전에 수동 재귀 복사본을 사용하고 데이터 집합이 작거나 원자 적 인 경우 수정 된 파일을 다시 복사하는 것이 옵션입니다

도움이 될 수있는 몇 가지 파일 복사 유틸리티의 이름을 지정하려면 :

  • cp --verbose --archive --recursive /somedir ~/snap/somedir, 소스 / 타겟의 반대
  • tar -C / -c somedir | tar -C ~/snap/ -xv 타르 기반 파일 복사 예제입니다.
  • rsync --archive /somedir ~/snap/somedirrsync는 널리 사용되며 많은 래퍼 / 확장 기능이 있습니다.

  • grsync전체 목표는 필요에 따라 데이터 세트를 앞뒤로 복제하는 것이므로 모든 파일 기반 백업 유틸리티 (그래픽 예 :)를 사용할 수 있어야합니다.

  • git 복제본, 아마도 로컬 복제본은 기본적으로 하드 링크를 사용하므로 git을 사용하여 파일 시스템 io를 스냅으로 관리하는 경우 복제시 하드 링크를 비활성화하지 않으면 git 복제본이 스냅에 액세스 할 수 없을 가능성에주의해야합니다.


NFS 마운트 멀티 테라 바이트 NAS 드라이브의 일반적인 사용 사례에서는 작동하지 않습니다.
피터 V. Mørch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.