SuSE上的一些問題,可能需要另參考:http://blog.chinaunix.net/u2/64804/showart.php?id=2026903
相關版本:紅帽企業Linux
現象:
如果你在檔案/etc/security/limits.conf中設定了值。 可是如果使用者是通過ssh登入到系統的話。 設定將不會生效。 如果使用者是通過telnet或者是本地登入的話,那麼設定是生效的。
解決方案:
這個問題因該歸結於SSH登入採取的方式。 當一個使用者通過SSH登入, SSH守護進程會建立一個新的進程去處理這個串連。 這樣的話, 這個進程的上下文就會被這個使用者使用。 應為普通使用者無法增加他們的ulimit限制。 所以即使在檔案/etc/security/limits.conf中有較高的數值也不能被啟用生效。 這是因為調用的程式,如sshd。 限制了修改屬性的許可權。
這個問題目前有兩個解決方案。第一步需要對SSHD伺服器進行設定修改。另一步是使用者每一次登陸時都需要運行命令。
1. 修改SSH守護進程的設定檔/etc/ssh/sshd_config,關閉權限隔離。修改如下
#UsePrivilegeSeparation yes
把它改成。
UsePrivilegeSeparation no
並且修改
#PAMAuthenticationViaKbdInt no
修改之後如下
PAMAuthenticationViaKbdInt yes
關閉這些選項會帶來一些安全風險。但那也只是在SSH守護進程的漏洞被發現並且被利用的情況下才會出現。關閉之後就意味著sshd不會建立非特權子進程去處理進站串連。如果漏洞存在而且被利用,則有人可以控制sshd進程,而這個進程是以root身份運行 的。到目前還沒有已知的弱點,如果你經常使用up2date升級你的系統的話,那麼任何漏洞都會在發現之後被迅速的修正。
要使改動生效,需要重新啟動SSHD.
# service sshd restart
設定改動之後,當使用者通過SSH登陸之後,這些會話的最大開啟檔案數參數會按照/etc/security/limits.conf檔案被設定。不需要額外的操作。
2. 使用 “su - $USER”來設定最大開啟檔案數。在使用者通過ssh登陸之後,使用如下命令
su - $USER
使用者被要求再次輸入密碼,上述的操作將會使ulimit被正確的設定。使用者將需要在每次登陸時運行 su - $USER 。 才能正確設定檔案限制。
注意: 這個問題已經在SSH 3.8版本中得到瞭解決。 並且紅帽企業Linux的後續產品將會採用這個版本