“su: cannot set user id: Resource temporarily unavailable”处理及limits.conf说明
一、背景介绍及问题处理
应用报账号不能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
username hard nofile
username soft nproc
username hard nproc
username soft stack
username hard stack
追回完后保存不用其他操作,从root su和ssh都已正常。
二、资源限制查看的相关命令
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(默认值) | 备注 |
| core | core file size | 程序崩溃时产生的内存镜像文件 | kb | 0(表示不允许生成) | |
| data | data size | 数据段大小(?) | kb | unlimited | |
| fsize | filesize | 可打开文件的大小 | kb | unlimited | |
| memlock | locked-in-memory address space | 内存锁(?具体功能不很明白,数据库好像在意这个值) | kb | 64 | |
| nofile | number of open file | 可打开文件数 | 个 | 1024 | |
| rss | resident set size | 常驻内存大小(?) | kb | 2.4.30版本及以后内核已取消 | |
| stack | stack size | 堆栈段大小 | kb | 10240 | |
| cpu | cpu time | 占用cpu时间(?) | 分钟 | unlimited | |
| nproc | number of processes | 可开启的进程数 | 个 | 1024 | |
| as | address space | 地址空间 | kb | unlimited | |
| maxlogins | max number of logins | 同个用户最大登录数 | 个 | 此项无法限制root用户 | |
| maxsyslogins | maximum number of all logins on system | 系统所有用户登录总数 | 个 | 此项无法限制root用户 | |
| priority | the priority to run user process with | 用户所运行进程的优先级别 | |||
| locks | locked files | 占用文件个数(?) | 个 | unlimited | linux 2.4及之后版本才有 |
| sigpending | pending signals | 等待信号数 | 个 | 11378 | linux 2.6及之后版本才有 |
| msgqueue | memory used by POSIX message queues | 信息队列 | b | 819200 | linux 2.6及之后版本才有 |
| nice | nice priority allowed | 谦让度 | linux 2.6.12及之后版本才有 | ||
| rtprio | realtime 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.onf与limits.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.csdn.net/leshami/article/details/38982563
http://blog.csdn.net/taijianyu/article/details/5976319
http://bbs.chinaunix.net/thread-3689299-1-1.html
“su: cannot set user id: Resource temporarily unavailable”处理及limits.conf说明的更多相关文章
- su: cannot set user id: Resource temporarily unavailable
今天R&D所在主机出现su: cannot set user id: Resource temporarily unavailable资源不可用报错,直接通过其他机器ssh huyuh@xxx ...
- su: cannot set user id: Resource temporarily unavailable问题解决
操作环境 SuSE11sp1 问题现象 执行su - test命令切换失败,提示"su: cannot set user id: Resource temporarily unavailab ...
- su: cannot set user id: Resource temporarily unavailable【转】
今天R&D所在主机出现su: cannot set user id: Resource temporarily unavailable资源不可用报错,直接通过其他机器ssh huyuh@xxx ...
- su切换用户报错cannot set user id: Resource temporarily unavailable
su: cannot set user id: 资源暂时不可用 登录root su - tomcat 报错: cannot set user id: Resource temporarily un ...
- ssh连接报错Write failed: Broken pipe Resource temporarily unavailable
问题描述 使用root连接服务器正常,切换普通用户连接报错 具体报错如下:Write failed: Broken pipe 或者:failed to execute /bin/bash: Resou ...
- error=11, Resource temporarily unavailable
问题1:Cannot run program "/bin/ls": error=11, Resource temporarily unavailable 1 15/04/22 14 ...
- -bash: fork: retry: Resource temporarily unavailable;centos6.5
Last login: Wed Jun 18 14:04:11 2014 from 1.1.1.135 -bash: fork: retry: Resource temporarily unavail ...
- failed to execute /bin/bash: Resource temporarily unavailable的问题处理
[admin@localhost ~]$ sudo su - scloanLast login: Tue Jun 12 14:06:31 CST 2018 on pts/3su: failed to ...
- -bash: fork: retry: Resource temporarily unavailable
登陆不了服务器The server refused to start a shell. 登陆服务器后执行ls命令报错: 1 2 $ls -bash: fork: retry: Resource t ...
随机推荐
- 【UOJ#196】【BZOJ4574】[Zjoi2016]线段树
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4574 http://uoj.ac/problem/196 考虑数字随机并且值域够大,我们 ...
- python tcp .demo
client: # -*- coding: utf- -*- import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.co ...
- 浅谈Java中的栈和堆
人们常说堆栈堆栈,堆和栈是内存中两处不一样的地方,什么样的数据存在栈,又是什么样的数据存在堆中? 这里浅谈Java中的栈和堆 首先,将结论写在前面,后面再用例子加以验证. Java的栈中存储以下类型数 ...
- c++ cmakelist 详解
基本元素 首先cmaklist必须包括以下几个部分: #工程名 project(study_case) #cmake最低版本需求 cmake_minimum_required(VERSION 2.8. ...
- Qt5文件操作_保存成"UTF-8"格式
1. bool TdrawSvg::Save2File(char* _pcFullFileName) { // http://blog.csdn.net/u011314012/article/deta ...
- [转]VS中的路径宏 OutDir、ProjectDir、SolutionDir各种路径含义
转自 http://blog.csdn.net/restraint/article/details/39934401 说明 $(RemoteMachine) 设置为“调试”属性页上“远程计算机”属性的 ...
- eclipse创建web项目web.xml配置文件笔记
1.使用eclipse创建web项目时,如果直接finish的话就没有默认生成web.xml配置文件,此时在你的项目下是看不到web.xml配置文件的,如果要查看的话可以如下操作: 右键你的项目,然后 ...
- Spark强大的函数扩展功能
在数据分析领域中,没有人能预见所有的数据运算,以至于将它们都内置好,一切准备完好,用户只需要考虑用,万事大吉.扩展性是一个平台的生存之本,一个封闭的平台如何能够拥抱变化?在对数据进行分析时,无论是算法 ...
- vue中 父子组件的通讯
1.父组件可以使用 props 把数据传给子组件. 2.子组件可以使用 $emit 触发父组件的自定义事件 实例: 父组件: layout.vue 子组件:logform.vue 子组件: < ...
- node+ts的心得与坑
首先先明确,用node+ts的目的,为什么不ng+ts.这一点后面还会反复提醒自己 node毕竟不是ng. 用node的理由: 处理js,在后端操纵dom,读写类html格式的东西,比直接用py的后端 ...