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


202

我想知道是否有任何简单的shell命令来更改Linux / Unix中的用户主目录(类似于chsh,它会更改现有有效用户的默认登录shell)而无需触摸/etc/passwd文件。谢谢


您为什么不想触摸/etc/passwd文件?您需要!
Basile Starynkevitch

11
stackoverflow.com/questions/20071714/…,表示usermod -d /home/userxx /home/useryy要将linux默认登录目录更改为/ home / useryy
Ibrahim Quraish

2
为什么要询问默认主目录?您是否要更改一个特定现有用户或将来添加的所有用户的主目录?请注意,chsh不要更改默认登录外壳,而只需更改给定用户的登录外壳...要更改特定用户的登录外壳HOME,只需编辑/etc/passwd
Basile Starynkevitch 2013年

Answers:


350

易卜拉欣对另一个答案的评论是更改现有用户主目录的正确方法。

更改用户的主目录:

usermod -d /newhome/username username

usermod是编辑现有用户的命令。
-d(的缩写--home)将更改用户的主目录。

更改用户的主目录+移动用户当前目录的内容:

usermod -m -d /newhome/username username

-m(的缩写--move-home)会将内容从用户的当前目录移动到新目录。


1
不仅移动了内容,而且更像移动整个文件夹= /home/username删除原始文件夹(通常)。
Betlista

2
@STW这是可逆的任务吗?这意味着如果我只运行一次然后翻转参数,我的主目录是否会完全像以前一样?
DanGordon

1
@DanGordon在/newhome/username参数中输入的内容均为用户的主目录。如果知道它的名称,可以将其设置回其先前的主目录,但是没有“撤消”选项。
STW

3
第二个命令的选项顺序错误。usermod -m -d /newhome/username username作品。
Snozzlebert,

@Dominik谢谢-根据操作系统(Mac,Linux,BSD等),可能会有所不同,当然也可能是不正确的
STW

28

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

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

vi /etc/default/useradd

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

HOME=/home

用。。。来代替:

HOME=/iscsi/user

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

# useradd vivek
# passwd vivek

验证用户信息:

# finger vivek

82
usermod -m -d /path/to/new/login/home/dir user 将现有用户主目录更改为新的登录目录(如果尚不存在),选项-m将当前主目录的内容移至新的主目录
Ibrahim Quraish 2013年

23

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

sudo usermod -d /newhome/username -m username

您无需使用用户名创建文件夹,这还将把文件从初始用户文件夹移至/ newhome / username文件夹。


4

如果其他读者需要有关该adduser命令的信息。

编辑 /etc/adduser.conf

设定DHOME变量


0

发现这样做会破坏某些应用程序,更好的方法是

除了symlink以外,在较新的发行版和文件系统上,作为根用户,还可以使用bind-mount:

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

这对于允许通过后台驻留程序“ /”通过/ home目录“访问”子目录很有用,该后台驻留程序已配置为避免通过符号链接(apache,ftpd等)建立路径。

当然,您必须记住(或初始化脚本)在重新启动时进行绑定。

初始化脚本示例/etc/fstab

/extra-home/username /home/username none defaults,bind 0 0

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.