Wartość, która jest używana, ~
jest określana na podstawie wartości uzyskanej z administracyjnej bazy danych ( getent passwd
), zwykle w /etc/passwd
pliku, dla zdefiniowanego tam katalogu domowego każdego użytkownika.
$ 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
Szósta kolumna w tym pliku to miejsce, z którego pochodzi wartość, gdy ktoś cd ~
pisze.
nsswitch
Możesz zobaczyć, czego system użyłby do katalogu domowego użytkownika za pomocą polecenia 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
„Baza danych”, która je udostępnia, jest kontrolowana przez system rozpoznawania nazw systemu zdefiniowany w /etc/nsswitch.conf
.
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
Pliki powyżej oznaczają /etc/passwd
, ale „baza danych” może pochodzić na przykład z LDAP, NIS lub innych lokalizacji w sieci.
Przeprowadzka / nowa definicja?
Wykonanie tej operacji jest trochę trudne po utworzeniu kont. Jeśli tworzysz konta od zera, przedefiniowanie lokalizacji użytkownika w katalogu domowym jest trywialne. Po uruchomieniu useradd
polecenia możesz określić lokalizację, która ma być używana dla katalogu domowego użytkownika.
Przykład
$ useradd -d /ext1/acheong ...
fragment strony 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.
Dla istniejących kont?
Staje się to bardziej operacją chirurgiczną, ponieważ często ścieżka katalogu domowego użytkownika jest włączana statycznie do plików konfiguracyjnych, co utrudnia.
Przykład
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
Będą też muszą być stałe, albo będziesz musiał podać link od /home/sam
do nowej lokalizacji /ext1/sam
.
Przenoszenie, gdy „baza danych” nie jest /etc/passwd
Jeśli system pobiera katalogi domowe z LDAP, NIS itp., Musisz wykonać relokację w tych systemach i skoordynować przenoszenie plików z /home/sam
do /ext1/sam
.
Bibliografia
~
do czegoś innego niż rzeczywisty katalog domowy?