Ubuntu 16.04 Dockerコンテナでiptables
コマンドを実行したい。 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