我创build了一个testing用户,并想限制这个“testing”用户通过visudo只运行下面的命令。
echo "show stat" | socat stdio /var/run/haproxy.sock
visudo命令
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
我可以知道什么是visudoconfiguration不正确
在你的pipe道中,只有回声与提升的特权运行,我相信你需要在socat之前的sudo。
echo
以root
身份运行,但是socat
不是。 试试这个:
echo "show stat" | sudo socat stdio /var/run/haproxy.sock
你可以定义一个普通的(非特权的)unix套接字,如:
stats socket /var/run/haproxy/socket.sock mode 666