従業員が私が作成したプログラムにアクセスできるように隠された「アクセスログ」ファイルを作成していますが、.txt
ファイルを削除できないようにする方法を知っておく必要があります。
これは、このプログラムがワークステーションで実行する多くの作業を自動化するのに役立ちますが、多くの被害を引き起こす可能性があるためです。したがって、問題が発生した場合に備えて誰がアクセスしているかを追跡する必要があります。
質問を言い換えると、ファイルに書き込むことができますが、他の人がファイルを削除するのを防ぐ方法です。
答え1
私は、ユーザーがアプリケーションを起動するたびに、アプリケーションがすべてのワークステーションからアクセスできるSamba共有のファイルにいくつかの情報を記録し、誰がアプリケーションを起動したかを追跡することを推測します。 「アクセスログ」に言及しているので、内容を変更せずにファイルに追加するだけでよいと推測されます。
ファイルがサーバー側のext2/3/4ファイルシステムにある場合は、sambaユーザーにそのディレクトリへの書き込み権限がないことを確認してください。これにより、偶発的または意図的な削除を防ぐことができます。その後、追加の専用属性を有効にすると、chattr +a <filename>
情報は追加のみ可能で、削除/修正/切り捨てはできません。ファイルは依然としてすべての人に対する書き込み権限を持つことができるため、アプリケーションはユーザー権限を持っていてもファイルに追加できます。
注:chattr
他のファイルシステムでも機能できます。 xfs。正確なリストはありません。
答え2
デフォルトでは、ここで行うことはロギングなので、Samba共有のファイルをハッキングするのではなく、rsyslogdなどのリモートロギングデーモンを使用してロギングする方が良いかもしれません。
つまり、ファイルを削除するのは変更です。目次ファイル以外のファイルを含みます。したがって、ディレクトリに対するユーザーの書き込み権限を削除すると、ファイルを削除できません。もちろん、それでも操作または誤って切り取ることができます。
答え3
ファイルへの書き込みとユーザーグループへの読み取り専用アクセスを許可するという目標は、ファイルの所有権と権限で達成できます。そのようなアクセスを必要とするすべてのユーザーは、次の場所にいると仮定します。「ユーザー」グループとあなたは個別にアクセスできます。根システムにアカウントを追加します。それから(例えば根):
touch /var/log/AccessLog
chown root:users /var/log/AccessLog
chmod 640 /var/log/AccessLog
これからルートのみファイルを変更できますが、すべてのユーザーがファイルを変更できます。ユーザー読むことができます。
逆に、ユーザーがファイルに書き込むことを許可したいが、誰が(そしていつ)変更したかを追跡する必要がある場合は、FAM(ファイル変更モニター)。これに加えて、ファイルの以前のバージョンをすべて記録するために、次のバージョン管理システムを配置できます。消化管たとえば)) - すべてのファイルの変更がローカルストレージへのコミットをトリガするようにFAMと連携するようにすることができます.これを行うより簡単な方法があるかもしれませんが、まだ考えたことはありません(少なくともファイルシステム上で動作する方法はありません)。
答え4
crontabを作成してから最初の数分間だけファイルが変更された場合:
find /somedir -type f -user sambauser -mtime +3m -exec chown root:users {} \; -exec chmod 640 {} \;
最後に変更されてから3分以上経過したすべてのファイルを見つけて、所有者/権限を変更します。