디스크 부족을 테스트하기 위해 다음과 같이 파일 기반 크기가 제한된 파일 시스템을 설정해 보았습니다.
$ 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
약간 중복되는 것 같습니다).