在Linux中为现有用户创建主目录:useradd

本文方法也适用于其它的linux 。

我使用的是manjaro ,属于Arch linux 家族。为了配置samba,增加一个用户user1。

[me@manjaro ~]$ sudo useradd user1

但是之后发现/home下面并没有建立对应的主目录,例如 /home/user1 。

查找原因,原来是没有加上参数 -m :

[me@manjaro ~]$ sudo useradd -m user1

解决办法:

网上的方法,要么是手工建立目录,指定属性;再从 /etc/skel/下复制文件 。 要么是重新建立一个用户。但是我找到一个简单的官方解决方法:

[me@manjaro ~]$ sudo mkhomedir_helper user1

就是利用了mkhomedir_helper 命令。它为已经存在的用户建立相应的主目录,并且自动复制一些文件如.bashrc、.profiles ...

-rwxr-xr-x 1 root root 22704 2月 2 17:21 /usr/sbin/mkhomedir_helper

参考:

https://linuxhandbook.com/create-home-directory-existing-user/

2023-04-13补充:

上述 mkhomedir_helper 命令执行之后,ctrl-alt-F2 (键盘第一排F1....F8,都可以试。Manjaro F7 是切换到桌面)打开一个 终端界面:

以 user1 用户登录时,可以登录;但出现错误提示;

--user1:user1:Change directory failed:No such file or directory.Logining in 
with home="/"
[user1@manjaro /]$ 

这里,查看,/etc/passwd文件:

[user1@manjaro /]$ sudo cat /etc/passwd 
...
user1:x:1001:1001::user1:/bin/bash
...

对应user1一行应该是:

user1:x:1001:1001::/home/user1:/bin/bash

mkhomedir_helpe 命令,仅仅是创建了用户目录,却没有修改/etc/passwd 文件。

解决方法就是,更改用户user1的家目录位置信息:

sudo usermod  user1  --home  /home/user1

再检查passwd 文件内容:

user1:x:1001:1001::/home/user1:/bin/bash

用户user1 也能正常登录了。

完工!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值