web-dev-qa-db-ja.com

initスクリプトのロックファイルを不変にするのは良い習慣ですか?

最近、initスクリプトを作成し、外部干渉を防ぐためにロックファイルを不変に設定することにしました。私が考えることができる唯一の欠点は、誰かが/ var/lockを再帰的に削除したい場合、問題が発生する可能性があることです。 initスクリプトは、スクリプトを介してプロセスが停止したときに、ファイルを削除する前に不変フラグを削除します。

これは悪い考えですか?なぜもっと頻繁に見ないのですか?やり過ぎですか?誰かがinitスクリプトなしでプロセスを停止できた場合、次にスクリプトが引数を指定して呼び出されたときにロックファイルが削除されます。

3
Gregg Leventhal

私のシステムでは、少なくとも/var/lock(または実際には/run/lock、前者は後者へのシンボリックリンクです)スティッキービットが設定されています。つまり、ロックファイルまたはディレクトリの所有者だけがそれを削除でき、ディレクトリに書き込みをしている人は誰も削除できません(同じ方法で/tmp動作します)。他のディストリビューションでは、ディレクトリは数人のユーザーしか書き込みできません(したがって、ランダムなユーザーはそれをまったくいじることができません)。

したがって、デーモンのロックファイルをいじる(削除する)ことができるのは次のユーザーだけです。

  1. root(もちろんrootは何でもできます)
  2. ロックファイルを作成しているユーザー(再びrootのように聞こえますが、chattrを試みていない場合は、デーモンの専用ユーザーになることもできます)
  3. ロックディレクトリの所有者、私のシステムのroot

または、逆に設定されている場合は、「lock(またはいずれか)グループのメンバー」を追加できます。これは通常、システムデーモンのユーザーのみです。

ロックファイルの読み取り/書き込みが可能なユーザーは、通常のようにロックファイルのアクセス許可によって制御されます。書き込みは、rootとデーモンのユーザーに制限されることが望ましいです。

rootが「外部干渉」を引き起こしている場合は、ロックファイルをrmするよりもはるかに大きな問題があります。したがって、これを行うべきではありません。これは保護を追加せず、問題を修正しようとしたときにシステム管理者に驚きをもたらす可能性があります。

不変フラグは、通常、システム管理者によってのみ適用されるものです。

2
derobert