修復意外 chmod 後伺服器的權限

修復意外 chmod 後伺服器的權限

在嘗試調試郵件伺服器時,我輸入:

chmod -R 777 /

代替:

chmod -R 777 .

錦上添花的是,由於我忘記了我已經更改了用於登入以修復某些問題的腳本,所以我以 root 身份完成了這一切。我沒有大部分系統的備份(我知道這是一個糟糕的選擇)。

與問題“從 chmod -R -777 / 恢復”和“‘chmod -R 777 /’之後做什麼?”不同我仍然以 root 身份登錄,整個系統沒有改變,所以我確實對系統有一些控制權。我也在一秒鐘內^C d退出命令,以盡量減少傷害。從那時起,我就物理上斷開了伺服器與互聯網的連接。

我相信如果腳本根據套件管理器中的資料恢復檔案系統的權限,就可以修復它,但我不知道如何執行此操作。如果不可能,我該如何保存伺服器上的資料以重新安裝作業系統?

我知道丟失文件的潛在風險,但儘管如此,我還是更願意恢復而不是重新安裝。

這是當前的輸出ls -la /

drwxrwxrwx  22 root root  4096 Sep  7  2016 .
drwxrwxrwx  22 root root  4096 Sep  7  2016 ..
drwxr-xr-x   2 root root  4096 May 18 07:55 bin
drwxr-xr-x   3 root root  4096 Sep 21 07:53 boot
drwxr-xr-x  19 root root  3180 Sep 11 20:54 dev
drwxrwxrwx  92 root root  4096 Aug 23 07:50 etc
drwxr-xr-x   4 root root  4096 May 23  2016 home
lrwxrwxrwx   1 root root    31 Feb 24  2016 initrd.img -> /boot/initrd.img-3.16.0-4-amd64
drwxrwxrwx  18 root root  4096 Feb 24  2016 lib
drwxr-xr-x   2 root root  4096 Jun 20 07:00 lib64
drwx------   2 root root 16384 May 19  2016 lost+found
drwxrwxrwx   2 root root  4096 May  5  2015 media
drwxr-xr-x   2 root root  4096 May  5  2015 mnt
drwxr-xr-x   3 root root  4096 May 28  2016 opt
dr-xr-xr-x 148 root root     0 Sep  3 21:55 proc
drwxrwxrwx  10 root root  4096 Aug 19 17:58 root
drwxr-xr-x  22 root root   800 Sep 21 17:09 run
drwxrwxrwx   3 root root  4096 Jun 20 07:00 sbin
drwxr-xr-x   4 root root  4096 Sep 20 23:18 sftp
dr-xr-xr-x  13 root root     0 Sep  3 21:55 sys
drwxrwxrwx   8 root root  4096 Sep 21 17:17 tmp
drwxrwxrwx  11 root root  4096 Feb 24  2016 usr
drwxr-xr-x  14 root root  4096 Jun 25 06:21 var
lrwxrwxrwx   1 root root    27 Feb 24  2016 vmlinuz -> boot/vmlinuz-3.16.0-4-amd64

只是在我的恐慌中我注意到我點擊了 ubuntu 論壇而不是 debian...我知道這不是修復郵件伺服器的方法。這是一個草率的修復,看看出了什麼問題

iv 現在將其重新發佈到正確的論壇中

答案1

修復權限錯誤

如何恢復根目錄權限為預設?

規則 #1:如果您不熟悉命令列,請不要以 root 身分執行任何命令。

chmod -R 777 /以 root身份運行會破壞你的系統。

rm -rf /以 root身份運行將會釀成災難!

如果您以 root 身份運行chmod -R 777 /,請按照以下步驟將其恢復:

步驟1:

複製以下腳本,將其貼上到控制台上以產生修復權限腳本

echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var

chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root

' > fixpermission

chmod +x fixpermission

./fixpermission

上面將建立一個名為 fixpermission 的腳本,並執行它(./fixpermission如果尚未呼叫)。

第2步:

運行stat -c '%A %a %n' /*以顯示您的正確目錄及其恢復的權限。

範例:您的目錄權限結構應類似以下內容:

root@plab:~# stat -c '%A %a %n' /*
drwxr-xr-x 755 /bin
drwxr-xr-x 755 /boot
drwxr-xr-x 755 /dev
drwxr-xr-x 755 /etc
drwxr-xr-x 755 /home
lrwxrwxrwx 777 /initrd.img
lrwxrwxrwx 777 /initrd.img.old
drwxr-xr-x 755 /lib
drwxr-xr-x 755 /lib64
drwx------ 700 /lost+found
drwxr-xr-x 755 /media
drwxr-xr-x 755 /mnt
drwxr-xr-x 755 /opt
dr-xr-xr-x 555 /proc
drwx------ 700 /root
drwxr-xr-x 755 /run
drwxr-xr-x 755 /sbin
drwxr-xr-x 755 /srv
dr-xr-xr-x 555 /sys
drwxrwxrwt 1777 /tmp
drwxr-xr-x 755 /usr
drwxr-xr-x 755 /var
lrwxrwxrwx 777 /vmlinuz
lrwxrwxrwx 777 /vmlinuz.old

步驟3:

重新啟動您的系統!

希望這可以幫助。

相關內容