Страницы

Поиск по вопросам

четверг, 26 декабря 2019 г.

Как запустить Сишный код из Python с правами суперпользователя?

#python #c #django


У меня имеется сишная библиотека, которой я пользуюсь из питона. Взаимодействие по
этой схеме.

Проблема вот в чем: процесс python'а работает с правами суперпользователя, но сишные
функции из библиотеки, которые вызываются этим процессом, работают без прав суперпользователя,
соответственно возвращают ошибку.

Как быть в этой ситуации?

Update: Работаю с django. Изначально пробовал запускать компилированные объектные
файлы из питона - работает как нужно.

Но во views.py пробовал вызывать разными методами (например, таким) — не вышло:


  [Errno 2] No such file or directory


несмотря на то, что объектный файл лежит в одной директории с views.py.
    


Ответы

Ответ 1



соответственно возвращают ошибку: [Errno 2] No such file or directory, несмотря на то, что объектный файл лежит в одной директории со views.py ошибка не связана с отсутствием/наличием каких-то прав. вообще «дочерние» процессы (по умолчанию) наследуют привилегии от породившего их процесса. ошибка вызвана тем, что у вас не ms/windows, а gnu/linux, и поиск библиотек (по умолчанию) не производится ни в текущем, ни в каком-либо другом произвольном каталоге. можно попробовать добавить текущий каталог — . (или любой другой нужный) — к переменной окружения LD_LIBRARY_PATH, например, так: $ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH python file.py если же используется sudo, то, скорее всего команда вида: $ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH sudo python file.py не даст эффекта — наверняка sudo в используемой системе сконфигурирован игнорировать LD_LIBRARY_PATH из переменных окружения, поэтому данную переменную программе sudo надо передавать явно при вызове как параметр: $ sudo LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH python file.py

Комментариев нет:

Отправить комментарий