2013-01-13 47 views
11

我测试过需要在pyCharm中运行sudo pycharm.sh才能进行root访问的代码,但这不是我推荐的方式。使用sudo权限在pyCharm中进行调试?

我知道可以通过在pyCharm中运行python解释器作为sudo来调试sudo特权,但我们该怎么做?

+0

你终于解决了这个问题吗?如果我运行sudo pycharm.sh,pycharm将被重新安装并重新配置... –

回答

7

创建一个shell脚本,它执行“sudo python”并转发参数,并将该脚本配置为PyCharm中的Python解释器。

此shell脚本的名称应以python(来源:http://forum.jetbrains.com/message/PyCharm-424-3)开头。

+4

对不起,伙计们,你能告诉我更多关于这个解决方案吗?我认为你的意思是sh脚本,但是PyCharm不能将它用作Python解释器。谢谢。 – bellum

+0

@bellum我已经修复了答案。 – rominf

+1

来自PyCharm的信号丢失了...停止按钮不再有效并且你得到了僵尸 –

3

对于它的价值,我已经成功运行使用sudo权限的(在Ubuntu 16.04)python脚本是这样的:

  1. 在脚本中的第一行,这样定义的解释:

    #!/usr/bin/sudo python

  2. 使脚本可执行:

    chmod +x myscript.py

  3. 运行脚本直接,没有指定python解释自己:

    ./myscript.py

  4. 脚本会要求输入sudo密码,并继续提升权限的运行。
-1

终端:

Sudo ./Pycharm 

这样你就可以开始PyCharm作为超级用户

2

我遇到另一种方式来解决这个问题,所以我想分享它(这个答案更喜欢另类为其他答案)。

这里值得一提的是,这个解决方案通过在root模式下运行一个特定的Python脚本(在pycham IDE中)而不是整个pycharm应用程序来“攻击”这个问题。

1)禁用需要密码来运行的Python:

这将通过编辑/etc/sudoers.d/python文件中achived。我们需要做的是在该文件中添加一个条目,如下所示:

用户主机=(根)NOPASSWD:full_path_to_python,例如:

谷芽Ubuntu的=(根)NOPASSWD在/ usr/bin中/ Python的

NOTES:

用户可以通过命令来检测:WHOAMI

主机可以通过命令来检测:主机名

2)创建“命令脚本”:这个脚本的目的是给蟒蛇特权作为root用户运行。

创建一个名为python-sudo.sh脚本,并添加以下到它:

/斌/庆典

须藤的/ usr/bin中/ Python的 “$ @”

注再次说明,该路径是上一阶段Python的路径。

不要忘了给执行权限使用命令thsi脚本权限:chmod

使用chmod + X python-sudo.sh

3)使用python-sudo.sh脚本作为pycharm interpeter:

在pycharm去:文件 - >设置 - >项目解释

在右上角的右手边点击“设置”图标,并点击“添加本地”。

在浏览器选项中选择我们之前创建的python-sudo.sh脚本。这将使pycharm有权以root身份运行python脚本。

4)调试测试:剩下要做的事情实际上是在pycharm IDE中调试特定的Python脚本。这可以很容易地完成通过右键单击脚本进行调试 - >点击“调试sample_script_to_debug.py”

希望它是有用的,让我知道这种方法是否有任何错误。

干杯,

盖伊。

+0

请注意,我的意思是#!/ bin/bash在python-sudo.sh脚本(出于某种原因它显示为它)。 –

0

我在我家复制/usr/bin/python3,然后设置cap_net_bind_service能力解决了这个问题:

cp /usr/bin/python3 ~/python35-setcap 
sudo setcap 'cap_net_bind_service=+ep' ~/python35-setcap 

,然后使用~/python35-setcap在pycharm Python解释器。

这样,你可以绑定较低的端口,但不是任何python 3程序都可以这样做,pycharm仍然可以杀死你的脚本。如果您想要更高的安全性,您还可以限制执行权限。