Linux系統裏所有文件許可權為777會有什麼後果?
強制執行chmod -R 777 /
很好玩的問題...在 SO 上找到了這個很詳細的答案:
下文翻譯自 voretaq7 在 ServerFault 上的回答,以 CC BY-SA 3.0 許可。
一句話:系統會炸。
777
許可權的意思是,「所有人都能讀寫或者執行這個文件」。這行命令一跑,你就讓所有用戶都有了最高許可權。為什麼會出問題呢?
1. 任何人在你的系統上都可以想幹嘛就幹嘛。
密碼形同虛設了:所有人都能讀取 /etc/shadow
然後爆破密碼,但更簡單的,直接改密碼就行了!
可執行文件不安全了:你可以寫一個新的 login
程序讓你無條件登錄。
文件許可權不存在了:要是有人手滑敲了 rm -r /
那就涼涼了。是你跟系統說讓他為所欲為的!
2. 所有初始化要檢查文件許可權的程序都會炸。
sudo
,sendmail
和很多別的程序都再也打不開了。啟動的時候它們會檢查關鍵文件的許可權。如果許可權不對就會報錯。
ssh
也會炸(關鍵文件的許可權如果被改了 SSH 就會覺得不安全,拒絕啟動)。
3. 所有程序上的 setuid
和 setgid
許可權位都丟失了。
777
許可權實際上是 0777
,第一個數字包含了 f="
https:
//docs.oracle.com/cd/E56344_01/html/E53951/secfile-69.html">setuid 和 setgid 許可權位。
有一些程序,比如 passwd
,許可權上自帶了這些位,因為它們必須用特殊許可權啟動。現在這些都不能用了。
4. /tmp
和 /var/tmp
也會炸。
上面第一個數字裏還有一個 sticky
位,這可以防止 /tmp
和 /var/tmp
裏的文件被別的用戶刪掉。
很多垃圾腳本里的清理命令都是 rm -r /tmp/*
,沒了 sticky
位臨時目錄裏的文件就會被刪得一乾二淨。
有些程序的邏輯寫得不好,臨時文件不見了就會崩潰。
5. /dev
,/proc
和別的一些文件系統都會炸。
這個問題主要是在老的 Unix 系統上,/dev
會是一個真正的文件系統。裡面有一些用 mknod
創建的特殊文件,這些文件的許可權在重啟以後不會重置。改了這些許可權首先會導致安全問題,還可能導致內核崩潰。
6. Socket(套接字)和 Pipe(管道)可能會炸。
套接字和管道要麼會炸,要麼會有安全問題,因為任何人都可以隨意讀寫了。
7. 所有的文件現在都是可執行文件了。
很多人的 PATH
環境變數裏都有 .
這個路徑,這是個壞習慣。隨便誰都能創建一個文件,改成命令的名字(比如 make
或者 ls
),你就有幾率把它運行起來。
8. 有些系統的 chmod
會重置 ACL(訪問控制列表)
這樣的話你除了修復許可權還得修復 ACL,所以這個命令的確是能造成數據破壞的。
已經跑起來的服務和程序大概還能撐一段時間,但如果你想新開一個程序,重啟一個服務,甚至重啟整臺機器,上面的第 2,第 3 點就會在等著你了。
都綠了
關於把所有文件和目錄許可權都改為777這種問題,我在很早前就回答過一個類似的,我覺得這種問題問的有些無聊,所以並沒有引申更多內容。這樣問問題的基本屬於對系統權能控制一無所知的人,在剛知道一點雜七雜八的東西後,YY出來的以為有探討意義的問題:
rm -rf / 和chmod -R 777 / 哪個對linux系統危害更大??www.zhihu.comLinux是多用戶系統:
第一個7是所屬用戶許可權,用來防止自己誤操作
第二個7是文件所屬組的許可權,用來設置和自己同一組人對文件/目錄的許可權,主要約束某個部門,小組,團隊.. 或某個特殊服務這種.... 所以是在有需求時設置的,你可以參考一下profile和bashrc文件: 普通用戶的默認umask是0002, root或主屬組不是自己的組的用戶時 umask值是0022... 所以文件的所屬組許可權主要看這是什麼類型的文件,是否只屬於用戶自己
最重要的是第三個7:其他用戶,這是Linux上面所有用戶對這個文件的許可權(除了自己和組用戶)... 那這個許可權如果你設置為7的話, 我登錄到Linux上面可以刪除或修改你的文件,因為Linux是多用戶的,所以有很多人都在同時使用, 不過這是針對於內網伺服器來講的,也就是它可能不是網路伺服器,而是充當實驗室伺服器這種類似角色; 這也是設計unix操作系統時設計者的初衷,其最根本的意義... 不過目前我們在使用Linux時多數是作為網路伺服器來使用, 所以這裡的許可權,主要是防止黑客獲取到其他用戶的shell許可權,修改獲取系統的配置文件... 不過,如果你的Linux中沒有其他用戶,或者其他用戶的shell全都使用了/sbin/nologin,那麼這個許可權也無所謂... 如果你的是內網伺服器,提供用戶許可權給其他非linux管理員使用時,那麼這個其他用戶的許可權也是為了防止普通用戶的誤操作,因為對於其他用戶 他們對文件進行操作可能不需要取得shell,而是通過samba,ftp等服務,這也是對他們的使用行為的一個約束. 如果服務開啟chroot以增加安全性,那麼這個許可權是對訪問目錄的約束,如果沒有開啟chroot,如果許可權設置的很大有可能使系統文件被其他程序所修改
馬寧博客?www.tierama.com
小白不請自來。先說結論:被迫拆電腦取出硬碟重裝系統……
我昨晚把家裡11年的老筆記本拿出來裝上了Kali2020.4,然後第一次使用linux系統的我就瘋狂百度……