Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在服务器上通过web启动特权进程?_Python_Linux_Web_Flask_Raspberry Pi - Fatal编程技术网

Python 如何在服务器上通过web启动特权进程?

Python 如何在服务器上通过web启动特权进程?,python,linux,web,flask,raspberry-pi,Python,Linux,Web,Flask,Raspberry Pi,我在运行Raspbian的Raspberry Pi上使用Python Flask框架创建了一个web应用程序。我想通过网络控制硬件并在Pi上触发一些sudo任务 基于Flask的服务器在非sudo模式下运行,监听端口8080。当web客户机通过HTTP发送请求时,我想用sudo权限启动一个子进程。(例如,gpio引脚上的触发更改、打开摄像头等)。实施这种行为的最佳实践是什么 Web服务器可以向客户端请求sudo密码,该密码可用于提升权限。我想要一些关于如何做到这一点的建议。最佳实践是永远不要做这

我在运行Raspbian的Raspberry Pi上使用Python Flask框架创建了一个web应用程序。我想通过网络控制硬件并在Pi上触发一些sudo任务

基于Flask的服务器在非sudo模式下运行,监听端口8080。当web客户机通过HTTP发送请求时,我想用sudo权限启动一个子进程。(例如,gpio引脚上的触发更改、打开摄像头等)。实施这种行为的最佳实践是什么


Web服务器可以向客户端请求sudo密码,该密码可用于提升权限。我想要一些关于如何做到这一点的建议。

最佳实践是永远不要做这种事情。如果你让sudo从internet访问你的pi,然后执行用户输入,你就给了internet上的每个人在你的系统中执行任意命令的可能性。我知道这可能是你最喜欢的项目,但仍然可以想象有人可以进入你的电脑,并在你并不真正期待的时候转动相机

创建一个单独的流程,为您完成实际工作。您可以在后台以提升的权限运行此进程

您的web客户端将仅将此进程的任务存放在队列中。这可以像一个数据库一样简单,您的Flask应用程序向其中写入“任务请求”,另一个特权进程读取该请求,执行操作,并更新数据库


这个概念并不是新概念,所以您可以使用多个代理和任务队列。在Python开发人员中很流行,并且很容易集成到应用程序中

一个指针:另一个指针:如果您试图用shell脚本来实现这一点,它可能不会工作。这是一个安全特性。(用c程序试试,python可能也能用。但我从未试过。)同意。这也是我的第一个想法。我认为重点是:当用户输入正确的密码时,您不想给他root访问权限,但您希望运行一个程序,该程序具有完成这一任务所必需的权限,这需要这些权限。他可能只想打开一个led或类似的东西。是的,我不想让用户授予完全访问权限或执行用户输入。但是,我仍然想控制连接到Pi LED、摄像头、机器人等的硬件。因此,我要求的是实现这一点的安全方法。