2009-12-11 180 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