我正在为Linux(Ubuntu)开发一个Qt应用程序,我在其中使用USB驱动器备份一些内容。应用程序应在复制内容后卸载目标驱动器。我有一个udev
规则文件,用于在ENV{mount_options}="relatime,users,umask=0,uid=user,gid=user"
的特定位置安装USB,其中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
吗?
提前致谢。
答案 0 :(得分:10)
适当的权限(Linux:CAP_SYS_ADMIN能力)是 需要卸载文件系统。
每umount
代码没问题。但是,您需要特权才能卸载设备。
CAP_SYS_ADMIN功能允许进程执行各种管理任务,即:调用mount(),umount()。这里有两篇关于功能的文章:
答案 1 :(得分:0)
添加到/etc/sudoers
行:
user ALL=NOPASSWD: /bin/umount
其中user
是您的用户名。
而不是使用umount ...
使用sudo -u user umount ...