Можно ли переименовать учетную запись пользователя Unix?


48

Я установил Ubuntu на компьютер, который сейчас используется кем-то другим. Я переименовал учетную запись с ее именем, но она меняет только полное имя, а не имя пользователя, которое по-прежнему отображается в правом верхнем углу (в fast-user-switch-applet). Есть ли команда переименовать учетную запись пользователя Unix?

Я думал о создании новой учетной записи пользователя с новым именем, а затем скопировать все из «старого» дома в дом новой учетной записи. Будет ли этого достаточно? Но тогда я думаю, что файлы будут иметь права доступа старой учетной записи? Так что мне делать chown -R newuser ~?

Есть ли более простой / рекомендуемый способ сделать это?

Ответы:


52

Пытаться

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

--move-homeОпция перемещает содержимое старой домашней директории к новым данным по --homeопции , которая создается , если он уже не существует.

Если вы хотите, чтобы основная группа пользователей соответствовала new-login-name, добавьте --gid <new-login-name>к команде выше, но группа должна быть уже существующей.

Смотрите man-страницу для получения дополнительной информации:

man usermod

Спасибо! Я не знал об этой команде. :) Однако это единственная учетная запись на этом компьютере, и человек говорит следующее: «Вы должны убедиться, что указанный пользователь не выполняет какие-либо процессы, когда выполняется эта команда, если числовой идентификатор пользователя, имя пользователя или домашний каталог пользователей изменяется. usermod проверяет это в Linux, но проверяет только, вошел ли пользователь в соответствии с utmp на других архитектурах. »Не могли бы вы предложить использовать для этого live cd или создать временную учетную запись, которую я удалю после завершения?
Янн Динендал

2
Поскольку вы используете Ubuntu и не можете войти в систему как root, я бы создал другую учетную запись, скажем, admin, которую вы используете только для этого типа задач. Временная учетная запись будет работать так же хорошо, но вы могли бы также сохранить ее, так как вы могли бы делать подобные вещи в будущем.
gvkv

3
Помните, что usermod --homeдолжен содержать полный путь, например /home/user.name- в противном случае новый домашний каталог будет создан внутри текущего рабочего каталога.
feeela

Это не изменит группу!
Ханнес Шнайдермайер

22

Хотя можно переименовать пользователя и usermodвыполнить часть работы , это вполне может вызвать проблемы. Вот список мест, где может появиться имя пользователя; Я не утверждаю, что этот список является исчерпывающим.

  • Вход пользователя в /etc/passwdи связанные файлы (например /etc/shadow, /etc/master.passwd).
  • Группировка записей в /etc/group/etc/gshadow).
  • Возможно записи в /etc/sudoers.
  • Системный почтовый ящик, как правило, /var/mail/$USERили /var/spool/mail/$USER.
  • Crontab, как правило, /var/spool/cron/crontabs/$USER
  • В atрабочих местах ( /var/spool/cron/atjobs/*)

Домашний каталог, вероятно, появится в еще большем количестве мест. Многие приложения пишут абсолютные пути в различных точечных файлах. Если вы также решите переименовать домашний каталог (хотя не требуется, чтобы aliceдомашний каталог пользователя был /home/alice, это может /home/bobпривести к путанице), вам придется позаботиться об этом. Глобальная замена будет работать для большинства приложений, но я не даю никаких обещаний. Если возможно, сохраните старое имя домашнего каталога в виде символической ссылки на переименованный каталог.


4

Вот краткое описание команд, которые я использовал в системе Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Последние две команды создают символическую ссылку от имени старого домашнего каталога ( / home / OLD ) до имени нового ( / home / NEW ).


Для чего groupadd?
Янн Динендал

2
groupaddЯ полагаю, вместо того , groupmod -n NEW OLDчтобы избегать смены гида. По крайней мере, в Ubuntu по умолчанию настроена группа с тем же именем, что и у пользователя, поэтому можно также изменить это имя.
Джамадагни

1

все вышеперечисленное - изящные методы, но почему бы просто не создать нового пользователя, скопировать весь его домашний контент из первого, и все? конечно, если речь идет об учетной записи службы (приложения), возможно, это не лучшая практика


3
Кажется, что это может быть лучше помещено в качестве комментария, чем в посте с полным ответом, который почти ничего не добавляет, кроме упоминания решения, которое уже упоминалось в ОП. Вам следует подумать о том, чтобы добавить некоторую информацию о том, почему вы считаете это решение лучшим или даже приемлемым.
HalosGhost
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.