
こんにちは、あきぞらです。
Dockerを開発環境で利用することがよくあります。
あるとき、ログインシェルをbashに変更する作業をしていたのですが、
usermodコマンドを実行した際にエラーに遭遇してしまいました。
途方に暮れてしまったのですがなんとか解決ができたので、
今回はその方法を紹介していきます!
usermodコマンド実行時にエラー
usermodコマンドを打ったときに、
以下のようなエラーで返されてしまいしました。
$ usermod -s /bin/bash akizora usermod: Permission denied. usermod: cannot lock /etc/passwd; try again later.
/etc/.pwd.lockを削除してみる
何かがロックしているのかと思い、
rootユーザで/etc/を検索してみます。
# find /etc/ | grep lock /etc/.pwd.lock /etc/init.d/hwclock.sh
この/etc/.pwd.lockがとても怪しい。
ということで削除してみます。
# rm -i /etc/.pwd.lock rm: remove regular empty file '/etc/.pwd.lock'? y
これで直るかと思いきや、解決しませんでした。
root権限で実行
ここで重大なことに気が付きました。
最初のコマンドはrootでやるべきなのでは?と。
rootユーザで実行します。
# usermod -s /bin/bash akizora
またはsudoをつけてコマンドを実行します。
$ sudo usermod -s /bin/bash akizora
これでうまくいきました!
最初からroot権限で実行しておけばよかったものを…、失敗しました。
では、また!