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


48

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

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

これを行うためのより簡単な/推奨される方法はありますか?

回答:


52

試して

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ページを参照してください。

man usermod

ありがとう!私はこのコマンドについて知りませんでした。:)しかし、それはこのコンピューター上の唯一のアカウントであり、男はこう言います:«ユーザーが数値のユーザーID、ユーザー名、またはユーザーのホームディレクトリが変更されています。usermodはLinux上でこれをチェックしますが、ユーザーが他のアーキテクチャ上のutmpに従ってログインしているかどうかのみをチェックします。»ライブcdを使用してこれを行うことをお勧めしますか、それが完了したら削除する一時アカウントを作成しますか?
ヤンデネンダル

2
Ubuntuを使用していて、rootとしてログインできないため、このタイプのタスクに使用するadminという別のアカウントを作成します。一時的なアカウントも同様に機能しますが、将来的に同様のことを行う可能性があるため、保持することもできます。
gvkv

3
usermod --home完全パスを含める必要があることに注意してください。たとえば/home/user.name、現在の作業ディレクトリ内に新しいホームディレクトリが作成されます。
feeela

それはグループを変更しません!
-Heanz

22

ユーザーの名前を変更することは可能usermodですが、いくつかの作業を行いますが、これは問題を引き起こす可能性が非常に高いです。ユーザー名が表示される場所のリストを次に示します。このリストが網羅的であるとは主張しません。

  • ユーザーのエントリ/etc/passwdと関連ファイル(例えば/etc/shadow/etc/master.passwd)。
  • /etc/group(および/etc/gshadow)のグループエントリ。
  • おそらくのエントリ/etc/sudoers
  • 通常、/var/mail/$USERまたはのシステムメールボックス/var/spool/mail/$USER
  • crontab、通常 /var/spool/cron/crontabs/$USER
  • atジョブ(/var/spool/cron/atjobs/*

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


4

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つのコマンドは、古いホームディレクトリの名前(/ home / OLD)から新しいホームディレクトリの名前(/ home / NEW)へのシンボリックリンクを作成します。


何のgroupaddためですか?
ヤンデンネダル14

2
の代わりにgroupaddgroupmod -n NEW OLDgidの変更を避けることが望ましいと思います。少なくともUbuntuでは、ユーザーと同じ名前のグループがデフォルトで設定されているため、その名前も変更したいと思うでしょう。
jamadagni 14

1

上記はすべてエレガントな方法ですが、なぜ新しいユーザーを作成し、最初のユーザーからホームコンテンツをすべてコピーしないのですか?もちろん、サービス(アプリケーション)アカウントに関する場合は、おそらくベストプラクティスではありません


3
これは、OPで既に言及された解決策に言及する以外、ほとんど何も追加しない完全な回答投稿よりも、コメントとして配置する方が良いと思われます。このソリューションが優れている、または受け入れられると考える理由についての情報を追加することを検討する必要があります。
HalosGhost 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.