Як я можу перейменувати користувача Unix?


89

У мене є ім’я користувача, hedgehogі я хочу, щоб його назвали squirrel, але я не хочу змінювати його числовий ідентифікатор користувача.
Як я можу це досягти?


2
Можливо, тому, що перейменування користувача не є задачею, з яким зіткнеться професійний SA. (Для питання downvotes.)
HopelessN00b

2
@Jeznet Я вважаю, що це не тільки неймовірно проста задача, яку можна вирішити, набравши назву в Google, ви також відповіли на власне запитання, як тільки ви його задали. Здавалося марною тратою часу.
boburob

10
@boburob "Ви також відповіли на власне запитання, як тільки ви його задали. Здавалося, марно витрачайте час", дивіться: blog.stackoverflow.com/2011/07/…
Szymon Jeż

10
@boburob Ви бачили те галочку, яка пише, Answer your own question – share your knowledge, Q&A-styleколи ви задаєте питання? Це є чомусь, і не було б там, якби вони не хотіли, щоб це використовували. (Ідеально щодо кращих запитань, але незалежно від того, що забороняти комусь відповісти на власне запитання - це погана форма.)
HopelessN00b

1
Так, я також раніше відповідав на власне запитання, але мені, задаючи питання і вставляючи результат Google за ту ж хвилину, є трохи марною тратою часу
boburob

Відповіді:


133

У Linux usermodкоманда змінює імена користувачів. Він модифікує файли облікових записів системи для відображення змін, зазначених у командному рядку.

Щоб змінити лише ім’я користувача:

usermod --login new_username old_username

Щоб змінити ім'я користувача та ім'я домашнього каталогу:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Ви також можете змінити назву групи, пов’язаної з користувачем:

groupmod --new-name new_username old_username

12
Ви можете використовувати usermod, щоб зробити все це usermod -l new-user-name -m -d / new / home / dir old-user-name
user9517

5
Також зауважте, що група також не змінюється. Якщо вам також потрібно перейменувати old-user-nameгрупу, використовуйте # groupmod -n new-user-name old-user-name.
alxs

1
Для систем, що використовують autofs, слід також оновити /etc/auto.home. Я просто наткнувся на це.
Стівен К. Хоуелл

2
Можливо, вам доведеться запустити візуально ще раз, щоб внести нове ім’я користувача у список sudoers, якщо це можливо
Nagev

2
Вам також потрібно буде перейменувати файл crontab, який знаходиться в /var/spool/cron/crontabs/(якщо у вас встановлені будь-які завдання)
Daniel F

12

ПРИМІТКА: не намагайтеся це робити, якщо ваш каталог зашифрований! Якщо це ваш випадок, ви можете спершу перевірити: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

Прямий спосіб зробити це:

  1. Створіть новий темп-акаунт з правами sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Вийдіть зі свого поточного облікового запису та поверніться із тимчасовим обліковим записом.

  3. Перейменуйте своє ім’я користувача та каталог:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Перейменуйте групу за замовчуванням вашого імені користувача:

    sudo groupmod -n new-username old-username
    
  5. Вийдіть із облікового запису temp та увійдіть у свій обліковий запис за допомогою нового імені користувача.

  6. Видалити тимчасовий рахунок:

    sudo userdel -r temp
    

В іншому випадку ви просто (1) створите нового користувача та (2) rsyncстару домашню папку користувача до нового, а потім (3) chownйого.


У CentOS мені також потрібно було `passwd temp 'та' usermod -aG temp wheel '.
Брайан Z

4

Як правило, ви можете перейменувати користувача, змінивши його ім'я користувача у файлах /etc/passwd/etc/shadow, якщо необхідно). У більшості систем Unix vipwкоманда застосовується для редагування цих файлів (а в багатьох системах включає деякі гарантії, щоб не надто сильно зіпсувати речі).
Зверніться до сторінок для passwd(5), shadow(5)і vipw(8)для отримання додаткової інформації.

Зауважте, що вищевказаний метод не перейменовує інші речі, які можуть містити початкове ім'я користувача (головний приклад - домашні каталоги, а особисті групи користувачів (у системах, які їх використовують) - іншими). Ви можете їх також очистити для послідовності, змінивши відповідні поля у файлі passwd та перейменувавши каталоги.


Кілька операційних систем забезпечують специфічний для системи спосіб перейменування користувачів. Наприклад, багато систем Linux включають usermod(8)команду, а в AIX ви можете змінювати імена облікових записів за допомогою SMIT (або smittyв терміналі) .
Ці команди часто обробляють елементи очищення, наприклад перейменування домашніх каталогів, якщо ви попросите їх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.