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

我想要:

  • 对于常驻内存做一个软64GB的限制(所以没有经验的用户将会使他们的运行进程死亡,但是有经验的用户可以提高内存饥饿进程的限制)
  • 提高nofile的硬性限制,但保持在1024的软限制(所以如果某个程序需要更多的文件句柄,用户可以授予它们,但运行amok程序将不会得到它们)。

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

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

但是,我可以find一种方法重新加载这些值,而不用重新启动。 我已经读过,值login时重新加载; 它适用于我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 

我知道我可以使用ulimitsysctl来设置值,但是我想testing一下/etc/security/limits.conf是否正确,而不需要重新启动。

如何确保在用户使用sshlogin而不重新启动时设置的值?

哎呀….

UseLogin是不需要的。

UsePAM yes需要的。

只有当UsePAM从no更改为yes时,才需要重新启动sshd

禁用我自己的~/.ssh/config是非常需要的!

我在我的~/.ssh/configControl *语句,它重用了ssh通道,因此我不会发现这个变化。

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

我已经读过,值login时重新加载; 它适用于我su - user但它不能通过ssh user@localhost

原因是:默认情况下,SSH打开一个非loginshell,所以限制没有被应用。

要使用loginshell,编辑你的sshd_config文件,并取消/更改#UseLogin no UseLogin 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/