
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
ファイルのユーザー所有者*を変更する場合は、ルート権限が必要です。
通常のユーザーは、ファイルのグループ所有者を自分が所属する別のグループに変更できます。
おそらく、この権限の観点から、特に sudo 以前の時代には、それらを分離しておくことは理にかなっているでしょう。たとえば、「admin」グループを作成して、「admin」グループのメンバーがファイルのユーザー所有者を変更できるようにすることもchown
できたでしょう。setuid
* ugo との一貫性を保つために、「user-owner」と「group-owner」と「others」を使用します。「o」と「owner」を混同するのはよくある間違いです。