haproxy 和 socat sudo

haproxy 和 socat sudo

我创建了一个测试用户,并想限制这个“测试”用户只能通过 visudo 运行以下命令。

echo "show stat" | socat stdio /var/run/haproxy.sock

维苏多

test    ALL=(root)NOPASSWD:/usr/bin/socat stdio /var/run/haproxy.sock

ls -lat /var/run/haproxy.sock

srwxr-xr-x 1 munin haproxy 0 May 22 22:32 /var/run/haproxy.sock

我运行了以下命令

test#sudo echo "show stat" | socat stdio /var/run/haproxy.sock

错误消息

2013/05/22 23:13:14 socat[21289] E connect(3, AF=1 "/var/run/haproxy.sock", 23): Permission denied

我可以知道 visudo 中配置错误的地方吗

答案1

在您的管道中,只有 echo 以提升的权限运行,我相信您在 socat 之前需要一个 sudo。

答案2

正在echo作为 运行root,但socat不是。请尝试以下操作:

echo "show stat" | sudo socat stdio /var/run/haproxy.sock

答案3

您可以定义一个普通的(非特权)unix套接字,例如:

    stats socket /var/run/haproxy/socket.sock mode 666

答案4

permission denied如果您像下面这样更改配置,则可以避免这种情况。

stats socket /var/run/haproxy/socket.sock level admin

结果:

echo "set server"|nc -U /var/run/haproxy/socket.sock
Require 'backend/server'

相关内容