如何更改当前登录用户的主目录


17

我目前已登录到CentOS服务器,我想将主目录从更改/home/myuserName//var/www/html/

我尝试了以下命令:

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

但这给我一个错误:

usermod: user myUserName is currently logged in

2
我不确定您的意思,该会话HOME=/var/www/html将更改您的主目录。
Archemar '16

这很有帮助,但是我想永久更改主目录,而不仅仅是当前会话。
Mohan

Answers:


17

简短的回答:您不能。

长答案

HOMEdir在/etc/passwd第6个字段中设置。它是在登录时读取的,您的shell以此主目录启动。

更改joe的主目录的正确方法是:

  • 让乔注销。
  • 用于usermod -d /new/home joe 更改后续会话的主目录。

运行会话后,您必须执行以下两项操作:

  • 编辑$HOME以更改会话的主目录(在所有活动会话中重复)。
  • 用于sudo vipw编辑下一个目录的主目录

另外,请注意,您可能在以下方面存在权限/所有权问题 /var/www/html


1
编辑/ etc / passwd总是对我有用。参见下面的@ 7171u
jeffmcneill

编辑/ etc / passwd而不注销/登录?
Archemar

编辑/ etc / passwd来登录一个帐户,然后使用该帐户启动一个新会话,它会遵循新的主目录。对于已经登录的帐户,该会话在环境中仍具有旧的归属位置。
jeffmcneill

8

如果您以尝试进行更改的用户身份登录,则usermod命令将不起作用。

在usermod的手册页上说:

CAVEATS usermod不允许您更改登录用户的名称。如果要更改用户的数字用户ID,则必须确保在执行此命令时指定用户没有执行任何进程。您必须手动更改任何crontab文件的所有者。您必须手动更改任何at作业的所有者。您必须在NIS服务器上进行涉及NIS的任何更改。

尝试使用其他用户登录并再次运行命令。

如果那不可能,那么您可以手动编辑/ etc / passwd文件(实际上是usermod命令正在执行的操作)。如果这样做,请确保备份文件,以防您无意间做一些愚蠢的事情。


7

您需要编辑/etc/passwd文件以更改当前登录用户的主目录。

编辑/etc/passwdwith sudo vipw并更改用户的主目录。

vipw强烈建议使用非vim其他编辑器,因为它们vipw会设置锁定以防止数据损坏。


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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.