При попытке изменить имя пользователя терминал сообщает, что пользователь в данный момент используется процессом


16

Я пытаюсь изменить свое имя, а за совет здесь , однако после того, выполнив следующую команду:

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

Терминал отвечает:

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

И имя пользователя остается прежним. Кто-нибудь знает, как я мог это исправить и в конце концов изменить свое имя пользователя?

Ответы:


8

Цитировать 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.

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

Кроме того, я отмечаю, что вы не используете это как root. Либо запустите его от имени пользователя root, либо запустите «sudo usermod».


3
если вы не можете убить процесс без его перезапуска, объедините команду, например,kill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Ричард Франк,

2
Программа usermod кажется, сломана по дизайну. Если управление пользователями осуществляется на сервере LDAP, изменение атрибута пользователя всегда возможно и не зависит от работающей системы. Я использую Ansible, который использует usermodи дырявая система ненадежна, потому что изменения заблокированы пользователями, вошедшими в систему.
ceving

1

Я думаю, что вы должны запустить команду с другим пользователем. Войдите в систему как root или другой пользователь и попробуйте снова. Если вы находитесь в окне x с пользователем, которого хотите изменить, звучит логично, что команды не выполняются.


1

Это в основном проблема с Ubutu, когда у вас нет учетной записи root для входа с первого места. Это создает противоречие: я пользователь группы sudoer. Я не могу изменить свой UID.

Не уверен, что это лучшее решение. Сначала я создаю поддельный аккаунт foo, добавив его в список sudo. Затем я вхожу в учетную запись foo и выполняю usermod -g MYOWNGID mylogin


0

У меня та же проблема с использованием usermod, она исправлена ​​с помощью параметра -m, который перемещал содержимое домашнего каталога в новую локализацию. Используйте эту опцию в сочетании с -d (измените основной каталог пользователя, где есть пользователь).

Предлагаю посмотреть команду man usermod


0

Попробуйте эти шаги:

  1. Установите пароль для пользователя root:

sudo passwd root

  1. перезагрузить убунту
  2. Войдите в систему как «root» после загрузки -> Это позволит Ubuntu не генерировать какие-либо процессы для текущего пользователя.
  3. Изменить имя пользователя

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

  4. Убедитесь, что имя пользователя изменилось, проверив имя папки с новым именем пользователя в / home каталоге

-1

Вы не должны менять имя пользователя, вошедшего в систему. Вместо этого вы должны завершить все пользовательские процессы, отключиться, войти в систему как другой пользователь и затем переименовать.

Если вам кажется, что работы слишком много, вы можете изменить это по адресу : https://medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110

Это работает так:

# 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.