GUI 대신 명령줄(nmcli)에서 NetworkManager를 제어할 수 있는 권한

GUI 대신 명령줄(nmcli)에서 NetworkManager를 제어할 수 있는 권한

NetworkManager GUI를 사용하면 사용자는 X 세션 내에서 원하는 대로 VPN에 연결하거나 연결을 끊을 수 있습니다. 그러나 nmcliSSH 세션에서 해당 명령을 사용하면 인증 오류가 발생합니다.

> nmcli connection up VPN
Error: Connection activation failed: Not authorized to control networking.
> sudo nmcli connection up VPN
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/###)
> nmcli connection down VPN
Connection 'VPN' deactivation failed: Not authorized to deactivate connections
> nmcli connection show VPN | grep -F 'connection.permissions'
connection.permissions:                 user:[my user]

GUI 작업에 적절한 명령을 사용하고 있지 않습니까? 아니면 NetworkManager가 GUI의 명령줄 인터페이스에서 사용 가능한 모든 기능을 제공합니까?

답변1

polkit이 작업은 차단되었지만 대화형("활성") 세션에는 허용됩니다.

본질적으로 다음과 같은 파일이 있습니다 /etc/polkit-1/rules.d.

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.NetworkManager.network-control")
        return (subject.active ? "yes" : "no");
});

SSH 세션을 통해 VPN에 연결하려면 yes무조건 반환해야 합니다.

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.NetworkManager.network-control")
        return "yes";
});

불행하게도 이것은 내가 조심하지 않으면 SSH 연결을 통해 (물리적 연결을 끊음으로써) 내 발에 총을 쏠 수 있게 해 주지만,NetworkManager가 사용자가 특정 연결을 비활성화하는 것을 방지하는 방법에 대한 질문이 이미 존재합니다..

관련 정보