こんにちは、あきぞらです。
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権限で実行しておけばよかったものを…、失敗しました。
では、また!