不允许用于内核 IP 路由表操作的 PHP 接口

发布于 2024-12-17 08:16:01 字数 229 浏览 0 评论 0原文

我正在尝试以这种方式使用 PHP 执行路由添加命令: exec("/sbin/route -net 127.0.0.1", $output); 并且我收到 SIOCADDRT 操作不允许。我想这是因为我没有通过 sudo 执行路由命令。 但我无法从 php 执行 sudo,因为该命令要求输入 su 密码。那么如何在没有 sudo 的情况下运行route add呢?

谢谢!

I'm trying to execute route add command with PHP this way:
exec("/sbin/route -net 127.0.0.1", $output); and I'm getting SIOCADDRT operation not permitted. I suppose this is because I don't execute the route command through sudo.
But I can't do sudo from php because the command asks for the su password. So how can I run route add without sudo?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

捎一片雪花 2024-12-24 08:16:01

恕我直言,最好的方法是创建一个使用此命令的 shell 脚本。之后,允许此 shell 脚本在 /etc/sudoers 中以 root 身份执行。

在 sudoers 文件中添加的语法可以在 this 中找到问题的已接受答案

所以你只需要:

exec("/usr/bin/sudo /path/to/script");

这样,你的 root 密码就不会暴露,你可以在脚本中添加你想要的任何命令。

The best way to do this is, IMHO, is to create a shell script which use this command. After that, allow this shell script to be executed as root in /etc/sudoers.

The syntax to add in sudoers file can be found in this question's accepted answer.

So you just need to:

exec("/usr/bin/sudo /path/to/script");

This way, your root password is not exposed and you can add any command you'd like in your script.

浅语花开 2024-12-24 08:16:01

您可以使用 -S 参数发送 set sudo 从标准输入获取密码

exec("echo 'password' | sudo -u root -S /sbin/route -net 127.0.0.1", $output);

You can send set sudo to get password from standard input using -S argument

exec("echo 'password' | sudo -u root -S /sbin/route -net 127.0.0.1", $output);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文