Lệnh thay đổi thư mục chính mặc định của người dùng


203

Tôi muốn biết liệu có bất kỳ lệnh shell đơn giản nào để thay đổi thư mục nhà của người dùng trong Linux / Unix (tương tự như chsh thay đổi vỏ đăng nhập mặc định của người dùng hợp lệ hiện tại) mà không cần chạm vào /etc/passwdtệp. Cảm ơn


Tại sao bạn không muốn chạm vào /etc/passwdtập tin? Bạn sẽ cần!
Basile Starynkevitch 27/12/13

11
stackoverflow.com/questions/20071714/ , nói rằng usermod -d /home/userxx /home/useryyđể thay đổi thư mục đăng nhập mặc định linux thành / home / useryy
Ibrahim Quraish

2
Tại sao bạn hỏi về thư mục nhà mặc định ? Bạn có muốn thay đổi thư mục chính của một người dùng hiện tại hoặc của tất cả người dùng được thêm trong tương lai không? Lưu ý rằng chshkhông thay đổi vỏ đăng nhập mặc định , mà chỉ là vỏ đăng nhập của một người dùng nhất định ... Để thay đổi HOMEngười dùng cụ thể, chỉ cần chỉnh sửa/etc/passwd
Basile Starynkevitch 27/12/13

Câu trả lời:


351

Nhận xét của Ibrahim về câu trả lời khác là cách chính xác để thay đổi thư mục nhà của người dùng hiện có.

Thay đổi thư mục nhà của người dùng:

usermod -d /newhome/username username

usermodlà lệnh để chỉnh sửa người dùng hiện có.
-d(viết tắt cho --home) sẽ thay đổi thư mục nhà của người dùng.

Thay đổi thư mục chính của người dùng + Di chuyển nội dung của thư mục hiện tại của người dùng:

usermod -m -d /newhome/username username

-m(viết tắt cho --move-home) sẽ chuyển nội dung từ thư mục hiện tại của người dùng sang thư mục mới.


1
Không chỉ di chuyển nội dung, tôi thấy nó giống như di chuyển toàn bộ thư mục = thư mục gốc ( /home/usernamethông thường) bị xóa.
Betlista

2
@STW Đây có phải là một nhiệm vụ đảo ngược? Có nghĩa là nếu tôi chỉ chạy nó một lần và sau đó lật các tham số, liệu thư mục chính của tôi có chính xác như trước đây không?
DanGordon

1
@DanGordon bất cứ điều gì bạn đưa vào /newhome/usernameđối số sẽ là thư mục chính của người dùng. Bạn có thể đặt nó trở lại thư mục chính trước đó của họ nếu bạn biết nó là gì, nhưng không có tùy chọn "hoàn tác".
STW

3
Thứ tự của các tùy chọn cho lệnh thứ hai là sai. usermod -m -d /newhome/username usernamelàm.
Snoheadsbert

@Dominik cảm ơn - có một cơ hội khác nhau dựa trên HĐH (Mac vs Linux so với BSD, v.v.), tất nhiên nó cũng có thể không chính xác
STW

28

Từ Linux Thay đổi thư mục nhà người dùng mặc định trong khi thêm người dùng mới :

Chỉ cần mở tệp này bằng trình soạn thảo văn bản, gõ:

vi /etc/default/useradd

Thư mục nhà mặc định được xác định bởi biến HOME, tìm dòng đọc như sau:

HOME=/home

Thay thế bằng:

HOME=/iscsi/user

Lưu và đóng tập tin. Bây giờ bạn có thể thêm người dùng bằng lệnh useradd thông thường:

# useradd vivek
# passwd vivek

Xác minh thông tin người dùng:

# finger vivek

82
usermod -m -d /path/to/new/login/home/dir user thay đổi thư mục nhà người dùng hiện tại thành thư mục đăng nhập mới được tạo nếu nó chưa tồn tại, tùy chọn -m chuyển nội dung của thư mục chính hiện tại sang thư mục nhà mới
Ibrahim Quraish 27/12/13

23

Câu trả lời được chấp nhận là bị lỗi, vì nội dung từ thư mục người dùng ban đầu không được di chuyển bằng cách sử dụng nó. Tôi sẽ thêm một câu trả lời để sửa nó:

sudo usermod -d /newhome/username -m username

Bạn không cần tạo thư mục có tên người dùng và điều này cũng sẽ di chuyển các tệp của bạn từ thư mục người dùng ban đầu sang thư mục / newhome / tên người dùng.


4

Trong trường hợp độc giả khác tìm kiếm thông tin về adduser lệnh.

Biên tập /etc/adduser.conf

Đặt DHOMEbiến


0

Phát hiện ra rằng điều này phá vỡ một số ứng dụng, cách tốt hơn để làm điều đó là

Ngoài symlink, trên các distro và hệ thống tập tin gần đây, với quyền root, bạn cũng có thể sử dụng bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Điều này rất hữu ích để cho phép truy cập "thông qua" thư mục / home tới các thư mục con thông qua trình nền được cấu hình theo cách khác để tránh đường dẫn qua các liên kết tượng trưng (apache, ftpd, v.v.).

Tất nhiên, bạn phải nhớ (hoặc init script) để liên kết khi khởi động lại.

Một đoạn mã init trong /etc/fstab

/extra-home/username /home/username none defaults,bind 0 0

-1

tên người dùng usermod -m -d / newhome


4
Hãy giải thích câu trả lời của bạn chi tiết hơn.
T. Short
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.