我想知道是否有任何简单的shell命令来更改Linux / Unix中的用户主目录(类似于 chsh ,它更改现有有效用户的默认登录shell)触摸/etc/passwd
文件。感谢
答案 0 :(得分:295)
易卜拉欣对另一个答案的评论是改变现有用户主目录的正确方法。 usermod
是编辑现有用户的命令。 -d
(--home
的缩写)将更改用户的主目录。添加-m
(--move-home
的缩写也会将内容从用户的当前目录移动到新目录。
usermod -m -d /newhome/username username
答案 1 :(得分:27)
来自Linux Change Default User Home Directory While Adding A New User:
只需使用文本编辑器打开此文件,输入:
vi /etc/default/useradd
由HOME变量定义的默认主目录,查找该行 内容如下:
HOME=/home
替换为:
HOME=/iscsi/user
保存并关闭文件。现在,您可以使用常规useradd添加用户 命令:
# useradd vivek # passwd vivek
验证用户信息:
# finger vivek
答案 2 :(得分:16)
接受的答案有误,因为初始用户文件夹中的内容不会使用它移动。我将添加另一个答案来纠正它:
sudo usermod -d /newhome/username -m username
您无需使用用户名创建文件夹,这也会将您的文件从初始用户文件夹移动到/ newhome / username文件夹。
答案 3 :(得分:4)
如果其他读者在adduser
命令上查找信息。
修改/etc/adduser.conf
设置DHOME
变量
答案 4 :(得分:2)
发现这会打破一些应用程序,更好的方法是
除了符号链接,在更新的发行版和文件系统上,作为root用户还可以使用bind-mount:
mkdir /home/username
mount --bind --verbose /extra-home/username /home/username
这对于允许访问"通过" / home目录通过守护进程进行子进程,这些守护进程被配置为避免遍历符号链接(apache,ftpd等)。
当然,你必须记住(或init脚本)在重启时绑定。
/etc/fstab
中的示例init脚本是
/extra-home/username /home/username none defaults,bind 0 0
答案 5 :(得分:0)
usermod -m -d / newhome用户名
答案 6 :(得分:0)
你可以这样做:
/etc/passwd
编辑用户主目录,然后将所需的文件和目录移动到其中:
cp/mv -r /home/$user/.bash* /home/newdir
.bash_profile
.ssh/
设置正确的权限
chmod -R $user:$user /home/newdir/.bash*