Linuxコマンドchattrは、特定のファイルやディレクトリに対して追加の権限を設定でき、ファイルの保護やセキュリティの強化に役立ちます。特に、ファイルの削除や変更を防ぐ機能が強力です。この記事では、chattrコマンドの使い方とさまざまなオプションについて説明します。
目次
Linuxコマンドchattrとは?
chattrはLinuxでファイルシステムの属性を変更するコマンドです。これは基本的な読み取り、書き込み、実行権限とは別に、特定の属性を追加または削除できるようにします。主に重要なファイルの変更を防いだり、ログファイルなどの管理に役立ちます。
基本使い方
Linuxコマンドchattrの基本的な使い方は以下の通りです。
chattr [オプション] [ファイルまたはディレクトリ]
ShellScript注意点
chattrコマンドは、ファイルシステムの種類によって一部のオプションがサポートされないことがあります。主にext系ファイルシステムで使用されますが、他のファイルシステムではサポート状況を確認する必要があります。
chattrで変更したファイル属性は、lsコマンドでは確認できず、lsattrコマンドを使って確認する必要があります。
chattrの主要オプション
chattrコマンドはさまざまなオプションを提供しています。各オプションはファイルやディレクトリに特定の属性を追加または削除します。主に使用されるオプションをいくつか紹介します。
+i: 変更禁止 (Immutable)
ファイルを変更や削除できないように保護する機能です。+iオプションを設定したファイルは、rootユーザーであっても変更できません。そのため、sudoコマンドを使っても変更や削除は不可能です。
sudo chattr +i filename
ShellScriptこのコマンドを使用すると、該当ファイルは削除、変更、名前変更などが不可能になります。重要な設定ファイルやログファイルの保護に役立ちます。
次のようにdocument.pdf
ファイルにimmutable属性を設定すると、lsattrコマンドで属性を確認した際にi
値が追加されたことがわかります。また、sudo rmコマンドを使って削除を試みても、”rm: cannot remove ‘document.pdf’: Operation not permitted”というエラーメッセージが表示され、削除権限がないことがわかります。
もし、以下の図のようにsudoを使わずに実行すると、”chattr: Operation not permitted while setting flags on document.pdf”というメッセージが表示され、許可されていない操作であることが示されます。chattrコマンドは必ずsudoと共に使用してください。
+a: 追加のみ可能 (Append Only)
ファイルにデータを追加できるが、既存の内容を変更したり削除することはできません。主にログファイルなどに使用されます。
sudo chattr +a filename
ShellScriptこのオプションを使用すると、ログデータが安全に保存され、ファイルの既存内容が損傷しないようになります。ログファイルのセキュリティを確保するのに非常に便利です。
次のように、ファイルの削除や変更はできませんが、データを追加することは可能なオプションです。
+s: セキュア削除 (Secure Deletion)
ファイルを削除するとき、実際にデータが物理的なディスクから完全に消去される機能です。セキュリティに敏感なデータが含まれているファイルを削除する際に役立ちます。
sudo chattr +s filename
ShellScriptこのオプションを使うと、ファイルが削除された際、ディスク上のデータが上書きされ、復元不可能になります。ただし、ファイルシステムがサポートしている必要があります。+sオプションはext2、ext3、ext4ではサポートされていません。
+d: バックアップ時に除外 (no Dump)
Linuxコマンドdumpを使用してファイルをバックアップする際、そのファイルがダンプされないように設定します。システム全体のバックアップから特定のファイルを除外したい場合に使用されます。
sudo chattr +d filename
ShellScript+c: 圧縮 (Compress)
ファイルが自動的に圧縮されるように設定します。ストレージ容量が不足している場合、大きなファイルを圧縮してディスクスペースを節約できますが、読み書きの速度が若干遅くなる可能性があります。+sオプションと同様にext2、ext3、ext4ではサポートされていません。
sudo chattr +c filename
ShellScript特定属性の解除方法
もし、上記で設定した属性を解除してファイルを編集したい場合は、-iや-aなど、負の記号(-)を付けたオプションを使用します。
chattr -i filename
ShellScriptlsattrコマンドで属性確認
先述したように、chattrで設定したファイル属性は、一般的なlsコマンドでは確認できません。代わりに、lsattrコマンドを使ってファイルやディレクトリの属性を確認できます。
lsattr filename
ShellScriptこのコマンドを入力すると、該当ファイルに設定された属性が一覧表示されます。設定されたオプションは文字で表され、その文字を通じてどの属性が適用されているかがわかります。
注意事項
chattrで設定された属性は、root権限でしか変更できません。そのため、誤ってファイル属性を設定しないように注意が必要です。
属性を解除しないでファイルを編集しようとするとエラーが発生します。ファイルを編集する必要がある場合は、まずその属性を解除してください。
すべてのファイルシステムがchattrのすべてのオプションをサポートしているわけではないため、使用しているファイルシステムがサポートしているオプションを確認することが重要です。man chattr
でBUGS AND LIMITATIONSセクションから関連情報を詳しく確認できます。
まとめ
Linuxコマンドchattrは、ファイルやディレクトリの属性を制御し、セキュリティを強化したり、ファイルの整合性を保護するために非常に役立つツールです。前述の内容を簡単にまとめます。
- 重要ファイルの保護: システムの重要な設定ファイルや実行ファイルを保護するために、
chattr +i
オプションを使用すると、ファイルの誤削除や変更を防げます。 - ログファイル管理: ログファイルに
chattr +a
属性を付与すると、ログデータの追加は可能ですが、既存のログを修正・削除することはできません。 - ファイルの復元防止: 機密データを扱う場合、ファイル削除時に
chattr +s
オプションを使うと、データを完全に削除できます。ただし、特定のファイルシステムでは動作しない可能性があります。 - バックアップ除外: 一時ファイルなどはバックアップが不要な場合、
chattr +d
オプションでdump時に除外できます。 - ディスクスペースの節約: ファイルサイズが大きすぎる場合、カーネルレベルでファイルを圧縮したいなら、
chattr +c
オプションを使用します。ただし、特定のファイルシステムでは動作しない可能性があります。
このように、Linuxコマンドchattrはシンプルながらも強力な機能を提供します。必要な状況で適切に活用し、ファイルシステムを安定的に運用してください。