La valeur utilisée ~
est déterminée à partir de la valeur que vous obtenez de la base de données administrative ( getent passwd
), généralement dans le /etc/passwd
fichier, pour le répertoire personnel de chaque utilisateur qui y est défini.
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash
La 6e colonne de ce fichier est celle d'où vient la valeur utilisée lorsque quelqu'un tape cd ~
.
nsswitch
Vous pouvez voir ce qu'un système utiliserait pour le répertoire personnel de l'utilisateur à l'aide de la commande getent passwd
:
$ getent passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash
La "base de données" qui les fournit est contrôlée par le biais de votre résolveur de systèmes, défini dans /etc/nsswitch.conf
.
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
Les fichiers ci-dessus signifient /etc/passwd
, mais la "base de données" pourrait provenir de LDAP, NIS ou d'autres emplacements sur le réseau, par exemple.
Vous déménagez / redéfinissez?
Pour effectuer cette opération est un peu délicat après la création des comptes. Si vous créez des comptes à partir de zéro, il est trivial de redéfinir l'emplacement d'un utilisateur dans son répertoire personnel. Lors de l'exécution de la useradd
commande, vous pouvez spécifier l'emplacement à utiliser pour le répertoire personnel d'un utilisateur.
Exemple
$ useradd -d /ext1/acheong ...
extrait de la page de manuel
-d, --home HOME_DIR
The new user will be created using HOME_DIR as the value for the user’s
login directory. The default is to append the LOGIN name to BASE_DIR and
use that as the login directory name. The directory HOME_DIR does not
have to exist but will not be created if it is missing.
Pour les comptes existants?
Cela devient plus une opération chirurgicale car souvent le chemin du répertoire personnel d'un utilisateur est inclus statiquement dans les fichiers de configuration, ce qui le rend plus délicat.
Exemple
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
Ceux - ci devront soit être fixé, ou vous aurez à fournir un lien de /home/sam
vers le nouvel emplacement, /ext1/sam
.
Déplacement lorsque la "base de données" n'est pas /etc/passwd
Si le système obtient les répertoires personnels de LDAP, NIS, etc., vous devrez effectuer la relocalisation dans ces systèmes et coordonner le déplacement des fichiers de /home/sam
vers /ext1/sam
.
Les références
~
à autre chose que le répertoire personnel?