【发布时间】:2018-09-14 05:49:33
【问题描述】:
我阅读了this very interesting post,它非常接近我的需要,但并不完全,他们将它用于 shell 脚本,而我需要相同的解决方案,主要用于内置 Python 函数。
长话短说:
open("/dev/input/event3", "rb")
这不是开箱即用的,因为为了打开 event3,由于特权提升,我每次执行 Python 脚本时都需要输入密码。我该怎么做才能不必每次都输入密码,也不必将密码写在脚本中的平面文本中?我喜欢我在上面链接的帖子中提供的解决方案,但这不起作用,因为这意味着我在这个打开的文件上获得的-sort of speak-句柄将在另一个范围/python 脚本中。
有什么解决办法吗?
谢谢
编辑
我尝试修改我的整个 Python 脚本的权限,这样我就不需要输入密码,但这也没有用。我尝试了什么:
1) 修改访问权限
sudo chown root:root /home/username/myscript.py
sudo chmod 700 /home/username/myscript.py
2) 修改visudo
myusername ALL=(ALL) NOPASSWD: /home/username/myscript.py
3) 尝试执行我的 python 脚本现在失败了,尽管它显然在那里
myusername$ ./myscript
bash: ./myscript: No such file or directory
【问题讨论】:
-
如果脚本是 root 拥有的,它不会以 root 身份运行,除非您使用
chmod设置粘性位 -
出于安全原因,我仍然不会以 root 身份运行整个脚本。最好生成一个
sudo子进程。 -
@Kos 我的 Python 脚本由父进程生成,父进程在一段时间后退出,因此子进程成为守护进程。我使用
subrpocess.Popen来创建孩子。如何在每次启动脚本时不必输入密码的情况下将孩子变成 sudo? -
你的脚本上面有something like
#!/usr/bin/python吗?另外,bash找不到./myscript,因为你拥有的是./myscript.py。 -
快速提问:谁拥有 event3,它需要如此严格的权限吗?
标签: python linux permissions sudo