私は最近initスクリプトを生成し、外部干渉を防ぐためにロックファイルを不変にすることにしました。私が考えることができる唯一の欠点は、誰かが/var/lockを繰り返し削除したい場合に問題が発生する可能性があることです。スクリプトがプロセスを停止すると、initスクリプトはファイルを削除する前に変更できないフラグを削除します。
これは悪い考えですか?なぜもっと頻繁に見ることができないのですか?これはあまりにも多いのでしょうか?誰かが初期化スクリプトなしでプロセスを停止すると、次に引数を使用してスクリプトを呼び出すとロックファイルが削除されます。
答え1
少なくとも私のシステムでは/var/lock
(または実際には/run/lock
前者が後者へのシンボリックリンクである)、固定ビットが設定されています。つまり、ロックされたファイルやディレクトリの所有者だけを削除でき、ディレクトリに書き込む人は誰でも削除できません(同じ方法/tmp
)。他のディストリビューションでは、このディレクトリに少数のユーザーだけを書き込むことができます(したがって、任意のユーザーはまったく干渉できません)。
したがって、デーモンによってロックされたファイルを破棄(削除)できる唯一のユーザーは次のとおりです。
root
(もちろんルートは何でもできます)- ロックされたファイルを作成したユーザー(もう一度言っても
root
試みない場合はデーモン専用ユーザーかもしれませんchattr
) root
私のシステムのロックされたディレクトリ所有者
別の方法で設定されている場合は、通常、システムlock
デーモンのユーザーである「(または任意の)グループのメンバー」を追加できます。
ロックされたファイルを読み書きできるユーザーは、通常どおりロックされたファイルの権限で制御され、書き込みはrootユーザーとデーモンユーザーに制限されると予想されます。
root
「外部干渉」が発生すると、rm
ロックされたファイルを使用する場合よりもはるかに大きな問題が発生します。したがって、これを行うべきではありません。これは保護を追加せず、特定の問題を解決しようとするとシステム管理者に驚きを与える可能性があります。
不変フラグは通常、システム管理者のみが適用します。