我创建了一个测试用户,并想限制这个“测试”用户只能通过 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'