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


11

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

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

以下は機能しません:

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

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


XFSでよろしいですか?chattr +aここで動作します(3.2カーネル)。を使用するにはrootである必要がありますchattr$スーパーユーザーではないことを示すプロンプトが表示されます)。ただし、chattr +aサポートされていてrootでない場合は、別のエラーメッセージが表示されます。
ステファンChazelas


パーティションのマウントオプションは何ですか?それはおそらく関連するマウントオプションを必要とするかもしれないxattrを使用してそれを保存するかもしれませんか?(XFSの説明では、それについてはあまり言及されていません...)
Gert van den Berg

これはSFでクローズされたので、ここでは開いたままにして
おき

回答:


8

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

echo chattr +a | xfs_io test.log

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


1

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

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


0

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

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

この講演で、追加のみのファイルルールを記述する方法の例を示します。https//www.youtube.com/watch?v = zQcYXJkwTns

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.