我使用本教程(抱歉,这是德语)来切换我的433MHz插槽: https://tutorials-raspberrypi.de/raspberry-pi-funksteckdosen-433-mhz-steuern/
我编译了一个用RC代码打开和关闭套接字的文件。如果我直接在Pi Shell上运行它可以正常工作:
sudo /var/www/html/bin/RPiControl -3313
但如果我在我的PHP脚本上通过exec()
运行它,它不会:
exec('sudo /var/www/html/bin/RPiControl -3313', $output, $return);
这是我到目前为止所尝试的内容:
我认为使用PHP执行“sudo”是一个权限问题。如果我尝试sudo la la
它也不能正常工作。
如何在没有sudo
的情况下允许执行二进制文件,或允许PHP使用sudo
?
提前致谢。
答案 0 :(得分:0)
有没有办法让二进制文件在没有sudo的情况下运行?
我尝试将SUID位(chmod u + s)设置为它也不起作用
如果设置SUID位,则可执行文件的运行权利与拥有可执行文件的用户相同。
因此,如果可执行文件归用户hello
所有,则可执行文件将以用户hello
的访问权限运行,如果该文件归管理员所有(root
),则以管理员权限运行。
因此,在设置SUID位之前,首先必须更改可执行文件的所有者(如果已经设置了SUID位,则它将被删除,必须再次设置):
sudo chown root:root /some/file/name
sudo chmod u+s /some/file/name
如果可执行文件调用另一个可执行文件(它使用exec
启动其他可执行文件),则默认情况下不的其他可执行文件将以更改的访问权限执行。
因此,您不能将SUID位用于shell脚本......
可以使用设置了SUID位的文件的源代码中的以下代码行更改此行为(如果程序是用C或C ++编写的):
setreuid(geteuid(), geteuid());
(这需要以下标题#include
行:)
#include <unistd.h>