我需要能够通过php脚本修改我的openvpn auth文件。我已经让我的http用户成为了一个无通道的sudoer,因为这台机器只能在我的家庭网络中使用。
我目前有以下命令:
echo shell_exec("sudo echo '".$username."' > /etc/openvpn/auth.txt");
echo shell_exec("sudo echo '".$password."' >> /etc/openvpn/auth.txt");
但是在运行时,它们根本不会更改文件,或者在php中提供任何输出。
我如何使这项工作?
答案 0 :(得分:3)
您可以以root身份运行副本,而不是以root身份运行整个shell进程(可能是不安全的):
(使用bash):
sudo cp <(echo "$username") /etc/openvpn/auth.txt
(应该适用于任何shell):
echo "$username" | sudo dd of=/etc/openvpn/auth.txt
答案 1 :(得分:1)
运行时
sudo command > file
只有命令以sudo身份运行,而不是重定向。
正如您所指出的那样,sudo sh -c "command > file"
会起作用。但除非你真的想以command
作为sudo运行,否则你不应该这样做。您只能以sudo身份运行重定向部分。
rici的答案涵盖了两种方法。这是另一种方法:
command | sudo tee filename >/dev/null #to overwrite (command > file)
command | sudo tee -a filename >/dev/null # to append (command >> file)