使用sudo权限在pyCharm中调试?

时间:2013-01-13 00:41:04

标签: linux pycharm

我通过运行pyCharm测试了sudo pycharm.sh中需要root访问权限的代码,但这不是我建议这样做的方式。

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

9 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

对于它的价值,我已经管理过运行带有sudo priviledges的python脚本(在Ubuntu 16.04上),如下所示:

  1. 在脚本的第一行中,定义如下的解释器:

    <强> #!/usr/bin/sudo python

  2. 使脚本可执行:

    <强> chmod +x myscript.py

  3. 直接运行脚本,不用自己指定python解释器:

    <强> ./myscript.py

  4. 该脚本将询问sudo密码并继续使用提升的权限运行。

答案 2 :(得分:3)

我遇到了解决这个问题的另一种方法,所以我想分享它(这个答案更像是其他答案的替代方案)。

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

1)禁用需要密码才能运行Python:

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

user host =(root)NOPASSWD:full_path_to_python,例如:

guya ubuntu = (root) NOPASSWD: /usr/bin/python

注意:

命令可以检测到

userwhoami

命令可以检测到

hosthostname

2)创建 a&#34; sudo脚本&#34;:此脚本的目的是授予以root用户身份运行的python权限。

创建一个名为python-sudo.sh的脚本,并在其中添加以下内容:

#!/bin/bash
sudo /usr/bin/python "$@"

再次注意,路径是前一阶段Python的路径。

请勿忘记使用以下命令为此脚本授予执行权限:chmod

chmod +x python-sudo.sh

3)使用 python-sudo.sh脚本作为pycharm解释器:

在pycharm中转到:File --> Settings --> Project interpreter

在右上方点击&#34;设置&#34;图标,然后单击&#34;添加本地&#34;。

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

4)调试测试:剩下要做的就是在pycharm IDE中调试特定的Python脚本。这可以通过右键单击要调试的脚本轻松完成 - &gt;点击Debug sample_script_to_debug.py

希望它有用,如果这种方法有任何错误,请告诉我。

干杯,

盖。

答案 3 :(得分:2)

我通过在家中复制/usr/bin/python3,然后设置cap_net_bind_service功能来解决此问题:

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

然后在pycharm中使用~/python35-setcap作为python解释器。

这样,您可以绑定较低端口,但是没有任何python 3程序可以执行此操作,并且pycharm仍然可以终止您的脚本。如果您想要更高的安全性,也可以限制对自己的执行权限。

答案 4 :(得分:2)

我在调试Raspberry Pi上的蓝牙相关代码时遇到了相同的问题。我想,由于您正在设备上进行远程调试,因此该设备仅供开发使用。在这种情况下,我的谦虚选项应该允许ssh root登录,因此您可以将PyCharm配置为使用root用户,而无需sudo。那就是我选择的解决方案。

以下说明适用于Raspberry Pi,但此步骤适用于任何Linux发行版:

首先,将您的公钥添加到authorized_keys

cat ~/.ssh/id_rsa.pub | ssh pi@raspberrypi "mkdir -p ~/.ssh && cat >> 
~/.ssh/authorized_keys"

然后登录到Raspberry Pi:

ssh pi@raspberrypi

有了控制台后,将密钥复制到root目录中

sudo mkdir /root/.ssh
sudo cp authorized_keys /root/.ssh/

最后编辑sshd_config,添加PermitRootLogin without-password

sudo vim /etc/ssh/sshd_config

使用您喜欢的编辑器。

现在您可以以root身份在Raspberry Pi内ssh了:

ssh root@raspberrypi

使用rootpi用户,可以使用root特权甚至远程运行代码,甚至 BlueZ要求。

答案 5 :(得分:1)

在PyCharm新版本中,它具有可在根目录下运行Python解释器的配置,无需解决方法。见下图。选中该复选框:使用此解释器以sudo

的root特权执行代码

enter image description here

答案 6 :(得分:1)

对于那些寻求更清洁解决方案的人,不介意每次都输入密码。

转到您的运行配置> 编辑配置

在“执行”下,选中在输出控制台中模拟终端选项。

这将允许您在维护当前用户的同时调试Python脚本,并在需要时为脚本提供提升的sudo权限。如果您在多个项目中工作,也可以更轻松地维护不同的虚拟环境。

enter image description here

答案 7 :(得分:0)

终端:

sudo ./Pycharm

这样你可以启动PyCharm作为SuperUser

答案 8 :(得分:0)

我遵循here的说明并获得成功。但是存在一个问题,当您使用sudo时,PYTHONPATH无效。因此,当您使用

进行编辑时
sudo visudo -f /etc/sudoers.d/python

添加以下内容:

user host = (root) NOPASSWD:SETENV: /home/yizhao/anaconda3/bin/python

您的脚本还应该是:

#! /bin/bash
sudo PYTHONPATH=$PYTHONPATH /home/name/anaconda3/bin/python "$@"