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


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, де у вас немає кореневого облікового запису для входу з першого місця. Так це створює протиріччя: я є користувачем групи судерів. Я не можу змінити власний uid.

Не впевнений, що це найкраще рішення. Я спочатку створю фальшивий рахунок foo, додаю це до списку судо. Тоді я входжу в обліковий запис foo та виконую користувальницький -g MYOWNGID mylogin


0

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

Я пропоную переглянути команду man usermod


0

Спробуйте виконати наступні дії:

  1. Встановіть пароль для root користувача:

sudo passwd root

  1. перезавантажити ubuntu
  2. Увійти як «root» після завантаження -> Це дозволить ubuntu не генерувати жодного процесу для поточного користувача.
  3. Змініть ім’я користувача

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

  4. Перевірте, чи ім'я користувача змінилось, перевіривши ім'я папки з новим ім'ям користувача в / домашній каталог

-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.