解決方法:
相關(guān)版本:紅帽企業(yè)Linux
現(xiàn)象:
如果你在文件/etc/security/limits.conf中設(shè)定了值。 可是如果用戶是通過ssh登錄到系統(tǒng)的話。 設(shè)置將不會生效。 如果用戶是通過telnet或者是本地登錄的話,那么設(shè)置是生效的。
解決方法:
這個問題因該歸結(jié)于SSH登錄采取的方式。 當(dāng)一個用戶通過SSH登錄, SSH守護進程會創(chuàng)建一個新的進程去處理這個連接。這樣的話, 這個進程的上下文就會被這個用戶使用。 應(yīng)為普通用戶無法增加他們的ulimit限制。所以即使在文件/etc/security/limits.conf中有較高的數(shù)值也不能被激活生效。 這是因為調(diào)用的程序,如sshd。限制了修改屬性的權(quán)限。
這個問題目前有兩個解決方法。第一步需要對SSHD服務(wù)器進行設(shè)置修改。另一步是用戶每一次登陸時都需要運行命令。
1. 修改SSH守護進程的配置文件/etc/ssh/sshd_config,關(guān)閉特權(quán)隔離。修改如下
#UsePrivilegeSeparation yes
把它改成。
UsePrivilegeSeparation no
并且修改
#PAMAuthenticationViaKbdInt no
修改之后如下
PAMAuthenticationViaKbdInt yes
關(guān)閉這些選項會帶來一些安全風(fēng)險。但那也只是在SSH守護進程的漏洞被發(fā)現(xiàn)并且被利用的情況下才會出現(xiàn)。關(guān)閉之后就意味著sshd不會創(chuàng)建非特權(quán)子進程去處理進站連接。如果漏洞存在而且被利用,則有人可以控制sshd進程,而這個進程是以root身份運行的。到目前還沒有已知的弱點,如果你經(jīng)常使用 up2date升級你的系統(tǒng)的話,那么任何漏洞都會在發(fā)現(xiàn)之后被迅速的修正。
要使改動生效,需要重新啟動SSHD.
# service sshd restart
設(shè)置改動之后,當(dāng)用戶通過SSH登陸之后,這些會話的最大打開文件數(shù)參數(shù)會按照/etc/security/limits.conf文件被設(shè)置。不需要額外的操作。
2. 使用 “su - $USER”來設(shè)置最大打開文件數(shù)。在用戶通過ssh登陸之后,使用如下命令
su - $USER
用戶被要求再次輸入密碼,上述的操作將會使ulimit被正確的設(shè)定。用戶將需要在每次登陸時運行 su - $USER 。 才能正確設(shè)置文件限制。
注意: 這個問題已經(jīng)在SSH 3.8版本中得到了解決。 并且紅帽企業(yè)Linux的后續(xù)產(chǎn)品將會采用這個版本