dockerfile:“chmod 777入口点”很好吗?
是否安全/有必要做到以下几点:
RUN chmod 777 /cassandra-start.sh ENTRYPOINT ["/cassandra-start.sh"]
谢谢
这是不安全的。
-
如果执行此脚本的shell是bash,它可以并且将(在某些情况下)读取它已经解释的脚本的更新,所以即使更改的范围是由Docker的copy-on-write性质改为单个实例,该实例可以通过其中具有最小(甚至
nobody
)权限的代码来修改。 -
在大多数Docker文件系统后端,访客文件系统可以在主机上访问。 在主机上保留可执行文件是世界可写的意味着任何对其父目录拥有
+x
权限的用户都可以修改该内容。
没有必要。
- 脚本的执行需要
+r
和+x
。 它在任何方面都不需要+w
。 因此,755
通常就足够了。 - 如果运行时configuration是基于编程方式修改脚本而发生的,那么在不允许shell注入攻击的情况下执行此操作的方法是修改脚本读取的数据文件(并确保解释此数据文件的方式不包含任何
eval
-equivalent做法)。 也就是说,如果你现在已经用sed -e 's/variable=.*/variable=foo/'
修改了你的脚本中的一个variables的代码,那么让你的脚本包含variable=$(<var.file)
,然后修改var.file
的内容。