permissão ip netns exec negada

permissão ip netns exec negada

Eu tenho um script php, digamos file.php que contém:

<?php
exec("ip netns exec vpn file2.php");
?>

Se eu executar file.php através da linha de comando, como root, ele funciona. No entanto, quando eu executo via Apache, www-data não tem permissão para usar ip netns exec, no entanto, www-data pode usar ip netns list.

Como faço para a) deixar o ip netns exec ser executado por usuários não root ou conceder ao www-data as permissões para executar o material do ip net exec?

Responder1

Tente algo como

# ip netns exec vpn sudo -u www-data apache

como raiz.

Dessa forma, o Apache será executado com netns como usuário não root. Se você precisar dos dois namespaces ao mesmo tempo, inicie duas instâncias, cada uma em um namespace. Alterar o namespace dinamicamente não parece funcionar.

Explicação:

O diretório /var/run/netnsarmazena todos os namespaces da rede, quando adicionamos um novo "abc", o arquivo vazio "abc" é criado neste diretório. Cada vez que executamos o programa "xyz" no namespace "abc" , ip(1)abre e mantém um descritor de arquivo para /var/run/netns/abc, depois chama unshare(2)e setns(2).

Então aí vêm as duas barreiras. Uma são as permissões do sistema de arquivos /var/run/netns/*e a outra são os recursos para syscalls privilegiados.

informação relacionada