我正在开发一个针对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
命令?
提前感谢。
CAP_SYS_ADMIN
或设置setuid,则必须非常小心地处理mount(和可能的umount),因为mount本身绝对可以用于本地特权升级。请参阅此漏洞利用,它使用已知的根密码覆盖了/etc/passwd的副本。建议使用能力而不是SUID :) - user257111