Як змінити своє ім’я користувача?


324

Деякий час тому, коли я встановив Ubuntu, я вибрав для свого облікового запису досить дурне ім’я користувача, яке більше не хочу використовувати.

Як змінити це (включаючи назву мого домашнього каталогу та ім'я в терміналі), не втрачаючи налаштування програм?
Як зберегти дозволи та ключі для різних автентифікацій (наприклад, електронна пошта, SSH, GPG тощо)?
Які налаштування можуть загубитися, якщо я зміню своє ім’я користувача?


Чому ми не можемо перейти до /usr/share/applications/users.desktop >> Клацніть на користувача, для якого ім’я має бути змінено. >> Клацніть Змінити ім'я користувача >> Змінити ім'я >> Клацніть ОК. Я думаю, це був би найпростіший спосіб змінити ім’я користувача, чи не так?
Ананд

Відповіді:


323

Unix-подібні операційні системи відокремлюють ім’я користувача від ідентифікації користувача, тому ви можете сміливо змінювати ім’я, не впливаючи на ідентифікатор. Всі дозволи, файли тощо прив’язані до вашої особи (uid), а не вашого імені користувача.

Для управління всіма аспектами бази даних користувачів ви використовуєте usermodінструмент.

Щоб змінити ім'я користувача (можливо, найкраще це зробити без входу в систему):

sudo usermod -l newUsername oldUsername

Це, однак, не перейменовує домашню папку.

Щоб змінити домашню папку, використовуйте

sudo usermod -d /home/newHomeDir -m newUsername

після того, як ви змінили ім’я користувача.

Наприклад, ви можете вийти з системи, перейти до консолі ( Ctrl+ Alt+ F1) та sudo su -стати справжнім коренем (на відміну від того sudo -s, де $ HOME все ще / home / yourname.) Можливо, вам також доведеться вбити деякі користувачі, які все ще працюють. спочатку. Для цього введіть ps -u username, знайдіть відповідний PID і вбийте їх kill PID-number.

Оновлення: як упорядковано, деякі файли можуть посилатися на ваш старий домашній каталог. Можна або зберегти символьне посилання для зворотної сумісності, наприклад, ln -s /home/newname /home/oldnameабо ви можете змінити вміст файлу за допомогою. sed -i.bak 's/*oldname*/*newname*/g' *list of files*Це створює резервну копію для кожного файлу з розширенням .bak.

Деякі додаткові відомості для не так досвідчених користувачів, як я:
Оскільки у мене є лише ОДИН обліковий запис користувача (адміністратор), це не дозволить мені змінити ім’я користувача ("ви вже увійшли в систему" була відповідь у TTY1 ( Ctrl+ Alt+ F1). Щоб отримати навколо цього:

  1. Увійдіть зі своїми старими обліковими записами та додайте нового користувача, наприклад, "тимчасового" в TTY1:

    sudo adduser temporary
    

    встановити пароль.

  2. Дозвольте тимчасовому користувачеві запустити sudo, додавши його до групи sudo:

    sudo adduser temporary sudo
    
  3. Вийдіть із командою exit.
  4. Повернення до tty1: Увійдіть із "тимчасовим" обліковим записом користувача та паролем. Змініть своє ім’я користувача та папку, як згадувалося вище. exit(поки ви не отримаєте запит на вхід)
  5. Поверніться до TTY7 ( Ctrl+ Alt+ F7), щоб увійти на екрані GUI / звичайного робочого столу і побачити, чи працює це.
  6. Видалити тимчасового користувача та папку:

    sudo deluser temporary
    sudo rm -r /home/temporary
    

10
На жаль, це не стосується різних файлів конфігурації в $ HOME, спробуйте запустити щось на зразок, grep -IRFl /home/username ~і ви побачите, скільки посилань на ваш домашній каталог зберігається там.
влаштовуйте

1
Було просте виправлення - просто довелося користуватися редактором акаунтів користувачів в єдності, після чого слід перезапустити.
Стів Кох

6
Для тих, у кого зашифрована домашня папка, вам доведеться редагувати, /home/.ecryptfs/oldusername/.ecryptfs/Private.mntщоб вказати на вашу нову домашню папку, інакше ви не зможете ввійти через Unity.
Рафаель

2
sudo usermod -d /home/edge -m edgeурожайність: usermod: Directory /home/empedokles could not be renamed in /home/edgeтобто крок 4 не працюватиме.
empedokles

2
@ JTC ніколи не редагуйте sudoersпросто nano. Завжди використовуйте visudo.
пінопласт летить

107

Щоб все це зробити разом:

  1. На екрані запуску натисніть Ctrl+ Alt+ F1.
  2. Увійдіть, використовуючи своє ім’я користувача та пароль.
  3. Встановіть пароль для "root" облікового запису.

    sudo passwd root
    
  4. Вийти.

    exit
    
  5. Увійдіть, використовуючи обліковий запис "root" та встановлений раніше пароль.

  6. Змініть ім'я користувача та домашню папку на нове ім'я, яке ви хочете.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. Змініть назву групи на нове ім'я, яке потрібно.

    groupmod -n <newgroup> <oldgroup>
    
  8. Заблокуйте обліковий запис "root".

    passwd -l root
    
  9. Якщо ви використовували ecryptfs (зашифрований домашній каталог). Змонтуйте зашифрований каталог, використовуючи ecryptfs-recover-privateта редагуйте, <mountpoint>/.ecryptfs/Private.mntщоб відобразити ваш новий домашній каталог.

  10. Вийти.

    exit
    
  11. Натисніть Ctrl+ Alt+ F7.

Тепер ви можете увійти, використовуючи нове ім’я користувача.


6
Якщо usermod -l ви отримаєте user <oldname> is currently used by process <processno>, ви можете знайти цей процес (можливо, демон, tmux / екран), використовуючи ps aux | grep <processno>. Ви можете витончено зупинити цей процес, інакше можете kill <processno>.
RedPixel

1
Дякуємо, що додали цей коментар. Це було дуже корисно. Однак можна сказати про дві речі. Після кроку 4 я перезавантажився, тому я не отримав повідомлення про помилки на кроці 6. Крім того, після завершення цього процесу / etc / passwd файл матиме коментар ідентифікатора, що відповідає старому імені користувача. Це призведе до того, що на екрані входу відображатиметься старе ім’я для входу. Я не зміг знайти гідний спосіб її виправити з командного рядка, але я це виправив, увійшовши до облікового запису користувача, перейшовши до налаштувань облікового запису та змінивши "Ім'я входу" на ім'я користувача. Це оновило файл / etc / passwd і усунуло проблему.
Jibbers

1
Це найпростіший і безглуздий спосіб зробити це. Краще перезавантажтесь після кроку 4, як запропонував @Jibbers.
Yerke

Я зазначу, що "закладки у вікнах браузера File" тепер вказують на старі папки, тому я повинен видалити ці закладки.
ollydbg23

Не буде працювати. Якщо на початку натиснути Ctrl + Alt + F1, він намагається увійти в новоствореного користувача, який він не дозволить.
empedokles

27

Перезапустіть у режимі відновлення та перейдіть до оболонки кореневої підказки ("Перехід до підказки кореневої оболонки")

Спочатку перезавантажте корінь

mount -o remount,rw /

Щоб змінити ім’я користувача та домашню папку,

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

Для назви групи,

groupmod -n <newgroup> <oldgroup>

1
коли я користуюсь usermod -l <newname> -d /home/<newname> -m <oldname>цим, мені видається помилка, usermod: user oldusername is currently used by process 3170і якщо я вбиваю процес, він все одно дає мені таку ж помилку. використовуючи ubuntu 13.10
Waqas

4
НЕ РОБИТИ ЦЕ ЯКЩО ВАША ДОМАШНЯ ДИРЕКЦІЯ ЗАПИСАНА !!!! Я дотримувався цієї процедури, і вона посилала мене на дику їзду на дві години ... Єдиний спосіб відновити - повторити цю процедуру і повернути початкове (не любите) ім'я. бал "
Майк

Чому ми не можемо перейти до /usr/share/applications/users.desktop >> Клацніть на користувача, для якого ім’я має бути змінено. >> Клацніть Змінити ім'я користувача >> Змінити ім'я >> Клацніть ОК. Я думаю, це був би найпростіший спосіб змінити ім’я користувача, чи не так?
Ананд

9

У Ubuntu 13.10, 14.04, 16.04:

  1. Клацніть піктограму «Налаштування системи».
  2. Клацніть на "Облікові записи користувачів".
  3. Ваш обліковий запис адміністратора має відображатися.
  4. Натисніть на кнопку "Розблокувати".
  5. Введіть пароль користувача, як вимагається, щоб дозволити зміни у вашому обліковому записі.
  6. Після розблокування ви можете натиснути своє старе ім’я користувача, яке ви хочете змінити, і ввести нове ім'я користувача, щоб замінити його.
  7. Після введення нового імені натисніть кнопку "Блокувати", щоб зміни були постійними.
  8. Перезапустіть Ubuntu.

2
Це не змінило для мене ім’я користувача, просто ім'я. Старе ім’я користувача все ще відображається в терміналі та як домашній каталог та група (навіть після перезавантаження).
DougC

3

При отриманні usermod: can't change /etc/passwordпросто запустіть такі команди:

У консолі відновлення кореня запустіть:

mount -o remount,rw /

Потім повторіть:

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

Чому ми не можемо перейти до /usr/share/applications/users.desktop >> Клацніть на користувача, для якого ім’я має бути змінено. >> Клацніть Змінити ім'я користувача >> Змінити ім'я >> Клацніть ОК. Я думаю, це був би найпростіший спосіб змінити ім’я користувача, чи не так?
Ананд

1

Відповідь, перелічена тут від @ karthick87, працює чудово, але ось що я б зробив, щоб бути в безпеці та уникнути всіх збоїв:

  1. Створіть окремий обліковий запис / користувача та переконайтеся, що цей обліковий запис / користувальницькі кореневі можливості або авторизуйтесь як будь-який користувач із кореневими можливостями.
  2. Вийдіть із поточного рахунку, а потім увійдіть з обліковим записом, зазначеним у кроці 1.
  3. Вбийте всі процеси попереднього користувача.
  4. Тепер виконайте кроки, згадані @ karthick87, і змініть ім'я користувача, а також власника домашнього каталогу.
  5. Потім дотримуйтесь відповіді @Sriraj Hebbar, щоб змінити назву групи.
  6. вийдіть із запасним користувачем та увійдіть із користувачем. Якщо ви створили зайвого користувача, видаліть його.

0

коли ви зробите, usermod -l <newname> -d /home/<newname> -m <oldname>ви отримаєте useradd: can't change /etc/passwdповідомлення про помилку, щоб уникнути цього просто додати sudo --до вищезгаданої команди типу

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

і

sudo --  groupmod -n <newgroup> <oldgroup>

-3

Оскільки не у всіх ПК є usermodдодаток, ви можете це зробити вручну. На root відкрито /etc/passwdдля редагування:

sudo vim /etc/passwd

та змініть ім’я користувача на початку рядка:

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

до:

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

то якщо ви працювали з root, просто увійдіть, і якщо ви ввійшли в систему user, вийдіть із системи та перейдіть на сайт


Я спробував таким чином (перш ніж я виявив usermodкоманду) і пароль користувача більше не приймається.
Ben Voigt

@BenVoigt не всі ПК мають usermod
Малу Скрылевъ

3
Це Ubuntu! Якщо він не має, usermodваша установка буде порушена, оскільки вона є частиною passwdпакету, який необхідний .
Auspex
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.