用于更改用户的默认主目录的命令

Ibr*_*ish 186 unix linux shell

我想知道是否有任何简单的shell命令来更改Linux/Unix中的用户主目录(一个类似于chsh,它改变现有有效用户的默认登录shell)而不触及该/etc/passwd文件.谢谢

STW*_*STW 322

Ibrahim对另一个答案的评论是改变现有用户主目录的正确方法. usermod是编辑现有用户的命令.-d(缩写为--home)将更改用户的主目录.添加-m(缩写--move-home也会将内容从用户的当前目录移动到新目录.

usermod -d /newhome/username username
Run Code Online (Sandbox Code Playgroud)

  • 第二个命令的选项顺序错误。`usermod -m -d /newhome/username username` 有效。 (4认同)
  • 这是非常无用的——登录用户后你无法更改内容。 (3认同)
  • @KolonUK 因为这确实是唯一正确的方法。当您以用户身份登录时,您将打开依赖于该主目录的应用程序。当一切都在运行时,您不应该更改位置。所以,是的,创建一个新的用户帐户并删除并没有那么糟糕。或者您可以为 root 设置密码并在新的 TTY 中以 root 身份登录。 (3认同)
  • 不仅移动内容,我认为它更像是移动整个文件夹 = 原始文件夹(通常为`/home/username`)被删除。 (2认同)
  • @STW这是一个可逆的任务吗?这意味着如果我只运行一次然后翻转参数,我的主目录是否与以前完全一样? (2认同)
  • @MDev 怎么没用。只需以其他用户或 root 身份登录... (2认同)

Max*_*min 27

Linux更改默认用户主目录添加新用户时:

只需使用文本编辑器打开此文件,键入:

vi /etc/default/useradd
Run Code Online (Sandbox Code Playgroud)

HOME变量定义的默认主目录,查找如下所示的行:

HOME=/home
Run Code Online (Sandbox Code Playgroud)

用...来代替:

HOME=/iscsi/user
Run Code Online (Sandbox Code Playgroud)

保存并关闭文件.现在,您可以使用常规的useradd命令添加用户:

# useradd vivek
# passwd vivek
Run Code Online (Sandbox Code Playgroud)

验证用户信息:

# finger vivek
Run Code Online (Sandbox Code Playgroud)

  • `usermod -m -d/path/to/new/login/home/dir user`将现有用户主目录更改为新的登录目录,如果该登录目录尚不存在,则选项-m移动当前主目录的内容目录到新的家庭目录 (79认同)

小智 22

接受的答案是错误的,因为初始用户文件夹中的内容不会使用它移动.我将添加另一个答案来纠正它:

sudo usermod -d /newhome/username -m username
Run Code Online (Sandbox Code Playgroud)

您不需要使用用户名创建文件夹,这也会将您的文件从初始用户文件夹移动到/ newhome/username文件夹.


raf*_*lle 6

以防其他读者查找有关该adduser命令的信息。

编辑/etc/adduser.conf

设置DHOME变量


小智 5

你可以这样做:

/etc/passwd
Run Code Online (Sandbox Code Playgroud)

编辑用户主目录,然后将所需的文件和目录移至其中:

cp/mv -r /home/$user/.bash* /home/newdir

.bash_profile
.ssh/ 
Run Code Online (Sandbox Code Playgroud)

设置正确的权限

chmod -R $user:$user /home/newdir/.bash*
Run Code Online (Sandbox Code Playgroud)