Fat32
無需 sudo 之後即可安裝
我正在嘗試研究 FAT32 的內部結構,為此我正在嘗試創建一個 FAT32 映像,掛載它並在命令行上執行一些文件操作。根據這裡的問題,我知道沒有辦法使用 sudo 來安裝圖像。我仍然想知道為什麼我最終需要 sudo 才能在掛載點內進行文件操作。下面是一個小的 bash 腳本,它展示了哪些有效,哪些無效。有人可以告訴我如何在沒有 root 的情況下執行此操作嗎?
DISK=/tmp/disk1.raw MOUNTPOINT=/tmp/mount1 SIZE=512M rm -f $DISK rm -rf $MOUNTPOINT # create disk image qemu-img create -f raw $DISK $SIZE # format disk image mkfs.fat -v -F 32 $DISK # make mountpoint mkdir -p $MOUNTPOINT # can't be helped sudo mount -o loop -t msdos $DISK $MOUNTPOINT # should work but doesn't mkdir -p $MOUNTPOINT/tmp/ # actually works sudo mkdir -p $MOUNTPOINT/tmp/ # should work but doesn't dd of=$MOUNTPOINT/tmp/ticket2.txt if=/dev/zero bs=512 count=9 # actually works sudo dd of=$MOUNTPOINT/tmp/ticket2.txt if=/dev/zero bs=512 count=9 ls -lR $MOUNTPOINT sudo umount $MOUNTPOINT
MS-DOS 文件系統變體不支持文件權限或所有者(儲存在磁碟上)。因此,核心將它們預設為掛載使用者——在本例中為 root。
您可以通過傳遞
uid=
andgid=
選項來覆蓋它。例如,sudo mount -o loop,uid=1000,gid=1000 -t msdos "$DISK" "$MOUNTPOINT"
。(我在那裡添加了引用,這是一個很好的習慣)。您可以檢查您的 uid/gid 是什麼id
;它很可能不是 1000,或者執行以下操作:UID=`id -u` GID=`id -g` sudo mount -o loop,uid=$UID,gid=$GID -t msdos "$DISK" "$MOUNTPOINT"
這些選項
man 8 mount
至少記錄在 中。PS:該問題中提到了幾種不帶 sudo 的掛載選項;例如,udisk。