Подтвердить что ты не робот

Отладка в pyCharm с привилегиями sudo?

Я протестировал код, который требует доступа root в pyCharm, запустив sudo pycharm.sh, но это не так, как я бы рекомендовал сделать это.

Я знаю, что можно отлаживать права sudo, запустив интерпретатор python как sudo в pyCharm, но как это сделать?

4b9b3361

Ответ 1

Создайте оболочку script, которая выполняет "sudo python" и пересылает аргументы, и настройте этот script как интерпретатор Python в PyCharm.

Название этой оболочки script должно начинаться с python (источник: http://forum.jetbrains.com/message/PyCharm-424-3).

Ответ 2

Для чего мне стоит запустить python script с sudo priviledges (на Ubuntu 16.04) следующим образом:

  • В самой первой строке в script определите интерпретатор следующим образом:

    #!/usr/bin/sudo python

  • Сделайте исполняемый файл script:

    chmod +x myscript.py

  • Запустите script напрямую, не указав непосредственно интерпретатор python:

    ./myscript.py

  • script запросит пароль sudo и продолжит работу с повышенными привилегиями.

Ответ 3

Я столкнулся с другим способом решения этой проблемы, поэтому я решил поделиться им (этот ответ больше похож на альтернативу другим ответам).

Здесь следует упомянуть, что это решение "атакует" проблему, выполняя только определенный скрипт Python (в среде IDE pycham) в корневом режиме, а не все приложение 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) Создайте "сценарий sudo": цель этого сценария - дать привилегии python для запуска от имени пользователя root.

Создайте скрипт с именем python-sudo.sh и добавьте в него следующее:

#!/bin/bash
sudo /usr/bin/python "[email protected]"

Еще раз обратите внимание, что путь - это путь к вашему Python, как и на предыдущем этапе.

Не забудьте дать разрешения на выполнение этого скрипта с помощью команды: chmod

chmod +x python-sudo.sh

3) Используйте скрипт python-sudo.sh качестве интерпретатора pycharm:

В Pycharm перейдите: File --> Settings --> Project interpreter

В правой верхней части нажмите значок "Настройка" и нажмите "Добавить локальный".

В опции браузера выберите скрипт python-sudo.sh, который мы создали ранее. Это даст PyCharm привилегию для запуска скрипта Python от имени root.

4) Отладка теста: все, что осталось сделать, это отладить конкретный скрипт Python в IDE pycharm. Это можно легко сделать, щелкнув правой кнопкой мыши по сценарию для отладки → нажмите Debug sample_script_to_debug.py

Надеюсь, что это было полезно, и дайте мне знать, если есть какие-либо ошибки в этом подходе.

Ура,

Guy.

Ответ 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 в качестве интерпретатора python в pycharm.

Таким образом, вы можете связывать более низкие порты, но ни одна программа python 3 не может это сделать, и pycharm все равно может убить ваш script. Вы также можете ограничить выполнение разрешения для себя, если хотите больше безопасности.

Ответ 5

Я столкнулся с той же проблемой при попытке отладки кода, связанного с Bluetooth, на Raspberry Pi. Я полагаю, поскольку вы выполняете удаленную отладку на устройстве, это устройство предназначено только для разработки. В таком случае, в моем скромном варианте, вы должны разрешить вход в систему через ssh root, чтобы вы могли настроить PyCharm на использование пользователя root, и вам не нужно sudo. Вот решение я выбрал.

Следующие инструкции относятся к Raspberry Pi, но процедура одинакова для любого дистрибутива Linux:

Прежде всего, добавьте свой открытый ключ к authorized_keys ключу:

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> 
~/.ssh/authorized_keys"

Затем войдите в Raspberry Pi:

ssh [email protected]

Если у вас есть консоль, скопируйте ключ в root каталог:

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

Наконец, отредактируйте sshd_config добавив PermitRootLogin without-password:

sudo vim /etc/ssh/sshd_config

Используйте ваш любимый редактор.

Теперь вы можете ssh внутри Raspberry Pi от имени root:

ssh [email protected]

Используя вместо этого пользователя root или пользователя pi, вы сможете запускать свой код, даже удаленно, с привилегиями root, как того требует BlueZ.

Ответ 6

Терминал:

sudo ./Pycharm

таким образом, вы можете запустить PyCharm как SuperUser

Ответ 7

В новой версии PyCharm он имеет конфигурацию для запуска интерпретатора Python в корне, без необходимости обходного пути. Смотрите картинку ниже. Поставьте галочку: выполнять код с помощью этого интерпретатора с правами суперпользователя через sudo

enter image description here