我想知道在Linux/Unix中是否有简单的shell命令可以在不修改/etc/passwd文件的情况下更改用户主目录(类似于chsh,更改现有有效用户的默认登录shell)。谢谢


当前回答

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

编辑/etc/adduser.conf

设置DHOME变量

其他回答

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

编辑/etc/adduser.conf

设置DHOME变量

发现这破坏了一些应用程序,更好的方法是

除了符号链接,在最新的发行版和文件系统中,作为根,你还可以使用bind-mount:

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

这对于允许“通过”/home目录通过守护进程访问子dirs非常有用,否则将配置为避免通过符号链接(apache, ftpd等)进行路径访问。

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

/etc/fstab目录下的init脚本示例如下

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

你可以用:

/etc/passwd

编辑用户主目录,然后移动所需的文件和目录到它:

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

.bash_profile
.ssh/ 

设置正确的权限

chmod -R $user:$user /home/newdir/.bash*

Usermod -m -d /newhome用户名

Ibrahim对另一个答案的评论是修改现有用户的主目录的正确方法。

修改用户的主目录:

usermod -d /newhome/username username

Usermod命令用于编辑已存在的用户。 -d(——home的缩写)将更改用户的主目录。

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

usermod -m -d /newhome/username username

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