重置软件包的权限

系统环境: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,每天会执行一次。

On this day..

Tags: , , , , ,

Leave a comment