Giá trị được sử dụng ~
được xác định từ giá trị bạn nhận được từ cơ sở dữ liệu quản trị ( getent passwd
), thường là trong /etc/passwd
tệp, cho mỗi thư mục chính của người dùng được xác định ở đó.
$ 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
Cột thứ 6 trong tệp này là nơi giá trị được sử dụng khi ai đó nhập cd ~
từ.
nsswitch
Bạn có thể xem hệ thống sẽ sử dụng gì cho thư mục chính của người dùng bằng lệnh 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
"Cơ sở dữ liệu" cung cấp các cơ sở dữ liệu này được kiểm soát thông qua bộ giải quyết hệ thống của bạn, được xác định trong /etc/nsswitch.conf
.
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
Các tệp trên có nghĩa là /etc/passwd
, nhưng "cơ sở dữ liệu" có thể đến từ LDAP, NIS hoặc các vị trí khác trên mạng chẳng hạn.
Di chuyển / xác định lại?
Để thực hiện thao tác này là một chút khó khăn sau khi các tài khoản đã được tạo. Nếu bạn đang tạo tài khoản từ đầu thì việc xác định lại vị trí của người dùng trong thư mục nhà của họ là chuyện nhỏ. Khi chạy useradd
lệnh, bạn có thể chỉ định vị trí sẽ được sử dụng cho thư mục chính của người dùng.
Thí dụ
$ useradd -d /ext1/acheong ...
đoạn trích từ trang người đàn ông
-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.
Đối với các tài khoản hiện có?
Điều này trở thành một hoạt động phẫu thuật nhiều hơn vì thường thì đường dẫn của thư mục chính của người dùng được đưa vào tĩnh trong các tệp cấu hình, làm cho nó trở nên phức tạp hơn.
Thí dụ
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
Những điều này sẽ cần phải được sửa chữa, hoặc bạn sẽ phải cung cấp một liên kết từ /home/sam
vị trí mới , /ext1/sam
.
Di chuyển khi "cơ sở dữ liệu" không /etc/passwd
Nếu hệ thống nhận các thư mục chính từ LDAP, NIS, v.v. thì bạn sẽ cần phải xác định vị trí di chuyển trong các hệ thống đó và phối hợp với việc di chuyển các tệp từ /home/sam
sang /ext1/sam
.
Người giới thiệu
~
sang một cái gì đó khác với thư mục nhà thực tế?