使用指定用户权限安装 ext4 驱动器

使用指定用户权限安装 ext4 驱动器

我想为某个用户安装一个具有指定 rwx 权限的附加 ext4 数据磁盘驱动器。安装点位于此类用户的主目录中,并归该用户所有。我以/etc/fstab标准方式添加了新的数据磁盘:

/dev/hda  /home/user/new_disk  ext4  defaults,errors=remount-ro  0 1

无论如何,当安装新分区时,安装点的所有权将从 user.group 更改为 root.root,因此用户在那里没有写入权限。我可以手动更改安装点的所有权,以便用户可以在那里写入,但每次重新启动时问题都会再次出现。我甚至尝试以fstab以下方式添加磁盘:

/dev/hda  /home/user/new_disk  ext4  umask=0077,uid=1000,gid=1000,errors=remount-ro  0 1

但在这种情况下,系统会给出错误,因为卷具有 ext4 格式。我想要:

  • 已使用指定用户权限挂载 ext4 驱动器,或者
  • 磁盘挂载后,每次启动时更改挂载点的所有权。

答案1

使用bindfs

FUSE 文件系统用于将一个目录的内容镜像到另一个目录。此外,还可以更改镜像目录中文件的权限。

将文件系统挂载ext4/media/disk

sudo mount -o user /dev/sdXN /media/disk

将已挂载的文件系统与当前用户(或任何其他用户/组)的权限绑定:

sudo bindfs -u $(id -u) -g $(id -g) /media/disk /home/user/new_disk

答案2

仅 FAT、vFAT、exFAT 支持uidgidumask选项。您可以通过阅读手册页中可能的选项列表来检查这一点mount,部分“Fat 的挂载选项”

但是,您可以通过在文件系统的挂载点上使用 chown 来更改现有目录系统的所有权,例如:

# mount /dev/sda* /mnt/your/mountpoint/
# chown user:group 741 /mnt/your/mountpoint/

答案3

我刚刚遇到了同样的问题。我所做的是先挂载文件系统,然后更改owner:group挂载点、子目录和文件的所有权限。然后,当我卸载文件系统并重新挂载它时,这些更改似乎是持久的。

15:24@boromir:/media$ cat /etc/fstab
UUID=95446ed0-b6a6-42cd-8c37-ea81a0836e98 /media/cavalry1  auto   defaults,nofail       0 0

15:26@boromir:/media$ sudo umount cavalry1/
15:27@boromir:/media$ l
total 28
drwxrwxrwx 2 boincuser boincuser 4096 2012-12-17 15:00 cavalry1/

15:27@boromir:/media$ sudo mount -a
15:28@boromir:/media$ l
total 28
drwxr-xr-x 3 boincuser boincuser 4096 2012-12-17 11:05 cavalry1/

在这里您可以看到重新挂载文件系统时权限和所有者不会被重置。

答案4

以用户身份挂载块设备。要添加到此主题,如果其他所有方法都失败了,请尝试guestmount软件包,自 2009 年以来在一些发行版中可用,但也有源代码。guestmount,使用用户空间中的文件系统 (FUSE) 允许以用户身份以用户权限进行挂载。只要该用户拥有挂载点,并且对要挂载的块设备或映像具有适当的访问权限。在某些发行版中(但肯定不是 Fedora 或 RedHat),用户可能需要成为保险丝组来执行此操作。

$ mkdir ~/mnt && guestmount -a /dev/hda -m /dev/hda ~/mnt

这还可用于安装 QEMU 知道的其他平台和文件系统映像的任何类型的介质,而不仅仅是 Linux 介质和 Windows 闪存驱动器。操作系统、文件系统类型(ext4?)、子设备或分区号(您的意思是 /dev/hda1?)和逻辑块偏移量都是自动计算出来的,因此在大多数情况下您甚至不需要指定它们。

嘉宾图片。如果您希望以用户身份安装驱动器映像,则不再需要运行fdisk -l检查分区表并乘以扇区大小以获取偏移量,例如mount -o loop,offset=49152。这是好事,因为在某些情况下,映像无法识别fdisk。不过,这样的方法可能仍然有效。

mkdir my_disk; guestmount -a my_disk.img -m /dev/sda1 my_disk

它甚至可以通过选项猜测操作系统-i并模拟适当的处理器和驱动程序。手册页中有几个示例。

已知的问题。

  • 正如bindfs提到的https://superuser.com/a/831316/963137,通过保险丝访问设备会产生一些开销。所以这不是一个永久的解决方案。

  • root使用 检查时,挂载的文件系统似乎将权限设置为ls -l,但令人惊讶的是,用户确实可以访问和写入它。 试试吧!

相关内容