Назад | Перейти на главную страницу

haproxy и socat sudo

Я создал тестового пользователя и хочу ограничить этого «тестового» пользователя запуском только следующей команды через 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'