Linuxのrootが重要ファイル(lsattrとchattr)を勝手に削除しないようにする
4981 ワード
Linuxのrootが重要ファイル(lsattrとchattr)を勝手に削除しないようにする引用 lsattrコマンド 構文 オプション パラメータ 例 chattrコマンド 構文 オプション モード パラメータ 例 引用する
セキュリティの必要性、特に本番環境では、実行中のプロジェクトやログが勝手に変更、移動、削除されないように、関連ファイルやフォルダのセキュリティ設定が行われることがあります.
すなわち、
lsattrコマンド
構文
オプション を再帰的にリストする. が含まれます.
パラメータ0ファイル名:現在のディレクトリのすべてのファイルのファイル属性を表示する ファイル名:指定したファイルのファイル属性を表示する 複数ファイル名:複数の指定ファイルのファイル属性を表示する ≪インスタンス|Instance|emdw≫
1.現在のディレクトリの下にある非表示ファイルのファイル属性を表示するには:
出力例:
上記の出力例から分かるように、 にデータを書き込むこともできない可変のファイル属性を設定する. も生成される. が設定されていません.
2.
出力例:
上記の出力例のみを見ると、
出力例:
上の削除コマンドでは、わざわざroot権限を使用しましたが、出力結果は操作が許可されていません.これは、
ただし、
注:親ディレクトリのファイルプロパティは子ファイルに影響しますが、子ファイルの影響と親ディレクトリが設定したファイルプロパティの効果は完全に一致しません.
chattrコマンド
構文
オプション を再帰的にリストする.
を選択します.オペレータ: . 削除する. に設定する.
ファイルのプロパティ: を設定またはクリアすることができます. を設定またはクリアすることができます.
注:すべてのファイルシステムがすべてのフラグをサポートまたは使用しているわけではありません.具体的には、ファイルシステムのマニュアルを参照してください.
パラメータファイル名:指定ファイルのファイル属性を変更する 複数のファイル名:複数の指定ファイルのファイル属性を変更する ≪インスタンス|Instance|emdw≫
1.
2.
3.
セキュリティの必要性、特に本番環境では、実行中のプロジェクトやログが勝手に変更、移動、削除されないように、関連ファイルやフォルダのセキュリティ設定が行われることがあります.
すなわち、
root
アカウントを使用してファイルを修正(vi
)、移動(mv
)、または削除(rm
)操作を行うと、Operation not permitted
またはPermission denied
が表示される場合、そのファイルまたは上位ディレクトリに対してファイル属性設定が行われた可能性が高い(通常はchattr
がi
またはa
に設定されている).lsattrコマンド
root
アカウントを使用してファイルまたはフォルダに関連する操作を行う場合、権限が不足して操作できないというプロンプトが表示された場合は、lsattr
コマンドを使用して現在のファイルまたはフォルダのファイルプロパティを表示する必要があります.lsattr
コマンドの詳細については、lsattr(1)-Linux manual pageを参照してください.構文
lsattr [ -RVadv ] [ files... ]
オプション
[ -RVadv ]
は、0、1、または複数のオプションを指定できます.-R
:ディレクトリおよびそのコンテンツの属性-a
:ディレクトリ内のすべてのファイルがリストされ、.
で始まるファイル(非表示ファイル)パラメータ
[ files... ]
は、0、1、または複数のファイル名を指定できます.1.現在のディレクトリの下にある非表示ファイルのファイル属性を表示するには:
$ lsattr
出力例:
----i----------- ./webapps
-----a---------- ./logs
---------------- ./README
上記の出力例から分かるように、
webapps
ディレクトリは、webapps
ディレクトリが削除または名前変更できず、ディレクトリへのリンクを作成できず、ディレクトリlogs
ディレクトリには、追加するファイルのみの属性が設定されている.すなわち、logs
ディレクトリには、新しいファイルのみが追加できるが、追加したファイルは削除できない.また、ファイルの内容を修正して直接コンテンツを追加すると、追加のバックアップファイルREADME
ファイルファイルファイル属性2.
logs
ディレクトリとそのサブディレクトリの内容を表示する:$ lsattr -R logs/
出力例:
---------------- logs/log_file1
---------------- logs/log_file2
---------------- logs/log_dir1
logs/log_dir1:
---------------- logs/log_dir1/log_file3
上記の出力例のみを見ると、
logs
ディレクトリのファイルにファイル属性が設定されていないため、勝手に操作できるようですが、実際にはそうなのでしょうか.log_file1
ファイルの削除を行います.$ sudo rm -rf logs/log_file1
出力例:
rm: cannot remove ‘logs/log_file1’: Operation not permitted
上の削除コマンドでは、わざわざroot権限を使用しましたが、出力結果は操作が許可されていません.これは、
log_file1
ファイルの上位ディレクトリlogs
に追加のみのファイル属性が設定されているため、そのサブファイルにはファイル属性が設定されていないが、親ディレクトリのファイル属性にも影響されるためである.ただし、
logs/log_dir1/log_file3
ファイルを削除した場合は、正常に削除できます.注:親ディレクトリのファイルプロパティは子ファイルに影響しますが、子ファイルの影響と親ディレクトリが設定したファイルプロパティの効果は完全に一致しません.
chattrコマンド
chattr
コマンドは、Linuxファイルシステム上のファイル属性を変更するために使用できます.chattr
コマンドの詳細については、chattr(1)-Linux manual pageを参照してください.構文
chattr [ -RVf ] [ -v version ] [ mode ] files...
オプション
[ -RVadv ]
は、0、1、または複数のオプションを指定できます.-R
:ディレクトリおよびそのコンテンツの属性を選択します.
[ mode ]
はモードを表し、フォーマットは+-=[aAcCdDeijsStTu]
です.+
:選択した属性をファイルの既存属性に追加する-
:選択する属性をファイルの既存属性から=
:選択する属性をファイルの一意属性a
:追加のみ(append only).ファイルは追加モードでのみ書き込み可能です.スーパーユーザーのみまたはCAP_を持つLINUX_IMMUTABLE機能のプロセスは、この属性i
:可変(immutable).ファイルは変更できません.つまり、ファイルを削除または名前変更することはできません.ファイルへのリンクを作成することはできません.また、ファイルにデータを書き込むことはできません.スーパーユーザーのみまたはCAP_を持つLINUX_IMMUTABLE機能のプロセスは、この属性注:すべてのファイルシステムがすべてのフラグをサポートまたは使用しているわけではありません.具体的には、ファイルシステムのマニュアルを参照してください.
パラメータ
files...
は、1つ以上のファイル名を指定できます.1.
logs
ディレクトリ及びそのサブディレクトリの全てのファイルに追加されたファイル属性のみを追加する:$ sudo chattr -R +a logs/
2.
logs
ディレクトリとそのサブディレクトリ内のすべてのファイルのファイル属性を可変に変更し、他のファイル属性を削除する.$ sudo chattr -R =i logs/
3.
logs
ディレクトリとそのサブディレクトリのすべてのファイルを可変のファイル属性を削除する:$ sudo chattr -R -i logs/