天天看點

為什麼不能在SSH(Secure Shell)登入中設定ulimit值?

解決方法:

相關版本:紅帽企業Linux

現象:

如果你在檔案/etc/security/limits.conf中設定了值。 可是如果使用者是通過ssh登入到系統的話。 設定将不會生效。 如果使用者是通過telnet或者是本地登入的話,那麼設定是生效的。

解決方法:

這個問題因該歸結于SSH登入采取的方式。 當一個使用者通過SSH登入, SSH守護程序會建立一個新的程序去處理這個連接配接。這樣的話, 這個程序的上下文就會被這個使用者使用。 應為普通使用者無法增加他們的ulimit限制。是以即使在檔案/etc/security/limits.conf中有較高的數值也不能被激活生效。 這是因為調用的程式,如sshd。限制了修改屬性的權限。

這個問題目前有兩個解決方法。第一步需要對SSHD伺服器進行設定修改。另一步是使用者每一次登陸時都需要運作指令。

1. 修改SSH守護程序的配置檔案/etc/ssh/sshd_config,關閉特權隔離。修改如下

把它改成。

并且修改

修改之後如下

關閉這些選項會帶來一些安全風險。但那也隻是在SSH守護程序的漏洞被發現并且被利用的情況下才會出現。關閉之後就意味着sshd不會建立非特權子程序去處理進站連接配接。如果漏洞存在而且被利用,則有人可以控制sshd程序,而這個程序是以root身份運作的。到目前還沒有已知的弱點,如果你經常使用 up2date更新你的系統的話,那麼任何漏洞都會在發現之後被迅速的修正。

要使改動生效,需要重新啟動SSHD.

設定改動之後,當使用者通過SSH登陸之後,這些會話的最大打開檔案數參數會按照/etc/security/limits.conf檔案被設定。不需要額外的操作。

2. 使用 “su - $USER”來設定最大打開檔案數。在使用者通過ssh登陸之後,使用如下指令

使用者被要求再次輸入密碼,上述的操作将會使ulimit被正确的設定。使用者将需要在每次登陸時運作 su - $USER 。 才能正确設定檔案限制。

注意: 這個問題已經在SSH 3.8版本中得到了解決。 并且紅帽企業Linux的後續産品将會采用這個版本

繼續閱讀