Как записать в корневой файл с помощью shutil? - PullRequest
0 голосов
/ 23 марта 2019

Я создал графический интерфейс в tkinter, который работает на беспилотной площадке на сенсорном экране raspberrypi. Я хочу заблокировать защиту на этом устройстве, чтобы никто не мог подключить клавиатуру и alt-f4 или что-то еще, выйти из графического интерфейса и получить доступ к корпоративной сети и делать все, что они хотят.

Я обнаружил, что для редактирования файла /etc/udev/rules.d/99-com.rules добавим:

SUBSYSTEMS=="usb", DRIVERS=="usbhid", ACTION=="add", ATTR{authorized}="0"

убивает мои порты USB, не убивая мой порт Ethernet, что я и хочу.

Тем не менее, я в основном работаю на этой машине через Putty, но мне иногда приходится отлаживать с консоли терминала, потому что переменные окружения меняются в моем сеансе putty.

Например, для отладки я запускаю свой графический интерфейс из командной строки в терминале, потому что оболочка замазки не имеет доступа к графическому рабочему столу, поэтому мне нужны эти порты USB во время отладки.

Я создал панель отладки в графическом интерфейсе, которая запускается только при наличии системного аргумента «отладка», и я хотел бы добавить кнопку на эту панель отладки, которая устанавливает

ATTR{authorized}="1"

в указанном выше файле 99-com.

Я бы хотел автоматизировать редактирование этого файла, нажав кнопку на панели отладки.

Я обнаружил модуль shutil и написал кнопку tkinter, которая вызывает следующие функции:

def usbon_command():
    dst = "/etc/udev/rules.d/99-com.rules" # rpi config rules
    src = "/home/pi/pathtosourcefile/usb_ON.py" # 99-com.rules configured to USB ON
    shutil.copy(src, dst)  # copies the contents of src to dst

def usboff_command():
    dst = "/etc/udev/rules.d/99-com.rules" # rpi config rules
    src = "/home/pi/pathtosourcefile/usb_OFF.py" # 99-com.rules configured to USB OFF
    shutil.copy(src, dst)  # copies the contents of src to dst

Эти исходные файлы содержат все содержимое файла 99-com.rules и предназначены для перезаписи файла назначения с правильным набором переменных.

Очевидно, что в его текущем состоянии я не могу записать в файл / etc, и, возможно, было бы ужасной идеей дать полномочия моему скрипту root. Возможно, по этой причине я не могу найти, как написать sudo в документах python.org shutil.

Любой отзыв для начинающего программиста, как я?

...