web-dev-qa-db-ja.com

lsattrの「a」属性はどういう意味ですか?

.bash_historyファイルから古い履歴を削除しようとしましたが、次のメッセージが表示されました。

[john ~] /home/john $ mv .bash_history .bas
mv: impossible to move `.bash_history' to `.bas': Operation not permited

私はファイル/ディレクトリの許可を疑った:

[john ~] /home/john $ ls -ld .bash_history .
drwxrwx--T+ 5 root       john 4096 Out 11 19:45 .
-rw-r--r--  1 john john 2977 Out 10 14:36 .bash_history
[john ~] /home/john $

それから私は試しました:

[john ~] /home/john $ lsattr .bash*
-----a------- .bash_history
------------- .bash_logout
------------- .bash_profile
------------- .bashrc
[john ~] /home/john $

おそらくそれはこのa属性です。どういう意味ですか?

6
jyz

a属性は、ファイルが追加専用であることを意味します。ファイルを上書きまたは削除することはできず、データを追加するだけです。これは chattr manページで説明されています。ルートのみが属性を削除できます。

実際の結果は、古い履歴行を消去できないことです。これはおそらく、システム管理者によるセキュリティ対策として意図されています。私はそれが安全であると完全に確信しているわけではありませんが、頭のてっぺんからファイルの内容の一部を削除する方法を考えることができません。 (ただし、履歴に表示せずにファイルをバイパスしてコマンドを実行するのは簡単です。そのため、有能なユーザーに対する特に有用なセキュリティ対策ではありません。bash以外からコマンドを実行するのは明らかな方法です。).