Kubernetes RBAC - 禁止尝试授予额外权限

2024-01-29

我在用着Kubernetesv1.8.14 定制版CoreOS簇:

$ kubectl version --short 
Client Version: v1.10.5
Server Version: v1.8.14+coreos.0

当尝试创建以下内容时ClusterRole:

$ cat ClusterRole.yml 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: system:coredns
rules:
- apiGroups:
  - ""
  resources:
  - endpoints
  - services
  - pods
  - namespaces
  verbs:
  - list
  - watch

我收到以下错误:

$ kubectl create -f ClusterRole.yml 
Error from server (Forbidden): error when creating "ClusterRole.yml": clusterroles.rbac.authorization.k8s.io "system:coredns" is forbidden: attempt to grant extra privileges: [PolicyRule{Resources:["endpoints"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["endpoints"], APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["services"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["services"], APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["pods"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["pods"], APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["namespaces"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["namespaces"], APIGroups:[""], Verbs:["watch"]}] user=&{cluster-admin  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:["selfsubjectaccessreviews"], APIGroups:["authorization.k8s.io"], Verbs:["create"]} PolicyRule{NonResourceURLs:["/api" "/api/*" "/apis" "/apis/*" "/healthz" "/swagger-2.0.0.pb-v1" "/swagger.json" "/swaggerapi" "/swaggerapi/*" "/version"], Verbs:["get"]}] ruleResolutionErrors=[]

据我所知,我正在连接cluster-admin,因此应该对我想要实现的目标拥有足够的权限。以下是相关内容cluster-admin config:

$ cat ~/.kube/config
apiVersion: v1
kind: Config
current-context: dev
preferences:
  colors: true

clusters:
- cluster:
    certificate-authority: cluster-ca.pem
    server: https://k8s.loc:4430
  name: dev

contexts:
- context:
    cluster: dev
    namespace: kube-system
    user: cluster-admin
  name: dev

users:
- name: cluster-admin
  user:
    client-certificate: cluster.pem
    client-key: cluster-key.pem


$ kubectl get clusterrole cluster-admin -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  creationTimestamp: 2018-07-30T14:44:44Z
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: cluster-admin
  resourceVersion: "1164791"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/cluster-admin
  uid: 196ffecc-9407-11e8-bd67-525400ac0b7d
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
- nonResourceURLs:
  - '*'
  verbs:
  - '*'


$ kubectl get clusterrolebinding cluster-admin -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  creationTimestamp: 2018-07-30T14:44:45Z
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: cluster-admin
  resourceVersion: "1164832"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin
  uid: 19e516a6-9407-11e8-bd67-525400ac0b7d
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:masters


$ kubectl get serviceaccount cluster-admin -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2018-07-30T13:32:13Z
  name: cluster-admin
  namespace: kube-system
  resourceVersion: "1158783"
  selfLink: /api/v1/namespaces/kube-system/serviceaccounts/cluster-admin
  uid: f809e079-93fc-11e8-8b85-525400546bcd
secrets:
- name: cluster-admin-token-t7s4c

我知道这是 RBAC 问题,但不知道如何进一步调试它。

Edit-1.

我尝试了建议的方法,不幸的是没有快乐......

$ kubectl get clusterrolebinding cluster-admin-binding -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: 2018-07-31T09:21:34Z
  name: cluster-admin-binding
  resourceVersion: "1252260"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin-binding
  uid: 1e1c0647-94a3-11e8-9f9b-525400ac0b7d
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: cluster-admin
  namespace: default


$ kubectl describe secret $(kubectl get secret | awk '/cluster-admin/{print $1}')
Name:         cluster-admin-token-t7s4c
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=cluster-admin
              kubernetes.io/service-account.uid=f809e079-93fc-11e8-8b85-525400546bcd

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1785 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjbHVzdGVyLWFkbWluLXRva2VuLXQ3czRjIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImNsdXN0ZXItYWRtaW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmODA5ZTA3OS05M2ZjLTExZTgtOGI4NS01MjU0MDA1NDZiY2QiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06Y2x1c3Rlci1hZG1pbiJ9.rC1x9Or8GArkhC3P0s-l_Pc0e6TEUwfbJtXAN2w-cOaRUCNCo6r4WxXKu32ngOg86TXqCho2wBopXtbJ2CparIb7FWDXzri6O6LPFzHWNzZo3b-TON2yxHMWECGjpbbqjDgkPKDEldkdxJehDBJM_GFAaUdNyYpFFsP1_t3vVIsf2DpCjeMlOBSprYRcEKmDiE6ehF4RSn1JqB7TVpvTZ_WAL4CRZoTJtZDVoF75AtKIADtVXTxVv_ewznDCKUWDupg5Jk44QSMJ0YiG30QYYM699L5iFLirzD5pj0EEPAoMeOqSjdp7KvDzIM2tBiu8YYl6Fj7pG_53WjZrvlSk5pgPLS-jPKOkixFM9FfB2eeuP0eWwLO5wvU5s--a2ekkEhaqHTXgigeedudDA_5JVIJTS0m6V9gcbE4_kYRpU7_QD_0TR68C5yxUL83KfOzj6A_S6idOZ-p7Ni6ffE_KlGqqcgUUR2MTakJgimjn0gYHNaIqmHIu4YhrT-jffP0-5ZClbI5srj-aB4YqGtCH9w5_KBYD4S2y6Rjv4kO00nZyvi0jAHlZ6el63TQPWYkjyPL2moF_P8xcPeoDrF6o8bXDzFqlXLqda2Nqyo8LMhLxjpe_wFeGuwzIUxwwtH1RUR6BISRUf86041aa2PeJMqjTfaU0u_SvO-yHMGxZt3o

然后修改~/.kube/config:

$ cat ~/.kube/config
apiVersion: v1
kind: Config
current-context: dev
preferences:
  colors: true

clusters:
- cluster:
    certificate-authority: cluster-ca.pem
    server: https://k8s.loc:4430
  name: dev

contexts:
- context:
    cluster: dev
    namespace: kube-system
    user: cluster-admin-2
  name: dev

users:
- name: cluster-admin
  user:
    client-certificate: cluster.pem
    client-key: cluster-key.pem
- name: cluster-admin-2
  user:
    token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjbHVzdGVyLWFkbWluLXRva2VuLXQ3czRjIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImNsdXN0ZXItYWRtaW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmODA5ZTA3OS05M2ZjLTExZTgtOGI4NS01MjU0MDA1NDZiY2QiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06Y2x1c3Rlci1hZG1pbiJ9.rC1x9Or8GArkhC3P0s-l_Pc0e6TEUwfbJtXAN2w-cOaRUCNCo6r4WxXKu32ngOg86TXqCho2wBopXtbJ2CparIb7FWDXzri6O6LPFzHWNzZo3b-TON2yxHMWECGjpbbqjDgkPKDEldkdxJehDBJM_GFAaUdNyYpFFsP1_t3vVIsf2DpCjeMlOBSprYRcEKmDiE6ehF4RSn1JqB7TVpvTZ_WAL4CRZoTJtZDVoF75AtKIADtVXTxVv_ewznDCKUWDupg5Jk44QSMJ0YiG30QYYM699L5iFLirzD5pj0EEPAoMeOqSjdp7KvDzIM2tBiu8YYl6Fj7pG_53WjZrvlSk5pgPLS-jPKOkixFM9FfB2eeuP0eWwLO5wvU5s--a2ekkEhaqHTXgigeedudDA_5JVIJTS0m6V9gcbE4_kYRpU7_QD_0TR68C5yxUL83KfOzj6A_S6idOZ-p7Ni6ffE_KlGqqcgUUR2MTakJgimjn0gYHNaIqmHIu4YhrT-jffP0-5ZClbI5srj-aB4YqGtCH9w5_KBYD4S2y6Rjv4kO00nZyvi0jAHlZ6el63TQPWYkjyPL2moF_P8xcPeoDrF6o8bXDzFqlXLqda2Nqyo8LMhLxjpe_wFeGuwzIUxwwtH1RUR6BISRUf86041aa2PeJMqjTfaU0u_SvO-yHMGxZt3o

然后尝试应用相同的ClusterRole,这会产生相同的错误:

$ kubectl apply -f ClusterRole.yml 
Error from server (Forbidden): error when creating "ClusterRole.yml": clusterroles.rbac.authorization.k8s.io "system:coredns" is forbidden: attempt to grant extra privileges: [PolicyRule{Resources:["endpoints"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["endpoints"], APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["services"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["services"], APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["pods"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["pods"], APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["namespaces"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["namespaces"], APIGroups:[""], Verbs:["watch"]}] user=&{system:serviceaccount:kube-system:cluster-admin f809e079-93fc-11e8-8b85-525400546bcd [system:serviceaccounts system:serviceaccounts:kube-system system:authenticated] map[]} ownerrules=[PolicyRule{Resources:["selfsubjectaccessreviews"], APIGroups:["authorization.k8s.io"], Verbs:["create"]} PolicyRule{NonResourceURLs:["/api" "/api/*" "/apis" "/apis/*" "/healthz" "/swagger-2.0.0.pb-v1" "/swagger.json" "/swaggerapi" "/swaggerapi/*" "/version"], Verbs:["get"]}] ruleResolutionErrors=[]

下面是我用来启动的标志apiserver:

  containers:
    - name: kube-apiserver
      image: quay.io/coreos/hyperkube:${K8S_VER}
      command:
        - /hyperkube
        - apiserver
        - --bind-address=0.0.0.0
        - --etcd-servers=${ETCD_ENDPOINTS}
        - --allow-privileged=true
        - --service-cluster-ip-range=${SERVICE_IP_RANGE}
        - --secure-port=443
        - --advertise-address=${ADVERTISE_IP}
        - --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota
        - --tls-cert-file=/etc/kubernetes/ssl/apiserver.pem
        - --tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem
        - --client-ca-file=/etc/kubernetes/ssl/ca.pem
        - --service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem
        - --runtime-config=extensions/v1beta1/networkpolicies=true
        - --anonymous-auth=false
        - --authorization-mode=AlwaysAllow,RBAC,Node

这是我用来生成我的脚本tls certs:

root ca:

openssl genrsa -out ca-key.pem 4096
openssl req -x509 -new -nodes -key ca-key.pem -days 3650 -out ca.pem -subj "/CN=kube-ca"

api服务器:

cat > openssl.cnf <<EOF
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = ${MASTER_LB_DNS}
IP.1 = ${K8S_SERVICE_IP}
IP.2 = ${MASTER_HOST}
EOF

openssl genrsa -out apiserver-key.pem 4096
openssl req -new -key apiserver-key.pem -out apiserver.csr -subj "/CN=kube-apiserver" -config openssl.cnf
openssl x509 -req -in apiserver.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out apiserver.pem -days 3650 -extensions v3_req -extfile openssl.cnf

集群管理:

openssl genrsa -out cluster-admin-key.pem 4096
openssl req -new -key cluster-admin-key.pem -out cluster-admin.csr -subj "/CN=cluster-admin"
openssl x509 -req -in cluster-admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cluster-admin.pem -days 3650

我希望这能让您更深入地了解我的系统出了什么问题。

Edit-2.

我注意到我的系统配置与 @MarcinRomaszewicz 建议的略有差异,因此名称空间 of the 集群管理 ServiceAccount,就我而言,它位于kube-systemdefault 名称空间:

$ kubectl delete clusterrolebinding cluster-admin-binding 
clusterrolebinding.rbac.authorization.k8s.io "cluster-admin-binding" deleted

$ kubectl create clusterrolebinding cluster-admin-binding \
 --clusterrole=cluster-admin --serviceaccount=kube-system:cluster-admin
clusterrolebinding.rbac.authorization.k8s.io "cluster-admin-binding" created

$ kubectl apply -f ClusterRole.yml 
clusterrole.rbac.authorization.k8s.io "system:coredns" created

但是它仍然不适用于我的证书......

Edit-3.

正如评论中所建议的,为了apiserver将用户识别为cluster-admin,该用户证书中的主题行必须包含以下项目:Subject: CN = cluster-admin, O = system:masters。生成此类证书的一种方法如下:

openssl genrsa -out cluster-admin-key.pem 4096
openssl req -new -key cluster-admin-key.pem -out cluster-admin.csr -subj "/CN=cluster-admin/O=system:masters"
openssl x509 -req -in cluster-admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cluster-admin.pem -days 3650

这里没有足够的信息来回答您的问题。

听起来您正在遇到权限升级预防:https://kubernetes.io/docs/reference/access-authn-authz/rbac/#privilege-escalation-prevention-and-bootstrapping https://kubernetes.io/docs/reference/access-authn-authz/rbac/#privilege-escalation-prevention-and-bootstrapping

这意味着您实际上并未以集群管理员身份运行。检查您的 kubectl 配置。例如,您可能以受限于特定名称空间的“admin”身份运行。

(根据下面的评论进行编辑)

您对 k8s 的身份是由 cluster.pem 证书的内容建立的,而不是 kubeconfig 中的用户名,因为该用户名仅在 kubeconfig 文件内有效。您的实际用户由该证书确定。

我看到您有一个名为 cluster-admin 的服务帐户,但它不是“system:masters”的成员,因为组是对用户进行身份验证的身份验证系统的属性 - 您需要创建一个显式集群角色绑定 将您的 cluster-admin 服务帐户绑定到 cluster-admin 集群角色。

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --serviceaccount=default:cluster-admin

您应该看到 clusterrole 现在与您的服务帐户绑定。

$ kubectl get clusterrolebinding cluster-admin-binding -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: 2018-07-30T22:02:33Z
  name: cluster-admin-binding
  resourceVersion: "71152"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin-binding
  uid: 42a2862c-9444-11e8-8b71-080027de17da
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: cluster-admin
  namespace: default

请注意底部,绑定适用于“ServiceAccount”,而不是组。

您的服务帐户有一个访问令牌,请使用它来代替您的证书进行身份验证。我为自己创建了一个集群管理服务帐户,这就是我获取令牌的方式:

$ kubectl describe secret $(kubectl get secret | grep cluster-admin | awk '{print $1}')
Name:         cluster-admin-token-96vdz
Namespace:    default
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=cluster-admin
              kubernetes.io/service-account.uid=f872f08b-9442-11e8-8b71-080027de17da

Type:  kubernetes.io/service-account-token

Data
====
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImNsdXN0ZXItYWRtaW4tdG9rZW4tOTZ2ZHoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiY2x1c3Rlci1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImY4NzJmMDhiLTk0NDItMTFlOC04YjcxLTA4MDAyN2RlMTdkYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmNsdXN0ZXItYWRtaW4ifQ.<signature snipped>
ca.crt:     1066 bytes
namespace:  7 bytes

更新 kubeconfig 以使用该令牌(而不是您当前使用的证书)对您自己进行身份验证,并且您应该成功通过该集群管理服务帐户的身份验证。

(编辑2) 事实证明,用于对 Kubernetes 进行身份验证的证书没有任何有关用户的身份声明。 Kubernetes 依靠身份验证模块来对用户进行身份验证,在本例中是基于证书。它期望证书包含一个声明,通过将组织设置为“system:masters”,将用户放入“system:masters”组。

这里有很多动人的部分。该问题与服务帐户或角色无关,而与用户身份验证有关,这是非常不透明的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes RBAC - 禁止尝试授予额外权限 的相关文章

随机推荐

  • AttributeError:“NoneType”对象没有属性“close”

    我是 python js 新手 我正在尝试运行一个可用的项目github https github com nava45 flipkart scraper 但是当我尝试运行时出现以下错误 Traceback most recent call
  • Vue.js 在一个组件内的另一个组件中使用变量

    我有一张员工表 每个员工都有一个角色 我尝试使用单选按钮 例如单选按钮管理员或超级管理员 来过滤该角色 如何在一个组件中的另一个组件中使用变量 现在我有这个
  • 谷歌浏览器控制台,打印图像

    大约一年前 我创建了一个插件来增强控制台日志 主要思想是在控制台中打印图像 例如您可以添加一些图标或字形 它工作得很好 我看到现在网上有很多这样的东西 问题是他们都没有自动取款机 我想是在上次 chrome 更新后注意到的 目前我有版本49
  • 如何使用 Mule 请求程序进行 SFTP - 动态文件名和路径

    我正在尝试使用 Mule 请求程序组件进行 SFTP 如何将文件名作为请求参数的一部分给出 这是我的流程
  • CardView 的 OnClickListener?

    我如何附加一个OnClickListener to a CardView 我希望每张卡片在单击时都有不同的操作 我有一个RecyclerView有一个用于显示卡片的自定义适配器 事情是这样的实施的 https developer andro
  • 从 Symfony 1.4 到 Symfony 2.0 需要付出的努力

    我有一个用 Symfony 1 4 编写的网站 这是我的第一个 symfony 网站 学习曲线对我来说有点陡峭 这是一个相当复杂的网站 如果它没有损坏 我不想 修复它 话虽如此 由于 sf 1 4 现在是遗留代码 我最终希望将网站移植到 s
  • 使用 -Wall 和 -Werror 时,警告不会被视为错误

    这是源文件 get c 的内容 include
  • 失眠:错误:SSL 对等证书或 SSH 远程密钥不正常

    我将自己的证书添加到 Node js Express 服务器以进行测试 然后我尝试联系 Insomnia 的帖子 但收到一条错误消息 Error SSL peer certificate or SSH remote key was not
  • 如何在 VS Code 中禁用 pylint 未使用的导入错误消息

    如何禁止在 VS Code 的问题框中弹出这些错误消息 正如其他人所说 您可以提供禁用参数来禁用特定消息 我想详细说明这一点 以下是禁用多个消息和提供多个参数的语法 通过谷歌搜索 这对我来说并不是很明显 python linting pyl
  • GCC 裸机内联汇编 SI 寄存器与指针不能很好地配合

    嗯 这显然是一个初学者的问题 但这是我第一次尝试制作操作系统C 实际上 我几乎完全陌生C 我已经习惯了asm 那么 为什么这实际上是无效的呢 据我所知 一个pointer in C只是一个uint16 t用于指向内存中的某个区域 右 或ui
  • 二元运算符重载;隐式类型转换

    class my bool private bool value public my bool bool value value value operator bool friend my bool operator const my bo
  • 在 Perl 中从 STDIN 捕获退出状态

    我有一个使用如下命令运行的 perl 脚本 path to binary executable path to perl script pl 该脚本对二进制文件的输出执行有用的操作 然后在 STDIN 用完后退出 返回 undef 这一切都
  • 创建一个Java洗牌程序

    我正在尝试在java中创建一个洗牌器 通过执行进出洗牌来执行 完美洗牌 将牌分成两半并交错每张牌 然后再重复一次 我有以下代码来执行随机播放 public class Shuffle private static final int shu
  • ionic 3 模态单模态全屏宽度/高度?

    我正在使用 ionic 模态 我想将我的模态大小调整为全屏 不是所有模态 而是只有 1 个模态 但无法实现此目的 因为 ionic 本身正在设置宽度 高度属性 重要的属性 我尝试过类似以下内容 media only screen and o
  • IE7 Z-Index 问题(CSS DropDown)

    我已经尝试使用 JQuery 和 CSS Tricks 进行了一些不同的修复 但我似乎无法将下拉菜单置于 IE7 中的手风琴滑块之上 它似乎在任何其他网络浏览器中都能正常工作 任何帮助将不胜感激 代码片段 HTML div class sh
  • 具有预编码 H.264 视频流的 Android WebRTC 客户端

    我有一个发送 H 264 编码视频字节的视频流源 我想使用 Android 的 WebRTC 类构建一个应用程序 将此视频流发送到 WebRTC 对等点 这些内置类似乎只支持原始视频源 而不支持已由编解码器处理的视频 我只需要创建仅包含一种
  • Firefox Safari chrome 等中的 window.createPopup() 相当于什么

    看来我无法在其他浏览器上使用 window createpopup 因为它不受支持 我使用 window createpopup 的原因是因为它可以从一个框架弹出并显示在同一页面上的另一个框架的顶部 我正在使用框架集 因此其他类型的下拉菜单
  • iOS 9 启动画面为黑色

    升级到 iOS 9 后 我的应用程序的启动屏幕全是纯黑色 有人知道这是为什么吗 其中一些使用 xib 初始屏幕 一些使用图像 但现在它们都是黑色的 是否必须使用 Xcode 7 构建应用程序才能使启动屏幕在 iOS9 中工作 有没有人看过一
  • 从 Codeigniter 中的 Active record 获取 SUM 和 group 字段的结果

    我需要在 Codeigniter 中构建此查询 但我不知道如何获取 SUM 的结果 SELECT description SUM amount FROM PAYMENT WHERE date payment between 2014 02
  • Kubernetes RBAC - 禁止尝试授予额外权限

    我在用着Kubernetesv1 8 14 定制版CoreOS簇 kubectl version short Client Version v1 10 5 Server Version v1 8 14 coreos 0 当尝试创建以下内容时