iptables
Ubuntu 16.04 Docker 컨테이너에서 이 명령을 실행하고 싶습니다 . 해당 사용자에게 루트 권한을 부여하여 사용자를 생성하고 이를 그룹에 추가했지만 여전히 루트로 실행되고 sudo
있지 않다는 메시지가 표시됩니다 .iptables
$ 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