我通过运行pyCharm
测试了sudo pycharm.sh
中需要root访问权限的代码,但这不是我建议这样做的方式。
我知道可以通过在pyCharm中将python解释器作为sudo运行来调试sudo权限,但是我们该怎么做?
答案 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上),如下所示:
在脚本的第一行中,定义如下的解释器:
<强> #!/usr/bin/sudo python
强>
使脚本可执行:
<强> chmod +x myscript.py
强>
直接运行脚本,不用自己指定python
解释器:
<强> ./myscript.py
强>
答案 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
注意:
命令可以检测到 user
:whoami
host
:hostname
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
使用root
或pi
用户,可以使用root特权甚至远程运行代码,甚至
BlueZ要求。
答案 5 :(得分:1)
答案 6 :(得分:1)
对于那些寻求更清洁解决方案的人,不介意每次都输入密码。
转到您的运行配置> 编辑配置
在“执行”下,选中在输出控制台中模拟终端选项。
这将允许您在维护当前用户的同时调试Python脚本,并在需要时为脚本提供提升的sudo权限。如果您在多个项目中工作,也可以更轻松地维护不同的虚拟环境。
答案 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 "$@"