2009-12-11 228 views
5

我有以下腳本:SSH遠程命令執行和的ulimit

cat > /tmp/script.sh <<EndOfScript 
#!/bin/sh 
ulimit -n 8192 
run_app 
EndOfScript 

它運行順利在本地,它總是好的。但是,如果我試圖通過SSH遠程運行:

scp /tmp/script.sh [email protected]:/tmp/script.sh 
ssh [email protected] "chmod 755 /tmp/script.sh; /tmp/script.sh" 

我得到了錯誤:

ulimit: open files: cannot modify limit: Operation not permitted 

我也嘗試下面的命令:

ssh [email protected] "ulimit -n 8192" 

同樣的錯誤。

它看起來像是ssh遠程命令執行強制限制nofile 1024硬限制,但我找不出如何修改此默認值。我試圖修改/etc/security/limits.conf並重新啓動sshd,仍然是同樣的錯誤。

+1

最後我找到了正確的答案:將以下內容添加到/ etc/initscript中: ulimit -c unlimited ulimit -HSn 65535 #執行程序。 eval exec「$ 4」 – 2009-12-22 04:02:42

回答

3

Fiannly想出了答案:添加以下到/ etc /啓動腳本

ulimit -c unlimited 
ulimit -HSn 65535 
# Execute the program. 
eval exec "$4" 
+0

謝謝你。奇怪的是我無法找到ulimit手冊頁上的選項-H和-S。 – smartnut007 2011-09-29 19:49:51

2

ulimit需要超級用戶權限才能運行。

我建議你讓服務器管理員在你試圖運行腳本的服務器上修改你的值。

他/她可以通過在Linux上修改/etc/secutiry/limits.conf來實現。以下是一個可能有所幫助的示例:

*    soft nofile   8192 
*    hard nofile   8192 

之後,您不需要重新啓動sshd。只需註銷並再次登錄。

雖然我建議你在ServerFault問同樣的問題。你會得到更好的服務器端相關的答案。

+1

我修改了/etc/security/limits.conf,重新啓動了sshd,甚至重新啓動了機器。仍然無法獲得大於1024的nofile限制。 – 2009-12-11 11:27:02

+0

您可以在您的limits.conf中發佈相關行嗎?它可能包含錯誤。請記住,sshd進程需要應用ulimit,因此請檢查啓動腳本中是否沒有設置ulimit等。 – wds 2009-12-11 12:50:44

+0

我添加了你想要的答案。 – 2009-12-11 13:16:05

0

檢查啓動腳本(/etc/profile,~/.??*)以調用ulimit。 IIRC一旦施加了限制,就不能再擴大了。

+0

重啓會重設限制嗎? – mcandre 2011-03-08 03:12:17

+0

只有在啓動過程中不執行'ulimit'命令時。如果你創建一個新的shell窗口,'ulimit'只對這個shell和所有的孩子有效。在這種情況下,啓動一個新的shell窗口已經創建了一個沒有限制的會話。它的'ulimit'在一個啓動腳本中,所有的shell在你做任何事情之前都會受到影響,所以重啓將無濟於事。首先,您必須禁用該命令。 – 2011-03-08 09:21:20

11

而不是使用的/etc/initscript解決方法(不要做一個印刷工在該文件.. :),如果你只是想要sshd兌現您在/etc/security/limits.conf中所做的設置,則應確保您有UsePAM yes/etc/ssh/sshd_config/etc/pam.d/sshd列表session required pam_limits.so(或以其他方式包含另一個文件)。

這應該就是它的全部。

在舊版本od openssh(< 3.6東西)也有UsePrivilegeSeparation問題,防止限制被尊重,但它已在新版本中修復。

+1

檢查了這兩行文件,它們都存在。運行於OpenSSH_5.8p1 Debian-7ubuntu1,OpenSSL 1.0.0e 2011年9月6日。與OP相同的問題:| – kellogs 2012-05-03 15:21:47

+0

我一直在尋找這個年齡段的信息 - 謝謝! – 2012-07-31 18:41:35

+0

我一直在尋找和嘗試不同的修補程序,現在在/ etc/ssh/sshd_config中的「UsePAM yes」正是我所缺少的。非常感謝! – 2013-01-27 01:05:35