• ベストアンサー

ユーザー名の変更について

初歩的な質問なのですが、UNIXでこれまで使用してきたアカウント名を 別のものに変更したいのですがどうすればいいのでしょうか? その場合どういった注意点が必要でしょうか?当然メールのアカウント名 も変更になりますが、過去のメールボックスも移行できるでしょうか? ご存知のかた教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.2

No.1 の続きです。一つ忘れてました。 通常、ホームディレクトリの名前はユーザ名になっていることが多いので(例:/home/oldname)、これも、/etc/passwd のエントリと共に、新しい名前に変更しなければなりませんね。 あと、やっかいなのが、ユーザのシェルスクリプト等の中で /home/oldname/bin/program のようにプログラムが引用されている場合です。~oldname/bin/program でも同じことです。 これは、すべてのユーザのすべてのファイルをチェックして変更するしかありませんが、ユーザ名の変更をアナウンスするだけで、あとは各ユーザがやってくれれば良いのですが、普通はなかなかそこまで動いてくれないので、大変な手間になります。 私の場合は、すべてのディレクトリを辿りながら oldname があるかどうかをチェックし、必要に応じて newname に変更するようなツールを自作して持っているので、これで対応しています。 (find と grep の組み合わせでもチェックできないことはありませんが、これだと、各ファイルの最終アクセス日時が変わってしまうので、わざわざツールを作りました。) いずれにしても、一筋縄ではいかない作業だと思って、慎重に実行して下さい。

その他の回答 (1)

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

UNIX のアカウント名の変更は、一見簡単そうですが、実は結構大変な作業です。 お使いの環境(UNIX の種類・バージョン等)が書かれていないので、手元の環境を例にした一般的な説明になってしまいますが… 基本的な手順は、以下のようになります。 (1) /etc/passwd の該当エントリを編集し、アカウント名(第1フィールド)を新しいものに変更します。 (2) /etc/group をチェックし、旧アカウント名があれば、新アカウント名に変更します。 (3) シャドウパスワードを使用しているシステムでは、/etc/shadow,/etc/gshadow も同様に変更します。 (4) /etc/aliases に旧アカウント名があれば、新アカウントに変更して newaliases します。 (5) NIS を使用している場合は、今までの変更をすべての NIS サーバに反映させます。 (6) メールボックス(通常 /var/spool/mail または /var/mail)の中に、旧アカウント名のファイル(=過去のメール)があれば、ファイル名を新アカウントに変更します。 (7) そのユーザが cron を使用している場合、crontab ファイルが旧アカウントで作成されているので、それを新アカウントに変更します。   (/var/spool/cron 等にあります。) このあたりまでやれば基本的にはOKのはずですが、稼働しているアプリケーションがアカウント名でユーザを管理していれば、それらもすべて新アカウントに変更する必要がありますので、慎重に作業して下さい。

関連するQ&A