ユーザー名を変更するにはどうすればよいですか?


325

しばらく前に、Ubuntuをインストールしたときに、もう使用したくないアカウントのかなり愚かなユーザー名を選択しました。

アプリケーションの設定を失うことなく、これをどのように変更しますか(ホームディレクトリの名前、ターミナルの名前を含む)。
さまざまな認証(電子メール、SSH、GPGなど)のアクセス許可とキーを保持するにはどうすればよいですか?
ユーザー名を変更すると、どの設定が失われる可能性がありますか?


/usr/share/applications/users.desktopに移動できない理由>>名前を変更する必要のあるユーザーをクリックします。>> [ユーザー名の変更] >> [名前の変更] >> [OK]をクリックします。これがユーザー名を変更する最も簡単な方法だと思いますか?
アナンド

回答:


324

Unixライクなオペレーティングシステムは、ユーザー名とユーザーIDを分離するため、IDに影響を与えることなく安全に名前を変更できます。すべての許可、ファイルなどは、ユーザー名ではなく、ID(uid)に関連付けられています。

ユーザーデータベースのあらゆる側面を管理するには、usermodツールを使用します。

ユーザー名を変更するには(おそらくログインせずにこれを行うのが最善です):

sudo usermod -l newUsername oldUsername

ただし、これはホームフォルダーの名前を変更しません。

ホームフォルダを変更するには、使用します

sudo usermod -d /home/newHomeDir -m newUsername

ユーザー名を変更した後。

たとえば、ログアウトしてコンソールにドロップし(Ctrl+ Alt+ F1)、sudo su -真のルートになります(sudo -s$ HOMEが/ home / yournameである場合とは対照的に)。最初。これを行うには、を入力ps -u usernameして、一致するPIDを探し、で殺しますkill PID-number

更新:前述のように、一部のファイルは古いホームディレクトリを参照する場合があります。下位互換性のためにシンボリックリンクを保持するか、たとえば、.bak拡張子を持つ各ファイルのバックアップを作成ln -s /home/newname /home/oldnamesed -i.bak 's/*oldname*/*newname*/g' *list of files*てファイルの内容を変更できます。

私のようなそれほど経験のないユーザー向けの追加情報:
ユーザーアカウント(管理者)が1つしかないため、ユーザー名を変更できません( "既にログインしています"はTTY1(Ctrl+ Alt+ F1)の応答でした。この周り:

  1. 古い資格情報でログインし、TTY1の「temporary」などの新しいユーザーを追加します。

    sudo adduser temporary
    

    パスワードを設定します。

  2. ユーザーをsudoグループに追加して、一時ユーザーがsudoを実行できるようにします。

    sudo adduser temporary sudo
    
  3. コマンドでログアウトしexitます。
  4. tty1:に戻ります。「一時的な」ユーザーアカウントとパスワードでログインします。上記のようにユーザー名とフォルダーを変更します。exit(ログインプロンプトが表示されるまで)
  5. TTY7(Ctrl+ Alt+ F7)に戻ってGUI /通常のデスクトップ画面にログインし、これが機能するかどうかを確認します。
  6. 一時的なユーザーとフォルダーを削除します。

    sudo deluser temporary
    sudo rm -r /home/temporary
    

11
残念ながら、これは$ HOMEの下の異なる設定ファイルには当てはまりません。次のようなものを実行してみてgrep -IRFl /home/username ~ください。ホームディレクトリへの参照がいくつ格納されているかがわかります。
手配

1
簡単な修正でした-ユーザーアカウントエディターを統一して使用し、その後再起動するだけでした。
スティーブコッホ14

6
ホームフォルダーが暗号化されている場合は/home/.ecryptfs/oldusername/.ecryptfs/Private.mnt、新しいホームフォルダーを指すように編集する必要があります。そうしないと、Unity経由でログインできなくなります。
ラファエル

2
sudo usermod -d /home/edge -m edgeyields:usermod: Directory /home/empedokles could not be renamed in /home/edgeつまり、ステップ4は機能しません。
エンペドクル

2
@JTC は決してsudoers plainで編集しませんnano。常に使用しますvisudo
発泡スチロールフライ

108

すべてをまとめるには:

  1. スタート画面でCtrl+ Alt+を押しますF1
  2. ユーザー名とパスワードを使用してログインします。
  3. 「root」アカウントのパスワードを設定します。

    sudo passwd root
    
  4. ログアウト。

    exit
    
  5. 「root」アカウントと以前に設定したパスワードを使用してログインします。

  6. ユーザー名とホームフォルダーを新しい名前に変更します。

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. グループ名を必要な新しい名前に変更します。

    groupmod -n <newgroup> <oldgroup>
    
  8. 「ルート」アカウントをロックします。

    passwd -l root
    
  9. ecryptfs(暗号化されたホームディレクトリ)を使用していた場合。を使用して暗号化されたディレクトリをマウントし、新しいホームディレクトリを反映するようにecryptfs-recover-private編集<mountpoint>/.ecryptfs/Private.mntします。

  10. ログアウト。

    exit
    
  11. Ctrl+ Alt+を押しF7ます。

これで、新しいユーザー名を使用してログインできます。


6
usermod -l を取得した後user <oldname> is currently used by process <processno>、を使用してそのプロセス(おそらくデーモン、またはtmux / screen)を見つけることができますps aux | grep <processno>。そのプロセスを適切に停止したい場合がありますkill <processno>
RedPixel

1
このコメントをまとめてくれてありがとう。とても役に立ちました。ただし、言及される可能性のある2つのことがあります。ステップ4の後、ステップ6でエラーメッセージが表示されないようにリブートしました。また、このプロセスが完了すると、/ etc / passwdファイルに古いユーザー名と一致するIDコメントが追加されます。これにより、ログイン画面に古いログイン名が表示されます。コマンドラインからそれを修正する適切な方法を見つけることができませんでしたが、ユーザーアカウントにログインし、アカウント設定に移動し、「ログイン名」をユーザー名に変更することで修正しました。これにより、/ etc / passwdファイルが更新され、問題が修正されました。
-Jibbers

1
これが最も簡単で簡単な方法です。@Jibbersが提案したように、ステップ4の後に再起動する方が適切です。
ヤーケ

「ファイルブラウザウィンドウのブックマーク」は古いフォルダを指しているので、それらのブックマークを削除する必要があることに言及します。
ollydbg23

動作しません。最初にCtrl + Alt + F1を押すと、新しく作成されたユーザーにログインしようとして許可されません。
エンペドクル

27

回復モードで再起動し、ルートプロンプトシェルに移動します(「ルートシェルプロンプトにドロップ」)

最初にルートを再マウントします

mount -o remount,rw /

ユーザー名とホームフォルダー名を変更するには、

usermod -l <newname> -d /home/<newname> -m <oldname>

グループ名については、

groupmod -n <newgroup> <oldgroup>

1
usermod -l <newname> -d /home/<newname> -m <oldname>これを使用するusermod: user oldusername is currently used by process 3170とエラーが発生し、プロセスを強制終了しても同じエラーが発生します。ubuntu 13.10
Waqas

4
ホームディレクトリが暗号化されている場合は、これをしないでください!!!! 私はこの手順に従い、2時間のワイルドなライドを送ってくれました...回復する唯一の方法は、この手順を再度実行し、元の(嫌いな)名前を戻すことです。ポイント」
マイク

/usr/share/applications/users.desktopに移動できない理由>>名前を変更する必要のあるユーザーをクリックします。>> [ユーザー名の変更] >> [名前の変更] >> [OK]をクリックします。これがユーザー名を変更する最も簡単な方法だと思いますか?
アナンド

9

Ubuntu 13.10、14.04、16.04の場合:

  1. 「システム設定」アイコンをクリックします。
  2. [ユーザーアカウント]をクリックします。
  3. 管理者アカウントが表示されます。
  4. 「ロック解除」ボタンをクリックします。
  5. アカウントの変更を許可するには、要求に応じてユーザーパスワードを入力します。
  6. ロックが解除されると、変更する古いユーザー名をクリックして、新しいユーザー名を入力して置き換えることができます。
  7. 新しい名前を入力したら、「ロック」ボタンをクリックして変更を永続的にします。
  8. Ubuntuを再起動します。

3
これにより、ユーザー名は変更されず、名前のみが変更されました。古いユーザー名は端末に表示され、ホームディレクトリおよびグループとして(再起動後も)表示されます。
ダグC

3

受信するときusermod: can't change /etc/passwordは、次のコマンドを実行するだけです。

ルート回復コンソールで次を実行します。

mount -o remount,rw /

その後、再実行します。

usermod -l <newname> -d /home/<newname> -m <oldname>

/usr/share/applications/users.desktopに移動できない理由>>名前を変更する必要のあるユーザーをクリックします。>> [ユーザー名の変更] >> [名前の変更] >> [OK]をクリックします。これがユーザー名を変更する最も簡単な方法だと思いますか?
アナンド

1

ここに@ karthick87でリストされた答えは完全にうまくいきますが、安全ですべてのグリッチを避けるために私がすることはここにあります:

  1. 別のアカウント/ユーザーを作成し、このアカウント/ユーザーのルート機能を確認するか、ルート可能なユーザーとしてログインします。
  2. 現在のアカウントでログアウトしてから、手順1で説明したアカウントでログインします。
  3. 前のユーザーのすべてのプロセスを強制終了します。
  4. @ karthick87に記載されている手順に従って、ユーザー名とホームディレクトリの所有者を変更します。
  5. 次に、@ Sriraj Hebbarの回答に従ってグループ名を変更します。
  6. 予備のユーザーでログアウトし、ユーザーでログインします。追加のユーザーを作成した場合は削除します。

0

これを行うusermod -l <newname> -d /home/<newname> -m <oldname>と、上記のコマンドに次のようにuseradd: can't change /etc/passwd追加sudo --するだけで、これを回避するための エラーメッセージが表示されます

sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>

そして

sudo --  groupmod -n <newgroup> <oldgroup>

-3

すべてのPCにusermodアプリがあるわけではないため、手動で実行できます。/etc/passwd編集可能なルート:

sudo vim /etc/passwd

行の先頭でユーザーの名前を変更します。

user:x:500:501:username:home/user:/bin/bash

に:

newuser:x:500:501:username:home/user:/bin/bash

その後、rootで作業した場合は単にログインし、ログインしてuser、ログオフし、再ログインした場合。


usermodコマンドを発見する前にこの方法を試しましたが、ユーザーのパスワードは受け入れられなくなりました。
ベンフォークト

すべてのPCは、usermodの必要はありませ@BenVoigt
МалъСкрылевъ

3
Ubuntuです!usermodインストールされていない場合、passwdパッケージの一部であるためインストールが破損します。これは必須です
-Auspex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.