2

Я занимаюсь разработкой с PyCharm, занимаюсь разработкой сценария, который использует модуль scapy для Python, чтобы выполнять сканирование портов, анализировать трафик и создавать необработанные пакеты. Это, конечно, требует прав суперпользователя, и поэтому я запускаю PyCharm от имени root (да, я знаю о проблемах безопасности, которые это представляет).

Проблема в том, что когда PyCharm связывается с сервером лицензий компании, он отправляет текущее имя пользователя, которое, конечно же, оказывается "корневым", и сервер лицензий отклоняет мой запрос. Если я не запускаю PyCharm от имени пользователя root, он отправляет мое действительное имя пользователя и успешно получает лицензию, но затем я не могу запустить свой сценарий, потому что ему нужны разрешения root для выполнения своих действий.

Есть ли способ заставить PyCharm работать и передать мое действительное имя пользователя на сервер лицензий, но затем иметь права root, не редактируя мою учетную запись, чтобы дать себе права root?

4 ответа4

0

Как насчет запуска PyCharm на вашем локальном компьютере, как и вы, и разработки в контейнере, например в Vagrant (изначально поддерживается PyCharm) или Docker (поддерживается через плагин)?

0

Три года с опозданием на вечеринку, но стандартный logname команды Linux (и BSD и MacOS) даст желаемый результат.

My-Mac:~ devin$ logname
devin
My-Mac:~ devin$ sudo logname
devin
My-Mac:~ devin$ sudo su -
My-Mac:~ root# echo $USER
root
My-Mac:~ root# logname
devin

Я полагаю, что logname смотрит на tty запуска процесса, так что я не уверен, что это будет работать для абсолютно безголовой программы (например, той, которая запускается при запуске). Это работает, если вы запустите, а затем отсоедините программу через nohup.

My-Mac:~ root# nohup logname
appending output to nohup.out
My-Mac:~ root# cat nohup.out
devin
0

Это сработало для меня (http://esmithy.net/2015/05/05/rundebug-as-root-in-pycharm/). По сути, вы создаете другой интерпретатор для python, который представляет собой скрипт оболочки, который вызывает python с помощью sudo. Когда речь идет о создании файла sudoers (/etc/sudoers.d/python), мне пришлось добавить строку Defaults!/usr/bin/python2.7 !requiretty чтобы включить выполнение без tty.

0

Я думаю, что sudo идеально подходит для этого. Как быстрый тест:

$ echo $USER
halosghost
$ sudo echo $USER
[sudo] password for halosghost:
halosghost

То есть я увеличил разрешения, но сохранил идентичность моего пользователя. Флаг -E также может быть особенно полезен. Это гарантирует, что переменные среды сохраняются во время выполнения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .