Ketika mencoba mengubah nama pengguna, terminal memberi tahu saya bahwa pengguna sedang menggunakan proses

16

Namun saya mencoba mengubah nama pengguna saya, sesuai saran di sini setelah menjalankan perintah berikut:

CurrentName@HostName ~ $ sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName

Terminal merespons dengan:

CurrentName@HostName ~ $ usermod: user CurrentName is currently used by process 2491

Dan nama pengguna tetap sama. Adakah yang tahu bagaimana saya bisa memperbaiki ini dan mengubah nama pengguna saya?

Paradoks
sumber

Jawaban:

8

Mengutip man usermod:

CAVEATS
   You must make certain that the named user is not executing any 
   processes when this command is being executed
   if the user's numerical user ID, the user's name, or the user's home 
   directory is being changed.  usermod
   checks this on Linux, but only check if the user is logged in 
   according to utmp on other architectures.

Jadi, Anda perlu memastikan pengguna yang Anda beri nama baru tidak masuk.

Juga, saya perhatikan Anda tidak menjalankan ini sebagai root. Baik jalankan sebagai root, atau jalankan dengan "sudo usermod".

seumasmac
sumber
3
jika Anda tidak dapat mematikan proses tanpa memulai kembali, gabungkan perintah misalnyakill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Richard Frank
2
Program ini usermodtampaknya rusak oleh desain. Jika manajemen pengguna dilakukan di server LDAP, mengubah atribut pengguna selalu dimungkinkan dan tidak bergantung pada sistem yang sedang berjalan. Saya menggunakan Ansible yang menggunakan usermoddan sistem lubang tidak dapat diandalkan, karena perubahan diblokir oleh pengguna yang masuk.
ceving
1

Saya pikir Anda harus menjalankan perintah dengan pengguna lain. Masuk dengan root, atau pengguna lain, dan coba lagi. Jika Anda berada di jendela x dengan pengguna yang ingin Anda ubah, terdengar logis bahwa perintah gagal.

krivos
sumber
1

Ini terutama masalah dengan Ubutu di mana Anda tidak memiliki akun root untuk masuk dari tempat pertama. Jadi ini menciptakan kontradiksi: Saya adalah pengguna dalam grup sudoer. Saya tidak dapat mengubah uid saya sendiri.

Tidak yakin ini solusi terbaik. Saya pertama kali membuat foo akun palsu, tambahkan ini ke daftar sudo. Kemudian saya login ke akun foo dan menjalankan usermod -g MYOWNGID mylogin

Kemin Zhou
sumber
0

Saya memiliki masalah yang sama menggunakan usermod, itu diperbaiki menggunakan parameter -m, yang memindahkan konten direktori home ke lokalisasi baru. Gunakan opsi ini dalam kombinasi dengan -d (ubah direktori utama pengguna, di mana ada pengguna).

Saya sarankan untuk melihat perintah pria usermod

Guillermo Porras Arias
sumber
0

Coba langkah-langkah ini:

  1. Setel kata sandi untuk pengguna root:

sudo passwd root

  1. reboot ubuntu
  2. Masuk sebagai "root" setelah boot -> Ini akan memungkinkan ubuntu untuk tidak menghasilkan proses apa pun untuk pengguna saat ini.
  3. Ubah nama pengguna

    usermod -l newuser -d / home / newuser -m olduser

  4. Verifikasi nama pengguna telah berubah dengan memeriksa nama folder dengan nama pengguna baru di / direktori home
Rajib Hasan
sumber
-1

Anda tidak boleh mengubah nama pengguna pengguna yang login. Sebagai gantinya, Anda harus mengakhiri semua proses pengguna, memutuskan koneksi, masuk sebagai pengguna yang berbeda dan kemudian mengganti nama.

Jika sepertinya terlalu banyak pekerjaan, Anda dapat melakukan hotwire perubahan: https://medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110

Ini berfungsi seperti ini:

# your new username
newuser=dave

# root-run these all at once
sudo su -c "\
  sed -i s/$USER/$newuser/g /etc/group \
  && sed -i s/$USER/$newuser/g /etc/shadow \
  && sed -i s/$USER/$newuser/g /etc/passwd \
  && mv /home/$USER/ /home/$newuser"

# exit & reconnect under new username
dayvee.cz
sumber