C++ Linux、Eclipse CDT作为su运行

C++ Linux、Eclipse CDT作为su运行,c++,eclipse,C++,Eclipse,我正在使用EclipseCDT编写一个应用程序。应用程序使用第三部分API,它需要以sudo的形式运行,以便打开原始套接字等 在命令行中,我可以运行如下程序 su ./program 但在EclipseCDT环境中,如果我按Ctrl+F11(Run->Run Last Launched),它将不起作用,我想原因是我的Linux GUI登录不是su 在EclipseCDT中,我是否可以作为su(使用su密码)运行 谢谢。您有一些选择: 以root用户身份运行Eclipse。(不是一个很好的主意,

我正在使用EclipseCDT编写一个应用程序。应用程序使用第三部分API,它需要以sudo的形式运行,以便打开原始套接字等

在命令行中,我可以运行如下程序

su
./program
但在EclipseCDT环境中,如果我按Ctrl+F11(Run->Run Last Launched),它将不起作用,我想原因是我的Linux GUI登录不是su

在EclipseCDT中,我是否可以作为su(使用su密码)运行


谢谢。

您有一些选择:

  • 以root用户身份运行Eclipse。(不是一个很好的主意,但最简单的一个)

  • 暂时允许用户使用该库。(可能会很混乱)

  • 创建一个新的运行配置,并创建一个脚本来运行可执行文件。(每次都必须输入密码)

  • (@其他人,请随意添加。)


  • 您可以创建一个运行配置,在其中使用sudo运行应用程序。由于以这种方式启动时,
    sudo
    无法访问终端,因此需要在启动配置中设置
    sudo\u ASKPASS
    环境变量。步骤如下:

  • 创建新的运行配置(为了完整性):

  • 在eclipse中,右键单击可执行文件(即应用程序构建的结果)以打开上下文菜单
  • 在关联菜单中,转到运行方式->运行配置
  • 在出现的运行配置窗口中,右键单击C/C++应用程序,然后单击新建
  • 修改运行配置

  • 在运行配置的主选项卡中,将C/C++应用程序字段替换为
    /usr/bin/sudo
  • 转到“参数”选项卡,输入可执行文件的路径,例如
    /bin/my executable
    。注意:
    sudo
    的工作目录是eclipse项目,因此路径应该是相对于该项目的
  • 如果可执行文件需要任何命令行参数,请添加这些参数,例如
    /bin/my executable arg1 arg2
  • sudo
    添加询问密码的方法

  • 这是最棘手的部分。由于从(eclipse)gui运行时,
    sudo
    没有终端(tty),因此我们需要为其提供一个可以获取密码的程序,即askpass程序。有关详细信息,请参阅
  • 在我的系统(Ubuntu 15.04)上,包
    ssh askpass gnome
    提供了一个askpass程序,我通过运行
    dpkg--get selections | grep askpass
    发现了这一点。因为它仍然没有给我可执行文件的名称,所以我通过运行brute强制执行搜索
    sudo find-name*askpass*
    。无论如何,如果没有安装这样的实用程序,请使用您喜爱的软件包管理器搜索它
  • 一旦我们安装和/或定位了askpass程序,我们就可以继续在eclipse中创建启动配置;从步骤2.3继续
  • 在运行配置窗口中,选择环境选项卡并单击新建
  • 在弹出的对话框中,输入
    SUDO_ASKPASS
    作为名称,输入ASKPASS程序的完整路径作为值,例如
    /usr/bin/ssh ASKPASS
  • 按“应用”保存更改
  • 执行启动配置
  • 在“运行配置”窗口中,按Run以使用新创建的启动配置启动可执行文件
  • 将出现一个弹出窗口,用于输入
    sudo
    密码
  • 成功输入密码后,我们的可执行文件将以root权限运行