Est-il possible de redéfinir le répertoire personnel? par exemple, au /ext1/username
lieu de /home/username
, c'est-à-dire en développant le ~
dans un autre répertoire (par opposition à la modification du répertoire personnel où se trouvent les fichiers personnels des utilisateurs).
(Cette question est principalement académique, car cela semble être une mauvaise pratique de le faire. Je n'ai pas non plus le choix en matière d'utilisation csh
, malgré avoir lu le Top 10.)
~
à autre chose que le répertoire personnel?~
à un autre répertoire (pas, si je comprends bien votre alternative, changer où se trouvent les répertoires personnels de tous les utilisateurs). Je ne savais pas que cela~
était interprété comme une forme courte de$HOME
, comme @michas l'a décrit dans sa réponse.Réponses:
Le tilde
~
est interprété par votre shell. Votre shell interprétera~
comme une forme abrégée de$HOME
.Essayez
(echo ~; HOME=foo; echo ~)
. Cela devrait d'abord imprimer votre vrai répertoire personnel et ensuite "foo", comme vous l'avez défini$HOME
.La valeur par défaut de
$HOME
vient de votre configuration système. Utilisezgetent passwd
pour répertorier tous les utilisateurs connus et leurs répertoires personnels. Selon la configuration de votre système, ces entrées peuvent provenir de/etc/passwd
tout service d'annuaire distant.Si vous souhaitez uniquement redéfinir temporairement votre répertoire personnel, définissez-en simplement un autre
$HOME
.Si vous souhaitez le modifier de façon permanente, vous devez modifier l'entrée passwd, par exemple en la modifiant manuellement
/etc/passwd
.la source
csh
la variable pertinente est$home
(en minuscules), et vous ne pouvez pas -setenv HOME /ext1/acheong
vous pouvez seulementset home=/ext1/acheong
, et cela a fonctionné pour moi.)usermod -d
vipw
(ou toute interface graphique fournie par votre système d'exploitation) plutôt que de modifier/etc/passwd
directement. L'édition directe risque de corrompre le fichier, ce qui peut être difficile à récupérer.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.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
: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
.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
extrait de la page de manuel
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
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
la source
Si la raison est de répartir les utilisateurs sur plusieurs systèmes de fichiers, vous pouvez également utiliser le
automounter
. Et même vous permettre d'avoir un répertoire "de base" différent pour vos utilisateurs.la source