
多くの Linux ディストリビューションでは、新しいユーザーが作成されるたびに、そのユーザーが独自の名前のプライマリ グループに割り当てられることに気付きました。
たとえば、「testuser」というユーザーを作成すると、デフォルトでは「testuser」プライマリ グループに割り当てられます。
これにより、すべてのユーザーが独自のプライマリ グループを持つことになります。また、これらのグループに他のユーザーを追加することはあまり意味がないため、これらのグループには 1 人のユーザーしか含まれません。これは、一般的に「グループ」は「1 人以上」を意味するため、やや直感に反します。
これらのユーザー プライマリ グループは、通常、ファイル/フォルダーにアクセス許可を割り当てる場合にも役に立ちません。
これがディストリビューションのデフォルトの動作である理由は何かありますか? また、この動作が実際に役立つユースケースはありますか? すべての新規ユーザーを「ユーザー」プライマリ グループに割り当てないのはなぜですか?
答え1
ユーザーを独自のグループに入れる理由 (私が知る限り唯一の理由) は、適切なデフォルトを設定するためumask 002
ですumask 007
。
のumaskは、新しく作成されたファイルのデフォルトのパーミッションのマスクです。数字の意味は と同じですchmod
。最初の数字はユーザー用、2 番目はグループ用、3 番目はその他用です。umask でビットが 1 の場合、そのビットは新しく作成されたファイルのパーミッションから削除 (マスク) されます。たとえば、アプリケーションが特にプライバシー要件のない非実行可能ファイルを作成する場合¹、ファイル パーミッションとして 666 が渡され、umask 002 を適用すると、パーミッション 664 ( 0666 & ~002
C のような表記法) のファイルが作成されます。つまり、誰でも読み取り可能で、ユーザーとグループだけが書き込み可能なファイルです ( ) rw-rw-r--
。
umask 022 の場合、ファイルはデフォルトで誰でも読み取り可能ですが、書き込みは作成者のみ可能です。umask 002 の場合、ファイルはさらに、そのファイルを所有するグループによって書き込み可能になります。ユーザーのプライマリ グループが、そのユーザーが唯一のユーザーであるグループであり、umask が 002 の場合、次のようになります。
- デフォルトでは、ファイルへの書き込みは作成者のみ可能です。これは、権限はありますが
rw-rw-r--
、グループ内に書き込み権限を持つ他のユーザーがいないためです。 - グループのメンバーがファイルを変更できるようにするには、作成者は でそのグループの所有者にするだけで済みます
chgrp
。ファイルがsetgid ビットのあるディレクトリまたは同等のものACL。
022 umask と比較した場合の利点は、その設定では、ユーザーがファイルを編集できるようにするには、作成者がグループを設定し、権限を拡張する ( chmod g+w
) という 2 つのことを行う必要があることです。この 2 番目の手順 (setgid ディレクトリでは唯一の手順) は忘れられがちです。
¹特定のプライバシー要件を持つファイルの例: 暗号化キー、電子メール、などのパブリック ディレクトリ内のファイル/tmp
。
答え2
以前はすべてのユーザーをグループに追加するのが慣例でしたusers
が、そうすると制御された方法でファイルを共有するのが難しくなります(グループ権限を開くと、誰もがアクセスできるようになります)。今日では、プロセスは一度に多くのグループに属することができるため、各ユーザーに独自のグループを与えることでアクセスを制限し、明示的にグループを追加してファイルを共有します。または(利用可能な場合)ACL について。