我读过这个非常有趣的帖子,它非常接近我所需要的,但并不完全,他们将它用于shell脚本,而我需要的是相同的解决方案,主要用于内置的Python函数。
长话短说:
open("/dev/input/event3", "rb")
这是不可能的,因为为了打开event3,我每次执行脚本时都需要键入密码,因为权限提升了。我能做什么,这样我就不必每次输入我的密码,也不必在我的脚本中用平面文本写我的密码。我喜欢我在上面链接的文章中提供的解决方案,但这不起作用,因为这意味着我在这个打开的文件上获得的-sort会话句柄将位于另一个作用域/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
发布于 2018-04-04 08:38:23
我突然想到,你可能是在倒退地处理这个问题。目前,您在询问如何提高python脚本的权限,而无需每次输入密码,而您应该问:“为什么我需要输入密码呢?”
只要文件不是安全问题,那么脚本和文件都应该由输入组中的非根用户拥有。拥有python脚本的用户可以在没有根权限的情况下执行它,从而访问不需要它们的文件。
发布于 2018-04-04 21:25:05
阅读了有关 塞图德的更多信息。这很棘手(所以我甚至不会在这里解释),它是sudo
、su
、login
等身份验证相关程序的基础。参见海胆(2)、塞图德(2)、execve(2)、全权证书(7)、chmod(1)。
一本好的Unix编程书(如碱性磷酸酶或其他更新的东西)应该用系统调用 (在系统(2)中列出)来解释setuid。
setuid可执行文件不能是脚本(使用谢邦;它们应该是二进制小精灵可执行文件(参见精灵(5))。但是,您可以用C编写一些setuid包装程序(或者大多数其他编译语言,例如Rust、Ocaml、C++、Go、.)运行Python脚本。小心点,因为一个错误可能会打开一个巨大的安全孔。但是有了这样一个setuid可执行文件,您就不必键入任何密码。
您还可以让一些特定的用户或组拥有/dev/input/event3
(因此,通过udev
或systemd
对系统进行适当的配置.)并有一个setuid或setgid程序。
顺便说一下,您可以配置sudo
(请参阅sudoers(5)
和这)以避免输入任何密码。当然,这会削弱整个系统的安全性(但选择是你的)。
发布于 2018-04-04 10:11:35
您可以使用以下语法在同一行中传递sudo密码:
echo password | sudo -S your_command
这样,在命令执行之前,不会提示您输入sudo密码--听起来这就是您要找的。
https://stackoverflow.com/questions/49654856
复制相似问题