Il valore utilizzato ~
è determinato dal valore ottenuto dal database amministrativo ( getent passwd
), in genere nel /etc/passwd
file, per la home directory di ciascun utente ivi definita.
$ 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 sesta colonna in questo file è da dove cd ~
proviene il valore usato quando qualcuno digita .
nsswitch
Puoi vedere quale sistema userebbe per la home directory dell'utente usando il comando 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
Il "database" che fornisce questi è controllato tramite il risolutore di sistemi, definito in /etc/nsswitch.conf
.
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
File sopra significa /etc/passwd
, ma il "database" potrebbe provenire da LDAP, NIS o altre posizioni sulla rete, ad esempio.
Spostamento / Ridefinizione?
Eseguire questa operazione è un po 'complicato dopo la creazione degli account. Se stai creando account da zero, è banale ridefinire la posizione di un utente della sua home directory. Quando si esegue il useradd
comando è possibile specificare il percorso da utilizzare per la home directory di un utente.
Esempio
$ useradd -d /ext1/acheong ...
estratto dalla pagina man
-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.
Per account esistenti?
Questo diventa più un'operazione chirurgica poiché spesso il percorso della home directory di un utente viene incluso staticamente nei file di configurazione, rendendolo più complicato.
Esempio
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
Questi saranno sia bisogno di essere fissato, o dovrete fornire un collegamento da /home/sam
nella nuova posizione, /ext1/sam
.
Spostarsi quando "database" non lo è /etc/passwd
Se il sistema sta ottenendo le home directory da LDAP, NIS, ecc., Dovrai eseguire il trasferimento in tali sistemi e coordinarti con lo spostamento dei file da /home/sam
a /ext1/sam
.
Riferimenti
~
a qualcosa di diverso dalla home directory effettiva?