![迁移到新的用户主目录](https://linux22.com/image/207456/%E8%BF%81%E7%A7%BB%E5%88%B0%E6%96%B0%E7%9A%84%E7%94%A8%E6%88%B7%E4%B8%BB%E7%9B%AE%E5%BD%95.png)
我在当前用户的配置方面遇到了多个问题。在新用户帐户下这些问题都得到了解决。现在我想将所有数据从旧用户移动(不是复制,因为磁盘空间)到新用户。我还想有选择地将一些没有问题的应用程序设置文件移至新用户。
为此,如何使旧用户的整个用户文件夹可供新用户读写?
答案1
将主目录的所有权更改chown
为新用户。
chown -R newuser:newuser /home/olduser
答案2
我猜测“多个问题”实际上与应用程序特定的配置相关。普通帐户不应该有任何依赖于主目录位置的内容。
不过,您所描述的问题很难在不产生任何问题的情况下解决。复制非“点”文件以及标准 shell 启动文件可能是一个好的开始,但您仍然有可能会错过重要的点文件或携带太多文件。这必须是一个反复试验的解决方案。
假设您已经创建了新帐户。为了方便起见,我将使用变量来标识新旧用户目录。将这一切执行为root
:
olduser=olduser # For example, « olduser=sarah »
newuser=newuser
oldgroup=oldgroup # For example, « oldgroup=sarah » or « oldgroup=users »
newgroup=newgroup
oldhome=/home/olduser # For example, « oldhome=/home/sarah »
newhome=/home/newuser
将文件从旧目录移动到新目录:
mv "$oldhome"/* "$newhome/"
mv -f "$oldhome"/.{bashrc,bash_profile,profile,ssh} "$newhome/"
查看剩余的文件,并移动 ( mv
) 您想要保留的文件:
ls -RA "$oldhome"
最后,更改新用户的所有权和组:
find "$newhome" -user "$olduser" -exec chown "$newuser" {} +
find "$newhome" -group "$oldgroup" -exec chgrp "$newgroup" {} +