在SUN Cluster搭建过程中,主机工程师在配置集群资源组时报一个Oracle的文件权限错误;
协助排查,发现报错很明确,直接指出说Oracle的s bit 权限未设置。
直接去查看$ORACLE_HOME/bin/oracle的权限
cd $ORACLE_HOME/bin/
ls -l oracle
发现现状是:
-rwxr-x--x. 1 oracle oinstall 239626683 Nov 8 04:11 oracle
而正常安装软件后的权限应该是:
-rwsr-s--x. 1 oracle oinstall 239626683 Nov 8 04:11 oracle
很明显,的确少了s权限,解决该问题也十分简单,只需要赋予用户和所在组的s权限:
--setuid
chmod u+s oracle
--setgid
chmod g+s oracle
--或者直接一条命令同时设置setuid,setgid:
chmod ug+s oracle
那本次发生这样情况的原因是什么呢?
因为oracle软件不是安装的,通过tar -cvf打包然后scp传送到另一个节点,最后tar -xvf解包的。
这种方式发现其他文件权限都没问题,唯独oracle这个特殊的setuid,setgid权限丢失了,需要手工授予。
而正常情况下这种方式不应该丢失任何权限,我在自己的Linux测试环境测了下,并不会丢失s权限,所以初步判定是遭遇了早期tar版本的bug。