我用来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有一个 …
我不是一个 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 的目的创建一个新的?
我在这里寻求澄清。似乎用户定义类型的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。
错误:无法在确保上设置“链接”:没有这样的文件或目录
我的第一个想法是真的?看一下文档
管理用户时是否管理家目录。这将在确保 => 存在时创建主目录
如果我删除用户并重试,它会起作用。那么这是设计使然还是错误?对我来说似乎很微妙。
所以我被一个脚本小猫击中了......幸运的是,这个盒子是 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) puppet ×2
facter ×1
filesystems ×1
hacking ×1
kubernetes ×1
linux ×1
permissions ×1
rm ×1
ruby ×1