Используемое значение ~
определяется из значения, которое вы получаете из административной базы данных ( getent passwd
), обычно в /etc/passwd
файле, для домашнего каталога каждого пользователя, который там определен.
$ 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
В шестом столбце этого файла указано значение, используемое при вводе cd ~
.
NSSwitch
Вы можете увидеть, что система будет использовать для домашнего каталога пользователя, используя команду 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
«База данных», которая предоставляет их, управляется через ваш системный преобразователь, определенный в /etc/nsswitch.conf
.
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
Указанные выше файлы означают /etc/passwd
, что «база данных» может поступать, например, из LDAP, NIS или других мест в сети.
Перемещение / переосмысление?
Выполнить эту операцию немного сложно после создания учетных записей. Если вы создаете учетные записи с нуля, переопределить местоположение пользователя в его домашнем каталоге тривиально. При запуске useradd
команды вы можете указать местоположение, которое будет использоваться для домашнего каталога пользователя.
пример
$ useradd -d /ext1/acheong ...
выдержка из справочной страницы
-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.
Для существующих аккаунтов?
Это становится скорее хирургической операцией, поскольку часто путь к домашнему каталогу пользователя статически включается в файлы конфигурации, что усложняет его.
пример
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
Они либо должны быть исправлены, либо вам нужно будет предоставить ссылку /home/sam
на новое местоположение /ext1/sam
.
Перемещение, когда «база данных» не /etc/passwd
Если система получает домашние каталоги из LDAP, NIS и т. Д., Вам необходимо выполнить перемещение в этих системах и согласовать перемещение файлов из /home/sam
в /ext1/sam
.
Ссылки
~
до чего-то другого, кроме реального домашнего каталога?