Можно ли переопределить домашний каталог? например , чтобы /ext1/username
вместо того , чтобы /home/username
, например , разлагая ~
в другой каталог (в отличие от изменения фактического домашнего каталога , где домашние файлы пользователей расположены).
(Этот вопрос носит в основном академический характер, так как это кажется плохой практикой. У меня также нет выбора в отношении использования csh
, несмотря на то, что я прочитал Топ-10.)
~
до чего-то другого, кроме реального домашнего каталога?~
до другого каталога (нет, если я правильно понимаю вашу альтернативу, изменение места расположения домашних каталогов всех пользователей). Я не понимал, что это~
было истолковано как краткая форма$HOME
, как @michas описал в своем ответе.Ответы:
Тильда
~
интерпретируется вашей оболочкой. Ваша оболочка будет интерпретироваться~
как короткая форма$HOME
.Попробуй
(echo ~; HOME=foo; echo ~)
. Это должно сначала напечатать ваш настоящий домашний каталог, а затем "foo", как вы установили$HOME
.Значение по умолчанию
$HOME
зависит от конфигурации вашей системы. Используйтеgetent passwd
для перечисления всех известных пользователей и их домашних каталогов. В зависимости от конфигурации вашей системы эти записи могут поступать из/etc/passwd
любой удаленной службы каталогов.Если вы хотите временно переопределить ваш домашний каталог, просто установите другой
$HOME
.Если вы постоянно хотите изменить его, вы должны изменить запись passwd, например, путем ручного редактирования
/etc/passwd
.источник
csh
что соответствующая переменная$home
(в нижнем регистре), а вы неsetenv HOME /ext1/acheong
можете - вы можете толькоset home=/ext1/acheong
, и это сработало для меня.)usermod -d
vipw
(или любой другой графический интерфейс, который предоставляет ваша ОС), а не редактируйте/etc/passwd
напрямую. Прямое редактирование может повредить файл, который может быть трудно восстановить.Используемое значение
~
определяется из значения, которое вы получаете из административной базы данных (getent passwd
), обычно в/etc/passwd
файле, для домашнего каталога каждого пользователя, который там определен.В шестом столбце этого файла указано значение, используемое при вводе
cd ~
.NSSwitch
Вы можете увидеть, что система будет использовать для домашнего каталога пользователя, используя команду
getent passwd
:«База данных», которая предоставляет их, управляется через ваш системный преобразователь, определенный в
/etc/nsswitch.conf
.Указанные выше файлы означают
/etc/passwd
, что «база данных» может поступать, например, из LDAP, NIS или других мест в сети.Перемещение / переосмысление?
Выполнить эту операцию немного сложно после создания учетных записей. Если вы создаете учетные записи с нуля, переопределить местоположение пользователя в его домашнем каталоге тривиально. При запуске
useradd
команды вы можете указать местоположение, которое будет использоваться для домашнего каталога пользователя.пример
выдержка из справочной страницы
Для существующих аккаунтов?
Это становится скорее хирургической операцией, поскольку часто путь к домашнему каталогу пользователя статически включается в файлы конфигурации, что усложняет его.
пример
Они либо должны быть исправлены, либо вам нужно будет предоставить ссылку
/home/sam
на новое местоположение/ext1/sam
.Перемещение, когда «база данных» не
/etc/passwd
Если система получает домашние каталоги из LDAP, NIS и т. Д., Вам необходимо выполнить перемещение в этих системах и согласовать перемещение файлов из
/home/sam
в/ext1/sam
.Ссылки
источник
Если причина заключается в распределении пользователей по нескольким файловым системам, вы также можете использовать
automounter
. И даже позволяют вам иметь другой «базовый» каталог для ваших пользователей.источник