应用报账号不能ssh到主机,首先怀疑是防火墙或hosts.deny限制但查看之下并没有;接着使用其提供的账号密码确实不能登录,怀疑是密码被修改(有个和平时不太一样现像是输入密码后就会提示“Connection to 134.192.232.69 closed by remote host.Connection to 134.192.232.69 closed.”后直接退出,当时没在意现在回头看来是通过验证后主机发现用户资源超出了限制直接强制关闭了连接);其还没回复同意修改密码之前,其反复通过root也不能成功su到用户,提示“su: cannot set user id: Resource temporarily unavailable”,之前已检查过/etc/passwd和/etc/shadow文件用户信息格式正常,文件最后修改日期也已是老早以前,当即判断应该不是用户名密码的问题。
百度“su: cannot set user id: Resource temporarily unavailable”,查看之下大意是说用户资源使用超过了限制,但查看/etc/security/limits.conf和/etc/security/limits.d并没有看到对目标用户的限制,检查用户使用的资源似乎也都不多,判断不出是什么资源出了问题。直接对最常用的文件打开数、进程打开数和堆栈大小在/etc/security/limits.conf末尾追加了对目录用户的限制(之后分析应该是文件打开数问题)(username改为自目标用户):
username soft nofile 10240
username hard nofile 65536
username soft nproc 10000
username hard nproc 16384
username soft stack 10240
username hard stack 32768
追回完后保存不用其他操作,从root su和ssh都已正常。
查看当前用户资源限制:ulimit -a
统计用户进程开启数:ps -ef |grep username | wc -l
统计用户文件打开数:lsof | grep username | wc -l
用户资源使用限制在/etc/security/limits.conf配置
关于资源限制可查看帮助文件的说明:man limits.conf
资源限制的格式是:受限用户 限制类型 限制资源类型 限制大小;soft类型的限制值应小于hard类型中配的值
RHEL6.x版本后引入/etc/security/limits.d/90-nproc.conf用于限制用户打开进程数,与limits.conf的关系是:
如果90-nproc.onf与limits.conf存在相同条目的配置那么90-nproc覆盖limits.conf的配置
但是如果90-nproc.conf用的是*没有指定用户而limits.conf指定用户那么90-nproc的限制不生效
其实90-nproc.conf除了限制nproc其他资源一样可以限制,生效原则与nproc一样
其实在/etc/security/limit.d目录下你还可以创建其他任意名字的.conf文件,这些文件中首字母ACSII大的覆盖首字母ASCII小的(首字母一样大的比较第二个字母以此类推)
http://blog.csdn.net/leshami/article/details/38982563