【问题标题】:Adding a new user to docker and limiting its permissions向 docker 添加新用户并限制其权限
【发布时间】:2018-10-29 09:31:25
【问题描述】:

我正在运行 Linux 的 docker 映像并尝试实现以下目标:

  1. 运行泊坞窗
  2. 创建用户测试
  3. 阻止用户 test 访问互联网

1 和 2 工作,但我被困在 #3。

我尝试了什么?

  1. 运行iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 501 -j DROP。此命令失败并显示错误消息“getsockopt 异常失败:不允许操作”。我无法找到根本原因
  2. 更改 sudoer 文件并添加条目 test ALL=!/bin/ping。这是为了看看我是否能够阻止用户测试运行 ping 命令。但是,sudoer 文件中的此更改没有任何影响,并且用户 test 能够运行 ping 命令。假设这可行,我的意图是与 sudoer 一起玩以实现我的目标

有解决这个问题的建议或建议吗?

【问题讨论】:

  • 您是否在-priviledged 模式下尝试了上述步骤?或尝试使用 root 用户 iptables -A OUTPUT -m owner --uid-owner test -j REJECT
  • 尝试使用docker exec --privileged <your-container's-name> iptables ...
  • 你应该需要: docker run --cap-add NET_ADMIN my_container(使用iptables命令需要能力NET_ADMIN),因为docker需要主机的网卡,ps:确保你阅读启用此功能之前

标签: linux bash docker system amazon-linux


【解决方案1】:

使用iptables 命令阻止特定用户的所有互联网访问。

sudo iptables -A OUTPUT -m owner --uid-owner {USERNAME} -j REJECT

如果您希望该命令在系统启动时运行,您应该将它添加到 /etc/rc.local 文件的末尾。

上面的反转命令:

sudo iptables -D OUTPUT -m owner --uid-owner {USERNAME} -j REJECT

或者您可以重新启动。除非您已将该行添加到 /etc/rc.local,否则它不是持久的,如果您有,则可以删除该行。

你可以阅读more

【讨论】:

  • 我仍然收到错误“getsockopt 异常失败:不允许操作”
  • 你试过root用户吗?与root用户相同的错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2016-04-04
  • 2020-10-27
  • 1970-01-01
  • 2021-05-12
  • 2018-07-30
  • 2020-08-13
相关资源
最近更新 更多