web-dev-qa-db-fra.com

Liste des tables IP dans Docker Container

Je veux exécuter la commande iptables dans un conteneur Docker Ubuntu 16.04. J'ai créé un utilisateur, étant donné que les autorisations root de l'utilisateur, les ont ajoutées au groupe Sudo, mais on me dit toujours que je n'exécute pas iptables en tant que root.

$ groups
stack root Sudo

$ Sudo whoami
root

$ Sudo iptables --list
iptables v1.6.0: can't initialize iptables table `filter': Permission 
denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

Dans mon fichier /etc/sudoers, J'ai la ligne: %Sudo ALL=(ALL:ALL) ALL, qui, je crois, devrait permettre à tout utilisateur du groupe Sudo (que je suis) d'exécuter n'importe quelle commande, mais je obtenez toujours l'erreur d'autorisation refusée.

Comment exécuter avec succès la commande iptables en tant que cet utilisateur?

Veuillez noter que je fais cela dans un conteneur Docker avec image: ubuntu:16.04

10
northsideknight

Capacités

Si vous souhaitez avoir un accès à iptables dans vos conteneurs, vous devez activer des capacités spécifiques via le --cap-add=NET_ADMIN commutateur lors de l'exécution initiale du conteneur.

Exemple

$ docker run --cap-add=NET_ADMIN -it ubuntu:16.04

Ensuite, dans le conteneur, configurez iptables & Sudo:

# apt update -y
# apt-get install iptables Sudo -y

Puis à l'intérieur du conteneur, configurez un utilisateur, user1, et l'a ajouté au groupe Sudo:

# adduser user1
# adduser user1 Sudo

Ensuite, définissez l'utilisateur sur user1:

# su - user1

Vérifier user1's Autorisations Sudo:

$ Sudo -l
[Sudo] password for user1:
Matching Defaults entries for user1 on 1356bf8bd61a:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User user1 may run the following commands on 1356bf8bd61a:
    (ALL : ALL) ALL

Vérifiez s'ils peuvent accéder à iptables via Sudo:

$ Sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Références

17
slm