Как я могу изменить свое имя пользователя?

325

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

Как я могу изменить это (включая имя моего домашнего каталога и имя в терминале) без потери настроек для приложений?
Как мне сохранить разрешения и мои ключи для различных аутентификаций (например, электронная почта, SSH, GPG и т. Д.)?
Какие настройки могут быть потеряны, если я изменю свое имя пользователя?

Takkat
источник
Почему мы не можем перейти к /usr/share/applications/users.desktop >> Нажмите на пользователя, для которого необходимо изменить имя. >> Нажмите на Изменить имя пользователя >> Изменить имя >> Нажмите на Ok. Я думаю, это был бы самый простой способ изменить имя пользователя, не так ли?
Ананд

Ответы:

325

Unix-подобные операционные системы отделяют имя пользователя от имени пользователя, поэтому вы можете смело менять имя, не влияя на идентификатор. Все разрешения, файлы и т. Д. Привязаны к вашей личности (uid), а не к вашему имени пользователя.

Чтобы управлять каждым аспектом пользовательской базы данных, вы используете usermodинструмент.

Чтобы изменить имя пользователя (вероятно, лучше сделать это без входа в систему):

sudo usermod -l newUsername oldUsername

Это, однако, не переименовывает домашнюю папку.

Чтобы изменить домашнюю папку, используйте

sudo usermod -d /home/newHomeDir -m newUsername

после того, как вы изменили имя пользователя.

Например, вы можете выйти из системы, перейти на консоль ( Ctrl+ Alt+ F1) и sudo su -стать истинным пользователем root (в отличие от того 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), чтобы войти в систему с графическим интерфейсом пользователя / обычным экраном рабочего стола и посмотреть, работает ли это.
  6. Удалить временного пользователя и папку:

    sudo deluser temporary
    sudo rm -r /home/temporary
    
Эгиль
источник
11
К сожалению, это не относится к разным файлам конфигурации в $ 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.
пенополистирол летит
108

Чтобы сложить все вместе:

  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 / screen), используя ps aux | grep <processno>. Возможно, вы захотите изящно остановить этот процесс, в противном случае вы можете kill <processno>.
RedPixel
1
Спасибо, что написали этот комментарий. Это было очень полезно. Две вещи, которые могут быть упомянуты, хотя. После шага 4 я перезагрузился, чтобы не получать сообщения об ошибках на шаге 6. Кроме того, после завершения этого процесса файл / etc / passwd будет иметь идентификатор комментария, соответствующий старому имени пользователя. Это заставит экран входа отображать старое имя входа. Я не смог найти достойный способ исправить это из командной строки, но я исправил это, войдя в учетную запись пользователя, перейдя в настройки учетной записи и изменив «Имя для входа» на имя пользователя. Это обновило файл / etc / passwd и устранило проблему.
Джибберс
1
Это самый простой и надежный способ сделать это. Лучше перезагрузить компьютер после шага 4, как предложил @Jibbers.
Йерк
Я бы упомянул, что «закладки в окнах браузера файлов» теперь указывают на старые папки, поэтому я должен удалить эти закладки.
ollydbg23
Не сработает Если вы нажмете Ctrl + Alt + F1 в начале, он попытается войти во вновь созданного пользователя, что не позволит.
empedokles
27

Перезапустите в режиме восстановления и перейдите в оболочку с приглашением root («Запрос на удаление оболочки root»)

Сначала перемонтируйте корень

mount -o remount,rw /

Чтобы изменить имя пользователя и имя домашней папки,

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

Для имени группы

groupmod -n <newgroup> <oldgroup>
karthick87
источник
1
когда я использую usermod -l <newname> -d /home/<newname> -m <oldname>это, я usermod: user oldusername is currently used by process 3170получаю ошибку, и если я все равно убиваю процесс, он дает мне ту же ошибку. используя Ubuntu 13.10
Waqas
4
НЕ ДЕЛАЙТЕ ЭТОГО, ЕСЛИ ВАША ДОМАШНЯЯ КАТАЛОГ ЗАПИСАНА !!!! Я выполнил эту процедуру, и она отправила меня на дикую 2-часовую поездку ... Единственный способ восстановиться - это снова выполнить эту процедуру и снова вставить оригинальное (не понравившееся) имя. Проблема, с которой вы столкнетесь, - «Не удается chdir в mount» точка "
Майк
Почему мы не можем перейти к /usr/share/applications/users.desktop >> Нажмите на пользователя, для которого необходимо изменить имя. >> Нажмите на Изменить имя пользователя >> Изменить имя >> Нажмите на Ok. Я думаю, это был бы самый простой способ изменить имя пользователя, не так ли?
Ананд
9

На Ubuntu 13.10, 14.04, 16.04:

  1. Нажмите на значок «Настройки системы».
  2. Нажмите «Учетные записи пользователей».
  3. Ваша учетная запись администратора должна отображаться.
  4. Нажмите на кнопку «Разблокировать».
  5. Введите пароль пользователя в соответствии с запросом, чтобы разрешить изменения в вашей учетной записи.
  6. После разблокировки вы можете нажать на старое имя пользователя, которое хотите изменить, и ввести новое имя пользователя, чтобы заменить его.
  7. Когда вы ввели новое имя, нажмите кнопку «Блокировка», чтобы сделать изменение постоянным.
  8. Перезапустите Ubuntu.
Chicodoodoo
источник
3
Это не изменило имя пользователя для меня, просто имя. Старое имя пользователя все еще появляется в терминале, а также в качестве домашнего каталога и группы (даже после перезагрузки).
Дуг
3

При получении usermod: can't change /etc/passwordпросто запустите следующие команды:

В консоли восстановления root запустите:

mount -o remount,rw /

Затем перезапустите:

usermod -l <newname> -d /home/<newname> -m <oldname>
user1511576
источник
Почему мы не можем перейти к /usr/share/applications/users.desktop >> Нажмите на пользователя, для которого необходимо изменить имя. >> Нажмите на Изменить имя пользователя >> Изменить имя >> Нажмите на Ok. Я думаю, это был бы самый простой способ изменить имя пользователя, не так ли?
Ананд
1

Ответ, указанный здесь @ karthick87, прекрасно работает, но вот что я бы сделал, чтобы быть в безопасности и избежать всех сбоев:

  1. Создайте отдельную учетную запись / пользователя и убедитесь, что эта учетная запись / пользователь root обладает возможностями или войдите в систему как любой пользователь с правами root.
  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команду), и пароль пользователя больше не принимается.
Бен Фойгт
@BenVoigt не все штуки имеют usermod
Малъ Скрылевъ
3
Это Ubuntu! Если он не установлен, usermodваша установка нарушена, поскольку она является частью passwdпакета, что необходимо .
Auspex