以非root用户身份调用mount()系统调用

时间:2018-02-02 02:21:22

标签: c++ c linux permissions mount

我正在编写一个C / C ++程序,它需要能够像普通用户一样安装磁盘(不能与sudo一起运行)。通常,此类问题与在shell中使用mount命令有关,答案是使用" user"对应于相关磁盘的/etc/fstab条目中的选项。但是,在程序中使用挂载系统调用时,我认为/etc/fstab中的列表根本不重要。

但是,很明显mount命令能够允许非root用户挂载磁盘(假设/etc/fstab设置正确),并且可能是mount命令调用{{ 1}}系统调用,然后我认为应该可以实现我想要的。

如何在不使用mount运行程序的情况下成功调用mount()系统调用?

1 个答案:

答案 0 :(得分:0)

解决这一难题的有效方法是将<router-outlet> / mount调用打包到shell脚本中,为应用程序用户提供umount权限,并从应用程序中调用它即G。使用sudo。确保脚本执行了足够的错误处理和可能的日志记录,在调用应用程序中处理错误或成功时返回相应的退出代码。

system()

/etc/sudoers.d/myApplication

在您的申请中:

<appUser> <host> = (root) NOPASSWD: /usr/local/bin/myMountScript.sh

另一种可能性是使用上面评论中提到的功能,并将它们设置在二进制文件上,但这有点复杂,所以我不会在这里详细介绍。