UbuntuまたはLinuxでユーザー名を変更する適切な方法


26

私はUbuntu 12.04を使用しており、いくつかのカスタマイズを行いました。また、ubuntuをカスタマイズした新しいisoにします。

お願いしたいのは、ユーザー名をどのように変更するかです。現在のホームフォルダーには多くの設定があります。だから、ユーザー名の変更を台無しにしたくない。

それを行うためのベストプラクティスやワークフローはありますか?


多くの場合、ホームディレクトリはユーザー名で作成されますが、/ etc / passwdおよび/ etc / shadowのエントリの最初の要素を変更することにより、ホームディレクトリを変更せずにユーザー名を変更できます。間違えた場合に備えて、(ユーザーログインからのsudoだけでなく)rootとしてログインできることを確認してください。
Anthonの

ホームディレクトリの名前を変更したい場合はどうすればよいですか?そして、sayinの最初の要素はどういう意味ですか?
CorpusCallosum

回答:


28

本当に正しい方法?ユーザー「peter」を「paul」に変更するとします。

groupadd paul
usermod -d /home/paul -m -g paul -l paul peter

これにより、名前、グループ、ホームディレクトリ、およびそのディレクトリの所有権とグループが、すべてのファイルとともに新しいディレクトリに変更されます。最初は「paul」として作成されたユーザーと区別できないユーザーになります。

もう1つの方法は、/etc/passwd/etc/shadowファイル内のピーターのエントリの最初のフィールドを編集することです。次に、「peter」のすべての出現を「paul」に変更し/etc/groupます。次に、ホームディレクトリの名前をから/home/peterに変更し/home/paulます。そしてchown -R paul /home/peter、ディレクトリの所有権とグループシップ、およびその下にあるすべてのファイルとディレクトリを取得して、新しいものを取得します。


3
数値的にiノードを格納所有者&グループ-あなたは、/ etc / passwdの{、影、グループ}を編集した場合のchownの必要ありません
グラハム・ニコルズ

5

ユーザーの名前を変更しないでください。これは一般に、ユーザーの名前がユーザーのホームディレクトリの形式で構成ファイルで静的に参照される場合に問題が発生します/home/<username>。これらは一般的な方法で記述されることはほとんどないため、通常は新しいユーザー名を作成し、ユーザーのファイルとデータを新しいアカウントに移行することをお勧めします。


1
コメントありがとう。新しいユーザーを作成し、古いユーザーに関するuserid /グループとホームディレクトリを変更しました。すべてがうまく機能しているようです。この方法も問題を引き起こすと思いますか?
コーパスカロサム

3

usermodコマンドを試してください。

exec sudo su
usermod --login newname oldname

「あなたがやろうとしていたことは何でも」を行うだけです。sudo suを実行すると、コマンドが正しく記録されません。
キーストゥーンブリー


3

usermodを使用して、ユーザー名ホームディレクトリを変更します。ユーザーpeterをpaulに変更します。

usermod -l paul peter
grep paul /etc/passwd /etc/shadow       # check

ホームディレクトリを変更し、そこにすべてを移動します(必要に応じて作成)

usermod -m -d /home/paul paul
grep paul /etc/passwd               # check

グループ名を変更しますが、最初に別のグループ(GID 1001など)を作成する必要があるため、usermodを使用しないでください。$ HOMEディレクトリ内のすべてのGIDを更新しますが、古いグループの所有権を持つファイルとディレクトリ。代わりに、グループ名を手動で変更するだけです。

nano /etc/group

そして変化

peter:x:1000:

paul:x:1000:

UIDの代わりにユーザー名を使用するcron、at、およびその他のサービスで使用されるファイル名を変更する必要があります。つかいます

find /var -name "*peter*"

これらのファイルを見つけます。

また、メール処理アプリケーションなどの一部のサービスで使用される構成ファイルを変更する必要があります。

最後に、「/ home / peter /」を使用するスクリプトを編集する必要があります。「/ home / peter /」の出現箇所を「$ HOME」に変更します。

ユーザーのIDを変更するのはたいした作業ではなく、徹底する必要があります。


これは私が使用しているアプローチと同じであるため(GIDの保存に関して同じ理由で)ところで、あなたは、実際には2つの組み合わせることができますusermod1にコマンドを、あなたも編集に覚えておく必要がある/etc/gshadowとともに/etc/group、:GNUで変更することができ、それらの2は、sedのsudo sed -i 's/oldname/newname/g' /etc/{group,gshadow}にまだ良いですか- sudo groupmod -n newname oldname。ユーザーのcrontab(もしあれば)の名前を手動で変更しなければならないなど、他の落とし穴を強調するためによくできました。
アンソニーG-モニカの正義

これに対する簡単な補遺...これを行っている間はログインできません。sudoersグループに属する新しい一時ユーザーを作成し、それを使用してログインし、変更を行い、新しい一時アカウントからログアウトし、名前を変更したユーザーにログインして、一時アカウントを削除します。
ヤヌス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.