web-dev-qa-db-ja.com

追加のみにファイルアクセスを制限する

ログファイルのディレクトリがあり、ユーザーが起動したスクリプトのログをログファイルに入れています。この場合、syslogを使用したロギングは不可能のようです。 (非デーモンrsync)

ユーザーにログファイルへの書き込み権限のみを持たせたい。問題は、ユーザー(スクリプト)がそのファイルに追加のみできるように、書き込み権限をさらに制限する必要があることです。基礎となるファイルシステムはXFSです。

以下は機能しません:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

これの他の解決策はありますか?ヒントありがとうございます。

12
metalhead

chattrユーティリティは、ext2/ext3/ext4ファイルシステム用に作成されています。ファイルに対して ioctls を発行するので、それらをどう処理するかを決定するのは基盤となるファイルシステム次第です。新しいLinuxカーネルのXFSドライバーは、ext- [234]と同じFS_IOC_SETFLAGS ioctlをサポートして、追加のみなどのフラグを制御しますが、古いカーネルを実行していない可能性があります(CentOS?)。代わりに xfs_io ユーティリティを使用してみてください:

echo chattr +a | xfs_io test.log

Ext [234]のようなXFSの場合、ルートのみが追加専用フラグを変更できることに注意してください(より正確には、CAP_LINUX_IMMUTABLE機能が必要です)。

それを行う権限はありますか? man 1 chattrから:

「a」属性が設定されたファイルは、書き込みのために追加モードでのみ開くことができます。この属性を設定またはクリアできるのは、スーパーユーザーまたはCAP_LINUX_IMMUTABLE機能を持つプロセスだけです。

1
peterph

または、SELinuxを使用して同じことを達成できます。RedHat互換ディストリビューションを使用している場合は、それが有効になっていて実行されている可能性があります。これはすべてのファイルシステムで機能し、SELinuxはプロセスが許可されていない操作を実行するのをブロックします。

残念ながら、特定のファイルへの追加を除くすべてのシステムリソースへのアクセスを許可するには、アプリケーションのポリシーを作成する必要があります。これを最初に行うと少し難しいかもしれませんが、これには利点があり、セキュリティの層が追加されます。

この講演で追加専用ファイルのルールを作成する方法の例があります。 https://www.youtube.com/watch?v=zQcYXJkwTns

0
lzap