我想为某个用户安装一个具有指定 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 支持uid
、gid
、umask
选项。您可以通过阅读手册页中可能的选项列表来检查这一点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
,但令人惊讶的是,用户确实可以访问和写入它。 试试吧!