udisks2를 사용하여 사용자가 읽을 수 있는 이미지 마운트

udisks2를 사용하여 사용자가 읽을 수 있는 이미지 마운트

루프 장치(즉, 원시 디스크 이미지를 마운트하는 데 사용됨)는 루트 권한 없이 udisk를 사용하여 관리할 수 있습니다.

테스트 목적으로 이미지를 생성하고 다음과 같이 형식을 지정할 수 있습니다.

dd if=/dev/urandom of=img.img bs=1M count=16
mkfs.ext4 img.img

그런 다음 udisk를 사용하여 설정하십시오.

udisksctl loop-setup -f img.img

이는 이미지에 대한 루프 장치를 생성하고 /run/$USERudisk에서 관리하는 로컬 하드 드라이브와 마찬가지로 udisk 아래의 새 디렉터리에 마운트합니다. 단지 권한이 내가 기대했던 것과 다르다는 것뿐입니다.

# ls -l /run/media/$USER/
drwxr-xr-x 3 root  root   1024 Apr 10 11:19 [some id]
drwx------ 1 auser auser 12288 Oct 30  2012 [a device label]

나열된 첫 번째 장치는 루트가 소유하고 다른 사람이 쓸 수 없는 루프 장치입니다. 두 번째는 탑재된 사용자에 속하며 비교에 사용되는 탑재된 로컬 하드 드라이브 또는 USB 펜 장치입니다. 간단히 루트로 실행하면 chmod이 문제를 해결할 수 있다는 것을 알고 있습니다.

그런데 udisk가 왜 다른 권한과 소유자를 할당합니까? 다른 목적으로 구성할 수 있나요?

답변1

udisks2 소스 코드를 자세히 살펴보고 거기에서 해결책을 찾았습니다.

사용자 권한에 따라 올바르게 설치된 장치는 이전 파일 시스템으로 포맷됩니다. 예를 들어 소유자를 설정하는 옵션을 fat수락 uid=하고 설치합니다. gid=Udisks는 이러한 옵션을 마운트 요청을 하는 사용자의 사용자 및 그룹 ID로 자동 설정합니다.

ext 계열과 같은 최신 파일 시스템에는 그러한 옵션이 없으며 대신 루트 노드의 소유자와 모드를 기억합니다. 그래서 chown auser /run/media/auser/[some id]그것은 정말로 끊임없는 일이었습니다. 또 다른 접근 방식은 새로 생성된 파일 시스템의 uid 및 gid를 해당 작성자로 초기화하는 것입니다 -E root_user.mkfs.ext4

관련 정보