誤執行了指令:chmod 777 .* 或chown -r * 等,導緻整個作業系統權限混亂,部分指令、裝置失效,這時候千萬不能重新開機。主要想辦法把每個檔案的權限修改回去就可以了。
怎麼才能把把系統檔案等恢複到初始安裝預設狀态?
原理:我們通過pkgadd安裝(推薦用pkgadd安裝所有package)的
所有檔案在/var/sadm/install/contents檔案裡都有詳細記錄。
以下方法的中心就是用此檔案裡的記錄來恢複其狀态。假設你現在的id是root.
#cd /var/sadm/install
####把contents檔案裡所有不包含=(等号)也不包含/devices的行重定向到一個新的檔案contents.txt
# egrep -v "=|devices" contents >contents.txt
1、處理contents.txt,抽取1,4,5,6列放到另外一個文本
awk '{print $1,$4,$5,$6}' contents.txt >contents.txt2
如果這個指令出錯且原因是“to many fields record number xxx",使用
vi contents.txt
:g/sunw/d
使用:代替空格
sed 's/ /:/g' contents.txt2 > contents.txt3
2、編寫腳本,重新設定系統權限
####用vi編輯如下的腳本檔案restore_perms
#vi restore_perms#########################################################
# begin
#!/bin/bash
for file in `cat /var/sadm/install/contents.txt3`
do
fname=`echo $file | awk -f: '{print $1}'`
perm=`echo $file | awk -f: '{print $2}'`
ownr=`echo $file | awk -f: '{print $3}'`
grp=`echo $file | awk -f: '{print $4}'`
echo "chown $ownr:$grp $fname"
chown $ownr:$grp $fname
echo "chmod $perm $fname"
chmod $perm $fname
done
#rm contents.txt3
# end
#########################################################
####賦予restore_perms腳本執行權限
#chmod +x restore_perms
####執行此腳本
#./restore_perms
echo '/opt/cteact/kmdb/5.10/sparcv9:0755:bin:bin'| awk -f: '{print $1}'
修改完成後,帶s位權限的檔案需要手動修改
本文作者:佚名
來源:51cto