उपयोगकर्ता नाम बदलने की कोशिश करते समय, टर्मिनल मुझे बताता है कि उपयोगकर्ता वर्तमान में प्रक्रिया द्वारा उपयोग किया जाता है


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.

इसलिए, आपको यह सुनिश्चित करने की आवश्यकता है कि जिस उपयोगकर्ता का आप नाम बदल रहे हैं वह लॉग इन नहीं है।

इसके अलावा, मैं ध्यान देता हूं कि आप इसे रूट के रूप में नहीं चला रहे हैं। या तो इसे रूट के रूप में चलाएं, या "सुडो वर्मोड" के साथ चलाएं।


3
यदि आप इसे फिर से शुरू किए बिना प्रक्रिया को नहीं मार सकते हैं, तो कमांड को kill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
रिचर्ड फ्रैंक

2
usermodलगता है कि यह कार्यक्रम डिजाइन से टूट गया है। यदि उपयोगकर्ता प्रबंधन LDAP सर्वर में किया जाता है, तो उपयोगकर्ता विशेषता बदलना हमेशा संभव होता है और यह रनिंग सिस्टम पर निर्भर नहीं करता है। मैं अंसिबल का उपयोग कर रहा हूं जो उपयोग करता है usermodऔर छेद प्रणाली अविश्वसनीय है, क्योंकि परिवर्तन लॉग इन किए गए उपयोगकर्ताओं द्वारा अवरुद्ध किए जाते हैं।
छत

1

मुझे लगता है कि आपको किसी अन्य उपयोगकर्ता के साथ कमांड चलाना चाहिए। रूट, या अन्य उपयोगकर्ता के साथ लॉगिन करें और फिर से प्रयास करें। यदि आप उपयोगकर्ता के साथ x विंडो में हैं जिसे आप बदलना चाहते हैं, तो तार्किक लगता है कि कमांड विफल रहता है।


1

यह मुख्य रूप से Ubutu के साथ एक समस्या है जहां आपके पास पहली जगह से लॉगिन करने के लिए रूट खाता नहीं है। तो यह एक विरोधाभास पैदा करता है: मैं सुडोअर समूह में एक उपयोगकर्ता हूं। मैं अपना खुद का यूआईडी नहीं बदल सकता।

यकीन नहीं होता कि यह सबसे अच्छा उपाय है। मैं सबसे पहले एक नकली खाता फू बनाता हूं, इसे sudo सूची में जोड़ें। फिर मैं फू खाते में लॉगिन करता हूं और usermod -g MYOWNGID mylogin को निष्पादित करता हूं


0

मेरे पास usermod का उपयोग करने के लिए एक ही मुद्दा है, यह -m पैरामीटर का उपयोग करके तय किया गया है, जो होम निर्देशिका की सामग्री को एक नए स्थानीयकरण में स्थानांतरित करता है। -D के साथ संयोजन में इस विकल्प का उपयोग करें (उपयोगकर्ता मुख्य निर्देशिका को संशोधित करें, जहां उपयोगकर्ता है)।

मेरा सुझाव है कि आदमी usermod कमांड देखें


0

इन चरणों का प्रयास करें:

  1. रूट उपयोगकर्ता के लिए पासवर्ड सेट करें:

सूद पासवे जड़

  1. रिबूट ubuntu
  2. बूट होने के बाद "रूट" के रूप में लॉगिन करें -> यह 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.