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

89

У меня есть имя пользователя, hedgehogи я хочу, чтобы его назвали squirrel, но я не хочу менять его числовой идентификатор пользователя.
Как я могу сделать это?

Szymon Jeż
источник
2
Вероятно, потому что переименование пользователя не совсем задача, с которой профессиональный SA будет бороться. (За вопрос понижен.)
HopelessN00b
2
@Jeznet Я понизил голосование, потому что это не только невероятно простая задача, которую можно решить, введя свой заголовок в Google, вы также ответили на свой вопрос, как только спросили. Казалось, пустая трата времени.
бобуроб
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
Szymon Jeż
источник
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
Возможно, придется снова запустить visudo, чтобы добавить новое имя пользователя в список sudoers, если это применимо
Nagev
2
Вам также нужно будет переименовать файл crontab, расположенный в /var/spool/cron/crontabs/(если у вас установлены какие-либо задания)
Даниэль Ф
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. Выйдите из временной учетной записи и войдите в свою учетную запись с новым именем пользователя.

  6. Удалить временную учетную запись:

    sudo userdel -r temp
    

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

mimoralea
источник
В CentOS мне также требовались `passwd temp 'и' usermod -aG wheel temp '.
Брайан Z
4

Как правило, вы можете переименовать пользователя, изменив его имя в /etc/passwd/etc/shadow, если применимо) файлах. В большинстве систем Unix vipwкоманда используется для редактирования этих файлов (и во многих системах есть некоторые меры предосторожности, чтобы вы не испортили вещи слишком сильно).
Обратитесь к страницам для passwd(5), shadow(5)и vipw(8)для получения дополнительной информации.

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


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

voretaq7
источник