我想知道在Linux/Unix中是否有简单的shell命令可以在不修改/etc/passwd文件的情况下更改用户主目录(类似于chsh,更改现有有效用户的默认登录shell)。谢谢
在添加新用户时更改默认用户主目录:
只需使用文本编辑器打开这个文件,输入: vi /etc/default/useradd 默认home目录由home变量定义,查找行即 阅读如下: = /家 替换为: 家= / iscsi /用户 保存并关闭文件。现在您可以使用常规的useradd添加用户 命令: # useradd vivek # passwd vivek 验证用户信息: #手指vivek
Ibrahim对另一个答案的评论是修改现有用户的主目录的正确方法。
修改用户的主目录:
usermod -d /newhome/username username
Usermod命令用于编辑已存在的用户。 -d(——home的缩写)将更改用户的主目录。
更改用户的主目录+移动用户当前目录的内容:
usermod -m -d /newhome/username username
-m(——move-home的缩写)将把内容从用户的当前目录移动到新目录。
发现这破坏了一些应用程序,更好的方法是
除了符号链接,在最新的发行版和文件系统中,作为根,你还可以使用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
接受的答案是错误的,因为初始用户文件夹中的内容没有使用它移动。我将添加另一个答案来纠正它:
sudo usermod -d /newhome/username -m username
您不需要创建带有用户名的文件夹,这也会将您的文件从初始用户文件夹移动到/newhome/username文件夹。
你可以用:
/etc/passwd
编辑用户主目录,然后移动所需的文件和目录到它:
cp/mv -r /home/$user/.bash* /home/newdir
.bash_profile
.ssh/
设置正确的权限
chmod -R $user:$user /home/newdir/.bash*
推荐文章
- 如何在Makefile中设置子进程的环境变量
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- Shell脚本删除超过n天的目录
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何检查shell脚本中是否存在命令?
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何强制从另一个SSH会话分离屏幕?
- 如何打破一个循环在Bash?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?