如果你誤執行了以下的命令:chmod 777 .* 或chown -R *等等,在不重裝系統或從磁帶備份中恢復的情況下,如何快速地把系統文件等恢復到初始安裝默認狀態?
我們知道通過pkgadd安裝(推薦用pkgadd安裝所有package)的所有文件在/var/sadm/install/contents文件裡都有詳細記錄。以下方法的中心就是用此文件裡的記錄來恢復其狀態。假設你現在的id是root.
#cd /var/sadm/install
####把contents文件裡所有不包含=(等號)也不包含/devices的行重定向到一個新的文件contents.new
# egrep -v "=|devices" contents > contents.new
####如果這個命令出錯且原因是“to many fields record number XXX", 那麼你要用vi手工編輯contents.new,輸入:XXX以刪除所有的SUNW行。我們只需要關心1,4,5,6列,其結果存到contents.new2
#awk '{print $1,$4,$5,$6}' contents.new > contents.new2
####把contents.new2中的所有空格用:來替代,把結果存到contents.new
#sed 's/ /:/g/' contents.new2 > contents.new
####用vi編輯如下的腳本文件restore_perms
#vi restore_perms
###################
# Begin
#!/bin/sh
for FILE in `cat /var/sadm/install/contents.new`
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.new
# End
##################
####賦予restore_perms腳本可讀可執行權限
#chmod 555 restore_perms
####執行此腳本
#./restore_perms