Executável com o setuid chamado systemctl sem autenticação interativa

0

Eu tenho um arquivo executável com o conjunto de bits setuid, o arquivo é de propriedade de root: root. Esse executável é usado para permitir que um processo não privilegiado altere determinadas partes da configuração do sistema. Alterar arquivos de configuração pertencentes ao root, por exemplo, / etc / network / interfaces, funciona bem. Então o bit setuid parece funcionar corretamente.

No entanto, quando o executável chama systemctl ou timedatectl, a autenticação interativa interrompe o processo:

==== AUTENTICANDO PARA org.freedesktop.systemd1.manage-units === A autenticação é necessária para reiniciar o 'networking.service'.

O arquivo executável é chamado sem qualquer interação do usuário pelo backend de um frontend de usuário baseado na web. Portanto, é possível inserir uma senha.

Por que a autenticação é necessária para chamar systemctl quando o bit setuid está obviamente configurado corretamente e a chamada para systemctl deve estar acontecendo com permissões de root?

getfacl nos retornos executáveis:

# owner: root
# group: root
# flags: s--
user::r-x
group::r-x
other::r-x

O executável reside no sistema de arquivos raiz, que é montado com opções "errors = remount-ro". O setuid não é ignorado, pois altera o conteúdo dos arquivos de configuração de propriedade do root.

    
por Dierk 05.05.2017 / 15:06

0 respostas