私はUNIXファイルの権限について学んでいますが、Ubuntuシステムで/ var / mailにsetgidビットが設定されていることを発見しました。なぜこれですか?
$ ls /var/mail/ -dl
drwxrwsr-x 2 root mail 4096 Feb 23 05:57 /var/mail/
私が読んでいる本にはこう書かれています。
Setgidは、多数のファイルを共有する必要があるユーザーグループがある場合に便利です。 setgid属性を使用してパブリックディレクトリで作業することで、グループ内の人々が同じデフォルトグループを共有しなくても、新しいファイルの正しいグループ所有権が自動的に設定されます。
この説明は、ユーザーがそのディレクトリを直接操作しないため、/ var / mailの目的がないように聞こえます。
/var/mailに生成されたファイルはグループ所有者「mail」で終わりますが、すでにそのようなことはありませんか? 「mail」のみがディレクトリ(およびルートディレクトリ)に新しいファイルを作成できます。
これが役に立つと思われる唯一の状況は、システム管理者が新しいメールアカウントを追加したときですsudo touch /var/mail/<user>
。ファイルにはまだ「メール」グループの所有者があります。
答え1
1 つのサービスではなく、ローカルの電子メールは複数のサービスで処理されます。実際のメール転送エージェント(単にMTA:一般的または類似)に加えて、postfix
メールexim
フィルタリングsendmail
/後処理ユーティリティ(以前のユーティリティなどprocmail
)、ユーザーメールボックスへのリモートアクセスを可能にするサービス(さまざまなPOPおよびIMAPサービス)、メーリングリストの管理ユーティリティなどがあります。
歴史的に、これらのサービスは通常、各ユーザーのメールボックスにアクセスできる必要があり、所有者だけがメールボックスにアクセスできる必要があるため、ルートとして実行されていました。しかし、電子メールシステムをrootとして実行することは簡単に悪用できるコードの集まりであることがすぐに明らかになりました。非常に多くの脆弱性が発見され修正されましたが、結局のところ、人々はメールシステムをrootとして実行するのが悪い考えであることに気づきました。回避策は、グループを作成し、mail
ユーザーのメールボックスにメールを配信するために必要な電子メールサービスのすべてのコンポーネントをそのグループに設定することです。
しかし、当時はすでに電子メール関連ツールの数が多すぎて、完全な変換を保証することはできませんでした。したがって、保険でユーザーの受信トレイの親ディレクトリもメール/var/mail/
に設定され、ユーザーの受信トレイにメールを送信するソフトウェアが自動的に正しいグループの新しい受信トレイを生成するようにします。残りの作業は、ユーザーの受信トレイに正しいumaskを使用するようにすべてのメール配信プログラムをパッチまたは構成することです。メールシステムがrootとして実行されている場合はumask 077(特権用-rw-------
)を使用できますが、グループのmail
有効なケースではumaskには-rw-rw----
007が必要です。 (許可)。しかし、これは既存の要件に対する調整ではありません正しいグループを実行するための新しい責任を追加するしたがって、これはより簡単な変更です。
(もちろん、正しいグループの実行を追加することは確かに良い考えですが、/var/mail
setgidを作成するとmail
コードが変わります。任意に選択できるそしてそれほど緊急ではありません。 )
はい、ユーザーの受信トレイにメールを送信するほとんどのプログラムは、/var/mail/
ユーザーのメールボックスファイルが存在しない場合に自動的に生成されます。したがって、ユーザーが最初の受信メールを受信するまで、ユーザーはメールボックスなしでそのまま残ります。文書は完全に有効です。
要約すると、/var/mail/
setgidはmail
誤って設定されたメール配信プログラムの保険ポリシーであり、電子メールサービスが常に完全に機能していた暗黒時代の歴史的遺物ですroot
。
答え2
/var/mail/ では、各ファイルは公開ユーザーの uid です。これにより、すべてのユーザーは、権限のないディレクトリから自分のuidを使用してファイルを書き込みまたは読み取ることができます。 gid が設定されていない場合、ユーザーは自分のメールを削除できません。
ユーザーは自分のメールファイルを読み取り、削除します。 muttを参照してください。