LINUX.ORG.RU

Быстрое отключение сервиса dnscrypt-proxy в systemd

 , ,


0

1

Доброго времени, уважаемые пользователи Линукс, посетители linux.org.ru!

Вопрос: как дать простому пользователю линукс возможность отключать или включать один конкретный сервис?

После установки dnscrypt-proxy в trisquel (Ubuntu) командой `apt-get install dnscrypt-proxy` в systemd появился сервис, который автоматически включает шифрование днс-траффика.

# systemctl status dnscrypt-proxy
● dnscrypt-proxy.service - DNSCrypt proxy
   Loaded: loaded (/lib/systemd/system/dnscrypt-proxy.service; enabled; vendor p
   Active: active (running) since Ср 2018-05-30 19:47:55 MSK; 25s ago
     Docs: man:dnscrypt-proxy(8)
 Main PID: 4664 (dnscrypt-proxy)
   CGroup: /system.slice/dnscrypt-proxy.service
           └─4664 /usr/sbin/dnscrypt-proxy --resolver-name=cisco

https://www.dnsleaktest.com/ показывает

IP Hostname ISP Country
208.69.33.73 m57.fra.opendns.com OpenDNS, LLC Germany

после отключения сервиса `service dnscrypt-proxy stop` , он показывает хост моего провайдера, примерно так:

IP Hostname ISP Country
1.2.3.4 none Sample-Web OOO Russian Federation

Всё работает, но для надёжной работы необходимо создать скрипт отключения и включения этого сервиса, чтобы отключать-включать кликом по ярлыку на рабочем столе.

Как это сделать без написания скрипта, который будет содержать рут-пароль? Можно ли дать простому пользователю право включать-отключать сервис dnscrypt-proxy ?

★★

Почему не

# systemctl mask dnscrypt-proxy

macroc
()
Ответ на: комментарий от iljuase

sudo

Глупо. man polkit.

/etc/polkit-1/rules.d/10-dnscrypt.rules:

polkit.addRule(function(action, subject) {
        if (action.id == "org.freedesktop.systemd1.manage-units" &&
            subject.user == "YOUR_USER_NAME" &&
            action.lookup("unit") == "dnscrypt-proxy.service" &&
            /start|stop|restart/.test(action.lookup("verb"))
                return polkit.Result.YES;
});

anonymous
()
Ответ на: комментарий от anonymous

спасибо. наверное, кроме правил, нужно еще что-то? http://0x0.st/s2gu.png он просит пароль при запуске под простым пользователем (после создания файла и ребута)

znavko ★★
() автор топика
Ответ на: комментарий от znavko

переписал так для двух пользователей и для сервиса и сокета, но окно авторизации все равно появляется

$ cat /etc/polkit-1/rules.d/10-dnscrypt.rules 
polkit.addRule(function(action, subject) {
        if (action.id == "org.freedesktop.systemd1.manage-units" &&
            (subject.user == "user1" || subject.user == "user2") &&
            (action.lookup("unit") == "dnscrypt-proxy.service"
             action.lookup("unit") == "dnscrypt-proxy.socket") &&
            /start|stop|restart/.test(action.lookup("verb"))
                return polkit.Result.YES;
});

# chmod 777 /lib/systemd/system/dnscrypt-proxy.socket

подскажите, как правильно дать доступ к сервису и его сокету?

znavko ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.