Cách thay đổi thư mục Home của người dùng hiện đang đăng nhập


17

Tôi hiện đang đăng nhập vào máy chủ CentOS và tôi muốn thay đổi thư mục chính của mình từ /home/myuserName/thành/var/www/html/

Tôi đã thử lệnh dưới đây:

> sudo usermod -d /var/www/html myuserName

Nhưng điều này cho tôi một lỗi:

usermod: user myUserName is currently logged in

2
Tôi không chắc ý của bạn là gì, HOME=/var/www/htmlsẽ thay đổi cho phiên làm việc tại nhà của bạn.
Archemar 4/2/2016

Điều đó có ích, nhưng tôi muốn thay đổi thư mục chính của mình vĩnh viễn, không chỉ cho phiên hiện tại.
Mohan

Câu trả lời:


17

Câu trả lời ngắn gọn : bạn không thể.

câu trả lời dài :

HOMEdir được đặt trong /etc/passwd, trường thứ 6. Nó được đọc khi đăng nhập, shell của bạn được bắt đầu với thư mục nhà này.

Cách thích hợp để thay đổi dir nhà cho joe là:

  • có joe đăng xuất.
  • sử dụng usermod -d /new/home joe để thay đổi thư mục nhà cho phiên tiếp theo.

Khi phiên chạy, bạn phải thực hiện hai điều:

  • chỉnh sửa $HOMEđể thay đổi thư mục nhà cho phiên (sẽ được lặp lại trên tất cả các phiên hoạt động).
  • sử dụng sudo vipwđể chỉnh sửa thư mục nhà cho lần tiếp theo

Ngoài ra, hãy lưu ý rằng bạn có thể gặp sự cố với quyền / sở hữu trên /var/www/html


1
chỉnh sửa / etc / passwd luôn làm việc cho tôi. Xem @ 7171u bên dưới
jeffmcneill

chỉnh sửa / etc / passwd mà không đăng xuất / đăng nhập?
Archemar 30/03/2017

chỉnh sửa / etc / passwd cho một tài khoản đã đăng nhập và sau đó bắt đầu một phiên mới với cùng một tài khoản đó và nó tuân theo thư mục nhà mới. Đối với tài khoản đã đăng nhập, phiên đó vẫn có vị trí nhà cũ trong Môi trường.
jeffmcneill

8

Lệnh usermod sẽ không hoạt động nếu bạn đăng nhập với người dùng mà bạn đang cố gắng thực hiện thay đổi.

Từ trang hướng dẫn trên usermod có ghi:

CAVEATS usermod sẽ không cho phép bạn thay đổi tên của người dùng đã đăng nhập. Bạn phải chắc chắn rằng người dùng có tên không thực hiện bất kỳ quy trình nào khi lệnh này được thực thi nếu ID người dùng số của người dùng bị thay đổi. Bạn phải thay đổi chủ sở hữu của bất kỳ tệp crontab bằng tay. Bạn phải thay đổi chủ sở hữu của bất kỳ tại các công việc bằng tay. Bạn phải thực hiện bất kỳ thay đổi nào liên quan đến NIS trên máy chủ NIS.

Hãy thử đăng nhập với một người dùng khác và chạy lại lệnh.

Nếu điều đó là không thể thì bạn có thể chỉnh sửa thủ công tệp / etc / passwd (đây thực sự là những gì lệnh usermod đang làm). Nếu bạn làm điều đó, hãy chắc chắn rằng bạn sao lưu tập tin trong trường hợp bạn vô tình làm điều gì đó ngớ ngẩn.


7

Bạn cần chỉnh sửa /etc/passwdtệp để thay đổi thư mục chính của người dùng hiện đang đăng nhập.

Chỉnh sửa /etc/passwdvới sudo vipwvà thay đổi thư mục nhà của người dùng.

vipwrất khuyến khích khác hơn vimhoặc các biên tập viên khác vì vipwsẽ thiết lập khóa để ngăn chặn bất kỳ hỏng dữ liệu.


2

Một vài cách giải quyết có thể, tùy thuộc vào những gì bạn hy vọng sẽ giải quyết:

Tùy chọn 1. Thêm HOME=/var/www/htmlvào .bashrc của bạn

Tùy chọn 2. Đổi tên /home/myusernamevà sau đó tạo một liên kết tượng trưng đến thư mục mong muốn.

mv /home/myusername /home/myusername-old
ln -s /var/www/html /home/myusername

xấu hợi. sau đó, người dùng khác không thể sử dụng tên người dùng cũ
GeoMint

-2

Bạn chỉ có thể làm điều này tạm thời. Điều này có nghĩa là mỗi khi bạn đăng nhập với tư cách là người dùng đó, bạn phải chạy lệnh này:

export HOME=/var/www/html

Bằng cách này, bạn có thể làm cho hầu hết các ứng dụng nghĩ rằng thư mục chính của bạn là bất kỳ vị trí nào bạn sử dụng ở trên.

~cũng sẽ bắt đầu chỉ đến /var/www/html.

Các ứng dụng này hoạt động với tôi là NPM và Maven.

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.