天天看點

Linux錯誤執行:chmod 777 .*或chown -R * 的補救方法

誤執行了指令: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

繼續閱讀