web-dev-qa-db-fra.com

Est-il possible de renommer un compte utilisateur UNIX?

J'ai installé Ubuntu sur un ordinateur qui est maintenant utilisé par quelqu'un d'autre. J'ai renommé le compte avec son nom, mais cela ne modifie que le nom complet, et non le nom d'utilisateur, qui est toujours affiché en haut à droite (dans le fast-user-switch-applet). Y a-t-il une commande pour renommer un compte d'utilisateur UNIX?

J'ai pensé à créer un nouveau compte d'utilisateur avec le nouveau nom, puis à tout copier dans la maison "ancienne" à la maison du nouveau compte. Serait-ce suffisant? Mais ensuite, je pense que les fichiers auraient le propriétaire des autorisations de l'ancien compte? Alors devrais-je faire chown -R newuser ~?

Y a-t-il une façon plus simple/recommandée de faire cela?

48
Yann Dìnendal

Essayer

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

Les --move-home Option déplace le contenu de l'ancien annuaire de domicile sur le nouveau donné donné par le --home option créée si cela n'existe pas déjà.

Si vous souhaitez que le groupe d'utilisateurs primaire correspondre à l'new-login-name, ajouter --gid <new-login-name> À la commande ci-dessus, mais le groupe doit être préexistant.

Voir la page Homme pour plus d'informations:

man usermod
52
gvkv

Bien qu'il soit possible de renommer un utilisateur, et usermod _ fera une partie du travail , ceci est assez susceptible de causer des problèmes. Voici une liste d'endroits où le nom d'utilisateur peut apparaître; Je ne prétends pas que cette liste est exhaustive.

  • L'entrée utilisateur dans /etc/passwd et fichiers associés (par exemple /etc/shadow, /etc/master.passwd).
  • Entrées de groupe en /etc/group (et /etc/gshadow).
  • Éventuellement des entrées dans /etc/sudoers.
  • La boîte aux lettres système, typiquement /var/mail/$USER ou /var/spool/mail/$USER.
  • Le crontab, typiquement /var/spool/cron/crontabs/$USER
  • Dans at emplois (/var/spool/cron/atjobs/*)

Le répertoire de base est susceptible d'apparaître dans encore plus de lieux. De nombreuses applications écrivent des chemins absolus dans divers fichiers DOT. Si vous décidez de renommer le répertoire de base également (alors qu'il n'y a aucune obligation que l'utilisateur alice 's annuaire de domicile soit /home/alice, l'avoir soit /home/bob serait déroutant), vous devrez prendre soin de ceux-ci. Un remplaçant global fonctionnera pour la plupart des applications, mais je ne fais aucune promesse. Si possible, gardez l'ancien nom de répertoire de maison sous forme de lien symbolique au répertoire renommé.

Voici un résumé des commandes que j'ai utilisées sur un système Debian:

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

Les deux dernières commandes créent un lien symbolique du nom de l'ancien répertoire de base (/ home/vieux) au nom de la nouvelle (/ home/nouveau).

4
Soul Singin

tout ce qui précède sont des méthodes élégantes, mais pourquoi ne pas simplement créer un nouvel utilisateur, copier tout ce contenu à la maison du premier, et c'est tout? bien sûr, s'il s'agit d'un compte de service (application), ce n'est peut-être pas la meilleure pratique

1
AdrianP