Ubuntu

列出 Docker 容器中的 IP 表

  • March 3, 2020

我想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

能力

如果您想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's 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

參考

引用自:https://unix.stackexchange.com/questions/459206