我正在编写一个C / C ++程序,它需要能够像普通用户一样安装磁盘(不能与sudo
一起运行)。通常,此类问题与在shell中使用mount
命令有关,答案是使用" user"对应于相关磁盘的/etc/fstab
条目中的选项。但是,在程序中使用挂载系统调用时,我认为/etc/fstab
中的列表根本不重要。
但是,很明显mount
命令能够允许非root用户挂载磁盘(假设/etc/fstab
设置正确),并且可能是mount命令调用{{ 1}}系统调用,然后我认为应该可以实现我想要的。
如何在不使用mount
运行程序的情况下成功调用mount()
系统调用?
答案 0 :(得分:0)
解决这一难题的有效方法是将<router-outlet>
/ mount
调用打包到shell脚本中,为应用程序用户提供umount
权限,并从应用程序中调用它即G。使用sudo
。确保脚本执行了足够的错误处理和可能的日志记录,在调用应用程序中处理错误或成功时返回相应的退出代码。
system()
:
/etc/sudoers.d/myApplication
在您的申请中:
<appUser> <host> = (root) NOPASSWD: /usr/local/bin/myMountScript.sh
另一种可能性是使用上面评论中提到的功能,并将它们设置在二进制文件上,但这有点复杂,所以我不会在这里详细介绍。