一、背景介绍及问题处理

应用报账号不能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说明的更多相关文章

  1. su: cannot set user id: Resource temporarily unavailable

    今天R&D所在主机出现su: cannot set user id: Resource temporarily unavailable资源不可用报错,直接通过其他机器ssh huyuh@xxx ...

  2. su: cannot set user id: Resource temporarily unavailable问题解决

    操作环境 SuSE11sp1 问题现象 执行su - test命令切换失败,提示"su: cannot set user id: Resource temporarily unavailab ...

  3. su: cannot set user id: Resource temporarily unavailable【转】

    今天R&D所在主机出现su: cannot set user id: Resource temporarily unavailable资源不可用报错,直接通过其他机器ssh huyuh@xxx ...

  4. su切换用户报错cannot set user id: Resource temporarily unavailable

    su: cannot set user id: 资源暂时不可用   登录root su - tomcat 报错: cannot set user id: Resource temporarily un ...

  5. ssh连接报错Write failed: Broken pipe Resource temporarily unavailable

    问题描述 使用root连接服务器正常,切换普通用户连接报错 具体报错如下:Write failed: Broken pipe 或者:failed to execute /bin/bash: Resou ...

  6. error=11, Resource temporarily unavailable

    问题1:Cannot run program "/bin/ls": error=11, Resource temporarily unavailable 1 15/04/22 14 ...

  7. -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 ...

  8. 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 ...

  9. -bash: fork: retry: Resource temporarily unavailable

    登陆不了服务器The server refused to start a shell. 登陆服务器后执行ls命令报错:   1 2 $ls -bash: fork: retry: Resource t ...

随机推荐

  1. C# 调用Windows图片查看器

    /// <summary> /// 查看原图 /// </summary> /// <param name="image"></param ...

  2. Addition Chains

    题目描述: 一个与 n 有关的整数加成序列 < a0 , a1 , a2 ...am> 满足一下四个条件: 1.a0=1 2.am=n 3.a0<a1<a2<...< ...

  3. 如何用git把本地代码上传到github

    注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之 ...

  4. link和@import区别

    推荐使用:link 区别 1.从属关系区别@import是 CSS 提供的语法规则,只有导入样式表的作用:link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS.rel 连接属性 ...

  5. Windows 多用户接续设置

    第1步:如果想真正实现多用户接续,请安装角色:remote desktop service.第2步: gpedit.msc,找到“计算机配置”-“管理模板”-“Windows 组件”-“远程桌面服务” ...

  6. JAVA基础知识总结:十七

    一.转换流 作用:实现将字节流转换为字符流 a.InputStreamReader:字节字符转换输入流:字节输入流----->字符输入流 b.OutputStreamWriter:字节字符转换输 ...

  7. feign三:覆写feign的默认配置及feign的日志

    feign三:覆写feign的默认配置及feign的日志 默认配置复写 本项目地址:http://192.168.1.103:7601 本例是通过feign调用 eureka项目中的/eureka/a ...

  8. English trip EM2-PE-1B Teacher:Patirck

    PE = 演讲课 课上内容(Lesson) How are you today?  你今天怎么样? What is your name?  你的名字叫什么? What do you come from ...

  9. 我们一起学习WCF 第六篇文件传输

    原文  http://www.cnblogs.com/LipeiNet/p/4653830.html   前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进 ...

  10. 搭建智能合约开发环境Remix IDE及使用

    目前开发智能的IDE, 首推还是Remix, 而Remix官网, 总是由于各种各样的(网络)原因无法使用,本文就来介绍一下如何在本地搭建智能合约开发环境remix-ide并介绍Remix的使用. 写在 ...