web-dev-qa-db-ja.com

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

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

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

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

48
Yann Dìnendal

試す

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
52
gvkv

ユーザーの名前を変更することは可能ですが、 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にすることは混乱を招きます)、次の操作を行う必要があります。それらの世話をします。グローバルな置き換えはほとんどのアプリケーションで機能しますが、約束はしません。可能であれば、古いホームディレクトリ名を、名前を変更したディレクトリへのシンボリックリンクとして保持します。

以下は、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)。

4
Soul Singin

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

1
AdrianP