Как изменить домашний каталог текущего пользователя

17

В данный момент я вошел на сервер CentOS и хочу изменить свой домашний каталог с /home/myuserName/на/var/www/html/

Я попробовал следующую команду:

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

Но это дает мне ошибку:

usermod: user myUserName is currently logged in
Mohan
источник
2
Я не уверен, что вы имели в виду, HOME=/var/www/htmlизменится для сеанса, ваш домашний директор.
Архимар
Это помогает, но я бы хотел изменить свой домашний каталог навсегда, а не только для текущего сеанса.
Мохан

Ответы:

17

краткий ответ : вы не можете.

длинный ответ :

HOMEdir установлен в /etc/passwd6 поле. Это читается при входе в систему, ваша оболочка запускается с этим домашним каталогом.

Правильный способ изменить домашний каталог для Джо:

  • Джо выйти из системы.
  • используйте, usermod -d /new/home joe чтобы изменить домашний каталог для последующего сеанса.

После запуска сеанса вы должны сделать две вещи:

  • изменить, $HOMEчтобы изменить домашний каталог для сеанса (повторяется на всем активном сеансе).
  • использовать sudo vipwдля редактирования домашнего каталога для следующей сессии

Также имейте в виду, что у вас могут быть проблемы с разрешениями / правами на /var/www/html

Archemar
источник
1
редактировать / etc / passwd всегда работал для меня. Смотрите @ 7171u ниже
jeffmcneill
редактирование / etc / passwd без выхода из системы / входа в систему?
Archemar
отредактируйте / etc / passwd для учетной записи, которая вошла в систему, а затем начните новый сеанс с той же учетной записью, и он подчиняется новому домашнему каталогу. Для уже зарегистрированной учетной записи этот сеанс по-прежнему имеет старое домашнее местоположение в среде.
Jeffmcneill
8

Команда usermod не будет работать, если вы вошли в систему с пользователем, в которого вы пытаетесь внести изменения.

На странице руководства пользователя usermod написано:

CAVEATS usermod не позволит вам изменить имя пользователя, который вошел в систему. Вы должны убедиться, что указанный пользователь не выполняет никаких процессов, когда эта команда выполняется, если числовой ID пользователя пользователя изменяется. Вы должны изменить владельца любых файлов crontab вручную. Вы должны сменить владельца любого из рабочих мест вручную. Вы должны внести любые изменения, касающиеся NIS, на сервере NIS.

Попробуйте войти в систему с другим пользователем и снова запустить команду.

Если это невозможно, вы можете вручную отредактировать файл / etc / passwd (что фактически и делает команда usermod). Если вы сделаете это, убедитесь, что вы создали резервную копию файла на случай, если вы случайно сделаете что-то глупое.

MattM
источник
7

Вам нужно отредактировать /etc/passwdфайл, чтобы изменить домашний каталог пользователей, которые в данный момент вошли в систему.

Отредактируйте с /etc/passwdпомощью sudo vipwи измените домашний каталог пользователя.

vipwНастоятельно рекомендуется, кроме vimили других редакторов, так vipwкак установит блокировку, чтобы предотвратить любое повреждение данных.

7171u
источник
2

Пара возможных обходных путей, в зависимости от того, что вы надеетесь решить:

Вариант 1. Добавьте HOME=/var/www/htmlв свой .bashrc

Вариант 2. Переименуйте, /home/myusernameа затем создайте символическую ссылку на нужный каталог.

mv /home/myusername /home/myusername-old
ln -s /var/www/html /home/myusername
Дакс Керчнер
источник
плохая привычка. после этого myusername-old не может использоваться другим пользователем
GeoMint
-2

Вы можете сделать это только временно. Это означает, что каждый раз, когда вы входите в систему как этот пользователь, вы должны выполнить эту команду:

export HOME=/var/www/html

Таким образом, вы можете заставить большинство приложений думать, что ваш домашний каталог находится в любом месте, которое вы используете выше.

~также начнет указывать на /var/www/html.

Приложения, с которыми это работало для меня, были NPM и Maven.

Расплавленный лед
источник