记一次root用户su报错的处理过程

现象

  1. 直接使用foobar用户SSH登录正常
  2. 在root用户下,执行su - foobar,报错:
su: cannot set user id: Resource temporarily unavailable

只有su的时候报错,虽然不影响foobar用户正常的SSH远程登录,但这种资源受限的错误,一般都是系统崩溃的前兆,必须要较点真。

系统:RHEL 6.5

排查过程

先按套路出牌

首先直接一通free -mtopvmstat等等,试试运气
不过也不出所料,并没有什么收获。但这也算是个好消息,至少说明不像是系统级别的资源问题了。

感觉八成是线程数或者文件打开数搞的鬼了,懒得监控日志,接着排查。

查看线程数

cat /proc/sys/kernel/threads-max
254529

最大线程数254529,没有问题

ps -u foobar -L | wc -l
1045

用户当前线程数1045,虽然挺高了,但这个用户下部署的应用也非常多,算是正常吧。

检查ulimit

  1. 先用ulimit看一下设置的最大文件打开数
    用foobar直接登录,然后执行:
ulimit -n
655360

显示655360,没有问题

  1. 然后用lsof统计一下当前的文件打开数
lsof | grep foobar | wc -l
1690

1690,大于1024有点多了,接下来仔细看一下。

  1. lsof大概的逐条分析一下
lsof | grep foobar
blablabla...
blablabla...
blablabla...

既有文件,也有网络连接。不像是那种同时发起了大量网络连接造成的故障。这里算是PASS了。

检查limits.conf配置

走到这里,还没查出问题,就有点意外了,索性再检查一下limits.conf

cat /etc/security/limits.conf

*    soft    nofile    655360
*    hard    nofile    655360
*    soft    noproc    655360
*    hard    noproc    655360
*    soft    core      0
*    hard    core      0

都是655360,一眼看上去没有问题(但这里有个坑,稍后会提到)

检查各个profile配置

再检查各个profile的配置,例如.bash_profile里是不是手工设置了过小的ulimit,导致登录失败。

cat /etc/profile
cat /foobar/.bash_profile

都很正常,并没有添加多余的东西进去

监控系统secure日志

到这时都没发现出问题,只能监控系统日志/var/log/secure了。
一边监控,一边执行su - foobar

tail -f /var/log/secure
blablabla...

Mar 30 12:08:02 localhost crond[29226]: pam_limits(crond:session): unknown limit item 'noproc'

blablabla...

终于抓到一个问题:noproc参数是个什么鬼,应该是nproc才对吧,估计管理员当时是直接手撸的,没有复制粘帖。

于是赶紧修改limits.conf

vi /etc/security/limits.conf

*    soft    noproc    655360
*    hard    noproc    655360

改为

*    soft    nproc    655360
*    hard    nproc    655360

山穷水尽

解决完上面那个问题,以为这下可以su成功了吧,然而并没有,报错依旧。

于是继续监控/var/log/secure日志。现在报错变成了:

Mar 30 12:10:25 localhost su: pam_unix(su-l:session): session opened for user foobar by monitor(uid=0)
Mar 30 12:10:25 localhost su: pam_unix(su-l:session): session closed for user foobar

这种报错,相当于什么也没说啊。看来接下来,想要解决问题,只能靠猜了。

一通google之后,找到了这么一句话:

In Red Hat Enterprise Linux 6, there's a default setting in /etc/security/limits.d/90-nproc.conf. Change the default limit for all users or add a new limit for the affected user.

这个limits.d/90-nproc.conf之前从没有注意过,难道它会覆盖 limits.conf 吗?

cat /etc/security/limits.d/90-nproc.conf
*          soft    nproc     1024
root       soft    nproc     unlimited

这里的值是1024,尝试改大一点,碰碰运气:

vi /etc/security/limits.d/90-nproc.conf
*          soft    nproc     10240
root       soft    nproc     unlimited

然后su - foobar ,竟然成功了。

经验值+3

到此为止,两个坑都已经被填上了。耗时15分钟,经验值+3:

  1. 遇到类似问题,直接监控/var/log/secure,可以少走些弯路
  2. 注意/etc/security/limits.conf的参数拼写
  3. 竟然还有/etc/security/limits.d/90-nproc.conf这么个东西,且生效的时机诡异(只影响su,直接登录不受影响)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 背景:在某年某月某日发现es运行不正常,查看日志发现如下错误 以下为操作步骤:1.查看es节点信息结果: 疑问:明...
    imsilence阅读 3,879评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,158评论 2 33
  • 最近公司购买了一台新的服务器,我负责给这台服务器安装oracle ,磕磕绊绊的终于装好了,但是却花了不少时间,算起...
    testerPM阅读 9,131评论 3 8
  • 近两天在CentOS7上安装了oracle,在网上找了一些资料,发现不是很全面,为了方便以后再次安装,所以...
    即墨雨阅读 6,118评论 1 11
  • 今天雨天,虽然没有感冒,可是我想尝尝自己煮的红糖姜茶是什么味道。 从旧旧的冰箱里面拿出一小块姜,切口姜汁已经凝固了...
    sujian阅读 241评论 0 0