Я создал тестового пользователя и хочу ограничить этого «тестового» пользователя запуском только следующей команды через 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
Могу я узнать, что было неправильно настроено в visudo
В echo
работает как root
, но socat
нет. Попробуйте вместо этого:
echo "show stat" | sudo socat stdio /var/run/haproxy.sock
В вашем канале только echo запускается с повышенными привилегиями, я считаю, что вам нужно sudo перед socat.
Вы можете определить обычный (непривилегированный) сокет unix, например:
stats socket /var/run/haproxy/socket.sock mode 666
Вы можете избежать permission denied
если вы измените конфигурацию, как показано ниже.
stats socket /var/run/haproxy/socket.sock level admin
Результат:
echo "set server"|nc -U /var/run/haproxy/socket.sock
Require 'backend/server'