如何以用户身份挂载外部 vfat 驱动器?

use*_*096 5 security linux storage permissions mount

我在 bak 组中有一个挂载点 /mnt/v1 和一个用户 bak。我这样做了:

sudo chown bak:bak /mnt/v1
sudo chmod 775 /mnt/v1
Run Code Online (Sandbox Code Playgroud)

现在我想将一个带有 /dev/sdb1 分区的外部 fat32 驱动器挂载到这个目录。我收到消息“只有 root 可以这样做”,所以我发现我需要更改 fstab 并添加了这一行:

/dev/sdb1       /mnt/v1     vfat        noauto,user           0      2
Run Code Online (Sandbox Code Playgroud)

但是当我像这样安装时,我仍然收到令人讨厌的消息“只有 root 可以做到这一点”:

bak$ mount -t vfat /dev/sdb1 /mnt/v1
Run Code Online (Sandbox Code Playgroud)

但是当我以 root 身份挂载时,整个驱动器都获得了我不想要的 root 权限。

是否需要采取一些措施才能将新的 fstab 条目读入内核?我怎样才能达到我想要的?

Zor*_*che 15

当你挂载你的 vfat 分区时,你可以传递一个 uid 和 gid选项来设置文件系统将拥有的用户 ID 和组 ID。您还可以设置文件和目录权限掩码。如果文件系统将被多人使用,请考虑创建一个组并将您自己添加为成员。

你的 fstab 应该是这样的。

/dev/sdb1 /mnt/v1 vfat noauto,user,uid=blah,gid=blah 0 2
Run Code Online (Sandbox Code Playgroud)

你的挂载命令看起来像这样。

mount -t vfat /dev/sdb1 /mnt/v1 -o uid=blah,gid=blah
Run Code Online (Sandbox Code Playgroud)

您可能还想查看安装pmount包以使用户轻松挂载文件系统。


回答评论中的问题。

1) 当我使用 mount 命令时是否也需要 fstab?

如果您希望用户能够在不使用 sudo 的情况下挂载命令,那么可以。

2) 我必须是你给我的挂载命令的 root 用户吗?

您可以从 fstab 中删除 noauto,文件系统将在启动时挂载。或者作为普通用户,他们可以使用mount /mnt/v1 之类的命令进行挂载

3) fstab 中的变化如何变得活跃?

由于您使用了 noauto,因此不会自动发生任何事情。该条目仅允许用户能够挂载文件系统。