用戶信息對於服務器程序的安全性來講是很重要的,好比大部分服務器就必須以 root 身份啓動,但不能以 root 身份運行。一個進程擁有兩個用戶ID:UID 和 EUID。EUID存在的目的是方便資源訪問:他使得運行程序的用戶擁有該程序的有效用戶權限。
好比 su 程序,任何用戶均可以使用它來修改本身的帳戶信息,但修改帳戶時 su 程序不得不訪問 /etc/passwd 文件,而訪問該文件是須要 root 權限的。那麼以普通用戶身份啓動的 su 程序如何能訪問 /etc/passwd 文件呢?竅門就在 EUID。用 ls 命令能夠查看到,su 程序的全部者是 root,而且它被設置了 set-user-id 標誌。
安全
這個標誌表示,任何普通用戶運行 su 程序時,其有效用戶就是該程序的全部者。那麼,根據有效用戶的含義,任何運行 su 程序的普通用戶都能訪問 /etc/passwd 文件。有效用戶爲 root 進程稱爲特權進程(privileged processes)。EGID 的含義與 EUID 相似:給運行目標程序的組用戶提供有效組的權限。服務器
chmod u+s filename 設置SUID位 spa
chmod u-s filename 去掉SUID設置 blog
chmod g+s filename 設置SGID位 進程
chmod g-s filename 去掉SGID設置圖片