我正在使用Eclipse CDT编写应用程序。该应用程序使用第三方API,它需要以sudo身份运行,以便打开原始套接字等。
在命令行中,我可以运行类似
的程序su
./program
但是在Eclipse CDT环境中,如果按Ctrl + F11(Run-> Run Last Launched),它将无效,我想原因是我的Linux GUI登录不是su。
无论如何我可以在Eclipse CDT中以su(su密码)运行吗?
感谢。
答案 0 :(得分:3)
您拥有的一些选项:
以root身份运行Eclipse。 (不是一个很好的主意,imho,但最简单的一个)
暂时允许您的用户使用该库。 (可能很乱)
创建一个新的运行配置并创建一个脚本来运行您的可执行文件。(您每次都要输入密码)。
(@ Others,随意添加更多内容。)
答案 1 :(得分:1)
您可以创建一个运行配置,在该配置中使用sudo来运行您的应用程序。由于sudo
以这种方式启动终端无法访问终端,因此需要在启动配置中设置SUDO_ASKPASS
环境变量。步骤如下:
创建新的运行配置(为了完整性):
修改运行配置
/usr/bin/sudo
。./bin/my-executable
。注意:sudo
的工作目录是eclipse项目,因此路径应该是相对的。./bin/my-executable arg1 arg2
为sudo
添加一种询问密码的方法。
sudo
在从(eclipse)gui运行时没有终端(tty),我们需要为它提供一个可以获取密码的程序,即 askpass 程序。有关详细信息,请参阅this stackoverflow answer。ssh-askpass-gnome
提供了一个askpass程序,正如我通过运行dpkg --get-selections | grep askpass
找到的那样。因为那仍然没有给我可执行文件名,我通过运行强制搜索
sudo find -name *askpass*
。无论如何,如果没有安装这样的实用程序,请使用您最喜欢的软件包管理器进行搜索。SUDO_ASKPASS
作为名称,输入askpass程序的完整路径作为值,例如: /usr/bin/ssh-askpass
。sudo
密码的弹出窗口。