質問: 現在、CentOSでメールサーバを構築しています。 環境は以下になります。 CentOS7 最新版 メールサーバ構築の際に新たにOSSなどのインストールをyumで行っていたのですが、その時に以下のようなエラー出てユーザ作成に失敗します。 useradd: /etc/shadowを開けません 試しに手で適当なユーザを作成するコマンドを叩いてみましたが、同じメッセージが表示され、ユーザが作成できません。 打ったコマンドは以下です useradd aaa 原因として思い当たるのはyum updateの実行ですが、それだけでユーザが作成できなくなるなど聞いたこともなく、ウェブでも情報がなかったため質問させていただきました。 ご存知でしたらご回答いただけますと幸いです。 よろしくお願いいたします。
回答: 考えられる原因と対処方法を列挙します。ほとんどのコマンドはroot権限が必要です。一般ユーザーで実行する場合は`sudo`を付けてください。 * 何らかのプロセスがロックしている。 useraddやvipwは/etc/shadowをロックしてから書き込みをします。以前のプロセスが残っている場合、ロックが取得できず、書き込みに失敗する場合があります。 ファイルを開いているプロセスは`lsof`コマンド("lsof"パッケージのインストールが必要)で確認できます。開いているプロセスがある場合は`kill`してくみてください。`lsof`コマンドがインストールされていない、プロセスの強制終了が効かないという場合はOSを再起動してみてください。 * SE Linuxのラベルがおかしくなっている。 `ls -Z /etc/shadow`でラベルを確認してください。CentOS 7での正しいラベルは"system_u:object_r:shadow_t:s0"です。もし、異なっている場合は、`restorecon /etc/shadow`で修復してください。 * SE Linuxの設定がおかしくなっている。 `setenforce 0`として一時的にPermissiveにしてみてください。(この設定は一時的なもので、再起動すると再びEnforcedになります。本格的に修正するには"/var/log/audit/audit.log"の内容を確認しながら、SE Linuxのルールを追加する等が必要です。) * ファイルに書き込み不可の属性が付いている。 `lsattr /etc/shadow`として'i'フラグや'a'フラグが立っていないことを確認してください。立っている場合は、`chattr -i /etc/shadow`や`chattr -a /etc/shadow`で外してください。(それぞれのコマンドは"e2fsprogs"パッケージのインストールが必要) * ファイルが無い。 バックアップから戻すか、OS再インストール以外に手段はありません。