Bagaimana saya bisa mengganti nama pengguna unix?

89

Saya memiliki pengguna yang bernama hedgehogdan saya ingin dia disebutkan namanya squirrel, tetapi saya tidak ingin mengubah ID pengguna numeriknya.
Bagaimana saya bisa mencapai ini?

Szymon Jeż
sumber
2
Mungkin karena mengganti nama pengguna bukanlah tugas yang harus dilakukan SA profesional. (Untuk pertanyaan downvotes.)
HopelessN00b
2
@Jeznet saya downvoted karena ini bukan hanya tugas yang sangat sederhana yang dapat diselesaikan dengan mengetikkan judul Anda ke google, Anda juga menjawab pertanyaan Anda sendiri segera setelah Anda menanyakannya. Tampak membuang-buang waktu.
boburob
10
@boburob "Anda juga menjawab pertanyaan Anda sendiri segera setelah Anda menanyakannya. Sepertinya buang-buang waktu", silakan lihat: blog.stackoverflow.com/2011/07/...
Szymon Jeż
10
@obobob Apakah Anda melihat kotak centang yang mengatakan Answer your own question – share your knowledge, Q&A-stylekapan Anda mengajukan pertanyaan? Itu ada di sana karena suatu alasan, dan tidak akan ada di sana jika mereka tidak ingin itu digunakan. (Idealnya pada pertanyaan yang lebih baik, tetapi terlepas dari itu, menurunkan seseorang untuk menjawab pertanyaan mereka sendiri adalah bentuk yang buruk.)
HopelessN00b
1
Ya, saya juga telah menjawab pertanyaan saya sebelumnya, tetapi bagi saya, mengajukan pertanyaan dan menempelkan hasil google pada menit yang sama sedikit membuang-buang waktu
boburob

Jawaban:

133

Di Linux, usermodperintah mengubah nama pengguna. Ini memodifikasi file akun sistem untuk mencerminkan perubahan yang ditentukan pada baris perintah.

Untuk mengubah hanya nama pengguna:

usermod --login new_username old_username

Untuk mengubah nama pengguna dan nama direktori rumah:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Anda mungkin juga ingin mengubah nama grup yang dikaitkan dengan pengguna:

groupmod --new-name new_username old_username
Szymon Jeż
sumber
12
Anda dapat menggunakan usermod untuk melakukan semuanya usermod -l new-user-name -m -d / new / home / dir old-user-name
user9517
5
Perhatikan juga, bahwa grup tidak diubah. Jika Anda juga perlu mengganti nama old-user-namegrup, gunakan # groupmod -n new-user-name old-user-name.
alxs
1
Untuk sistem yang menggunakan autofs, Anda juga harus memperbarui /etc/auto.home. Saya hanya mengalami ini.
Steven C. Howell
2
Mungkin harus menjalankan visudo lagi untuk memasukkan nama pengguna baru di daftar sudoers jika berlaku
Nagev
2
Anda juga harus mengganti nama file crontab yang berada di /var/spool/cron/crontabs/(jika Anda memiliki pekerjaan apa pun yang diinstal)
Daniel F
12

CATATAN: jangan coba ini jika direktori Anda dienkripsi! Jika ini adalah kasus Anda, Anda mungkin ingin memeriksa dulu: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

Cara langsung untuk melakukan ini adalah:

  1. Buat akun temp baru dengan hak sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Logout dari akun Anda saat ini dan kembali dengan akun temp.

  3. Ganti nama pengguna dan direktori Anda:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Ganti nama grup default nama pengguna Anda:

    sudo groupmod -n new-username old-username
    
  5. Logout dari akun temp dan masuk kembali ke akun Anda dengan nama pengguna baru.

  6. Hapus akun temp:

    sudo userdel -r temp
    

Jika tidak, Anda hanya (1) membuat pengguna baru dan (2) rsyncfolder rumah pengguna lama ke yang baru dan kemudian (3) chownitu.

mimoralea
sumber
Di CentOS saya juga perlu `passwd temp 'dan' usermod -aG wheel temp '.
Brian Z
4

Secara umum Anda dapat mengganti nama pengguna dengan mengubah nama pengguna mereka di file /etc/passwd(dan /etc/shadow, jika berlaku). Pada sebagian besar sistem unix, vipwperintah ini digunakan untuk mengedit file-file ini (dan pada banyak sistem menyertakan beberapa perlindungan untuk memastikan bahwa Anda tidak mengacaukan segalanya dengan buruk).
Lihat halaman manual untuk passwd(5), shadow(5), dan vipw(8)untuk informasi lebih lanjut.

Perhatikan bahwa metode di atas tidak mengubah nama hal-hal lain yang mungkin menggunakan nama pengguna asli (direktori home menjadi contoh utama, grup pribadi per pengguna (pada sistem yang menggunakannya) menjadi yang lain). Anda mungkin ingin membersihkan ini juga untuk konsistensi, dengan mengubah bidang yang sesuai dalam file passwd dan mengganti nama direktori.


Beberapa sistem operasi menyediakan cara khusus untuk mengubah nama pengguna. Misalnya banyak sistem Linux menyertakan usermod(8)perintah, dan pada AIX Anda dapat mengubah nama akun menggunakan SMIT (atau smittydi terminal) .
Perintah-perintah ini akan sering menangani item pembersihan seperti mengganti nama direktori home, jika Anda memintanya.

voretaq7
sumber