由於權限被拒絕錯誤,Sudo mkdir 失敗
我編寫了一個腳本,將一些文件從一個地方復製到另一個地方,由於我沒有對源文件夾的權限,我嘗試使用 sudo 執行它。問題是現在目標文件夾的創建失敗。這是一個簡單的測試案例:
在我的主目錄中,以下工作:
mkdir testDir
但是由於權限被拒絕錯誤而失敗
sudo mkdir testDir2
我的主目錄有 755 個權限,歸我所有。
我跑了
sudo groups
,發現root
果然群在那裡,但奇怪的users
是,沒有。同樣groups
以我自己的身份執行表明我不在 sudo 組中。有什麼想法嗎?為什麼使用 sudo 執行時無法寫入主文件夾?
這是由於 NFS 伺服器上的“root squash”造成的。從
exports(5)
手冊頁(強調我的):nfsd 基於每個 NFS RPC 請求中提供的 uid 和 gid 對伺服器電腦上的文件進行訪問控制。使用者期望的正常行為是她可以像在普通文件系統上一樣訪問她在伺服器上的文件。這要求在客戶端和伺服器機器上使用相同的 uid 和 gid。這並不總是正確的,也不總是可取的。
通常,在訪問 NFS 伺服器上的文件時,客戶端電腦上的 root 使用者也被視為 root 是不可取的。**為此,uid 0 通常映射到不同的 id:即所謂的匿名或無人 uid。**這種操作模式(稱為“root squashing”)是預設的,可以使用 no_root_squash 關閉。
換句話說,允許
sudo
NFS 客戶端上的 root(例如,在執行時)修改文件和文件屬性,就好像它是 NFS 伺服器上的 root 一樣,通常會帶來安全風險。這將有效地使客戶端上的 root 等同於伺服器上的 root,並允許惡意客戶端接管伺服器。來自RHEL 6 安全指南:
如果使用 no_root_squash,遠端 root 使用者可以更改共享文件系統上的任何文件,並讓被木馬感染的應用程序留給其他使用者無意執行。