小编qui*_*tin的帖子

Kubernetes ConfigMap 只能由 root 写入

我用来ConfigMap公开一个 php 文件,该文件旨在跨 pod 共享并可由www-data(Apache) 用户写入。

配置映射表

apiVersion: v1
kind: ConfigMap
metadata:
  name: magento-config
data:
  env.php: |
    <?php
    return array ( ...
Run Code Online (Sandbox Code Playgroud)

部署

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: apache-deployment
spec:
    ...
    spec:
      containers:
        - name: apache
          image: apache:2.4
          ...
          volumeMounts:
          - name: magento-configs
            mountPath: /var/www/html/etc
          imagePullPolicy: Always
      volumes:
        - name: magento-configs
          configMap:
            name: magento-config
Run Code Online (Sandbox Code Playgroud)

root该文件看起来只能写入

root@apache-deployment-79c8548cdc-r6qhs:/# realpath /var/www/html/etc/env.php
/var/www/html/etc/..2018_04_23_16_21_10.435323593/env.php
root@apache-deployment-79c8548cdc-r6qhs:/# ls -l /var/www/html/etc/..2018_04_23_16_21_10.435323593/env.php
-rw-r--r-- 1 root root 909 Apr 23 16:21
Run Code Online (Sandbox Code Playgroud)

有什么办法可以改变这个吗?我注意到VolumeMount有一个 …

permissions kubernetes

4
推荐指数
1
解决办法
2万
查看次数

最适合自定义 Puppet 事实的地方 - RHEL

我不是一个 Ruby 人,但找到了如何列出 Ruby 加载路径。这就是我的样子

$ ruby -e 'puts $:'
/usr/lib/ruby/site_ruby/1.8
/usr/lib64/ruby/site_ruby/1.8
/usr/lib64/ruby/site_ruby/1.8/x86_64-linux
/usr/lib/ruby/site_ruby
/usr/lib64/ruby/site_ruby
/usr/lib64/site_ruby/1.8
/usr/lib64/site_ruby/1.8/x86_64-linux
/usr/lib64/site_ruby
/usr/lib/ruby/1.8
/usr/lib64/ruby/1.8
/usr/lib64/ruby/1.8/x86_64-linux
Run Code Online (Sandbox Code Playgroud)

其中一些目录甚至不存在,坦率地说,我认为自定义事实.rb文件最好放置在 Puppet-ish 位置,例如/etc/puppet/facts或类似位置。

我应该使用现有的加载路径位置之一还是为了 Puppet 的目的创建一个新的?

ruby puppet facter

3
推荐指数
1
解决办法
2748
查看次数

Puppet:用户类型的 managehome 仅在用户不存在时才有效

我在这里寻求澄清。似乎用户定义类型的managehome属性仅在用户不存在时才有效。看看这个 DSL

user { 'artifactory':
        ensure     => 'present',
        home       => '/home/artifactory',
        managehome => true,
}

file { '/home/artifactory/data':
        ensure  => link,
        target  => '/var/lib',
        require => User['artifactory'],
}
Run Code Online (Sandbox Code Playgroud)

我第一次运行它时它工作正常,但是,如果我删除了artifactory用户的主目录,然后再次运行它,puppet barfs。

错误:无法在确保上设置“链接”:没有这样的文件或目录

我的第一个想法是真的?看一下文档

管理用户时是否管理家目录。这将在确保 => 存在时创建主目录

如果我删除用户并重试,它会起作用。那么这是设计使然还是错误?对我来说似乎很微妙。

puppet

2
推荐指数
1
解决办法
5452
查看次数

无法在 Linux 上删除损坏的文件

所以我被一个脚本小猫击中了......幸运的是,这个盒子是 Ubuntu 并且能够替换来自类似系统的二进制文件,但是

我无法删除的一些文件,仍然难倒这个。被劫持的文件位于root/_bin可写的目录中

nathan@db-0:~$ ls -ld !$
ls -ld /_bin
drwxr-xr-x 2 root root 4096 Mar 12 18:00 /_bin
Run Code Online (Sandbox Code Playgroud)

好的,这些是目录上的权限,现在是其中的文件:

nathan@db-0:~$ ls -l /_bin
total 268
-rwxr-xr-x 1 root root  39696 Nov 19 22:25 ls
-rwxr-xr-x 1 root root 119800 Mar 31  2012 netstat
-rwxr-xr-x 1 root root 101240 Dec 12  2011 ps
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试删除这些文件之一(以 root 身份)时:

root@db-0:/home/nathan# rm /_bin/ls
rm: cannot remove `/_bin/ls': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

或者,如果我尝试删除整个_bin目录(再次以 root 身份):

root@db-0:/home/nathan# …
Run Code Online (Sandbox Code Playgroud)

linux filesystems hacking command-line-interface rm

1
推荐指数
1
解决办法
5367
查看次数