Linux,Eclipse CDT以su身份运行

6
我可以帮助您翻译关于IT技术的内容,以下是需要翻译的文本:

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

在命令行中,我可以像这样运行程序:

su
./program

在Eclipse CDT环境下,如果我按Ctrl + F11(运行 - 运行上次启动),它不起作用。我猜测原因是我的Linux GUI登录不是su权限。有没有办法在Eclipse CDT中以su身份运行(需要输入su密码)?谢谢。
2个回答

3

你有以下几个选项:

  1. 以 root 身份运行 Eclipse。(个人认为不是很好的方法,但最简单)

  2. 临时允许你的用户使用该库。(可能会比较麻烦)

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

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


2

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

  1. 创建新的运行配置(为了完整起见):

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接