Linux, Eclipse CDT run as su

Linux, Eclipse CDT run as su

本文关键字:as su run CDT Eclipse Linux      更新时间:2023-10-16

我正在使用Eclipse CDT编写应用程序。该应用程序使用第三部分API,它需要以sudo的身份运行,以便打开原始套接字等

在命令行中,我可以运行类似的程序

su
./program

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

我是否可以在EclipseCDT中以su身份(使用su密码)运行?

谢谢。

您拥有的一些选项:

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

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

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

  4. (@其他人,请随意添加更多内容。)

您可以创建一个运行配置,在该配置中使用sudo来运行应用程序。如果以这种方式启动终端,sudo将无法访问终端,因此需要在启动配置中设置SUDO_ASKPASS环境变量。步骤如下:

  1. 创建新的Run配置(为了完整性):

    1. 在eclipse中,右键单击可执行文件(即应用程序构建的结果)以打开上下文菜单
    2. 在上下文菜单中,转到Run as->Run configurations
    3. 在出现的"运行配置"窗口中,右键单击"C/C++应用程序",然后单击"新建"
  2. 修改运行配置

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

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