为什么 gparted 必须以 root 身份运行?

为什么 gparted 必须以 root 身份运行?

我的用户可以访问 USB 块设备(plugdev 组的成员)。但即便如此,gparted 也需要以 root 身份运行:

$ ls -l /dev/sdd
brw-rw---- 1 root plugdev 8, 48 Jul 17 19:05 /dev/sdd
$ gparted /dev/sdd
(requires root)

这有什么技术原因吗?

我有一个完整的磁盘映像,包括文件中的分区表。运行 gparted 失败,所以我不得不做losetup -Pf马戏表演。

这有什么技术原因吗?

答案1

这听起来像是一个值得报告的错误;-),因为parted另一方面,它确实允许使用您有权访问的驱动器,而无需切换到根帐户。

无论权限如何,请求 root 权限都是应用程序的默认操作模式:

https://gitlab.gnome.org/GNOME/gparted/-/blob/master/src/main.cc#L52

    //check UID
    if ( getuid() != 0 )
    {
        const Glib::ustring error_msg(_("Root privileges are required for running GParted"));
        std::cerr << error_msg << std::endl;

        Gtk::MessageDialog dialog(error_msg, false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);
        dialog .set_secondary_text(
                _("Since GParted is a powerful tool capable of destroying partition tables and vast amounts of data, only root may run it.") ) ;
        
        dialog .run() ;
        exit(EXIT_FAILURE);
    }

TLDR:这就是它的开发人员认为它应该运行的方式:-)

相关内容