Apakah mungkin untuk mengganti nama akun pengguna Unix?

48

Saya menginstal Ubuntu pada komputer yang sekarang digunakan oleh orang lain. Saya mengganti nama akun dengan namanya, tetapi hanya mengubah nama lengkap, bukan nama pengguna, yang masih ditampilkan di kanan atas (di fast-user-switch-applet). Apakah ada perintah untuk mengganti nama akun pengguna Unix?

Saya telah memikirkan untuk membuat akun pengguna baru dengan nama baru, dan kemudian menyalin semua yang ada di rumah "lama" ke rumah akun baru. Apakah itu cukup? Tapi kemudian saya pikir file akan memiliki pemilik izin akun lama? Jadi, apa yang harus saya lakukan chown -R newuser ~?

Apakah ada cara yang lebih sederhana / direkomendasikan untuk melakukan ini?

Yann Dìnendal
sumber

Jawaban:

52

Mencoba

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

The --move-homepilihan bergerak isi direktori rumah tua ke yang baru diberikan oleh --homepilihan yang dibuat jika tidak sudah ada.

Jika Anda ingin grup pengguna utama untuk mencocokkan new-login-name, tambahkan --gid <new-login-name>ke perintah di atas, tetapi grup tersebut harus sudah ada sebelumnya.

Lihat halaman manual untuk info lebih lanjut:

man usermod
gvkv
sumber
Terima kasih! Saya tidak tahu tentang perintah ini. :) Namun, itu adalah satu-satunya akun di komputer ini dan pria itu mengatakan ini: «Anda harus memastikan bahwa pengguna yang disebutkan tidak menjalankan proses apa pun ketika perintah ini dijalankan jika pengguna menggunakan ID pengguna numerik, nama pengguna, atau direktori home pengguna sedang diubah. usermod memeriksa ini di Linux, tetapi hanya memeriksa apakah pengguna masuk menurut utmp pada arsitektur lain. »Apakah Anda menyarankan menggunakan live cd untuk melakukan ini atau membuat akun temp yang akan saya hapus setelah selesai?
Yann Dìnendal
2
Karena Anda menggunakan Ubuntu dan tidak dapat masuk sebagai root, saya akan membuat akun lain bernama, katakanlah, admin yang Anda gunakan hanya untuk jenis tugas ini. Akun sementara akan berfungsi dengan baik tetapi Anda mungkin juga menyimpannya karena Anda bisa melakukan hal serupa di masa depan.
gvkv
3
Sadarilah bahwa usermod --homeharus mengandung path lengkap, misalnya /home/user.name- jika tidak, direktori home baru akan dibuat di dalam direktori kerja saat ini.
feeela
Itu tidak akan mengubah grup!
Hannes Schneidermayer
22

Meskipun mungkin untuk mengubah nama pengguna, dan usermodakan melakukan beberapa pekerjaan , ini sangat mungkin menyebabkan masalah. Berikut adalah daftar tempat di mana nama pengguna dapat muncul; Saya tidak mengklaim bahwa daftar ini lengkap.

  • Entri pengguna dalam /etc/passwddan file terkait (misalnya /etc/shadow, /etc/master.passwd).
  • Entri grup dalam /etc/group(dan /etc/gshadow).
  • Entri mungkin masuk /etc/sudoers.
  • Kotak surat sistem, biasanya /var/mail/$USERatau /var/spool/mail/$USER.
  • Crontab, biasanya /var/spool/cron/crontabs/$USER
  • Dalam atpekerjaan ( /var/spool/cron/atjobs/*)

Direktori rumah cenderung muncul di lebih banyak tempat. Banyak aplikasi menulis jalur absolut dalam berbagai file dot. Jika Anda memutuskan untuk mengganti nama direktori rumah juga (sementara tidak ada persyaratan bahwa alicedirektori home pengguna menjadi /home/alice, karena itu /home/bobakan membingungkan), Anda harus mengurusnya. Penggantian global akan berfungsi untuk sebagian besar aplikasi, tetapi saya tidak membuat janji. Jika memungkinkan, pertahankan nama direktori home yang lama sebagai tautan simbolik ke direktori yang diubah namanya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
4

Berikut ringkasan dari perintah yang saya gunakan pada sistem Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Dua perintah terakhir membuat tautan simbolik dari nama direktori home yang lama ( / home / OLD ) ke nama yang baru ( / home / NEW ).

Soul Singin
sumber
Untuk apa groupadd?
Yann Dìnendal
2
Alih-alih groupadd, saya kira mungkin lebih baik groupmod -n NEW OLDuntuk menghindari mengubah gid. Setidaknya di Ubuntu, sebuah grup dengan nama yang sama dengan pengguna diatur secara default, jadi orang juga ingin mengubah nama itu.
jamadagni
1

semua di atas adalah metode yang elegan, tetapi mengapa tidak hanya membuat pengguna baru, salin semua konten rumah dari yang pertama, dan hanya itu? tentu saja, jika ini tentang akun layanan (aplikasi), mungkin itu bukan praktik terbaik

AdrianP
sumber
3
Tampaknya ini mungkin lebih baik ditempatkan sebagai komentar daripada pos jawaban lengkap yang hampir tidak menambahkan apa-apa kecuali menyebutkan solusi yang sudah disebutkan dalam OP. Anda harus mempertimbangkan untuk menambahkan beberapa informasi mengapa Anda berpikir solusi ini lebih baik, atau bahkan dapat diterima.
HalosGhost