我遇到了一个我已经发布过的磁盘驱动器问题。 (对于好奇的人:格式化后设备出现问题)
简而言之,我的一个磁盘不再允许我使用 Dolphin (Debian) 通过拖放来复制文件,并且仅当我使用 sudo 从终端执行此操作时才允许我这样做。
我研究了我的问题并注意到了一些事情:
我在另一个磁盘驱动器上已经发生过这种情况。
该磁盘驱动器和该磁盘驱动器已使用 dd if=/dev/zero of=/dev/sdX 擦除,其中 sdX 是有问题的驱动器
对于其他未使用 dd 擦除而仅格式化(使用 mkfs)和/或分区(例如使用多个主分区创建的 gpt 分区)的磁盘驱动器,不会发生这种情况。
在该磁盘和该磁盘中,所有者已更改为 root,而不再是用户。
所以我的问题是:
为什么完全擦除的磁盘会发生这种情况,而格式化或分区的磁盘不会发生这种情况?
权限到底是如何运作的?它们被写入磁盘了吗?或者所有权是否写入磁盘?
是否可以更改磁盘的所有者,以便更改在 Linux 发行版中保持不变?
编辑:我尝试使用 exfat 格式化磁盘。使用 Dolphin 进行拖放工作并且所有权更改为用户。我尝试用ext4格式化磁盘。拖放不再起作用。所有权已更改为 root。我尝试将磁盘驱动器的所有权更改为当前用户。命令行退出没有问题(终端:sudo chown ...:/dev/sdX -R -w)。然而,当与 Dolphin 一起使用时,拖放功能不起作用。 Dolphin 仍将所有权列为 root。如果从终端手动挂载,为挂载创建的目录将仅显示 root 所有权(即使该目录是在不需要 sudo 的情况下创建的)。如果从 Dolphin 自动安装,它也只会显示 root 的所有权。挂载点名称在 Dolphin 的两次自动挂载之间发生变化。
我还应该补充一点,我确实使用 ext* 文件系统格式化了其他驱动器。只要我没有在它们上运行 dd if=... of=... (以完全删除它们),它们就没有问题(即使使用 ext4)。
你能向我解释一下发生了什么事吗?
为什么它看起来显示 ext* 格式会自动使 root 成为所有者,而 exfat 格式则不会?这两个命令都是使用 mkfs 运行的。
编辑:忘了写我使用 Debian。
答案1
当驱动器(或分区,或其他块设备,或磁盘映像文件等)被格式化时,文件系统的顶级目录是mkfs
由运行命令的用户拥有。
通常,除非您将磁盘映像文件(或碰巧具有 RW 权限的块设备)格式化为非 root uid,否则它就是 root。
如果要更改所有权,请挂载它,然后 chown 挂载的目录。这将更改格式化 fs 本身中顶级目录的所有权,因此所有权更改在卸载后将持续存在。例如(作为 root):
mkfs.ext4 /dev/sdaX
mount /dev/sdaX /mnt
chown user:group /mnt
这必须在挂载文件系统时完成,否则只会更改挂载点本身的所有者(即父文件系统中的目录),并且当您安装文件系统时,这将被挂载文件系统中的所有者覆盖。安装它。
例如,/mnt
它只是一个目录,/
直到您在其上安装另一个文件系统为止。它具有在 /fs 中为其设置的任何所有权和权限。当您在 /mnt 上挂载另一个文件系统时,它现在具有为该文件系统的顶级目录设置的任何所有权和权限。
FAT 不是 UNIX 文件系统,不支持 UNIX 所有权或权限。当您挂载 FAT 文件系统时,您指定了 FAT 文件系统的所有权和权限全部挂载时文件系统中的文件(默认是挂载过程的 uid 和 gid)。
请注意,mkfs
对于一些文件系统允许您在格式化时指定所有者,但是,因为每个这样的文件系统都有自己的方法,所以chown
在第一次安装它后通常会更容易(如上所示),并且不必记住一个小便利很少使用的工具的功能。例如,mkfs.ext4
使用扩展选项 ( -E
) 执行此操作:
mkfs.ext4 -E root_owner=uid:gid /dev/sdaX