Отладка в pyCharm с привилегиями sudo?
Я протестировал код, который требует доступа root в pyCharm
, запустив sudo pycharm.sh
, но это не так, как я бы рекомендовал сделать это.
Я знаю, что можно отлаживать права sudo, запустив интерпретатор python как sudo в pyCharm, но как это сделать?
Ответы
Ответ 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]()