Linux主机root切换用户获取$?结果异常案例


1. 问题描述

首先是NBU备份I2000数据库时,监控页面查看到总是失败,但事实上,rman备份操作已经完成,只是最后取$?时异常导致而已。

其次,在一次业务升级中,ideploy工具自动升级之前做的环境检查,各个部件都检查不通过,无法自动升级,最后手工做的升级,几百块单板,真是悲剧。

2. 问题现象

NDMC21:~ # su - sshusr -c "ls";echo $? 
bin breeze check.sh Documents ideploy_file_history nohup.out public_html 
1

可以看到,正常来说,最后取$?时,应该返回0才对的。

3. 问题分析

针对这个问题,特地向SuSE原厂提了个case,也收集了各方面日志,甚至是strace的日志,问题一直无法定位。

我觉得这个问题以前不存在,最近才出现,应该是与近期的安全加固有极大的关系,于是让做安全加固的兄弟对OS层面的所有操作都整理出来。

结果为:主要是由于/etc/security目录权限被修改了,/etc/security -- 原来权限:755,做了安全加固后,权限被修改为:600。

我在几台主机上测试,都是OK的:

NDMC21:~ # ls -ld /etc/security/ 
drw------- 2 root root 368 Jul 12 00:24 /etc/security/
NDMC21:~ # su - sshusr -c "ls";echo $? 
bin breeze check.sh Documents ideploy_file_history nohup.out public_html 
1
NDMC21:~ # chmod 755 /etc/security 
NDMC21:~ # su - sshusr -c "ls";echo $? 
bin breeze check.sh Documents ideploy_file_history nohup.out public_html 
0

blog地址:http://blog.csdn.net/hw_libo/article/details/38979791
-- Bosco QQ:375612082
---- END ----
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

相关内容