5

我正在为 Linux (Ubuntu) 开发一个 Qt 应用程序,其中我使用 USB 驱动器来备份一些内容。复制内容后,应用程序应卸载目标驱动器。我有一个规则文件可以将 USB 挂载到用户代表我的用户名udev的特定位置。ENV{mount_options}="relatime,users,umask=0,uid=user,gid=user"

我尝试使用它没有任何运气。

const char* usb = "/mnt/mountpoint/usbdrive";
if (!umount(usb))
{
  qDebug() << "Device unmounted";
}
else
{
  qDebug() << "Can't unmount" << strerror(errno); //this prints Operation not permitted
}

有人可以在这里帮助我吗?我用umount对了吗?

提前致谢。

4

2 回答 2

11

卸载文件系统需要适当的权限(Linux:CAP_SYS_ADMIN功能)。

根据umount代码很好。但是,您需要特权才能卸载设备。

CAP_SYS_ADMIN能力允许进程执行各种管理任务,即:调用 mount()、umount()。这里有两篇关于能力的文章:

于 2013-05-21T13:54:54.400 回答
0

添加到/etc/sudoers行:

user ALL=NOPASSWD: /bin/umount

user您的用户名在哪里。

而不是使用umount ...使用sudo -u user umount ...

于 2013-05-21T14:59:45.647 回答