に使用される値 ~
、管理データベース(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
このファイルの6番目の列は、誰か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
。
参照資料
~
実際のホームディレクトリ以外に?