Linux 使用go在fstab中装入条目

Linux 使用go在fstab中装入条目,linux,go,mount,fstab,Linux,Go,Mount,Fstab,是否有一种方法可以使用定义了装载选项的fstab中的条目装载带有Go的ssh设备。我一直在尝试syscall.Mount,但没有成功 func main() { src := "jeanluc@<remote IP>:/home/jeanluc" target := "/home/jeanluc/my-mnt/ursule_jeanluc" fs := "fuse.sshfs" err := syscall.Mount(src, target, f

是否有一种方法可以使用定义了装载选项的fstab中的条目装载带有Go的ssh设备。我一直在尝试syscall.Mount,但没有成功

func main() {

    src := "jeanluc@<remote IP>:/home/jeanluc"
    target := "/home/jeanluc/my-mnt/ursule_jeanluc"
    fs := "fuse.sshfs"

    err := syscall.Mount(src, target, fs, 0, "rw")

    if err != nil {
        log.Fatal(err)
    }
}

您需要以
root
身份运行二进制文件,或者由
root
拥有并带有位

这是因为
/etc/fstab
由(命令)使用,而不是,因此fstab条目中的
user
属性不起任何作用(条目的其余部分也不起作用)

实际上,
mount(2)
手册页明确指出:

适当的特权(Linux:CAP_系统管理功能)是 需要安装文件系统


如果您不能以特权用户身份运行,或者希望使用
/etc/fstab
条目,则始终可以使用实际的mount命令。

我将其作为suid运行。当我以root用户身份运行它时,会得到
无效参数
。如果我想拥有该用户的文件权限,因此可以避免以root用户身份运行它,那么这不是一个选项。我尝试使用
os/exec
syscall.exec
的操作也失败了。您是否也可以显示这些尝试,包括代码和输出。以及您想要运行的正常
mount
命令的输出。正如我在上面的评论中提到的,出于某种原因,我也未能使用os/exec。很可能是因为我。我会继续努力的。感谢您的输入。我认为使用带保险丝的
mount(2)
时会有一些奇怪之处。我建议尝试
strace mount….
并查看它如何调用
mount
。但是是的,首先让
mount(8)
命令工作会很好。现在使用
os/exec
调用mount(8)命令可以正常工作。
cmd := exec.Command("mount /home/jeanluc/my-mnt/ursule_jeanluc")

// capture STDOUT
var out bytes.Buffer
cmd.Stdout = &out

// run cmd
err := cmd.Run()
if err != nil {
    log.Fatal(err)
}

// print STDOUT
fmt.Printf("%s", out.String())