2024-03-21


EC2で新しく仮想マシンを立ち上げた場合のデフォルトユーザー名とグループ名はAmazon Linux2であればec2-user、Debianであればadminとなっている。ec2-userはまだしもadminはさすがにまずいだろうと変更しようとしたところ、
usermod -l hogeuser admin usermod: user admin is currently used by process 782
と言われて変更させてくれない。これは初回ログイン手段がadminユーザ名でのSSHのみで、adminユーザのシェルプロセスが立ち上がっている以上変更不可ということである。IDCフロンティアのように仮想マシンコンソールからrootユーザで直接操作できるなら上記のようなことにはならないが、AWSはSSHしか手段が無いのでエラーになる。
これを回避するには、面倒ながらvipwコマンドとvigrコマンドでsudo権限を持つ一時ユーザー(adtmp)を作成しそれでログインし直し、adminユーザー名を変更することになる。
初回ログイン(Debian 10 Buster)後、adtmpユーザ作成
whoami admin sudo -s export EDITOR=vi vipw adtmp:x:1099:1000:Adtmp:/home/adtmp:/bin/bash を加えて保存。 vipw -s adtmp:!:18559:0:99999:7::: を加えて保存。 vigr sudo:x:27:admin,adtmp と、sudoにadtmpを加えて保存。 vigr -s sudo:*::admin,adtmp と、sudoにadtmpを加えて保存。 vi sudoers.d/90-cloud-init-users adtmp ALL=(ALL) NOPASSWD:ALL を加えて保存。 cd /home cp -Rp admin adtmp # adminのホーム内容(SSHキー含め)丸ごとコピー chown -Rh adtmp:admin adtmp # 所有者をadtmpに変更 exit exit
これで、一時管理者ユーザーadtmpが、外部からadminのSSHキーでログインできるようになったはずなので、一旦adminを抜けてマシンからログアウトし、今度はadtmpユーザーでSSHログインし直す。
adtmpユーザーでログイン後、adminユーザー・グループ変更
whoami adtmp sudo -s export EDITOR=vi usermod -l hogeuser admin # ユーザーログイン名の変更 usermod -c "hogeuser" hogeuser # ユーザーフルネームの変更 usermod -m -d /home/hogeuser hogeuser # ホームディレクトリの移行(admin→hogeuser) groupmod -n hogegroup admin # グループ名の変更 vi sudoers.d/90-cloud-init-users admin ALL=(ALL) NOPASSWD:ALL を、 hogeuser ALL=(ALL) NOPASSWD:ALL に変更して保存。 exit exit
これで、デフォルトユーザー名・グループ名 admin:admin が、hogeuser:hogegroup に変更できたので、再度マシンからログアウトし、hogeuserでSSHログインし直す。
hogeusrユーザーでログイン後、adtmpユーザーを削除する
最後に、不要となった一時管理者アカウントadtmpを削除する。
whoami hogeuser sudo -s export EDITOR=vi userdel -r adtmp # ホームディレクトリごと削除 userdel: adtmp mail spool (/var/mail/adtmp) not found vi sudoers.d/90-cloud-init-users adtmp ALL=(ALL) NOPASSWD:ALL の行を削除する。
mail spoolデータは無いというだけなので気にしなくてよく、passwd,home等adtmpは無事消えているはずである。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
オープンソースリップシンクエンジンSadTalkerをDebianで動かす
ファイアウォール内部のOpenAPI/FastAPIのdocsを外部からProxyPassで呼ぶ
Debian 12でsshからshutdown -h nowしても電源が切れない場合
【Windows&Mac】アプリのフルスクリーンを解除する方法
Debian 12でtsコマンドが見つからないcommand not found
Debian 12でsyslogやauth.logが出力されない場合
Debian 12で固定IPアドレスを使う設定をする
Debian 12 bookwormでNVIDIA RTX4060Ti-OC16GBを動かす
【Debian】apt updateでCD-ROMがどうのこうの言われエラーになる場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Apache】サーバーに同時接続可能なクライアント数を調整する
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
【PHP】Mail/mimeDecodeを使ってメールの中身を解析(準備編)
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う
Windows11のコマンドプロンプトでテキストをコピーする