Total Pageviews

Sunday 28 October 2012

重置CentOS下的软件包的权限

系统环境:CentOS Linux 5.3
有时候误操作,会使文件系统的权限混乱,这是系统所不允许的。
那么,误操作之后怎么恢复到原来的状况呢(指文件权限相关的)?
重新安装软件包(yum reinstall xxxx )不失为一种方法,但是不够聪明。其实官方提供的有现成的解决方法:使用 RPM 包管理器。
1. 查找到需要恢复的文件
#rpm -Va | grep “M”
2. 确定哪些包需要重设权限
# rpm -Va | grep “M” | awk ‘{print $2}’ | xargs rpm -qf | sort -u
3. 重置这些包的权限
# rpm -Va | grep “M” | awk ‘{print $2}’ | xargs rpm -qf | sort -u | xargs rpm –setperms
重点儿是 rpm 的 –setperms 开关,其中还有四个可选选项:
-a 表示所有已安装软件包
-f 后跟文件,表示包含此文件的已安装的软件包
-p 后跟包文件,重置用这个包安装的文件的权限。
-g 后跟组名,按组重置权限。
直接跟包的名字,重置包的权限。
RPM校验软件包时发现的一个问题:
rpm -Va 时有时(reinstall了软件包或者重置的软件包的权限)会出现类似下面这样的提示信息:
prelink: /usr/lib/libnl.so.1.0-pre5: at least one of file’s dependencies has changed since prelinking
这便引出了另一个问题,prelink。
解决的办法是:prelink /usr/lib/libnl.so.1.0-pre5
在 /etc/cron.daily/下,有一个关于prelink的脚本prelink,每天会执行一次.