Debian wheezy VMで実行されているPythonスクリプトからLinuxバッファキャッシュを消去する必要があります。
私はrootとして実行していますが、rootsync; echo 3 | sudo tee /proc/sys/vm/drop_caches
権限を持っていないユーザーがスクリプトを実行しています。
私は次の可能性を考えてみました。
- ユーザーにファイルへの書き込み権限を付与します。
/proc/sys/vm/drop_caches
(私はそれが許可されていないので動作しないようですchmod 646 /proc/sys/vm/drop_caches
。) - setuidをonに設定すると
tee
機能しますが、ユーザーは続行できます。アペッシュ*tそしてtee
- スクリプトでsetuidを設定し、スクリプトに対するユーザーの書き込み権限を削除して、ユーザーが変更できないようにすることができます(ただし、繰り返しますが、ユーザーがコードと対話する可能性があるため、これはうまくいきません)。
- あるいは、次の内容を含む小さなbashスクリプトを書くこともできます。Linuxバッファキャッシュの消去次に、ユーザーに対する書き込み/読み取り権限、setuidを削除し、実行権限を追加します。
この問題を解決する最も賢い方法は何ですか?
答え1
リストの4番目の可能性(セキュリティディレクトリに小さなsetuidスクリプトを書く、たとえばユーザーが/usr/local/bin
変更することはできません)だけが機能し安全であるかもしれませんが、最近では頻繁に使用されています。ディストリビューションで無効になっています。
より簡単でより良いオプションは、/ etc / sudoersに次の行を追加することです(visudo
たとえば、これに使用)。
YOURUSERNAME ALL = NOPASSWD: /sbin/sysctl vm.drop_caches=3
次に、次の行を含めます。
sudo /sbin/sysctl vm.drop_caches=3
あなたのスクリプトから。