しばらく前に、Ubuntuをインストールしたときに、もう使用したくないアカウントのかなり愚かなユーザー名を選択しました。
アプリケーションの設定を失うことなく、これをどのように変更しますか(ホームディレクトリの名前、ターミナルの名前を含む)。
さまざまな認証(電子メール、SSH、GPGなど)のアクセス許可とキーを保持するにはどうすればよいですか?
ユーザー名を変更すると、どの設定が失われる可能性がありますか?
しばらく前に、Ubuntuをインストールしたときに、もう使用したくないアカウントのかなり愚かなユーザー名を選択しました。
アプリケーションの設定を失うことなく、これをどのように変更しますか(ホームディレクトリの名前、ターミナルの名前を含む)。
さまざまな認証(電子メール、SSH、GPGなど)のアクセス許可とキーを保持するにはどうすればよいですか?
ユーザー名を変更すると、どの設定が失われる可能性がありますか?
回答:
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/oldname
しsed -i.bak 's/*oldname*/*newname*/g' *list of files*
てファイルの内容を変更できます。
私のようなそれほど経験のないユーザー向けの追加情報:
ユーザーアカウント(管理者)が1つしかないため、ユーザー名を変更できません( "既にログインしています"はTTY1(Ctrl+ Alt+ F1)の応答でした。この周り:
古い資格情報でログインし、TTY1の「temporary」などの新しいユーザーを追加します。
sudo adduser temporary
パスワードを設定します。
ユーザーをsudoグループに追加して、一時ユーザーがsudoを実行できるようにします。
sudo adduser temporary sudo
exit
ます。exit
(ログインプロンプトが表示されるまで)一時的なユーザーとフォルダーを削除します。
sudo deluser temporary
sudo rm -r /home/temporary
grep -IRFl /home/username ~
ください。ホームディレクトリへの参照がいくつ格納されているかがわかります。
/home/.ecryptfs/oldusername/.ecryptfs/Private.mnt
、新しいホームフォルダーを指すように編集する必要があります。そうしないと、Unity経由でログインできなくなります。
sudo usermod -d /home/edge -m edge
yields:usermod: Directory /home/empedokles could not be renamed in /home/edge
つまり、ステップ4は機能しません。
sudoers
plainで編集しませんnano
。常に使用しますvisudo
。
すべてをまとめるには:
「root」アカウントのパスワードを設定します。
sudo passwd root
ログアウト。
exit
「root」アカウントと以前に設定したパスワードを使用してログインします。
ユーザー名とホームフォルダーを新しい名前に変更します。
usermod -l <newname> -d /home/<newname> -m <oldname>
グループ名を必要な新しい名前に変更します。
groupmod -n <newgroup> <oldgroup>
「ルート」アカウントをロックします。
passwd -l root
ecryptfs(暗号化されたホームディレクトリ)を使用していた場合。を使用して暗号化されたディレクトリをマウントし、新しいホームディレクトリを反映するようにecryptfs-recover-private
編集<mountpoint>/.ecryptfs/Private.mnt
します。
ログアウト。
exit
Ctrl+ Alt+を押しF7ます。
これで、新しいユーザー名を使用してログインできます。
usermod -l
を取得した後user <oldname> is currently used by process <processno>
、を使用してそのプロセス(おそらくデーモン、またはtmux / screen)を見つけることができますps aux | grep <processno>
。そのプロセスを適切に停止したい場合がありますkill <processno>
。
回復モードで再起動し、ルートプロンプトシェルに移動します(「ルートシェルプロンプトにドロップ」)
最初にルートを再マウントします
mount -o remount,rw /
ユーザー名とホームフォルダー名を変更するには、
usermod -l <newname> -d /home/<newname> -m <oldname>
グループ名については、
groupmod -n <newgroup> <oldgroup>
usermod -l <newname> -d /home/<newname> -m <oldname>
これを使用するusermod: user oldusername is currently used by process 3170
とエラーが発生し、プロセスを強制終了しても同じエラーが発生します。ubuntu 13.10
Ubuntu 13.10、14.04、16.04の場合:
受信するときusermod: can't change /etc/password
は、次のコマンドを実行するだけです。
ルート回復コンソールで次を実行します。
mount -o remount,rw /
その後、再実行します。
usermod -l <newname> -d /home/<newname> -m <oldname>
ここに@ karthick87でリストされた答えは完全にうまくいきますが、安全ですべてのグリッチを避けるために私がすることはここにあります:
すべての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
コマンドを発見する前にこの方法を試しましたが、ユーザーのパスワードは受け入れられなくなりました。
usermod
インストールされていない場合、passwd
パッケージの一部であるためインストールが破損します。これは必須です。