如何使用shutil写入根文件?

时间:2019-03-23 19:48:42

标签: python sudo shutil

我在tkinter中构建了一个GUI,该GUI在raspberrypi触摸屏上的无人区运行。我想限制此设备的安全性,以便没有人可以插入键盘和alt-f4或其他任何按钮,退出GUI并访问公司网络并执行他们想做的任何事情。

我发现编辑/etc/udev/rules.d/99-com.rules文件以添加:

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

杀死我的USB端口而不杀死我想要的以太网端口。

但是,我在这台机器上的大部分工作都是通过Putty完成的,但是由于环境变量在我的腻子会话中有所不同,因此我有时不得不从终端控制台进行调试。

例如,要进行调试,我从终端的命令行启动GUI,因为腻子外壳无法访问图形桌面,因此调试时需要这些USB端口。

我在GUI中创建了一个调试面板,该调试面板仅在存在系统参数“ debug”时启动,并且我想在该调试面板中添加一个用于设置

的按钮
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文件,而授予脚本根目录权限可能是一个糟糕的主意。也许这就是为什么我在python.org shutil文档中找不到如何用sudo编写代码的原因。

对像我这样的新手程序员有任何反馈吗?

0 个答案:

没有答案