重新加载 /etc/security/limits.conf

重新加载 /etc/security/limits.conf

我想:

  • 对常驻内存设置一个 64GB 的软限制(因此,缺乏经验的用户会终止其失控的进程,但经验丰富的用户可以提高内存消耗大进程的限制)
  • 提高 nofile 的硬限制,但将软限制保持在 1024(因此,如果某个程序需要更多文件句柄,用户可以授予它们,但失控的程序将无法获得它们)。

据我所知,我应该能够在/etc/security/limits.conf(或在/etc/security/limits.d/*)中做到这一点:

*        soft    rss             64000000
*        hard    nofile          50000
*        soft    nofile          1024

但是,我找不到无需重启即可重新加载这些值的方法。我读到过,这些值是在登录时重新加载的;当我这样做时它可以工作,su - user但通过它不起作用ssh user@localhost

我在 /etc/pam.d 中有 pam_limits.so:

/etc/pam.d/login:session    required   pam_limits.so
/etc/pam.d/sshd:session    required     pam_limits.so
/etc/pam.d/su:session    required   pam_limits.so

我在 sshd_config 中有 PAM:

/etc/ssh/sshd_config:UsePAM yes

ulimit我知道我可以使用和设置值sysctl,但我想测试在/etc/security/limits.conf无需重新启动的情况下是否执行了正确的操作。

我如何确保当人们使用 ssh 登录时无需重新启动就能设置这些值?

答案1

呼呼……

UseLogin是不需要的。

UsePAM yes是需要的。

仅当从否更改为是时才sshd需要重新启动。UsePAM

~/.ssh/config非常有必要禁用我自己的!

我的Control* 语句中~/.ssh/config重新使用了 ssh 通道,因此我不会发现变化。

感谢 Samed Beyribey 和 quanta,他们的帮助给了我运行的想法,ssh -vv当你有Control* 语句时它会产生非常不同的输出。

答案2

我读到过,登录时会重新加载值;当我这样做时它可以工作,su - user但无法通过ssh user@localhost

原因是:默认情况下,SSH 打开非登录 shell,因此不受限制。

为了使其使用登录 shell,请编辑sshd_config文件并取消注释/更改#UseLogin noUseLogin yes

gentoo ~ # grep UseLogin /etc/ssh/sshd_config 
#UseLogin no
gentoo ~ # sed -i.bak 's/#UseLogin no/UseLogin yes/' /etc/ssh/sshd_config 
gentoo ~ # grep UseLogin /etc/ssh/sshd_config 
UseLogin yes

重新加载sshd并重试。

来源:http://znx.no/2011/01/ssh-and-limits/

相关内容