Qual é a maneira correta , com um único comando ou uma pequena adição de polkit, para limitar todos os usuários sem privilégios ao uso somente leitura de nmcli?
Edit: Permitir apenas um grupo unix privilegiado, além do root, como 'netadmins', também seria bom. O principal problema, no entanto, é bloquear todas as alterações não somente leitura feitas por usuários não privilegiados em geral.
Fundo
Como a maioria dos administradores de sistema que conheço, para implantações de servidor, geralmente desabilitei o NetworkManager e executei o serviço 'rede', em vez disso, usei arquivos de configuração e scripts de rede para configurar interfaces, pontes, ligações etc. -black-boxy mesmo para configurações avançadas.
Com o EL 8, a configuração de rede legada é preterida em favor do NetworkManager. Ao mesmo tempo, as distribuições EL (atualmente EL 7.5) agora são fornecidas permitindo que usuários não root criem, modifiquem e excluam interfaces e façam alterações quase ilimitadas na configuração existente. Para servidores que atuam como nós principais de computação, isso permite que um usuário interfira na operação efetiva de toda a máquina. Para servidores que oferecem serviços de fronteira, isso aumenta a gravidade potencial e as implicações de segurança de comprometimentos sem privilégios.
Eu li parte da documentação sobre como alterar a configuração do polkit para o NetworkManager, mas a maior parte é voltada para solucionar algum problema sem fio em um laptop.
Aparentemente, começamos a escrever Javascript. Não é divertido?
Acho que isso vai funcionar:
https://doc.opensuse.org/documentation/leap/security/html/book.security/cha.security.policykit.html
https://wiki.archlinux.org/index.php/Polkit#Examples
https://blog.christophersmart.com/2014/01/06/policykit-javascript-rules-with-catchall/
Uma rápida
rpm -q --dump NetworkManager | grep -i pol
mostra que o arquivo de política é/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
. Procurá-lo<allow_inactive>yes
apontará as ações permitidas para usuários de login remoto conhecidos. Por exemplo, no Fedora Workstation 29, estes parecem ser<allow_active>
corresponde aproximadamente aos usuários que estão logados localmente.<allow_any>
corresponde a usuários que não estão logados. "logado" significapam_systemd
. Basicamente, "conectado" significará logins de GUI ou shell, mas provavelmente não quando você configurar logins do PAM para algo como o Apache :-).