使用 fstab 挂载的 gcsfuse 无法应用“exec”选项

使用 fstab 挂载的 gcsfuse 无法应用“exec”选项

我已经通过 fstab 文件将 gcp bucket 与 gcsfuse 挂载在一起。为了允许从 bucket 执行脚本和可执行文件,我在 fstab 文件中的选项中添加了“exec”选项。然而,此选项未应用。

fstab 行:

bucketname /mount-point gcsfuse rw,uid=1001,gid=1002,file_mode=777,dir_mode=777,exec,user,allow_other,_netdev

存储桶已安装,我可以读取、写入和修改存储桶内的文件。但是当我尝试执行某些操作时,出现“权限被拒绝”提示。

因此,卸载存储桶并尝试使用“mount -a”查看发生了什么:

user@server:/$ sudo mount -a
Calling gcsfuse with arguments: -o noexec -o nodev --gid 1002 --file-mode 777 --dir-mode 777 -o allow_other -o rw -o nosuid --uid 1001 bucketname /mount-point
I0611 08:33:06.783746 2023/06/11 08:33:06.783723 Start gcsfuse/0.42.5 (Go version go1.20.3) for app "" using mount point: /mount-point

可以看到,虽然 fstab 选项中有 'exec' 选项,但是 gcsfuse 仍然使用默认选项 'noexec'。我只能通过以下命令允许执行:

sudo gcsfuse -file-mode=777 -dir-mode=777 -o rw -o exec -o allow_other bucketname /mount-point

当然,重启后问题会再次出现,我必须卸载存储桶并再次手动使用此命令。我需要找到让 fstab 行正常工作的方法。

答案1

这不是 GCSFuse 问题。我能够通过在 fstab 条目中使用用户作为第一个选项来解决这个问题。

bucketname /mount-point gcsfuse user,rw,uid=1001,gid=1002,file_mode=777,dir_mode=777,exec,allow_other,_netdev

这是因为用户选项暗示了选项 noexec、nosuid 和 nodev,除非后续选项明确覆盖。

请参阅[此处][1]的文档。

谢谢,
Ashmeen

[1]:https://man7.org/linux/man-pages/man8/mount.8.html#:~:text=user%0A%20%20%20%20%20%20%20%20%20%20%20Allow%20an,dev%2Csuid

相关内容