Unixユーザーアカウントの名前を変更できますか?

Unixユーザーアカウントの名前を変更できますか?

現在、他のユーザーが使用しているコンピュータにUbuntuをインストールしました。私は彼女の名前にちなんでアカウント名を変更しましたが、ユーザー名は変更されず、フルネームのみが変更されました。ユーザー名はまだ右上(中央fast-user-switch-applet)に表示されます。 Unixユーザーアカウントの名前を変更するコマンドはありますか?

新しい名前で新しいユーザーアカウントを作成し、「古い」ホームディレクトリのすべての内容を新しいアカウントのホームディレクトリにコピーする方法を考えました。十分ですか?しかし、そのファイルが古いアカウントの権限所有者を持つことになると思いましたか?だから私は何をすべきですかchown -R newuser ~

これを行うより簡単で推奨される方法はありますか?

答え1

努力する

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

この--move-homeオプションは、古いホームディレクトリの内容を--homeこのオプションで指定された新しいディレクトリに移動します(またはまだ存在しない場合は新しいディレクトリを作成します)。

デフォルトのユーザーグループを一致させるには、上記のコマンドにnew-login-name追加します。ただし、グループが既存になければなりません。--gid <new-login-name>

詳しくはマニュアルページをご覧ください。

man usermod

答え2

ユーザーの名前を変更できますが、usermod仕事をする、問題が発生する可能性が高いです。以下は、ユーザー名が表示される場所の一覧です。このリストが完全であると主張するわけではありません。

  • /etc/passwdおよび関連ファイルのユーザーエントリ(たとえば、、/etc/shadow/etc/master.passwd
  • /etc/group(および)項目をグループ化します/etc/gshadow
  • に項目がある可能性があります/etc/sudoers
  • システムメールボックスは通常、/var/mail/$USERまたは/var/spool/mail/$USER
  • 通常、クローンタブ/var/spool/cron/crontabs/$USER
  • at場所( /var/spool/cron/atjobs/*)

ホームディレクトリがより多くの場所に表示されることがあります。多くのアプリケーションは、さまざまなドットファイルへの絶対パスを作成します。ホームディレクトリの名前も変更することにした場合は、これらの問題を処理する必要があります(ユーザーaliceのホームディレクトリは必須ではありませんが混乱する可能性があり/home/aliceます/home/bob)。グローバル交換はほとんどのアプリケーションで機能しますが、約束することはできません。可能であれば、古いホームディレクトリ名を名前変更したディレクトリへのシンボリックリンクとして保持します。

答え3

以下は、Debian システムで使用されるコマンドの概要です。

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

最後の2つのコマンドは、前のホームディレクトリの名前からシンボリックリンクを作成します(/家/古い)を新しい名前(/ホーム/鳥)。

答え4

上記の方法はすべて素晴らしいアプローチです。しかし、新しいユーザーを作成して最初のユーザーのすべてのホームページコンテンツをコピーしたら、それは終わりですか?もちろん、サービス(アプリケーション)アカウントに関するものであれば、これはベストプラクティスではないかもしれません。

関連情報