Polecenie zmiany domyślnego katalogu domowego użytkownika

202

Chciałbym wiedzieć, czy istnieje jakakolwiek prosta komenda powłoki zmieniająca katalog domowy użytkownika w systemie Linux / Unix (jedna podobna do chsh, która zmienia domyślną powłokę logowania istniejącego poprawnego użytkownika) bez dotykania /etc/passwdpliku. Dzięki

Ibrahim Quraish
źródło
Dlaczego nie chcesz dotknąć /etc/passwdpliku? Musisz!
Basile Starynkevitch,
11
stackoverflow.com/questions/20071714/… , mówi, że usermod -d /home/userxx /home/useryyaby zmienić domyślny katalog logowania linuksa na / home / useryy
Ibrahim Quraish
2
Dlaczego pytasz o domyślny katalog domowy? Czy chcesz zmienić katalog domowy jednego konkretnego istniejącego użytkownika lub wszystkich użytkowników dodanych w przyszłości? Zauważ, że chshnie zmieniaj domyślnej powłoki logowania, ale tylko powłokę logowania danego użytkownika ... Aby zmienić nazwę HOMEkonkretnego użytkownika, po prostu edytuj/etc/passwd
Basile Starynkevitch

Odpowiedzi:

350

Komentarz Ibrahima do drugiej odpowiedzi jest prawidłowym sposobem zmiany katalogu domowego istniejącego użytkownika.

Zmień katalog domowy użytkownika:

usermod -d /newhome/username username

usermodto polecenie edycji istniejącego użytkownika.
-d(skrót od --home) zmieni katalog osobisty użytkownika.

Zmień katalog domowy użytkownika + Przenieś zawartość bieżącego katalogu użytkownika:

usermod -m -d /newhome/username username

-m(skrót od --move-home) przenosi zawartość z bieżącego katalogu użytkownika do nowego katalogu.

STW
źródło
1
Nie tylko przenieś treść, widzę ją bardziej jak przenieś cały folder = oryginalny folder ( /home/usernamezazwyczaj) jest usuwany.
Betlista,
2
@STW Czy to zadanie jest odwracalne? Czy to znaczy, że jeśli uruchomię go raz, a następnie przerzucę parametry, czy mój katalog domowy będzie dokładnie taki, jak wcześniej?
DanGordon
1
@ DanGordon, cokolwiek wpiszesz w /newhome/usernameargument, będzie katalogiem domowym użytkownika. Możesz przywrócić go do poprzedniego katalogu domowego, jeśli wiesz, co to było, ale nie ma opcji „cofnij”.
STW
3
Kolejność opcji dla drugiego polecenia jest nieprawidłowa. usermod -m -d /newhome/username usernamePracuje.
Snozzlebert
@Dominik dzięki - istnieje szansa, że ​​różni się w zależności od systemu operacyjnego (Mac vs Linux vs BSD itp.), Oczywiście może to być po prostu niepoprawne
STW
28

Z systemu Linux Zmień domyślny katalog domowy użytkownika podczas dodawania nowego użytkownika :

Po prostu otwórz ten plik za pomocą edytora tekstu, wpisz:

vi /etc/default/useradd

Domyślny katalog domowy zdefiniowany przez zmienną HOME, znajdź wiersz o następującej treści:

HOME=/home

Zamienić:

HOME=/iscsi/user

Zapisz i zamknij plik. Teraz możesz dodać użytkownika za pomocą zwykłego polecenia useradd:

# useradd vivek
# passwd vivek

Zweryfikuj informacje o użytkowniku:

# finger vivek
Maximina
źródło
82
usermod -m -d /path/to/new/login/home/dir user zmienia istniejący katalog domowy użytkownika na nowy katalog logowania, który jest tworzony, jeśli jeszcze nie istnieje, opcja -m przenosi zawartość bieżącego katalogu domowego do nowego katalogu domowego
Ibrahim Quraish
23

Przyjęta odpowiedź jest błędna, ponieważ zawartość z początkowego folderu użytkownika nie jest z niego przenoszona. Dodaję inną odpowiedź, aby to poprawić:

sudo usermod -d /newhome/username -m username

Nie musisz tworzyć folderu z nazwą użytkownika, co spowoduje także przeniesienie plików z początkowego folderu użytkownika do folderu / newhome / username.

Sukrit Gupta
źródło
4

W przypadku, gdy inni czytelnicy szukają informacji o adduserpoleceniu.

Edytować /etc/adduser.conf

Ustaw DHOMEzmienną

rafaelvalle
źródło
0

Okazało się, że to psuje niektóre aplikacje, najlepszym sposobem jest to

Oprócz dowiązania symbolicznego, w nowszych dystrybucjach i systemach plików, jako root możesz także użyć bind-mount:

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

Jest to przydatne, aby umożliwić dostęp „przez” katalog / home do podkatalogów za pośrednictwem demonów, które w innym przypadku są skonfigurowane tak, aby uniknąć przeszukiwania dowiązań symbolicznych (apache, ftpd itp.).

Musisz oczywiście pamiętać (lub skrypt inicjujący), aby powiązać się przy ponownym uruchomieniu.

Przykładem skryptu inicjującego /etc/fstabjest

/extra-home/username /home/username none defaults,bind 0 0
Wilken
źródło
-1

usermod -m -d / newhome nazwa użytkownika

Ahmed Kay
źródło
4
Proszę wyjaśnić swoją odpowiedź bardziej szczegółowo.
T. Krótki