24

pyCharm我已经通过运行测试了需要 root 访问权限的代码,sudo pycharm.sh但这不是我推荐的方式。

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

4

9 回答 9

9

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

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

于 2013-01-13T17:16:04.630 回答
8

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

在此处输入图像描述

于 2019-06-17T03:45:28.620 回答
6

对于它的价值,我已经成功地运行了一个具有 sudo 特权(在 Ubuntu 16.04 上)的 python 脚本,如下所示:

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

    #!/usr/bin/sudo python

  2. 使脚本可执行:

    chmod +x myscript.py

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

    ./myscript.py

  4. 该脚本将要求输入 sudo 密码并以提升的权限继续运行。
于 2017-06-02T08:22:17.650 回答
4

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

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

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

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

在此处输入图像描述

于 2020-02-20T23:47:37.067 回答
4

我在尝试在 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"

然后登录树莓派:

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

根据 BlueZ 的要求,使用rootinstead 或piuser,您可以使用 root 权限远程运行您的代码。

于 2018-07-31T15:46:24.720 回答
4

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

这里值得一提的是,该解决方案通过在 root 模式下仅运行某个 Python 脚本(在 pPyCharm IDE 中)而不是整个 PyCharm 应用程序来“解决”问题。

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

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

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

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

笔记:

user可以通过命令检测:whoami

host可以通过命令检测:hostname

2)创建一个“sudo脚本”:这个脚本的目的是赋予Python以root用户身份运行的权限。

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

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

再次注意,路径是上一阶段的 Python 路径。此外,此路径是系统上 Python2 的路径。

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

chmod +x python-sudo.sh

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

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

在右上角单击“设置”图标,然后单击“添加本地”。

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

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

于 2017-06-19T21:15:05.153 回答
4

/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 仍然可以杀死您的脚本。如果您想要更高的安全性,您还可以限制自己的执行权限。

于 2017-12-26T21:18:28.880 回答
2

终端:

sudo ./Pycharm

这样你就可以以超级用户身份启动 PyCharm

于 2017-06-02T08:34:33.073 回答
1

我按照此处的说明操作并成功。但是有一个问题是使用 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 "$@"
于 2019-11-29T03:28:33.603 回答