我想为/etc/init.dsay 中的每个服务设置安全限制
ulimit -c unlimited
但这应该在发出"service <process> start
"或"/etc/init.d/<process> start
"时执行。
是否有一个通用路径,这样,如果我们在那里编写,它将在"启动"服务时应用于所有服务。
如果你创建了一个像这样的文件:
/etc/init.d/.commonStuff
并在其中放入您希望对所有脚本通用的命令:(没有"#!/usr/bin/bash"行)
# This code is meant to be included by another script.
ulimit -c unlimited
umask 027
THIS_VARIABLE="will exist once the include is completed"
export THIS_VALIABLE # And now it is exportable too
然后在每个脚本中,您可以添加以下行(在方便的地方):
# Include the common settings
. /etc/init.d/.commonStuff
前导点是"包含其他文件"指示符。
确保新文件受到保护(即由root用户拥有),并从中删除可执行标记,以表明它不打算单独执行。(访问权限不应超过644)。
/etc/init.d/
中的文件几乎都是bash-shell脚本。所以这有点脏,但你可以用脚本替换/bin/sh,但你必须非常小心,这样你就不会在这个过程中破坏你的系统。
首先在当前目录中创建一个文件sh.wrap
,其中包含以下内容:
#/bin/sh.real
ulimit -c unlimited
/bin/sh.real "$@"
然后像这样安装:
chmod +x sh.wrap
sudo cp /bin/sh /bin/sh.real
sudo mv sh.wrap /bin/sh
这是一个肮脏的黑客,但它可以为你想做的事情工作。
我建议你弄清楚为什么使用/etc/security/limits.conf
对你不起作用,并使用它,但我真的很讨厌"你为什么要这么做?"的答案。