Commande pour changer le répertoire personnel par défaut d'un utilisateur

203

Je voudrais savoir s'il existe une simple commande shell pour changer le répertoire personnel de l'utilisateur sous Linux / Unix (similaire à chsh qui change le shell de connexion par défaut d'un utilisateur valide existant) sans toucher au /etc/passwdfichier. Merci

Ibrahim Quraish
la source
Pourquoi ne voulez-vous pas toucher le /etc/passwdfichier? Vous en aurez besoin!
Basile Starynkevitch
11
stackoverflow.com/questions/20071714/… , dit que usermod -d /home/userxx /home/useryypour changer le répertoire de connexion par défaut de linux en / home / useryy
Ibrahim Quraish
2
Pourquoi posez-vous des questions sur le répertoire personnel par défaut ? Voulez-vous modifier le répertoire personnel d'un utilisateur existant particulier ou de tous les utilisateurs ajoutés à l'avenir? Notez que chshne changez pas le shell de connexion par défaut , mais seulement le shell de connexion d'un utilisateur donné ... Pour changer le nom HOMEd'un utilisateur particulier, il suffit de modifier/etc/passwd
Basile Starynkevitch

Réponses:

351

Le commentaire d'Ibrahim sur l'autre réponse est la bonne façon de modifier le répertoire personnel d'un utilisateur existant.

Modifiez le répertoire personnel de l'utilisateur:

usermod -d /newhome/username username

usermodest la commande pour modifier un utilisateur existant.
-d(abréviation de --home) changera le répertoire personnel de l'utilisateur.

Modifier le répertoire personnel de l'utilisateur + Déplacer le contenu du répertoire actuel de l'utilisateur:

usermod -m -d /newhome/username username

-m(abréviation de --move-home) déplacera le contenu du répertoire actuel de l'utilisateur vers le nouveau répertoire.

STW
la source
1
Non seulement déplacer le contenu, je le vois plus comme déplacer tout le dossier = le dossier d'origine ( /home/usernamegénéralement) est supprimé.
Betlista
2
@STW Est-ce une tâche réversible? Ce qui signifie que si je l'exécute une seule fois et que je retourne les paramètres, mon répertoire personnel sera-t-il exactement comme avant?
DanGordon
1
@DanGordon, tout ce que vous mettrez dans l' /newhome/usernameargument sera le répertoire personnel de l'utilisateur. Vous pouvez le remettre dans leur répertoire personnel précédent si vous savez de quoi il s'agit, mais il n'y a pas d'option "annuler".
STW
3
L'ordre des options pour la deuxième commande est incorrect. usermod -m -d /newhome/username usernametravaux.
Snozzlebert
@Dominik merci - il y a une chance que ce soit différent en fonction du système d'exploitation (Mac vs Linux vs BSD, etc.), bien sûr, cela pourrait aussi être incorrect
STW
28

Depuis Linux, modifiez le répertoire de base de l'utilisateur par défaut lors de l'ajout d'un nouvel utilisateur :

Ouvrez simplement ce fichier à l'aide d'un éditeur de texte, tapez:

vi /etc/default/useradd

Le répertoire personnel par défaut défini par la variable HOME, recherchez la ligne qui se lit comme suit:

HOME=/home

Remplacer par:

HOME=/iscsi/user

Enregistrez et fermez le fichier. Vous pouvez maintenant ajouter un utilisateur à l'aide de la commande useradd régulière:

# useradd vivek
# passwd vivek

Vérifiez les informations utilisateur:

# finger vivek
Maximin
la source
82
usermod -m -d /path/to/new/login/home/dir user change le répertoire personnel de l'utilisateur existant en un nouveau répertoire de connexion qui est créé s'il n'existe pas déjà, l'option -m déplace le contenu du répertoire personnel actuel vers le nouveau répertoire personnel
Ibrahim Quraish
23

La réponse acceptée est erronée, car le contenu du dossier utilisateur initial n'est pas déplacé à l'aide de celui-ci. Je vais ajouter une autre réponse pour la corriger:

sudo usermod -d /newhome/username -m username

Vous n'avez pas besoin de créer le dossier avec le nom d'utilisateur et cela déplacera également vos fichiers du dossier utilisateur initial vers le dossier / newhome / username.

Sukrit Gupta
la source
4

Au cas où d'autres lecteurs chercheraient des informations sur la addusercommande.

Éditer /etc/adduser.conf

Définir la DHOMEvariable

rafaelvalle
la source
0

A découvert que cela casse certaines applications, la meilleure façon de le faire est

En plus du lien symbolique, sur les distributions et les systèmes de fichiers plus récents, en tant que root, vous pouvez également utiliser bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Ceci est utile pour permettre l'accès "via" le répertoire / home à des sous-répertoires via des démons qui sont autrement configurés pour éviter de parcourir les liens symboliques (apache, ftpd, etc.).

Vous devez vous souvenir (ou script init) de vous lier au redémarrage, bien sûr.

Un exemple de script init dans /etc/fstabest

/extra-home/username /home/username none defaults,bind 0 0
Wilken
la source
-1

usermod -m -d / newhome nom d'utilisateur

Ahmed Kay
la source
5
Veuillez expliquer votre réponse plus en détail.
T. Short