Linuxのrootが重要ファイル(lsattrとchattr)を勝手に削除しないようにする

4981 ワード

Linuxのrootが重要ファイル(lsattrとchattr)を勝手に削除しないようにする
  • 引用
  • lsattrコマンド
  • 構文
  • オプション
  • パラメータ
  • chattrコマンド
  • 構文
  • オプション
  • モード
  • パラメータ
  • 引用する
    セキュリティの必要性、特に本番環境では、実行中のプロジェクトやログが勝手に変更、移動、削除されないように、関連ファイルやフォルダのセキュリティ設定が行われることがあります.
    すなわち、rootアカウントを使用してファイルを修正(vi)、移動(mv)、または削除(rm)操作を行うと、Operation not permittedまたはPermission deniedが表示される場合、そのファイルまたは上位ディレクトリに対してファイル属性設定が行われた可能性が高い(通常はchattriまたはaに設定されている).
    lsattrコマンドrootアカウントを使用してファイルまたはフォルダに関連する操作を行う場合、権限が不足して操作できないというプロンプトが表示された場合は、lsattrコマンドを使用して現在のファイルまたはフォルダのファイルプロパティを表示する必要があります.lsattrコマンドの詳細については、lsattr(1)-Linux manual pageを参照してください.
    構文
    lsattr [ -RVadv ] [ files...  ]
    

    オプション[ -RVadv ]は、0、1、または複数のオプションを指定できます.
  • -R:ディレクトリおよびそのコンテンツの属性
  • を再帰的にリストする.
  • -a:ディレクトリ内のすべてのファイルがリストされ、.で始まるファイル(非表示ファイル)
  • が含まれます.
    パラメータ[ files... ]は、0、1、または複数のファイル名を指定できます.
  • 0ファイル名:現在のディレクトリのすべてのファイルのファイル属性を表示する
  • ファイル名:指定したファイルのファイル属性を表示する
  • 複数ファイル名:複数の指定ファイルのファイル属性を表示する
  • ≪インスタンス|Instance|emdw≫
    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つ以上のファイル名を指定できます.
  • ファイル名:指定ファイルのファイル属性を変更する
  • 複数のファイル名:複数の指定ファイルのファイル属性を変更する
  • ≪インスタンス|Instance|emdw≫
    1.logsディレクトリ及びそのサブディレクトリの全てのファイルに追加されたファイル属性のみを追加する:
    $ sudo chattr -R +a logs/
    

    2.logsディレクトリとそのサブディレクトリ内のすべてのファイルのファイル属性を可変に変更し、他のファイル属性を削除する.
    $ sudo chattr -R =i logs/
    

    3.logsディレクトリとそのサブディレクトリのすべてのファイルを可変のファイル属性を削除する:
    $ sudo chattr -R -i logs/