Linux錯(cuò)誤執(zhí)行:chmod 777 .*或chown -R * 的補(bǔ)救方法
誤執(zhí)行了命令:chmod 777 .* 或chown -R * 等,導(dǎo)致整個(gè)操作系統(tǒng)權(quán)限混亂,部分命令、設(shè)備失效,這時(shí)候千萬不能重啟。主要想辦法把每個(gè)文件的權(quán)限修改回去就可以了。
怎么才能把把系統(tǒng)文件等恢復(fù)到初始安裝默認(rèn)狀態(tài)?
原理:我們通過pkgadd安裝(推薦用pkgadd安裝所有package)的
所有文件在/var/sadm/install/contents文件里都有詳細(xì)記錄。
以下方法的中心就是用此文件里的記錄來恢復(fù)其狀態(tài)。假設(shè)你現(xiàn)在的id是root.
#cd /var/sadm/install
####把contents文件里所有不包含=(等號(hào))也不包含/devices的行重定向到一個(gè)新的文件contents.txt
# egrep -v "=|devices" contents >contents.txt
1、處理contents.txt,抽取1,4,5,6列放到另外一個(gè)文本
awk '{print $1,$4,$5,$6}' contents.txt >contents.txt2
如果這個(gè)命令出錯(cuò)且原因是“to many fields record number XXX",使用
vi contents.txt
:g/SUNW/d
使用:代替空格
sed 's/ /:/g' contents.txt2 > contents.txt3
2、編寫腳本,重新設(shè)置系統(tǒng)權(quán)限
####用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腳本執(zhí)行權(quán)限
- #chmod +x restore_perms
- ####執(zhí)行此腳本
- #./restore_perms
- echo '/opt/CTEact/kmdb/5.10/sparcv9:0755:bin:bin'| awk -F: '{print $1}'
修改完成后,帶s位權(quán)限的文件需要手動(dòng)修改