権限のないユーザーが「同期」コマンドを実行できるのはなぜですか?

権限のないユーザーが「同期」コマンドを実行できるのはなぜですか?

私は現在Ubuntu Linuxを使用していますが、他のオペレーティングシステムでもこの現象が発見されました。明らかに、誰でもこのsyncコマンドを実行できます。ところで、なぜそうなのでしょうか?欠点は、不要なディスク書き込みによるシステム速度の低下です。

すべてのユーザーがこれを実行できるのはなぜですかsync

ベストアンサー1

権限のないユーザーがシステムを遅くする方法はいくつかあります。同期を実行するのはより効率的な方法とは異なります。一方、ファイルシステムデータをディスクにコミットするのはかなり合法的な要求であるため、ユーザー(およびそのプロセス)がそれを行うことを禁止するのは過度です。

とにかく、私は「不要なディスクの書き込み」の声明に同意しません。これらの書き込みはもちろん必要であり、とにかく短い時間が経過すると自動的に発生します。

同期呼び出しが実装に応じて特定のタスクを実行するという保証もありません。通話同期、はい、POSIX規格で定義されているようには、オペレーティングシステムにファイルシステムキャッシュをフラッシュさせる「推奨事項」にすぎず、フラッシュがすぐに発生するように強制する必要はありません。より正確には、これらの呼び出しはオペレーティングシステムにキャッシュフラッシュをスケジュールするように要求しますが、Linux実装ではキャッシュフラッシュが返されるのを待っても、スケジュールされた時間より前にキャッシュフラッシュが発生するという保証はありません。

また、syncを何度も何度も呼び出してもシステムの速度が大幅に遅くなりません。キャッシュがフラッシュされ、ファイルに積極的に書き込むプロセスがない場合、キャッシュは空であるため、同期が機能しないためです。

ユーザーがシステムで同期を実行できないようにするには、次のコマンドを実行します。

mv /bin/sync /bin/.sync
ln /bin/true /bin/sync

これは、ユーザーがほとんど気付かず、同期を実行してからストレージデバイス(USBサムドライブなど)をアンマウントせずに削除しない限り、悪影響を与えません。しかし、これらのユーザーはとにかく非常に愚かな行動をしました。

以前の /bin/sync 対 /bin/true リンクはお勧めできません。sync状況によっては動作します。たとえば、これが近づく深刻なシャットダウン(電源不足、システムパニックなど)が心配な場合は、ファイルシステムの内容を保存するのに役立ちます。これが私が正当な要求と呼ばれるものです。

おすすめ記事