不小心誤操作:chmod -R 777 。。。。。完了。修改了linux系統的所有檔案許可權,僅供參考。
linux系統無操作執行:chmod -R 777 之後 修複方法:
1)執行完後千萬不要退出當前登入視窗。
ssh登入不上,應該跟passwd、group、shadow、ssh這幾個檔案扯上關係而已,開了另一台linux查看許可權,並在錯誤的機器上修改成對應的許可權:
cd /etc
chmod 644 passwd group shadow
chmod 400 gshadow
cd ssh
chmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub
chmod 640 sshd_config
service sshd restart 重啟sshd服務
測試重新串連ssh看是否可以串連成功 ,直到串連成功為止
2)
找一台linux系統(盡量越乾淨越好),把系統的許可權匯出,然後再匯入到本機。
在好的機器上執行
cd /
getfacl -R / > linux.chmod.txt
然後通過ftp或者rz命令上傳到要修複的機子上
執行:
cd /
setfacl --restore=linux.chmod.txt
直接查看:許可權是否正常。不正常再次執行一次,再次檢查是否正常。
如果不在 / 目錄下執行,結果不生效,估計需要reboot吧。 所有建議在根 / 目錄下執行匯出和匯入操作
如果不正常,可以再次嘗試reboot,reboot前先做以下處理:
mkdir -p /root/sh
cd /root/sh/
vi sshtmp.sh
#----------start----------
sleep 300
cd /etc
chmod 644 passwd group shadow
chmod 400 gshadow
cd ssh
chmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub
chmod 640 sshd_config
chmod u+s `which su`
chmod 755 `which passwd`
chmod u+s `which passwd`
service sshd restart
#-----------------end----------
放到開機啟動
echo '/root/sh/sshtmp.sh &' >>/etc/rc.local
然後reboot 吧。
重啟後如果能正常登入系統,可以先把sshtmp.sh 的進程kill掉,並去掉/etc/rc.local裡面指令碼。然後查看許可權有沒有正常。
本文參考資料:http://blog.sina.com.cn/s/blog_5937eedc0101h619.html