如果 chown 可以更改群組,為什麼要建立 chgrp?

如果 chown 可以更改群組,為什麼要建立 chgrp?

因此,它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”與“所有者”混淆是一個常見的錯誤。

相關內容