Jak zmienić katalog domowy aktualnie zalogowanego użytkownika


17

Obecnie jestem zalogowany na serwerze CentOS i chciałbym zmienić swój katalog domowy z /home/myuserName/na/var/www/html/

Wypróbowałem poniższe polecenie:

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

Ale to daje mi błąd:

usermod: user myUserName is currently logged in

2
Nie jestem pewien, co miałeś na myśli, HOME=/var/www/htmlzmieni na sesję twój domowy reż.
Archemar

To pomaga, ale chciałbym na stałe zmienić katalog domowy, nie tylko na bieżącą sesję.
Mohan

Odpowiedzi:


17

krótka odpowiedź : nie możesz.

długa odpowiedź :

HOMEreż jest ustawiony na /etc/passwd6 polu. Jest on odczytywany po zalogowaniu, twoja powłoka jest uruchamiana z tym katalogiem domowym.

Właściwy sposób zmiany katalogu domowego dla Joe to:

  • Joe wyloguj się.
  • służy usermod -d /new/home joe do zmiany katalogu domowego dla następnej sesji.

Po uruchomieniu sesji musisz wykonać dwie czynności:

  • edytuj, $HOMEaby zmienić katalog główny sesji (powtarzany we wszystkich aktywnych sesjach).
  • użyj sudo vipwdo edycji katalogu domowego dla następnej sesji

Pamiętaj też, że możesz mieć problem z uprawnieniami / własnością na /var/www/html


1
edit / etc / passwd zawsze działało dla mnie. Zobacz @ 7171u poniżej
jeffmcneill

edycja / etc / passwd bez wylogowania / logowania?
Archemar

edycja pliku / etc / passwd dla konta, które jest zalogowane, a następnie rozpoczęcie nowej sesji z tym samym kontem i przestrzeganie nowego katalogu domowego. W przypadku już zalogowanego konta ta sesja nadal ma starą lokalizację domową w środowisku.
jeffmcneill

8

Polecenie usermod nie będzie działać, jeśli jesteś zalogowany z użytkownikiem, którego próbujesz wprowadzić zmiany.

Na stronie podręcznika na usermod jest napisane:

CAVEATS usermod nie zezwoli na zmianę nazwy zalogowanego użytkownika. Musisz upewnić się, że podany użytkownik nie wykonuje żadnych procesów podczas wykonywania tej komendy, jeśli zmieniany jest numeryczny identyfikator użytkownika. Musisz ręcznie zmienić właściciela plików crontab. Musisz ręcznie zmienić właściciela dowolnego w zadaniach. Musisz wprowadzić wszelkie zmiany dotyczące NIS na serwerze NIS.

Spróbuj zalogować się z innym użytkownikiem i ponownie uruchomić komendę.

Jeśli nie jest to możliwe, możesz ręcznie edytować plik / etc / passwd (co faktycznie robi komenda usermod). Jeśli to zrobisz, pamiętaj o utworzeniu kopii zapasowej pliku na wypadek, gdybyś przypadkowo zrobił coś głupiego.


7

Musisz edytować /etc/passwdplik, aby zmienić katalog domowy użytkowników, którzy są aktualnie zalogowani.

Edytuj za /etc/passwdpomocą sudo vipwi zmień katalog domowy użytkownika.

vipwwysoce zalecane inne niż vimlub inne edytory, ponieważ vipwustawią blokadę, aby zapobiec uszkodzeniu danych.


2

Kilka możliwych obejść, w zależności od tego, co chcesz rozwiązać:

Opcja 1. Dodaj HOME=/var/www/htmldo .bashrc

Opcja 2. Zmień nazwę, /home/myusernamea następnie utwórz dowiązanie symboliczne do żądanego katalogu.

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

zły nawyk. po tym, użytkownik myusername-old nie może być używany przez innego użytkownika
GeoMint

-2

Możesz to zrobić tylko tymczasowo. Oznacza to, że za każdym razem, gdy logujesz się jako ten użytkownik, musisz uruchomić jedno polecenie:

export HOME=/var/www/html

W ten sposób możesz sprawić, że większość aplikacji będzie myśleć, że katalog domowy to dowolna lokalizacja, której używasz powyżej.

~zacznie również wskazywać /var/www/html.

Aplikacje, z którymi to działało, to NPM i Maven.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.