24

pyCharm実行してrootアクセスを必要とするコードをテストしましたsudo pycharm.shが、これは私が推奨する方法ではありません。

pyCharmでpythonインタープリターをsudoとして実行することで、sudo特権でデバッグできることは知っていますが、これを行うにはどうすればよいですか?

4

9 に答える 9

9

「sudopython」を実行して引数を転送するシェルスクリプトを作成し、そのスクリプトをPyCharmでPythonインタープリターとして構成します。

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

私はこの問題を解決する別の方法に遭遇したので、それを共有しようと思いました(この回答は他の回答の代替案のようなものです)。

ここで言及する価値があるのは、このソリューションは、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

于 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 に答える
4

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権限でリモートでもコードを実行する機能を提供します。

于 2018-07-31T15:46:24.720 に答える
4

よりクリーンなソリューションを探していて、毎回パスワードを入力してもかまいません。

[実行構成] >[構成の編集]に移動します

[実行]で、 [出力コンソールでターミナルをエミュレートする]オプションをオンにします。

これにより、現在のユーザーを維持し、必要に応じてスクリプトに昇格されたsudo権限を付与しながら、Pythonスクリプトをデバッグできます。また、複数のプロジェクトにまたがって作業する場合は、さまざまな仮想環境を簡単に維持できます。

ここに画像の説明を入力してください

于 2020-02-20T23:47:37.067 に答える
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 に答える