
因此,它chown
可以讓您更改檔案和/或目錄的擁有者和群組。但也有chgrp
一些只會改變群體。為什麼要被chgrp
創建?這不是多餘的嗎?
答案1
chown
最初無法設定群組。後來,一些實作將其添加為chown user.group
,一些實作添加為chown user:group
,直到最終標準化(強調我的):
4.3 BSD 指定方法所有者和群組被包含在 POSIX.1-2008 的本卷中,因為:
在某些情況下,使用 chgrp 和 chown(僅更改使用者 ID)公用程式無法實現所需的結束條件。 (如果目前擁有者不是所需群組的成員,且所需所有者也不是目前群組的成員,則 chown() 函數可能會失敗,除非同時變更擁有者和群組。)
即使它們可以獨立更改,在同時更改兩者的情況下,由於被迫調用這兩個實用程序,也會導致 100% 的效能損失。
即使現在:
chown :group
僅更改組是不便攜或標準的。chown user:
在使用者資料庫中指派主要群組user
也不標準。
答案2
更改檔案的使用者擁有者* 時需要 root 權限。
普通使用者可以將文件的群組擁有者變更為他/她所屬的另一個群組。
也許從這個特權的角度來看,將它們分開是有意義的,尤其是在 sudo 之前的時代。就像chown
可以setuid
對「管理員」群組進行的操作一樣,允許「管理員」群組的成員更改檔案的使用者擁有者。
* 為了與 ugo 保持一致,我使用「使用者擁有者」、「群組擁有者」和「其他」。將“o”與“所有者”混淆是一個常見的錯誤。