列出 Docker 容器中的 IP 表

列出 Docker 容器中的 IP 表

我想iptables在 Ubuntu 16.04 Docker 容器中运行该命令。我已经创建了一个用户,并赋予该用户 root 权限,并将其添加到该sudo组中,但我仍然被告知我没有iptables以 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.

在我的/etc/sudoers文件中,我有一行:%sudo ALL=(ALL:ALL) ALL,我相信该行应该允许sudo组中的任何用户(我是)运行任何命令,但我仍然收到权限被拒绝的错误。

我如何iptables以该用户身份成功运行该命令?

请注意,我是在带有图像的 Docker 容器中执行此操作:ubuntu:16.04

答案1

能力

如果您想iptables在容器内进行访问,则需要--cap-add=NET_ADMIN在最初运行容器时通过开关启用特定功能。

例子

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

然后在容器中设置iptables& sudo

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

然后在容器内,设置一个用户 ,user1并将其添加到sudo组中:

# adduser user1
# adduser user1 sudo

然后将用户设置为user1

# su - user1

检查user1'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

检查他们是否可以iptables通过以下方式访问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

参考

相关内容