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的内容。