在我的WSL2Debian 发行版,我创建了一个名为的映像文件VirtDisk.img
并将其设置为虚拟块设备:
dd if=/dev/zero of=VirtBlock.img bs=1G count=16
16+0 records in
16+0 records out
17179869184 bytes (17 GB, 16 GiB) copied, 11.204 s, 1.5 GB/s
sudo losetup -f -P VirtDisk.img
然后将其分为如下三部分,并为它们创建一个文件系统,如标记所示[]
:
sudo fdisk /dev/loop0
Command (m for help): p
Disk /dev/loop0: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x30f503f9
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 2048 1050623 1048576 512M ef EFI (FAT-12/16/32) [FAT32]
/dev/loop0p2 1050624 5244927 4194304 2G 82 Linux swap / Solaris [swap]
/dev/loop0p3 5244928 33554431 28309504 13.5G 83 Linux [EXT4]
然后我将其安装/dev/loop0p1
到~/mnt
目录,并用于chown
更改安装目录的所有者。
sudo
但尽管我使用了前缀,但它出现“不允许操作”错误。
sudo mount /dev/loop0p1 mnt
sudo chown colorglass mnt
chown: changing ownership of 'mnt': Operation not permitted
当我改为root
执行相同的操作时,它仍然给出相同的结果。
我的目录的日期属性~/mnt
变成了Jan 1 1970
。
ll
drwxr-xr-x 2 root root 4.0K Jan 1 1970 mnt
我是否进行了错误的操作?
答案1
FAT32 文件系统(作为 EFI 系统分区的标准)无法存储文件所有权或 UNIX 风格的权限,因此在这种情况下错误消息意味着“您所要求的是不可能的”。
由于loop0p1
已挂载到/mnt
,因此您的尝试chown
实际上是针对文件系统的根目录- 文件系统的loop0p1
实际目录被它“覆盖”。当一个目录被用作挂载点时,它的实际权限基本上没有意义,挂载文件系统的根目录的属性将接管。出于同样的原因,日期属性被“更改”。/mnt
loop0p3
更改任何 FATxx 文件系统上的所有权/权限的唯一方法是使用挂载选项 - 您只能为所有目录设置一组权限,为挂载文件系统中的所有文件设置另一组权限。 FATxx 文件系统中的每个文件和目录都具有相同的所有者和组,但您可以使用挂载选项来指定它们的所有者和组。