“su: cannot set user id: Resource temporarily unavailable”处理及limits.conf说明

本文记录了解决应用账号无法SSH登录的问题过程,并详细解释了如何排查与解决因资源限制导致的登录失败,包括调整limits.conf配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景介绍及问题处理

应用报账号不能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 sussh都已正常。

 

二、资源限制查看的相关命令

ulimit -a    #查看当前用户资源限制
ps -ef |grep username | wc -l  #统计用户进程开启数
lsof | grep username | wc -l    #统计用户文件打开数

 

三、limis.conf格式说明

/etc/security/limits.conff配置格式如下:

<domain> <type> <item> <value>

domain代表限制的用户对象,可以是:用户名、@用户组名、*(表示所所有用户的默认配置)、%

 

type代表限制的资源类型,可以是:

hard--硬限制,受限用户不可自己通过ulimit动态修改此项的值

soft--软限制,用户自己可以自己使用ulimit加资源对应的参数动态修改此项的值(但其范围要在hard限制范围以内不然无效)

- --代表软硬两种限制

说明:所谓动态修改,就是如使徦ulimt -n 10240来将nofile临时修改为10240而不是通过修改limits.conf来修改,当然重启之后配置失效。使用ulimit -a来查看资源限制时有各资源对应的配置选项

 

item代表限制的具体资源,value代表该资源的限制值:

item英文全称中文译名单位value(默认值)备注
corecore file size程序崩溃时产生的内存镜像文件kb0(表示不允许生成) 
datadata size数据段大小(?)kbunlimited 
fsizefilesize可打开文件的大小kbunlimited 
memlocklocked-in-memory address space内存锁(?具体功能不很明白,数据库好像在意这个值)kb64 
nofilenumber of open file可打开文件数1024 
rssresident set size常驻内存大小(?)kb 2.4.30版本及以后内核已取消
stackstack size堆栈段大小kb10240 
cpucpu time占用cpu时间(?)分钟unlimited 
nprocnumber of processes可开启的进程数1024 
asaddress space地址空间kbunlimited 
maxloginsmax number of logins同个用户最大登录数 此项无法限制root用户
maxsysloginsmaximum number of all logins on system系统所有用户登录总数 此项无法限制root用户
prioritythe priority to run user process with用户所运行进程的优先级别   
lockslocked files占用文件个数(?)unlimitedlinux 2.4及之后版本才有
sigpendingpending signals等待信号数11378linux 2.6及之后版本才有
msgqueuememory used by POSIX message queues信息队列b819200linux 2.6及之后版本才有
nicenice priority allowed谦让度  linux 2.6.12及之后版本才有
rtpriorealtime priority实时优先级(?)  linux 2.6.12及之后版本才有

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

说明:

1.关于资源限制/etc/security/limits.conf文件本身就有说明,也可查看帮助文件的说明:man limits.conf

2.除了priority和nice,其他项都支持使用-1、unlimited、infinity表示无限制

3.可以看到只有memlock、nofile、stack、nproc、sigpending等几项默认值不是unlimited,所以资源问题一般只关注这几项

4.RHEL6.x版本后引入/etc/security/limits.d/90-nproc.conf用于限制用户打开进程数,与limits.conf的关系是:

5.如果90-nproc.onflimits.conf存在相同条目的配置那么90-nproc覆盖limits.conf的配置

6.但是如果90-nproc.conf用的是*没有指定用户而limits.conf指定用户那么90-nproc的限制不生效

7.其实90-nproc.conf除了限制nproc其他资源一样可以限制,生效原则与nproc一样

8.其实在/etc/security/limit.d目录下你还可以创建其他任意名字的.conf文件,这些文件中首字母ACSII大的覆盖首字母ASCII小的(首字母一样大的比较第二个字母以此类推)

 

 

http://blog.youkuaiyun.com/leshami/article/details/38982563

http://blog.youkuaiyun.com/taijianyu/article/details/5976319

http://bbs.chinaunix.net/thread-3689299-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值