udisksctl을 사용하여 쓰기 가능한 파일 시스템 만들기

udisksctl을 사용하여 쓰기 가능한 파일 시스템 만들기

디스크 부족을 테스트하기 위해 다음과 같이 파일 기반 크기가 제한된 파일 시스템을 설정해 보았습니다.

$ dd if=/dev/zero of=file.fs bs=1MiB count=1
$ mkfs.ext4 file.fs
$ udisksctl loop-setup -f file.fs
  Mapped file file.fs as /dev/loop1.
$ udisksctl mount --options rw -b /dev/loop1
  Mounted /dev/loop1 at /media/myuser/29877abe-283b-4345-a48d-d172b7252e39
$ ls -l /media/myuser/29877abe-283b-4345-a48d-d172b7252e39/
  total 16
  drwx------ 2 root root 16384 Dec  2 22:08 lost+found

그러나 보시다시피 루트에서만 쓸 수 있습니다. 명령을 실행하는 사용자가 쓸 수 있도록 하려면 어떻게 해야 합니까?

chown"작업이 허용되지 않습니다"라는 메시지도 표시되기 때문에 할 수 없습니다 chmod.

udisksctl의 일부 옵션을 사용해 보았지만 -o uid=<id>허용되지 않는 설치 옵션에 대한 오류가 발생했습니다.

일반 사용자로 실행할 수 있어야 하므로 루트나 sudo를 사용할 수 없습니다.

우분투 22.04.1을 사용하고 있습니다.

답변1

예, 조금 심술궂습니다 :) 하지만 이 문제를 해결할 수 있습니다:

mkfs.ext4파일 시스템의 초기 내용이 포함된 디렉터리를 지정할 수 있는 옵션 을 사용합니다 -d directory/. 나중에 채울 디렉터리를 이미 알고 있는 경우 좋은 시작점이 됩니다.

mkfs.xfs지원 -p protofile; 이것이 바로 당신이 원하는 것일 수 있습니다. 파일에는 myprotofile다음 콘텐츠만 포함됩니다.

thislinejustforbackwardscompatibility/samefornextline
1337 42
d--777 1234 5678

첫 번째 줄은 이전 버전과의 호환성을 위한 문자열이므로 무시됩니다. 두 번째 줄에는 무시되는 두 개의 숫자가 포함되어야 합니다. ( man mkfs.xfs내 머리 꼭대기에서 기억할 수 있는 것보다 더 많은 세부 사항을 참조하십시오.)

세 번째 줄에는 filemode uid gid루트 디렉터리를 설명하는 튜플이 포함되어 있습니다. 1234를 원하는 사용자 ID로 바꾸고, 5678을 원하는 그룹 ID로 바꾸세요.

후속

mkfs.xfs -p myprotofile -f file.fs

작동해야 합니다(그러나 기본 구성의 경우 이미지 파일 크기는 16MB 이상이어야 함 mkfs.xfs).

dd if=/dev/zero of=file.fs bs=1MiB count=16 
mkfs.xfs -p myprotofile -f file.fs
udisksctl loop-setup -f file.fs

내 시스템에서 작동하며 자동으로 파일 시스템 rw를 마운트합니다(그러나 이것이 반드시 귀하의 시스템에 해당되는 것은 아닙니다. 마운트가 작동해야 하지만 --options rw약간 중복되는 것 같습니다).

관련 정보