ルートが書き込み用にファイルを開くことができないのはなぜですか?

ルートが書き込み用にファイルを開くことができないのはなぜですか?
[root@localhost ~]# vim /usr/lib64/sas12/smtpd.conf    
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
log_level:3

:wq

エラーが発生しました。

"/usr/lib64/sas12/smtpd.conf" E212: Can't open file for writing.  

ルートが書き込み用にファイルを開くことができないのはなぜですか?

ここに画像の説明を入力してください。

答え1

以下を確認してください。/usr/lib64/sas12ディレクトリがすでに存在します。

root@host:~# ls /usr/lib64/sas12

それ以外の場合は、ファイルを作成する前にディレクトリを作成する必要があります。

root@host:~# mkdir -p /usr/lib64/sas12
root@host:~# vim /usr/lib64/sas12/smtpd.conf

これで、コマンドvimは期待どおりに機能します。

答え2

ファイルシステムが読み取り専用でマウントされているか、これはroot権限の問題ではなくvim機能です。別のエディタを使用するか、ファイル権限を変更(rootファイルの所有者を設定するなど)、ファイルを編集してからもう一度変更してください。

答え3

ファイルに「+a」属性が設定されていると、このエラーが発生する可能性があります。このコマンドを使用すると、chattr既存のファイルを追加することができ、削除することはできません。

server123:/tmp # chattr +a manish
server123:/tmp # lsattr manish
-----a---------- manish

答え4

同じ場所にスワップファイルが存在し、編集用にロックされている場合、この現象が発生する可能性があります。

たとえば、このファイルを見つけます。

/usr/lib64/sas12/.smtpd.conf.swp

ファイルがあると編集できません。削除して編集してみてください。正常に動作します。

関連情報