自分のユーザーIDを変更するにはどうすればよいですか?


49

私のシステムには1人のユーザーしかいません。ユーザーIDをデフォルトの1000から変更するにはどうすればよいですか?

一般的なデスクトップインストールでログインプロセスが中断しないようにするために必要な追加の手順がある場合は、それらを回答の一部として含める必要があります。


5
好奇心から、ユーザーIDを変更する理由は何ですか?
オリビエラロンド

14
NFSを介して他のシステムとデータを頻繁に交換する場合、またはUIDを保持するコピー方法のみを使用する場合は、システム間で同じユーザー名に同じUIDを使用すると役立ちます。
ジョアンピント

ジョアンは正解です。特に、Mac OS XのユーザーとUIDを照合して、共有ファイルシステムがオペレーティングシステム全体で意図したアクセス許可を保持できるようにしたいと考えています。
エンドリューク

1
Nethackの現在のバージョン(3.6.0)は、ファイル名に現在のuidを含むゲームを保存します。マシン間でセーブゲームを同期する場合は、uidを一致させる必要があります。(シンボリックリンクの使用は実用的ではありません)
ジョナサンハートリー

回答:


27

問題は、前述のように、ユーザーがセッションにログインしているときにユーザーのUIDを変更できないことです。続行するには、別のユーザーアカウントを使用する必要があります。

ただし、新しいユーザーアカウントを作成し、管理者に昇格させ、ログアウトし、新しい管理者アカウントにログインし、プライマリアカウントのUIDを変更し、ログアウトし、プライマリアカウントにログインしてから新しい管理者ユーザーを削除する必要はありませんUIDを変更するだけです。;)

リカバリモードで起動できます(コンピュータの起動時に表示されるオプション、またはBIOSメッセージの完了直後にShiftキーを押すオプションですESC。OEM-Ubuntuを実行しているDellマシンで使用します)。これにより、ルートセッションにログインします。通常のユーザーアカウントはなく、root ログインすると、UIDを変更できます。

リカバリモードはコマンドラインインターフェイスでのみ機能するため、ルートセッションにログインすると、次のことが必要になります。

  1. 使用BubbaJの命令が読み書きモードでルートファイルシステムを再マウントするにはmount -o remount,rw /

  2. Luis Alvaradoのコマンドを使用しますusermod -u NEW_UID your_username

  3. ddeimekeの指示に従って、ファイルのアクセス許可を更新します。
  4. 次に、コンピューターを再起動(reboot)して、通常モードで起動できるようにします。

1
Ubuntu 14.04では機能しません。usermod -u NEW_UID your_usernameおよびを実行した後find / -uid 1000 -exec chown -h 5000 '{}' \+、リブートすると、推測セッションのみのGUIログインになります。
ケイ14

たぶん、家の隠しファイルは適切に変更されていませんか?自宅で暗号化を使用していますか?
数学14年

これらの構成ファイルで提供されているポリシー以外でuidを変更した場合は/etc/login.defs/etc/adduser.confファイルとファイルを確認することをお勧めします。ポリシーの制限外のユーザーはログインループに表示されませんが、ポリシーを変更できます。この参照してください答えは
Kマーキー

usermod: user user_name is currently used by process 1118 @アレクサンドルP.
alper

54

あなたにはそれを変更することができ/etc/passwd/etc/groupおよび/etc/shadowまたはあなたは、上記の好適possibiltiesのいずれかを使用します。しかし、最も重要なのは、ユーザーに属するすべてのファイルの所有権を変更する必要があることです。

たとえば、古いユーザーIDが1000で、新しいユーザーIDが5000の場合:

find / -uid 1000 -exec chown -h 5000 {} +

グループIDについても同じです(変更した場合も同様)。

find / -gid 1000 -exec chgrp -h 5000 {} +

8
これは本当に重要なポイントです。これを行わずに他の回答で示されたテクニックに従うと、多くのことが壊れます。
poolie

4
私はちょうど1が良く使用する必要があります学んだsudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+(で特に1が搭載されたデータが含まれるであろう、/mntおそらく望ましくないとする、)とファイルあなたをよりよくない中で混乱/procして/devこの投稿を
セバスチャン

2
これは良い考えではありません。/ homeが異なるファイルシステム上にある場合、自分のファイルの所有権を変更することさえしません。
-ddeimeke

この回答では、/ etcのファイルを編集する前に、グループとuidのアクセス許可を変更する必要がありますか?
-MrDaniel

最初に何をするかは関係ありません。
-ddeimeke

25

@AlexandrePに基づく完全なソリューション。および@ddeimeke +公式ドキュメント。再起動は必要ありません。

Debian / Ubuntuのポリシーでは、jimユーザーIDを持つユーザーがいる場合、グループIDを持つグループ1001もありjimます1001。このソリューションは、これらのグループIDも更新します。

  1. ルートアカウントを有効にします

    sudo passwd root
    
  2. ユーザーがログインしている場合は、ログアウトします(仮想端末でも)
  3. VT1に移動します。 Ctrl-Alt-F1
  4. rootとしてログインし、指定されたユーザー名と古い/新しいUIDでこれを実行します。

    # put the information we need in variables
    username=...
    old_uid=`id -u $username`  # looks up current (old) uid
    new_uid=...
    
    # update the user ID and group ID for $username
    usermod -u $new_uid $username
    groupmod -g $new_uid $username
    
    # update the file ownerships
    # NB: you cannot combine the next two chowns, or files where 
    # only the uid xor the gid matches won't be updated  
    chown -Rhc --from=$old_uid $new_uid /    # change the user IDs
    chown -Rhc --from=:$old_uid :$new_uid /  # change the group IDs
    
  5. ログアウト
  6. としてログイン $username
  7. ルートアカウントを無効にします

    sudo passwd -dl root
    

ルートアカウントを有効にする必要はありません。回復モードを使用してください。
エンドリューク

2
これは再起動よりも速いはずです。だから私はそれを投稿しました。
l0b0

3
Ubuntu 14.04および14.10では、/ mediaの拡張ACLパーミッションを修正する必要もあります。そうしないと、古いUIDが残るために(Nautilus / Nemoで)自動マウントが壊れます。 sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com

これは私にとって魅力的でした。ただし、uidを変更するだけで済みました。
chmike

ルートアカウントを有効にすると、回復モードを使用するよりも簡単に聞こえます(怖くない)。
ジョナサンハートリー

7

コンソールに移動して次のように入力usermod --helpすると、次のパラメーターのいずれかが表示されます。

-u、-uid UIDユーザーアカウントの新しいUID

したがって、ユーザーcyrexのUIDを変更する場合は、次のようにします。

usermod -u 1000 cyrex

これにより、cyrexのuidが以前の値から1000に変更されます

あなたが視覚的にそれをしたい場合は、これをしてください:

に行く

システム->管理->ユーザーとグループ

リストから自分を選択し、[詳細設定]をクリックします

UIDはそのウィンドウの最後にあります。


1
提案されたグラフィカルな方法を試しましたが、「ユーザーがログインしている間はユーザーIDを変更できません」というメッセージが表示されます。この方法をテストしましたか?
エンドリューク

2
ほら、それは本当です。別のアカウントで試しました。ルートまたは他の管理者アカウントでログインする必要があります。その後、グラフィカルな方法で行います。そのために残念。
ルイスアルバラード

2
  • Goto System >> Administration >> Users and Groups

代替テキスト

  • クリックして詳細設定と後藤アドバンスドあなたのユーザーIDが表示されます底にあっタブを。
  • 変更して[OK]をクリックします。
    代替テキスト

1
「ユーザーがログインしている間はユーザーIDを変更できません」というスクリーンショットの警告を無視する必要がありますか?
エンドリューク

この警告を取り除くには、別の別のユーザーアカウントから変更する必要があります。
karthick87

7
私の質問は、「自分のユーザーID を変更するにはどうすればよいですか?」です。この値を編集するためだけに新しいユーザーを作成するという回答を意図している場合は、そのことを示すために回答を編集する必要があります。
エンドリューク

0

KDEの場合:[ユーザーの詳細設定の変更]メニュー:

別のユーザーからの変更は、デフォルトのユーザーである1000では機能しません。

あなたは手動でそれをしなければなりません-私の経験


0

最初に、少なくともしばらくの間、rootとしてログインする必要がありますので、これを可能にします。

sudo passwd root

再起動し、ctrl + alt + f1でコンソールに切り替え、rootとしてログインし、次の操作を行います(ホームディレクトリの所有権は自動的に処理されます)。

groupmod --gid NEWGID username
usermod  --uid NEWUID username 

あなたのホームディレクトリ以外の場所にあるファイルについては、これに:

sudo chown -R username:username /path/to/files

必要に応じて、rootのパスワードを削除してロックします。(私はそれを保持する傾向があります):

passwd -dl root

0

私は続いddeimekeの以下の変更を指示します:

  1. ログアウトせず、代わりに sudo su
  2. 触れなかった /etc/shadow

私はそれが他の回答で言及されているのを見ましたが、あなたは回復のために起動するか、またはとしてログインする必要がありますroot。私はUbuntu 14を新しくインストールしたので、としてログインしなくても動作するかどうかをテストしたいと思いましたroot。また、SSHを介してEC2インスタンスでこれを行っていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.