修改某个用户的 home 目录
rsync 可以把目录复制一份到指定位置,会连同文件的权限一并同步(需要目标位置的文件系统为ext系列的, Windows的ntfs文件系统不行,当然,也不要把 home 目录放到 ntfs 文件系统上, 会由于文件权限检查不通过, ssh 命令无法正常执行)
usermod 用于修改用户信息,如 home 目录
注意: 当 用户的 home 目录不在 /home 下时, 使用 snap 安装的程序将因权限问题无法启动
# 把对应用户的 home 目录迁移到指定位置,如
sudo rsync -avx /home/abc /mnt/home/abc
# 查看用户 uid
id <username>
# 修改用户的的 home 目录, 需要这个用户的所有进程已退出 -u <new_uid> 用于指定新的 uid
usermod -d /mnt/home/abc abc
# 查看修改结果, 看看对用用户的 home 目录修改对了没
cat /etc/passwd
碰到的问题和解决方案
问题1
执行 usermod 需要对应用户的所有进程都退出, 有些时候不容易做到.
比如这个用户启动的时候就要启动一些守护进程.
比起一个一个找出来这些进程, 然后 kill 掉, 让这个用户从开机开始就没有登陆过来得更容易点.
方案
新创建一个具有 admin 权限的用户, 然后重启, 用这个新用户登陆, 执行上面的变更指令, 当然需要用 sudo 了
问题2
当用户的 home 目录不在 /home 下时, snap 安装的程序无法正常打开
方案
存储位置在指定的分区(或路径), 但同时让这个分区绑定到两个路径上,其中一个是 /home/abc (这样在两个路径上都能对文件进行读写). 其中 /mnt/home/abc 是已经正常挂在的 abc 用户的 home 目录. 这种情况下就不用修改 abc 的 home 目录了(要是改了还得改回去 [\sad]).
sudo vim /etc/fstab
/mnt/home/abc /home/abc none bind 0 0
参考
挂载/迁移目录
挂载目录
修改用户 home 目录 这篇帖子里对 usemod -u uid 的使用是错误的,会修改当前用户的 uid
网友评论