Bagaimana saya bisa mengubah ID pengguna saya sendiri?


49

Hanya ada satu pengguna di sistem saya. Bagaimana saya bisa mengubah ID penggunanya dari default 1000?

Jika ada langkah-langkah tambahan yang diperlukan untuk menghindari proses login pada instalasi desktop biasa, itu harus dimasukkan sebagai bagian dari jawaban.


5
Karena penasaran, apa alasan untuk mengubah ID pengguna?
Olivier Lalonde

14
Jika Anda biasanya bertukar data dengan sistem lain melalui NFS, atau hanya beberapa metode salin yang mempertahankan UID, itu akan membantu jika Anda menggunakan UID yang sama untuk nama pengguna yang sama di seluruh sistem.
João Pinto

João benar. Secara khusus, saya berharap untuk mencocokkan UID dengan pengguna di Mac OS X sehingga sistem file bersama membawa izin yang dimaksudkan di seluruh sistem operasi.
ændrük

1
Versi Nethack (3.6.0) saat ini menyimpan game termasuk cairan saat ini dalam nama file. Jika Anda ingin menyinkronkan save game antar mesin, Anda harus mencocokkan uids. (menggunakan symlink tidak praktis)
Jonathan Hartley

Jawaban:


27

Masalahnya adalah, seperti yang Anda sebutkan, Anda tidak dapat mengubah UID pengguna Anda saat login dalam suatu sesi. Anda harus menggunakan akun pengguna lain untuk melanjutkan.

Tetapi Anda tidak harus membuat akun pengguna baru, mempromosikannya ke admin, logout, masuk ke akun admin baru, ubah UID akun primer Anda, logout, masuk ke akun utama Anda kemudian hapus pengguna admin baru cukup ganti UID Anda. ;)

Anda dapat mem-boot ke mode pemulihan (ini merupakan opsi yang muncul saat Anda menyalakan komputer, atau menahan shift segera setelah pesan BIOS selesai; Gunakan ESCpada mesin Dell yang menjalankan OEM-Ubuntu). Ini akan mencatat Anda dalam sesi root. Sedang login root dan bukan akun pengguna Anda yang biasa , Anda akan dapat mengubah UID Anda.

Karena mode pemulihan hanya berfungsi di antarmuka baris perintah, setelah masuk ke sesi root, Anda harus:

  1. Gunakan petunjuk BubbaJ untuk remount sistem file root dalam modus baca-tulis : mount -o remount,rw /.

  2. Gunakan perintah Luis Alvarado ini : usermod -u NEW_UID your_username.

  3. Ikuti instruksi ddeimeke untuk memperbarui izin file.
  4. Kemudian, reboot komputer Anda ( reboot), sehingga Anda bisa boot dalam mode normal.

1
Tidak bekerja untuk Ubuntu 14.04. Setelah melakukan usermod -u NEW_UID your_usernamedan find / -uid 1000 -exec chown -h 5000 '{}' \+, reboot mengarah ke login GUI hanya sesi-tebak.
Kay

Mungkin, file tersembunyi di rumah tidak diubah dengan benar? Apakah Anda menggunakan enkripsi untuk rumah Anda?
matematika

Anda mungkin ingin memeriksa /etc/login.defsdan /etc/adduser.conffile - file Anda jika Anda telah mengubah uid Anda di luar kebijakan yang disediakan dalam file-file konfigurasi tersebut. Pengguna di luar batas kebijakan tidak ditampilkan di loop masuk, tetapi Anda dapat mengubah kebijakan. Lihat jawaban
K Markey

usermod: user user_name is currently used by process 1118 @Alexandre P.
alper

54

Anda dapat mengubahnya /etc/passwd, /etc/groupdan /etc/shadowatau Anda menggunakan salah satu kemungkinan pilihan di atas. Tapi - yang paling penting - Anda harus mengubah kepemilikan semua file milik pengguna.

Misalnya, jika id pengguna lama adalah 1000 dan yang baru adalah 5000:

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

Dan hal yang sama untuk id grup (jika Anda mengubahnya juga).

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

8
Ini adalah poin yang sangat penting. Banyak hal akan pecah jika Anda mengikuti teknik yang diberikan dalam jawaban lain tanpa juga melakukan ini.
poolie

4
Saya baru belajar satu harus lebih baik digunakan sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+, kalau tidak orang akan memasukkan data yang di-mount (di /mnt, yang mungkin tidak diinginkan) dan file Anda sebaiknya tidak dipusingkan dengan /procdan /dev. Lihat posting ini
Sebastian

2
Ini bukan ide yang bagus. Karena case / home berada pada sistem file yang berbeda, Anda bahkan tidak akan mengubah kepemilikan file Anda sendiri.
ddeimeke

Pada jawaban ini Anda harus mengubah izin grup dan izin, sebelum mengedit file di / etc, kan?
MrDaniel

Tidak masalah, apa yang Anda lakukan pertama kali.
ddeimeke

25

Solusi lengkap berdasarkan @AlexandreP. dan dokumentasi resmi @ddeimeke +. Tidak perlu reboot.

Kebijakan Debian / Ubuntu adalah bahwa jika ada pengguna jimdengan ID pengguna 1001, ada juga grup jimdengan ID grup 1001. Solusi ini juga memperbarui ID grup tersebut.

  1. Aktifkan akun root :

    sudo passwd root
    
  2. Jika pengguna masuk, maka keluar (juga pada terminal virtual)
  3. Pergi ke VT1: Ctrl-Alt-F1
  4. Masuk sebagai root dan jalankan ini dengan nama pengguna dan UID lama / baru yang disediakan:

    # 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. Keluar
  6. Masuk sebagai $username
  7. Nonaktifkan akun root :

    sudo passwd -dl root
    

Mengaktifkan akun root seharusnya tidak perlu; cukup gunakan Mode Pemulihan .
ændrük

2
Ini harus lebih cepat daripada me-reboot, itulah sebabnya saya mempostingnya.
l0b0

3
Di Ubuntu 14.04 dan 14.10 Anda juga perlu memperbaiki izin ACL yang diperluas di / media jika tidak, penghitungan otomatis (dalam Nautilus / Nemo) rusak saat UID lama tetap ada. sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com

Ini bekerja seperti pesona bagi saya. Namun, hanya harus mengubah uid.
chmike

mengaktifkan akun root terdengar lebih mudah (dan kurang menakutkan) daripada menggunakan Mode Pemulihan.
Jonathan Hartley

7

Jika Anda masuk ke konsol dan mengetik: usermod --helpAnda akan mendapatkan salah satu parameter yang mengatakan:

-u, --uid UID UID baru untuk akun pengguna

jadi jika Anda ingin mengubah UID untuk pengguna cyrex maka lakukan:

usermod -u 1000 cyrex

itu akan mengubah uid untuk cyrex dari nilai apa pun yang dimilikinya sebelum menjadi 1000

Jika Anda ingin melakukannya secara visual maka lakukan ini:

Pergi ke

SISTEM -> ADMINISTRASI -> PENGGUNA DAN GRUP

Pilih diri Anda dari daftar dan klik PENGATURAN LANJUTAN

UID ada di ujung jendela itu.


1
Saya mencoba metode grafis yang Anda sarankan, tetapi ada pesan yang mengatakan "Anda tidak dapat mengubah ID pengguna saat pengguna masuk." Sudahkah Anda menguji metode ini?
ændrük

2
Hehe well itu benar. Saya mencoba dengan akun lain. Anda harus masuk melalui root atau akun admin lainnya. Kemudian lakukan cara grafis. Maaf untuk itu.
Luis Alvarado

2
  • Sistem Goto >> Administrasi >> Pengguna dan Grup

teks alternatif

  • Klik Pengaturan Lanjut dan buka Tab Lanjut di bagian bawah Anda akan melihat id pengguna Anda.
  • Ubah dan klik ok.
    teks alternatif

1
Haruskah saya mengabaikan peringatan di tangkapan layar Anda, "Anda tidak dapat mengubah ID pengguna saat pengguna masuk."?
ændrük

Anda harus mengubahnya dari akun pengguna lain yang lain untuk menghilangkan peringatan ini.
karthick87

7
Pertanyaan saya adalah "Bagaimana saya bisa mengubah ID pengguna saya sendiri ?". Jika Anda berniat menjawab bahwa saya harus membuat pengguna baru hanya untuk mengedit nilai ini, Anda harus mengedit jawaban Anda untuk menunjukkannya.
ændrük

0

Dengan KDE: Di menu Ubah Pengaturan Pengguna Lanjut:

Mengubah dari pengguna lain tidak berfungsi untuk 1000 yang merupakan pengguna default.

Anda harus melakukannya secara manual - pengalaman saya


0

Pertama, Anda perlu masuk sebagai root, setidaknya untuk sementara waktu, jadi mari kita buat ini menjadi mungkin:

sudo passwd root

Reboot, ctrl + alt + f1 untuk beralih ke konsol, login sebagai root, lakukan hal berikut (kepemilikan dir home akan diurus secara otomatis):

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

Untuk file Anda di tempat lain selain direktori home Anda, untuk ini:

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

Hapus dan kunci sandi root, jika Anda mau. (Saya cenderung menyimpannya):

passwd -dl root

0

Saya mengikuti instruksi ddeimeke dengan perubahan berikut:

  1. Saya tidak keluar dan sebaliknya melakukannya sudo su
  2. Saya tidak menyentuh /etc/shadow

Saya telah melihatnya disebutkan dalam jawaban lain bahwa Anda harus boot ke pemulihan atau login sebagai root. Milik saya adalah instalasi Ubuntu 14 baru jadi saya bersedia untuk menguji apakah itu akan bekerja tanpa masuk sebagai root. Juga saya melakukan ini pada contoh EC2 melalui SSH.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.