pyCharm
実行してrootアクセスを必要とするコードをテストしましたsudo pycharm.sh
が、これは私が推奨する方法ではありません。
pyCharmでpythonインタープリターをsudoとして実行することで、sudo特権でデバッグできることは知っていますが、これを行うにはどうすればよいですか?
「sudopython」を実行して引数を転送するシェルスクリプトを作成し、そのスクリプトをPyCharmでPythonインタープリターとして構成します。
python
このシェルスクリプトの名前は(ソース: http: //forum.jetbrains.com/message/PyCharm-424-3 )で始まる必要があります。
その価値については、次のようなsudo特権(Ubuntu 16.04)を使用してPythonスクリプトを実行することができました。
スクリプトの最初の行で、次のようにインタプリタを定義します。
#!/usr/bin/sudo python
スクリプトを実行可能にします。
chmod +x myscript.py
インタプリタを自分で指定せずに、スクリプトを直接実行します。python
./myscript.py
私はこの問題を解決する別の方法に遭遇したので、それを共有しようと思いました(この回答は他の回答の代替案のようなものです)。
ここで言及する価値があるのは、このソリューションは、PyCharmアプリケーション全体ではなく、ルートモードで特定のPythonスクリプト(pPyCharm IDE内)のみを実行することによって問題を「攻撃」することです。
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)「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にPythonスクリプトをrootとして実行する権限が与えられます。
4)テストをデバッグする:あとは、PyCharmIDEで特定のPythonスクリプトを実際にデバッグするだけです。これは、スクリプトを右クリックしてデバッグすることで簡単に実行できます->ヒットDebug sample_script_to_debug.py
/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はスクリプトを強制終了できます。セキュリティを強化したい場合は、実行権限を自分自身に制限することもできます。
RaspberryPiでBluetooth関連のコードをデバッグしようとすると同じ問題が発生しました。デバイスでリモートデバッグを行っているので、デバイスは開発専用であると思います。このような場合、私の控えめなオプションでは、ssh rootログインを許可する必要があります。これにより、rootユーザーを使用するようにPyCharmを構成でき、sudoを実行する必要がなくなります。それが私が選んだ解決策です。
次の手順はRaspberryPiを対象としていますが、手順はどのLinuxディストリビューションでも同じです。
まず、公開鍵をauthorized_keys
:に追加します。
cat ~/.ssh/id_rsa.pub | ssh pi@raspberrypi "mkdir -p ~/.ssh && cat >>
~/.ssh/authorized_keys"
次に、RaspberryPiにログインします。
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
お好みのエディターを使用してください。
これで、ルートとしてRaspberryPi内でsshを実行できます。
ssh root@raspberrypi
root
代わりにまたはuserを使用しpi
て、BlueZで必要とされるように、root権限でリモートでもコードを実行する機能を提供します。
ターミナル:
sudo ./Pycharm
このようにして、スーパーユーザーとしてPyCharmを起動できます
私はここの指示に従い、成功します。ただし、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 "$@"