- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了理解 Kubernetes 中的安全上下文和功能,我创建了以下 pod 描述:
apiVersion: v1
kind: Pod
metadata:
name: app
spec:
securityContext:
runAsUser: 1000
containers:
- name: busy
image: busybox
command:
- sleep
- "3600"
securityContext:
runAsUser: 2000
capabilities :
add: ["NET_ADMIN", "SYS_TIME"]
我在哪里添加 NET_ADMIN 和 SYS_TIME 功能。
$ kubectl exec -it app -- traceroute google.fr
traceroute: socket: Operation not permitted
command terminated with exit code 1
$ kubectl exec -it app -- /bin/sh date --set="10:00:00"
date: can't set date: Operation not permitted
由于设置了正确的功能,我发现这些操作是不被允许的,这很奇怪。这实际上是预期的吗?
最佳答案
在您的示例中,您使用的是 Busybox .
Coming in somewhere between 1 and 5 Mb in on-disk size (depending on the variant), BusyBox is a very good ingredient to craft space-efficient distributions. BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.
securityContext
这里不是最好的。我会发布非常详细的信息为什么。
privileges
.如果您将默认的 busybox pod 与
root
一起使用如下例所示的特权 它将按预期工作。
apiVersion: v1
kind: Pod
metadata:
name: app
spec:
containers:
- name: busy
image: busybox
command:
- sleep
- "3600"
$ kubectl exec -ti app -- traceroute bbc.com
traceroute to bbc.com (151.101.128.81), 30 hops max, 46 byte packets
1 10.32.1.1 (10.32.1.1) 0.006 ms 0.007 ms 0.003 ms
2 216.239.48.36 (216.239.48.36) 5.476 ms 216.239.48.74 (216.239.48.74) 5.361 ms 216.239.48.36 (216.239.48.36) 4.669 ms
...
$ kubectl exec -ti app -- ping bbc.com
PING bbc.com (151.101.0.81): 56 data bytes
64 bytes from 151.101.0.81: seq=0 ttl=54 time=6.246 ms
64 bytes from 151.101.0.81: seq=1 ttl=54 time=6.081 ms
sudo
特权`。有关详细信息,请查看有关
traceroute on busybox 的文档.
echo 'apiVersion: v1
kind: Pod
metadata:
name: app
spec:
securityContext:
runAsUser: 1000 ## All containers in this pod will be run as user 1000
containers:
- name: busy
image: busybox
command:
- sleep
- "3600"
securityContext:
runAsUser: 2000 ## as you specified here, as default you will enter to this container as user with ID 2000
capabilities :
add: ["NET_ADMIN", "SYS_TIME"]
runAsUser: 1000
这意味着这个 pod 中的每个容器,默认登录将作为用户 1000。
container spec
, 您已设置
runAsUser: 2000
这意味着这个特定的容器,默认情况下将以用户 2000 登录。
user 1000
请查收
this docs .总之这个数字是
Notice how the root user has the UID of 0. Most Linux distributions reserve the first 100 UIDs for system use. New users are assigned UIDs starting from 500 or 1000. For example, new users in Ubuntu start from 1000
Linux capabilities
:
$ kubectl exec -ti app /bin/sh
/ # capsh --print
/bin/sh: capsh: not found
$ kubectl exec -ti ubuntu /bin/bash
root@ubuntu:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
...
root@ubuntu:/# capsh --print
Current: = cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap+eip
Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap
Busybox
来实现它.如果您想了解更多有关
traceroute
的信息对于linxu,请查看
this link .
traceroute
的最后一次测试我在容器中创建了随机用户。
apt-get update
更新存储库,然后
apt-get install traceroute
:
$ kubectl exec -ti ubuntu /bin/sh
# whoami
root
# traceroute bbc.com
traceroute to bbc.com (151.101.0.81), 30 hops max, 60 byte packets
1 10.32.1.1 (10.32.1.1) 0.032 ms 0.008 ms 0.007 ms
2 209.85.253.197 (209.85.253.197) 6.294 ms 216.239.48.74 (216.239.48.74) 5.613 ms 216.239.48.36 (216.239.48.36) 5.335 ms
# useradd -m test
# passwd test
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# su test
$ whoami
test
$ id
uid=1000(test) gid=1000(test) groups=1000(test)
$ traceroute bbc.com
traceroute to bbc.com (151.101.64.81), 30 hops max, 60 byte packets
1 10.32.1.1 (10.32.1.1) 0.034 ms 0.008 ms 0.008 ms
2 216.239.48.36 (216.239.48.36) 5.515 ms 216.239.51.111 (216.239.51.111) 5.494 ms 216.239.48.36 (216.239.48.36) 5.591 ms
$ kubectl exec -ti app /bin/sh
/ # whoami
root
/ # traceroute bbc.com
traceroute to bbc.com (151.101.192.81), 30 hops max, 46 byte packets
1 10.32.1.1 (10.32.1.1) 0.005 ms 0.006 ms 0.003 ms
2 216.239.48.36 (216.239.48.36) 5.453 ms 216.239.48.74 (216.239.48.74) 4.812 ms 209.85.252.4 (209.85.252.4) 6.787 ms
/ # adduser test
Changing password for test
New password:
Retype password:
passwd: password for test changed by root
/ # su test
/ $ whoami
test
/ $ id
uid=1000(test) gid=1000(test) groups=1000(test)
/ $ traceroute bbc.com
traceroute: socket: Operation not permitted
traceroute
在
Busybox
你需要有
root
特权。在
ubuntu
上运行 traceroute您必须预先安装 traceroute 命令。
关于docker - 从 Kubernetes 中部署的容器执行跟踪路由时不允许操作 [Linux 功能],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61043365/
我的 Angular 应用程序中有以下代码。 app.config(function($routeProvider, $locationProvider) { $locationProvider
这就是我在 Backbone 中进行路由的方式,在决定调用哪个外部模板之前,首先获取路由及其参数。我觉得这很灵活。 var Router = Backbone.Router.extend({
我是 MEAN 堆栈领域的新手,我对 Angular 路线有一些疑问。为什么我应该在客户端重新创建后端已经用express.js创建的路由,有什么好处?这是 Angular.js 工作的唯一方式吗?我
我可以设置一条从根级 URL 进行映射的路由吗? http://localhost:49658/ 我使用的是 VS2010 内置 Web 服务器。 尝试使用空白或单斜杠 URL 字符串设置路由不起作用
我有一个现有的应用程序 Rails 3.2.17和 Angular js。我想在现有应用程序中包含 Activeadmin。 我遵循了 active-admin post from ryan bate
我正在关注 this Angular 中的路由教程,它就是行不通。当我使用“comp”选择器放置它的 HTML 代码时,它可以工作,但是当我尝试使用路由器 socket 对其进行路由时,它只显示来自
多个路由通过路由器进行管理。 前端路由的概念和原理 (编程中的) 路由 (router)就是一组 key-value 对应关系,分为:后端路由和前端路由 后端路由
服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤。 第一步我们需要先解析出请求URL的路径,我们引入url模块。 我们来给onRequest()函数加上一些逻辑
我正在为 Angular 6 应用程序设置路由,我想要一条可以匹配可变数量的段的路由。目前我有一个看起来像这样的路由配置: const routes: Routes = [ { path: '',
用户将点击电子邮件中的链接,如下所示: do-something/doSomething?thing=XXXXXXXXXXX 如何在路由器中定义路由并订阅获取参数? 目前在我的路由器中: {
我有一个具有以下结构的 Angular (4) 应用程序: app.module bi.module auth.module 路由应该是: / -> redirect to /home /
我正在使用 WCF 4 路由服务,并且需要以编程方式配置服务(而不是通过配置)。我见过的这样做的例子很少见,创建一个 MessageFilterTable 如下: var fi
我需要创建一个“路由”服务。我正在尝试使用 .Net 的 System.ServiceModel.Routing.IRequestReplyRouter我可以让它只在 HTTP 模式下工作,而不是在
例如,链接: /shop/phones/brend/apple/display/retina/color/red 在哪里: phones - category alias brend -
非常基本的问题,我很惊讶我找不到答案。我刚刚开始研究 django 并进行了开箱即用的安装。创建了一个项目并创建了一个应用程序。 urls.py 的默认内容很简单: urlpatterns = [
我已经实现了 WCF 路由服务;我还希望该服务(或类似的 WCF 服务)以规定的和统一的(与内容无关的)方式转换有效负载。例如,有效负载将始终采用 Foo 的形式。我想把它作为Bar在所有情况下。我很
我想使用 $locationProvider.html5Mode(true); 在 angularJs 中删除 # 哈希;但这导致所有 URL 都通过 angularJs 进行路由。我如何设置它以便只
我要听导航开始事件并判断其是否url属性是 /logout . 如果是这样,路由器应该停止触发连续事件,例如 路线已识别 , GuardsCheckStart , ChildActivationSta
有人可以解释我如何使用参数路由到 URL 吗? 例如id 喜欢点击产品并通过Id打开产品的更多信息。 我的路由到目前为止... angular.module('shop', ["cus
我目前正在 Angular: 7.2.14 上构建,想看看是否有人可以解释如何使用路由保护、共享服务或其他方式等重定向查询参数。 我试图解决的问题要求查询参数从根 Uri 路径传入,然后将路由重定向到
我是一名优秀的程序员,十分优秀!