Bagaimana cara mengubah nama pengguna saya?

325

Beberapa waktu yang lalu ketika saya menginstal Ubuntu saya memilih nama pengguna yang agak bodoh untuk akun saya yang tidak ingin saya gunakan lagi.

Bagaimana cara mengubah ini (termasuk nama direktori rumah saya, dan nama di terminal) tanpa kehilangan pengaturan untuk aplikasi?
Bagaimana cara saya menjaga izin dan kunci saya untuk berbagai otentikasi (mis. Email, SSH, GPG, dan lainnya)?
Pengaturan apa yang mungkin hilang jika saya mengubah nama pengguna saya?

Takkat
sumber
Mengapa kita tidak bisa menavigasi ke /usr/share/applications/users.desktop >> Klik pada pengguna yang namanya harus diubah. >> Klik Ubah Nama Pengguna >> Ubah Nama >> Klik OK. Saya pikir, ini akan menjadi cara termudah untuk mengubah nama pengguna, bukan?
Anand

Jawaban:

325

Sistem operasi mirip Unix memisahkan nama pengguna dari identitas pengguna, sehingga Anda dapat dengan aman mengubah nama tanpa memengaruhi ID. Semua izin, file, dll terikat pada identitas Anda (uid), bukan nama pengguna Anda.

Untuk mengelola setiap aspek dari basis data pengguna, Anda menggunakan usermodalat ini.

Untuk mengubah nama pengguna (mungkin yang terbaik adalah melakukannya tanpa login):

sudo usermod -l newUsername oldUsername

Namun ini, tidak mengganti nama folder rumah.

Untuk mengubah folder-rumah, gunakan

sudo usermod -d /home/newHomeDir -m newUsername

setelah Anda mengubah nama pengguna.

Misalnya, Anda bisa logout, drop ke konsol ( Ctrl+ Alt+ F1), dan sudo su -menjadi akar sejati (sebagai lawan sudo -s, di mana $ HOME masih / home / namaAnda.) Mungkin Anda juga harus membunuh beberapa proses masih berjalan dari pengguna ini pertama. Untuk melakukannya, masukkan ps -u username, cari PID yang cocok dan bunuh mereka kill PID-number.

Pembaruan: seperti yang telah disebutkan, beberapa file dapat merujuk ke direktori home lama Anda. Anda dapat menyimpan symlink untuk kompatibilitas ke belakang, misalnya ln -s /home/newname /home/oldnameatau Anda dapat mengubah konten file dengan sed -i.bak 's/*oldname*/*newname*/g' *list of files*Ini menciptakan cadangan untuk setiap file dengan ekstensi .bak.

Beberapa informasi tambahan untuk pengguna yang tidak begitu berpengalaman seperti saya:
Karena saya hanya memiliki SATU akun pengguna (administrator), itu tidak akan membiarkan saya mengubah nama pengguna ("Anda sudah masuk" adalah tanggapan di TTY1 ( Ctrl+ Alt+ F1). Untuk mendapatkan sekitar ini:

  1. Login dengan kredensial lama Anda dan tambahkan pengguna baru, misalnya "sementara" di TTY1:

    sudo adduser temporary
    

    atur kata sandi.

  2. Izinkan pengguna sementara menjalankan sudo dengan menambahkan pengguna ke grup sudo:

    sudo adduser temporary sudo
    
  3. Logout dengan perintah exit.
  4. Kembali ke tty1: Masuk dengan akun pengguna dan kata sandi 'sementara'. Ubah nama pengguna dan folder Anda seperti yang disebutkan di atas. exit(sampai Anda mendapatkan prompt login)
  5. Kembali ke TTY7 ( Ctrl+ Alt+ F7) untuk masuk pada layar desktop GUI / normal dan lihat apakah ini berfungsi.
  6. Hapus pengguna dan folder sementara:

    sudo deluser temporary
    sudo rm -r /home/temporary
    
Egil
sumber
11
Sayangnya ini tidak benar untuk file konfigurasi berbeda di bawah $ HOME, coba jalankan sesuatu seperti grep -IRFl /home/username ~dan Anda akan melihat berapa banyak referensi ke direktori home Anda yang disimpan di sana.
atur
1
Merupakan perbaikan sederhana - Hanya harus menggunakan editor Akun Pengguna dalam kesatuan, diikuti dengan restart.
Steve Koch
6
Bagi mereka yang memiliki folder rumah terenkripsi, Anda harus mengedit /home/.ecryptfs/oldusername/.ecryptfs/Private.mntuntuk menunjuk ke folder rumah baru Anda, jika tidak, Anda tidak akan dapat masuk melalui Unity.
raphael
2
sudo usermod -d /home/edge -m edgehasil: usermod: Directory /home/empedokles could not be renamed in /home/edgeyaitu langkah 4 tidak akan berhasil.
empedokles
2
@ JTC tidak pernah mengedit sudoersdengan polos nano. Selalu gunakan visudo.
Terbang styrofoam
108

Untuk menyatukan semuanya:

  1. Di layar mulai tekan Ctrl+ Alt+ F1.
  2. Masuk menggunakan nama pengguna dan kata sandi Anda.
  3. Tetapkan kata sandi untuk akun "root".

    sudo passwd root
    
  4. Keluar.

    exit
    
  5. Masuk menggunakan akun "root" dan kata sandi yang telah Anda tetapkan sebelumnya.

  6. Ubah nama pengguna dan folder beranda menjadi nama baru yang Anda inginkan.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. Ubah nama grup menjadi nama baru yang Anda inginkan.

    groupmod -n <newgroup> <oldgroup>
    
  8. Kunci akun "root".

    passwd -l root
    
  9. Jika Anda menggunakan ecryptfs (direktori home terenkripsi). Pasang direktori terenkripsi Anda menggunakan ecryptfs-recover-privatedan mengedit <mountpoint>/.ecryptfs/Private.mntuntuk mencerminkan direktori home baru Anda.

  10. Keluar.

    exit
    
  11. Tekan Ctrl+ Alt+ F7.

Dan sekarang Anda dapat masuk menggunakan nama pengguna baru Anda.

Valentin Uveges
sumber
6
Jika setelah usermod -l Anda mendapatkan user <oldname> is currently used by process <processno>, Anda dapat menemukan proses itu (mungkin daemon, atau tmux / layar) menggunakan ps aux | grep <processno>. Anda mungkin ingin menghentikan proses itu dengan anggun, jika tidak, Anda bisa kill <processno>.
RedPixel
1
Terima kasih telah mengumpulkan komentar ini. Itu sangat berguna. Dua hal yang mungkin disebutkan. Setelah langkah 4 saya reboot jadi saya tidak akan mendapatkan pesan kesalahan pada langkah 6. Juga, setelah proses ini selesai, file / etc / passwd akan memiliki dan ID komentar yang cocok dengan nama pengguna yang lama. Ini akan menyebabkan layar login menampilkan nama login yang lama. Saya tidak dapat menemukan cara yang layak untuk memperbaikinya dari baris perintah, tetapi saya memperbaikinya dengan masuk ke akun pengguna, pergi ke pengaturan akun dan mengubah "Nama Login" menjadi nama pengguna. Ini memperbarui file / etc / passwd dan memperbaiki masalahnya.
Jibbers
1
Ini adalah cara paling mudah dan bukti-bodoh untuk melakukannya. Lebih baik reboot setelah langkah 4 seperti yang disarankan @Jibbers.
Yerke
Saya akan menyebutkan bahwa "bookmark di jendela browser File" sekarang menunjuk ke folder lama, jadi saya harus menghapus bookmark itu.
ollydbg23
Tidak akan bekerja Jika Anda menekan Ctrl + Alt + F1 di awal itu mencoba masuk ke pengguna yang baru dibuat yang tidak akan diizinkan.
empedokles
27

Mulai ulang dalam mode pemulihan dan buka shell prompt root ("Drop to root shell prompt")

Pertama remount root

mount -o remount,rw /

Untuk mengubah nama pengguna dan nama folder rumah,

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

Untuk nama grup,

groupmod -n <newgroup> <oldgroup>
karthick87
sumber
1
ketika saya menggunakan usermod -l <newname> -d /home/<newname> -m <oldname>ini memberi saya kesalahan usermod: user oldusername is currently used by process 3170dan jika saya membunuh proses masih memberi saya kesalahan yang sama. menggunakan ubuntu 13.10
Waqas
4
JANGAN LAKUKAN JIKA DIRECTORY RUMAH ANDA DIKENALKAN !!!! Saya mengikuti prosedur ini dan mengirim saya untuk perjalanan liar 2 jam ... Satu-satunya cara untuk memulihkan adalah dengan melakukan prosedur ini lagi dan memasukkan nama asli (tidak disukai) kembali. Masalah yang Anda miliki adalah "Tidak dapat chdir ke mount point "
Mike
Mengapa kita tidak bisa menavigasi ke /usr/share/applications/users.desktop >> Klik pada pengguna yang namanya harus diubah. >> Klik Ubah Nama Pengguna >> Ubah Nama >> Klik OK. Saya pikir, ini akan menjadi cara termudah untuk mengubah nama pengguna, bukan?
Anand
9

Di Ubuntu 13.10, 14.04, 16.04:

  1. Klik ikon "Pengaturan Sistem".
  2. Klik pada "Akun Pengguna".
  3. Akun administrator Anda harus ditampilkan.
  4. Klik pada tombol "Buka Kunci".
  5. Masukkan kata sandi pengguna Anda seperti yang diminta untuk memungkinkan perubahan pada akun Anda.
  6. Setelah dibuka, Anda dapat mengklik nama pengguna lama yang ingin Anda ubah dan ketik nama pengguna baru untuk menggantinya.
  7. Saat Anda mengetik nama baru, klik tombol "Kunci" untuk membuat perubahan itu permanen.
  8. Mulai ulang Ubuntu.
Chicodoodoo
sumber
3
Ini tidak mengubah nama pengguna untuk saya, hanya nama. Nama pengguna lama masih muncul di terminal, dan sebagai direktori home dan grup (bahkan setelah reboot).
DougC
3

Saat menerima, usermod: can't change /etc/passwordjalankan saja perintah berikut:

Dalam menjalankan konsol pemulihan root:

mount -o remount,rw /

Kemudian jalankan kembali:

usermod -l <newname> -d /home/<newname> -m <oldname>
pengguna1511576
sumber
Mengapa kita tidak bisa menavigasi ke /usr/share/applications/users.desktop >> Klik pada pengguna yang namanya harus diubah. >> Klik Ubah Nama Pengguna >> Ubah Nama >> Klik OK. Saya pikir, ini akan menjadi cara termudah untuk mengubah nama pengguna, bukan?
Anand
1

Jawaban yang tercantum di sini oleh @ karthick87 berfungsi dengan baik tetapi di sini adalah apa yang akan saya lakukan hanya untuk aman dan menghindari semua gangguan:

  1. Buat akun / pengguna yang terpisah dan pastikan akun ini / kemampuan root atau login sebagai pengguna dengan root.
  2. Logout dengan akun saat ini dan kemudian login dengan akun yang disebutkan dalam langkah 1.
  3. Bunuh semua proses dari pengguna sebelumnya.
  4. Sekarang ikuti langkah-langkah yang disebutkan oleh @ karthick87 dan ubah nama pengguna dan juga pemilik direktori home.
  5. Kemudian ikuti jawaban @Sriraj Hebbar untuk mengubah nama grup.
  6. logout dengan pengguna cadangan dan login dengan pengguna Anda. Jika Anda membuat pengguna tambahan hapus itu.
sandeep srivastav vaddiparthy
sumber
0

ketika Anda melakukannya, usermod -l <newname> -d /home/<newname> -m <oldname>Anda akan mendapatkan useradd: can't change /etc/passwdpesan kesalahan untuk menghindari ini tambahkan saja sudo --perintah di atas seperti

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

dan

sudo --  groupmod -n <newgroup> <oldgroup>
Sriraj Hebbar
sumber
-3

Karena tidak semua PC memiliki usermodaplikasi, Anda dapat melakukannya secara manual. Pada root terbuka /etc/passwduntuk mengedit:

sudo vim /etc/passwd

dan ubah nama pengguna di awal baris:

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

untuk:

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

kemudian jika Anda bekerja dengan login root saja, dan jika Anda telah login ke user, logoff, dan login kembali.

Малъ Скрылевъ
sumber
Saya mencoba cara ini (sebelum saya menemukan usermodperintah) dan kata sandi pengguna tidak lagi diterima.
Ben Voigt
@BenVoigt tidak semua PC memiliki usermod
Малъ Скрылевъ
3
Ini Ubuntu! Jika tidak usermodmenginstal Anda rusak karena itu adalah bagian dari passwdpaket, yang diperlukan .
Auspex